diff options
-rw-r--r-- | arch/arm26/mm/fault.c | 17 | ||||
-rw-r--r-- | arch/cris/mm/fault.c | 6 | ||||
-rw-r--r-- | arch/frv/mm/fault.c | 6 | ||||
-rw-r--r-- | arch/m68k/mm/fault.c | 6 | ||||
-rw-r--r-- | arch/parisc/mm/fault.c | 12 | ||||
-rw-r--r-- | arch/sh64/mm/fault.c | 6 | ||||
-rw-r--r-- | arch/x86_64/mm/fault.c | 6 | ||||
-rw-r--r-- | drivers/infiniband/include/ib_cm.h | 3 | ||||
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_main.c | 5 | ||||
-rw-r--r-- | kernel/sys.c | 2 | ||||
-rw-r--r-- | security/keys/keyctl.c | 11 | ||||
-rw-r--r-- | security/keys/request_key.c | 2 |
12 files changed, 41 insertions, 41 deletions
diff --git a/arch/arm26/mm/fault.c b/arch/arm26/mm/fault.c index dacca8bb7744..bd6f2db608b7 100644 --- a/arch/arm26/mm/fault.c +++ b/arch/arm26/mm/fault.c | |||
@@ -176,12 +176,12 @@ survive: | |||
176 | * Handle the "normal" cases first - successful and sigbus | 176 | * Handle the "normal" cases first - successful and sigbus |
177 | */ | 177 | */ |
178 | switch (fault) { | 178 | switch (fault) { |
179 | case 2: | 179 | case VM_FAULT_MAJOR: |
180 | tsk->maj_flt++; | 180 | tsk->maj_flt++; |
181 | return fault; | 181 | return fault; |
182 | case 1: | 182 | case VM_FAULT_MINOR: |
183 | tsk->min_flt++; | 183 | tsk->min_flt++; |
184 | case 0: | 184 | case VM_FAULT_SIGBUS: |
185 | return fault; | 185 | return fault; |
186 | } | 186 | } |
187 | 187 | ||
@@ -226,14 +226,11 @@ int do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs) | |||
226 | /* | 226 | /* |
227 | * Handle the "normal" case first | 227 | * Handle the "normal" case first |
228 | */ | 228 | */ |
229 | if (fault > 0) | 229 | switch (fault) { |
230 | case VM_FAULT_MINOR: | ||
231 | case VM_FAULT_MAJOR: | ||
230 | return 0; | 232 | return 0; |
231 | 233 | case VM_FAULT_SIGBUS: | |
232 | /* | ||
233 | * We had some memory, but were unable to | ||
234 | * successfully fix up this page fault. | ||
235 | */ | ||
236 | if (fault == 0){ | ||
237 | goto do_sigbus; | 234 | goto do_sigbus; |
238 | } | 235 | } |
239 | 236 | ||
diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c index fe1cc36b5aca..934c51078cce 100644 --- a/arch/cris/mm/fault.c +++ b/arch/cris/mm/fault.c | |||
@@ -284,13 +284,13 @@ do_page_fault(unsigned long address, struct pt_regs *regs, | |||
284 | */ | 284 | */ |
285 | 285 | ||
286 | switch (handle_mm_fault(mm, vma, address, writeaccess & 1)) { | 286 | switch (handle_mm_fault(mm, vma, address, writeaccess & 1)) { |
287 | case 1: | 287 | case VM_FAULT_MINOR: |
288 | tsk->min_flt++; | 288 | tsk->min_flt++; |
289 | break; | 289 | break; |
290 | case 2: | 290 | case VM_FAULT_MAJOR: |
291 | tsk->maj_flt++; | 291 | tsk->maj_flt++; |
292 | break; | 292 | break; |
293 | case 0: | 293 | case VM_FAULT_SIGBUS: |
294 | goto do_sigbus; | 294 | goto do_sigbus; |
295 | default: | 295 | default: |
296 | goto out_of_memory; | 296 | goto out_of_memory; |
diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c index 41d02ac48233..8b3eb50c5105 100644 --- a/arch/frv/mm/fault.c +++ b/arch/frv/mm/fault.c | |||
@@ -163,13 +163,13 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear | |||
163 | * the fault. | 163 | * the fault. |
164 | */ | 164 | */ |
165 | switch (handle_mm_fault(mm, vma, ear0, write)) { | 165 | switch (handle_mm_fault(mm, vma, ear0, write)) { |
166 | case 1: | 166 | case VM_FAULT_MINOR: |
167 | current->min_flt++; | 167 | current->min_flt++; |
168 | break; | 168 | break; |
169 | case 2: | 169 | case VM_FAULT_MAJOR: |
170 | current->maj_flt++; | 170 | current->maj_flt++; |
171 | break; | 171 | break; |
172 | case 0: | 172 | case VM_FAULT_SIGBUS: |
173 | goto do_sigbus; | 173 | goto do_sigbus; |
174 | default: | 174 | default: |
175 | goto out_of_memory; | 175 | goto out_of_memory; |
diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c index ac48b6d2aff6..aec15270d334 100644 --- a/arch/m68k/mm/fault.c +++ b/arch/m68k/mm/fault.c | |||
@@ -160,13 +160,13 @@ good_area: | |||
160 | printk("handle_mm_fault returns %d\n",fault); | 160 | printk("handle_mm_fault returns %d\n",fault); |
161 | #endif | 161 | #endif |
162 | switch (fault) { | 162 | switch (fault) { |
163 | case 1: | 163 | case VM_FAULT_MINOR: |
164 | current->min_flt++; | 164 | current->min_flt++; |
165 | break; | 165 | break; |
166 | case 2: | 166 | case VM_FAULT_MAJOR: |
167 | current->maj_flt++; | 167 | current->maj_flt++; |
168 | break; | 168 | break; |
169 | case 0: | 169 | case VM_FAULT_SIGBUS: |
170 | goto bus_err; | 170 | goto bus_err; |
171 | default: | 171 | default: |
172 | goto out_of_memory; | 172 | goto out_of_memory; |
diff --git a/arch/parisc/mm/fault.c b/arch/parisc/mm/fault.c index eaa701479f5f..0ad945d4c0a4 100644 --- a/arch/parisc/mm/fault.c +++ b/arch/parisc/mm/fault.c | |||
@@ -178,17 +178,17 @@ good_area: | |||
178 | */ | 178 | */ |
179 | 179 | ||
180 | switch (handle_mm_fault(mm, vma, address, (acc_type & VM_WRITE) != 0)) { | 180 | switch (handle_mm_fault(mm, vma, address, (acc_type & VM_WRITE) != 0)) { |
181 | case 1: | 181 | case VM_FAULT_MINOR: |
182 | ++current->min_flt; | 182 | ++current->min_flt; |
183 | break; | 183 | break; |
184 | case 2: | 184 | case VM_FAULT_MAJOR: |
185 | ++current->maj_flt; | 185 | ++current->maj_flt; |
186 | break; | 186 | break; |
187 | case 0: | 187 | case VM_FAULT_SIGBUS: |
188 | /* | 188 | /* |
189 | * We ran out of memory, or some other thing happened | 189 | * We hit a hared mapping outside of the file, or some |
190 | * to us that made us unable to handle the page fault | 190 | * other thing happened to us that made us unable to |
191 | * gracefully. | 191 | * handle the page fault gracefully. |
192 | */ | 192 | */ |
193 | goto bad_area; | 193 | goto bad_area; |
194 | default: | 194 | default: |
diff --git a/arch/sh64/mm/fault.c b/arch/sh64/mm/fault.c index a24932881dbb..f08d0eaf6497 100644 --- a/arch/sh64/mm/fault.c +++ b/arch/sh64/mm/fault.c | |||
@@ -223,13 +223,13 @@ good_area: | |||
223 | */ | 223 | */ |
224 | survive: | 224 | survive: |
225 | switch (handle_mm_fault(mm, vma, address, writeaccess)) { | 225 | switch (handle_mm_fault(mm, vma, address, writeaccess)) { |
226 | case 1: | 226 | case VM_FAULT_MINOR: |
227 | tsk->min_flt++; | 227 | tsk->min_flt++; |
228 | break; | 228 | break; |
229 | case 2: | 229 | case VM_FAULT_MAJOR: |
230 | tsk->maj_flt++; | 230 | tsk->maj_flt++; |
231 | break; | 231 | break; |
232 | case 0: | 232 | case VM_FAULT_SIGBUS: |
233 | goto do_sigbus; | 233 | goto do_sigbus; |
234 | default: | 234 | default: |
235 | goto out_of_memory; | 235 | goto out_of_memory; |
diff --git a/arch/x86_64/mm/fault.c b/arch/x86_64/mm/fault.c index 13792721037e..493819e543a5 100644 --- a/arch/x86_64/mm/fault.c +++ b/arch/x86_64/mm/fault.c | |||
@@ -439,13 +439,13 @@ good_area: | |||
439 | * the fault. | 439 | * the fault. |
440 | */ | 440 | */ |
441 | switch (handle_mm_fault(mm, vma, address, write)) { | 441 | switch (handle_mm_fault(mm, vma, address, write)) { |
442 | case 1: | 442 | case VM_FAULT_MINOR: |
443 | tsk->min_flt++; | 443 | tsk->min_flt++; |
444 | break; | 444 | break; |
445 | case 2: | 445 | case VM_FAULT_MAJOR: |
446 | tsk->maj_flt++; | 446 | tsk->maj_flt++; |
447 | break; | 447 | break; |
448 | case 0: | 448 | case VM_FAULT_SIGBUS: |
449 | goto do_sigbus; | 449 | goto do_sigbus; |
450 | default: | 450 | default: |
451 | goto out_of_memory; | 451 | goto out_of_memory; |
diff --git a/drivers/infiniband/include/ib_cm.h b/drivers/infiniband/include/ib_cm.h index e5d74a730a70..da650115e79a 100644 --- a/drivers/infiniband/include/ib_cm.h +++ b/drivers/infiniband/include/ib_cm.h | |||
@@ -169,7 +169,8 @@ enum ib_cm_rej_reason { | |||
169 | IB_CM_REJ_INVALID_ALT_TRAFFIC_CLASS = __constant_htons(21), | 169 | IB_CM_REJ_INVALID_ALT_TRAFFIC_CLASS = __constant_htons(21), |
170 | IB_CM_REJ_INVALID_ALT_HOP_LIMIT = __constant_htons(22), | 170 | IB_CM_REJ_INVALID_ALT_HOP_LIMIT = __constant_htons(22), |
171 | IB_CM_REJ_INVALID_ALT_PACKET_RATE = __constant_htons(23), | 171 | IB_CM_REJ_INVALID_ALT_PACKET_RATE = __constant_htons(23), |
172 | IB_CM_REJ_PORT_REDIRECT = __constant_htons(24), | 172 | IB_CM_REJ_PORT_CM_REDIRECT = __constant_htons(24), |
173 | IB_CM_REJ_PORT_REDIRECT = __constant_htons(25), | ||
173 | IB_CM_REJ_INVALID_MTU = __constant_htons(26), | 174 | IB_CM_REJ_INVALID_MTU = __constant_htons(26), |
174 | IB_CM_REJ_INSUFFICIENT_RESP_RESOURCES = __constant_htons(27), | 175 | IB_CM_REJ_INSUFFICIENT_RESP_RESOURCES = __constant_htons(27), |
175 | IB_CM_REJ_CONSUMER_DEFINED = __constant_htons(28), | 176 | IB_CM_REJ_CONSUMER_DEFINED = __constant_htons(28), |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index 6f60abbaebd5..fa00816a3cf7 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c | |||
@@ -600,9 +600,10 @@ static int ipoib_start_xmit(struct sk_buff *skb, struct net_device *dev) | |||
600 | 600 | ||
601 | ipoib_mcast_send(dev, (union ib_gid *) (phdr->hwaddr + 4), skb); | 601 | ipoib_mcast_send(dev, (union ib_gid *) (phdr->hwaddr + 4), skb); |
602 | } else { | 602 | } else { |
603 | /* unicast GID -- should be ARP reply */ | 603 | /* unicast GID -- should be ARP or RARP reply */ |
604 | 604 | ||
605 | if (be16_to_cpup((u16 *) skb->data) != ETH_P_ARP) { | 605 | if ((be16_to_cpup((__be16 *) skb->data) != ETH_P_ARP) && |
606 | (be16_to_cpup((__be16 *) skb->data) != ETH_P_RARP)) { | ||
606 | ipoib_warn(priv, "Unicast, no %s: type %04x, QPN %06x " | 607 | ipoib_warn(priv, "Unicast, no %s: type %04x, QPN %06x " |
607 | IPOIB_GID_FMT "\n", | 608 | IPOIB_GID_FMT "\n", |
608 | skb->dst ? "neigh" : "dst", | 609 | skb->dst ? "neigh" : "dst", |
diff --git a/kernel/sys.c b/kernel/sys.c index 000e81ad2c1d..0bcaed6560ac 100644 --- a/kernel/sys.c +++ b/kernel/sys.c | |||
@@ -404,7 +404,6 @@ void kernel_halt(void) | |||
404 | { | 404 | { |
405 | notifier_call_chain(&reboot_notifier_list, SYS_HALT, NULL); | 405 | notifier_call_chain(&reboot_notifier_list, SYS_HALT, NULL); |
406 | system_state = SYSTEM_HALT; | 406 | system_state = SYSTEM_HALT; |
407 | device_suspend(PMSG_SUSPEND); | ||
408 | device_shutdown(); | 407 | device_shutdown(); |
409 | printk(KERN_EMERG "System halted.\n"); | 408 | printk(KERN_EMERG "System halted.\n"); |
410 | machine_halt(); | 409 | machine_halt(); |
@@ -415,7 +414,6 @@ void kernel_power_off(void) | |||
415 | { | 414 | { |
416 | notifier_call_chain(&reboot_notifier_list, SYS_POWER_OFF, NULL); | 415 | notifier_call_chain(&reboot_notifier_list, SYS_POWER_OFF, NULL); |
417 | system_state = SYSTEM_POWER_OFF; | 416 | system_state = SYSTEM_POWER_OFF; |
418 | device_suspend(PMSG_SUSPEND); | ||
419 | device_shutdown(); | 417 | device_shutdown(); |
420 | printk(KERN_EMERG "Power down.\n"); | 418 | printk(KERN_EMERG "Power down.\n"); |
421 | machine_power_off(); | 419 | machine_power_off(); |
diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c index fea262860ea0..a6516a64b297 100644 --- a/security/keys/keyctl.c +++ b/security/keys/keyctl.c | |||
@@ -49,9 +49,6 @@ asmlinkage long sys_add_key(const char __user *_type, | |||
49 | goto error; | 49 | goto error; |
50 | type[31] = '\0'; | 50 | type[31] = '\0'; |
51 | 51 | ||
52 | if (!type[0]) | ||
53 | goto error; | ||
54 | |||
55 | ret = -EPERM; | 52 | ret = -EPERM; |
56 | if (type[0] == '.') | 53 | if (type[0] == '.') |
57 | goto error; | 54 | goto error; |
@@ -144,6 +141,10 @@ asmlinkage long sys_request_key(const char __user *_type, | |||
144 | goto error; | 141 | goto error; |
145 | type[31] = '\0'; | 142 | type[31] = '\0'; |
146 | 143 | ||
144 | ret = -EPERM; | ||
145 | if (type[0] == '.') | ||
146 | goto error; | ||
147 | |||
147 | /* pull the description into kernel space */ | 148 | /* pull the description into kernel space */ |
148 | ret = -EFAULT; | 149 | ret = -EFAULT; |
149 | dlen = strnlen_user(_description, PAGE_SIZE - 1); | 150 | dlen = strnlen_user(_description, PAGE_SIZE - 1); |
@@ -362,7 +363,7 @@ long keyctl_revoke_key(key_serial_t id) | |||
362 | 363 | ||
363 | key_put(key); | 364 | key_put(key); |
364 | error: | 365 | error: |
365 | return 0; | 366 | return ret; |
366 | 367 | ||
367 | } /* end keyctl_revoke_key() */ | 368 | } /* end keyctl_revoke_key() */ |
368 | 369 | ||
@@ -685,6 +686,8 @@ long keyctl_read_key(key_serial_t keyid, char __user *buffer, size_t buflen) | |||
685 | goto can_read_key2; | 686 | goto can_read_key2; |
686 | 687 | ||
687 | ret = PTR_ERR(skey); | 688 | ret = PTR_ERR(skey); |
689 | if (ret == -EAGAIN) | ||
690 | ret = -EACCES; | ||
688 | goto error2; | 691 | goto error2; |
689 | } | 692 | } |
690 | 693 | ||
diff --git a/security/keys/request_key.c b/security/keys/request_key.c index dfcd983af1fd..90c1506d007c 100644 --- a/security/keys/request_key.c +++ b/security/keys/request_key.c | |||
@@ -405,7 +405,7 @@ struct key *request_key_and_link(struct key_type *type, | |||
405 | key_user_put(user); | 405 | key_user_put(user); |
406 | 406 | ||
407 | /* link the new key into the appropriate keyring */ | 407 | /* link the new key into the appropriate keyring */ |
408 | if (!PTR_ERR(key)) | 408 | if (!IS_ERR(key)) |
409 | request_key_link(key, dest_keyring); | 409 | request_key_link(key, dest_keyring); |
410 | } | 410 | } |
411 | 411 | ||