diff options
-rw-r--r-- | MAINTAINERS | 6 | ||||
-rw-r--r-- | arch/um/include/sysdep-x86_64/ptrace.h | 4 | ||||
-rw-r--r-- | arch/um/os-Linux/skas/mem.c | 10 | ||||
-rw-r--r-- | arch/um/os-Linux/skas/process.c | 6 | ||||
-rw-r--r-- | arch/um/os-Linux/sys-i386/registers.c | 5 | ||||
-rw-r--r-- | arch/um/os-Linux/sys-x86_64/registers.c | 4 | ||||
-rw-r--r-- | drivers/char/generic_serial.c | 7 | ||||
-rw-r--r-- | drivers/clocksource/acpi_pm.c | 2 | ||||
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 4 | ||||
-rw-r--r-- | drivers/eisa/pci_eisa.c | 4 | ||||
-rw-r--r-- | drivers/isdn/hisax/isar.c | 2 | ||||
-rw-r--r-- | drivers/md/md.c | 42 | ||||
-rw-r--r-- | drivers/md/raid5.c | 19 | ||||
-rw-r--r-- | drivers/message/i2o/i2o_block.c | 12 | ||||
-rw-r--r-- | drivers/pcmcia/au1000_generic.c | 2 | ||||
-rw-r--r-- | drivers/spi/spi.c | 10 | ||||
-rw-r--r-- | fs/nfsd/nfs3xdr.c | 6 | ||||
-rw-r--r-- | fs/nfsd/nfs4acl.c | 2 | ||||
-rw-r--r-- | fs/nfsd/nfs4state.c | 6 | ||||
-rw-r--r-- | fs/proc/Makefile | 3 | ||||
-rw-r--r-- | include/asm-i386/termbits.h | 2 | ||||
-rw-r--r-- | include/asm-um/common.lds.S | 1 | ||||
-rw-r--r-- | include/linux/eventpoll.h | 7 | ||||
-rw-r--r-- | include/linux/ipc.h | 9 | ||||
-rw-r--r-- | include/linux/utsname.h | 2 | ||||
-rw-r--r-- | ipc/util.c | 7 | ||||
-rw-r--r-- | kernel/time/ntp.c | 30 |
27 files changed, 122 insertions, 92 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 2524323671b0..8c8090e02d8e 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -1585,12 +1585,6 @@ L: i2c@lm-sensors.org | |||
1585 | T: quilt http://khali.linux-fr.org/devel/linux-2.6/jdelvare-i2c/ | 1585 | T: quilt http://khali.linux-fr.org/devel/linux-2.6/jdelvare-i2c/ |
1586 | S: Maintained | 1586 | S: Maintained |
1587 | 1587 | ||
1588 | I2O | ||
1589 | P: Markus Lidel | ||
1590 | M: markus.lidel@shadowconnect.com | ||
1591 | W: http://i2o.shadowconnect.com/ | ||
1592 | S: Maintained | ||
1593 | |||
1594 | i386 BOOT CODE | 1588 | i386 BOOT CODE |
1595 | P: Riley H. Williams | 1589 | P: Riley H. Williams |
1596 | M: Riley@Williams.Name | 1590 | M: Riley@Williams.Name |
diff --git a/arch/um/include/sysdep-x86_64/ptrace.h b/arch/um/include/sysdep-x86_64/ptrace.h index 66cb400c2c92..62403bd99661 100644 --- a/arch/um/include/sysdep-x86_64/ptrace.h +++ b/arch/um/include/sysdep-x86_64/ptrace.h | |||
@@ -104,10 +104,6 @@ union uml_pt_regs { | |||
104 | #endif | 104 | #endif |
105 | #ifdef UML_CONFIG_MODE_SKAS | 105 | #ifdef UML_CONFIG_MODE_SKAS |
106 | struct skas_regs { | 106 | struct skas_regs { |
107 | /* x86_64 ptrace uses sizeof(user_regs_struct) as its register | ||
108 | * file size, while i386 uses FRAME_SIZE. Therefore, we need | ||
109 | * to use UM_FRAME_SIZE here instead of HOST_FRAME_SIZE. | ||
110 | */ | ||
111 | unsigned long regs[MAX_REG_NR]; | 107 | unsigned long regs[MAX_REG_NR]; |
112 | unsigned long fp[HOST_FP_SIZE]; | 108 | unsigned long fp[HOST_FP_SIZE]; |
113 | struct faultinfo faultinfo; | 109 | struct faultinfo faultinfo; |
diff --git a/arch/um/os-Linux/skas/mem.c b/arch/um/os-Linux/skas/mem.c index b3c11cfa995a..9383e8751ae7 100644 --- a/arch/um/os-Linux/skas/mem.c +++ b/arch/um/os-Linux/skas/mem.c | |||
@@ -48,7 +48,7 @@ int multi_op_count = 0; | |||
48 | static inline long do_syscall_stub(struct mm_id * mm_idp, void **addr) | 48 | static inline long do_syscall_stub(struct mm_id * mm_idp, void **addr) |
49 | { | 49 | { |
50 | unsigned long regs[MAX_REG_NR]; | 50 | unsigned long regs[MAX_REG_NR]; |
51 | int n; | 51 | int n, i; |
52 | long ret, offset; | 52 | long ret, offset; |
53 | unsigned long * data; | 53 | unsigned long * data; |
54 | unsigned long * syscall; | 54 | unsigned long * syscall; |
@@ -66,9 +66,13 @@ static inline long do_syscall_stub(struct mm_id * mm_idp, void **addr) | |||
66 | (unsigned long) &__syscall_stub_start); | 66 | (unsigned long) &__syscall_stub_start); |
67 | 67 | ||
68 | n = ptrace_setregs(pid, regs); | 68 | n = ptrace_setregs(pid, regs); |
69 | if(n < 0) | 69 | if(n < 0){ |
70 | printk("Registers - \n"); | ||
71 | for(i = 0; i < MAX_REG_NR; i++) | ||
72 | printk("\t%d\t0x%lx\n", i, regs[i]); | ||
70 | panic("do_syscall_stub : PTRACE_SETREGS failed, errno = %d\n", | 73 | panic("do_syscall_stub : PTRACE_SETREGS failed, errno = %d\n", |
71 | n); | 74 | -n); |
75 | } | ||
72 | 76 | ||
73 | wait_stub_done(pid, 0, "do_syscall_stub"); | 77 | wait_stub_done(pid, 0, "do_syscall_stub"); |
74 | 78 | ||
diff --git a/arch/um/os-Linux/skas/process.c b/arch/um/os-Linux/skas/process.c index dda06789bcb0..0564422c155f 100644 --- a/arch/um/os-Linux/skas/process.c +++ b/arch/um/os-Linux/skas/process.c | |||
@@ -67,7 +67,7 @@ void wait_stub_done(int pid, int sig, char * fname) | |||
67 | 67 | ||
68 | if((n < 0) || !WIFSTOPPED(status) || | 68 | if((n < 0) || !WIFSTOPPED(status) || |
69 | (WSTOPSIG(status) != SIGUSR1 && WSTOPSIG(status) != SIGTRAP)){ | 69 | (WSTOPSIG(status) != SIGUSR1 && WSTOPSIG(status) != SIGTRAP)){ |
70 | unsigned long regs[HOST_FRAME_SIZE]; | 70 | unsigned long regs[MAX_REG_NR]; |
71 | 71 | ||
72 | if(ptrace(PTRACE_GETREGS, pid, 0, regs) < 0) | 72 | if(ptrace(PTRACE_GETREGS, pid, 0, regs) < 0) |
73 | printk("Failed to get registers from stub, " | 73 | printk("Failed to get registers from stub, " |
@@ -76,7 +76,7 @@ void wait_stub_done(int pid, int sig, char * fname) | |||
76 | int i; | 76 | int i; |
77 | 77 | ||
78 | printk("Stub registers -\n"); | 78 | printk("Stub registers -\n"); |
79 | for(i = 0; i < HOST_FRAME_SIZE; i++) | 79 | for(i = 0; i < ARRAY_SIZE(regs); i++) |
80 | printk("\t%d - %lx\n", i, regs[i]); | 80 | printk("\t%d - %lx\n", i, regs[i]); |
81 | } | 81 | } |
82 | panic("%s : failed to wait for SIGUSR1/SIGTRAP, " | 82 | panic("%s : failed to wait for SIGUSR1/SIGTRAP, " |
@@ -328,7 +328,7 @@ void userspace(union uml_pt_regs *regs) | |||
328 | int copy_context_skas0(unsigned long new_stack, int pid) | 328 | int copy_context_skas0(unsigned long new_stack, int pid) |
329 | { | 329 | { |
330 | int err; | 330 | int err; |
331 | unsigned long regs[HOST_FRAME_SIZE]; | 331 | unsigned long regs[MAX_REG_NR]; |
332 | unsigned long fp_regs[HOST_FP_SIZE]; | 332 | unsigned long fp_regs[HOST_FP_SIZE]; |
333 | unsigned long current_stack = current_stub_stack(); | 333 | unsigned long current_stack = current_stub_stack(); |
334 | struct stub_data *data = (struct stub_data *) current_stack; | 334 | struct stub_data *data = (struct stub_data *) current_stack; |
diff --git a/arch/um/os-Linux/sys-i386/registers.c b/arch/um/os-Linux/sys-i386/registers.c index 79cd93c8c5ed..84b44f9cd42a 100644 --- a/arch/um/os-Linux/sys-i386/registers.c +++ b/arch/um/os-Linux/sys-i386/registers.c | |||
@@ -15,7 +15,7 @@ | |||
15 | 15 | ||
16 | /* These are set once at boot time and not changed thereafter */ | 16 | /* These are set once at boot time and not changed thereafter */ |
17 | 17 | ||
18 | static unsigned long exec_regs[HOST_FRAME_SIZE]; | 18 | static unsigned long exec_regs[MAX_REG_NR]; |
19 | static unsigned long exec_fp_regs[HOST_FP_SIZE]; | 19 | static unsigned long exec_fp_regs[HOST_FP_SIZE]; |
20 | static unsigned long exec_fpx_regs[HOST_XFP_SIZE]; | 20 | static unsigned long exec_fpx_regs[HOST_XFP_SIZE]; |
21 | static int have_fpx_regs = 1; | 21 | static int have_fpx_regs = 1; |
@@ -101,6 +101,7 @@ void init_registers(int pid) | |||
101 | { | 101 | { |
102 | int err; | 102 | int err; |
103 | 103 | ||
104 | memset(exec_regs, 0, sizeof(exec_regs)); | ||
104 | err = ptrace(PTRACE_GETREGS, pid, 0, exec_regs); | 105 | err = ptrace(PTRACE_GETREGS, pid, 0, exec_regs); |
105 | if(err) | 106 | if(err) |
106 | panic("check_ptrace : PTRACE_GETREGS failed, errno = %d", | 107 | panic("check_ptrace : PTRACE_GETREGS failed, errno = %d", |
@@ -124,7 +125,7 @@ void init_registers(int pid) | |||
124 | 125 | ||
125 | void get_safe_registers(unsigned long *regs, unsigned long *fp_regs) | 126 | void get_safe_registers(unsigned long *regs, unsigned long *fp_regs) |
126 | { | 127 | { |
127 | memcpy(regs, exec_regs, HOST_FRAME_SIZE * sizeof(unsigned long)); | 128 | memcpy(regs, exec_regs, sizeof(exec_regs)); |
128 | if(fp_regs != NULL) | 129 | if(fp_regs != NULL) |
129 | memcpy(fp_regs, exec_fp_regs, | 130 | memcpy(fp_regs, exec_fp_regs, |
130 | HOST_FP_SIZE * sizeof(unsigned long)); | 131 | HOST_FP_SIZE * sizeof(unsigned long)); |
diff --git a/arch/um/os-Linux/sys-x86_64/registers.c b/arch/um/os-Linux/sys-x86_64/registers.c index a2d7e0c603f7..e6fc2179d1bc 100644 --- a/arch/um/os-Linux/sys-x86_64/registers.c +++ b/arch/um/os-Linux/sys-x86_64/registers.c | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | /* These are set once at boot time and not changed thereafter */ | 15 | /* These are set once at boot time and not changed thereafter */ |
16 | 16 | ||
17 | static unsigned long exec_regs[HOST_FRAME_SIZE]; | 17 | static unsigned long exec_regs[MAX_REG_NR]; |
18 | static unsigned long exec_fp_regs[HOST_FP_SIZE]; | 18 | static unsigned long exec_fp_regs[HOST_FP_SIZE]; |
19 | 19 | ||
20 | void init_thread_registers(union uml_pt_regs *to) | 20 | void init_thread_registers(union uml_pt_regs *to) |
@@ -72,7 +72,7 @@ void init_registers(int pid) | |||
72 | 72 | ||
73 | void get_safe_registers(unsigned long *regs, unsigned long *fp_regs) | 73 | void get_safe_registers(unsigned long *regs, unsigned long *fp_regs) |
74 | { | 74 | { |
75 | memcpy(regs, exec_regs, HOST_FRAME_SIZE * sizeof(unsigned long)); | 75 | memcpy(regs, exec_regs, sizeof(exec_regs)); |
76 | if(fp_regs != NULL) | 76 | if(fp_regs != NULL) |
77 | memcpy(fp_regs, exec_fp_regs, | 77 | memcpy(fp_regs, exec_fp_regs, |
78 | HOST_FP_SIZE * sizeof(unsigned long)); | 78 | HOST_FP_SIZE * sizeof(unsigned long)); |
diff --git a/drivers/char/generic_serial.c b/drivers/char/generic_serial.c index 337bbcdcf13d..8ea02755b1c9 100644 --- a/drivers/char/generic_serial.c +++ b/drivers/char/generic_serial.c | |||
@@ -710,12 +710,6 @@ void gs_close(struct tty_struct * tty, struct file * filp) | |||
710 | } | 710 | } |
711 | 711 | ||
712 | 712 | ||
713 | static unsigned int gs_baudrates[] = { | ||
714 | 0, 50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, | ||
715 | 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600 | ||
716 | }; | ||
717 | |||
718 | |||
719 | void gs_set_termios (struct tty_struct * tty, | 713 | void gs_set_termios (struct tty_struct * tty, |
720 | struct ktermios * old_termios) | 714 | struct ktermios * old_termios) |
721 | { | 715 | { |
@@ -771,7 +765,6 @@ void gs_set_termios (struct tty_struct * tty, | |||
771 | 765 | ||
772 | baudrate = tty_get_baud_rate(tty); | 766 | baudrate = tty_get_baud_rate(tty); |
773 | 767 | ||
774 | baudrate = gs_baudrates[baudrate]; | ||
775 | if ((tiosp->c_cflag & CBAUD) == B38400) { | 768 | if ((tiosp->c_cflag & CBAUD) == B38400) { |
776 | if ( (port->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) | 769 | if ( (port->flags & ASYNC_SPD_MASK) == ASYNC_SPD_HI) |
777 | baudrate = 57600; | 770 | baudrate = 57600; |
diff --git a/drivers/clocksource/acpi_pm.c b/drivers/clocksource/acpi_pm.c index d42060ede930..5ac309ee7f05 100644 --- a/drivers/clocksource/acpi_pm.c +++ b/drivers/clocksource/acpi_pm.c | |||
@@ -90,7 +90,7 @@ __setup("acpi_pm_good", acpi_pm_good_setup); | |||
90 | static inline void acpi_pm_need_workaround(void) | 90 | static inline void acpi_pm_need_workaround(void) |
91 | { | 91 | { |
92 | clocksource_acpi_pm.read = acpi_pm_read_slow; | 92 | clocksource_acpi_pm.read = acpi_pm_read_slow; |
93 | clocksource_acpi_pm.rating = 110; | 93 | clocksource_acpi_pm.rating = 120; |
94 | } | 94 | } |
95 | 95 | ||
96 | /* | 96 | /* |
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index f52facc570f5..3162010900c9 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
@@ -1015,6 +1015,10 @@ static int cpufreq_remove_dev (struct sys_device * sys_dev) | |||
1015 | { | 1015 | { |
1016 | unsigned int cpu = sys_dev->id; | 1016 | unsigned int cpu = sys_dev->id; |
1017 | int retval; | 1017 | int retval; |
1018 | |||
1019 | if (cpu_is_offline(cpu)) | ||
1020 | return 0; | ||
1021 | |||
1018 | if (unlikely(lock_policy_rwsem_write(cpu))) | 1022 | if (unlikely(lock_policy_rwsem_write(cpu))) |
1019 | BUG(); | 1023 | BUG(); |
1020 | 1024 | ||
diff --git a/drivers/eisa/pci_eisa.c b/drivers/eisa/pci_eisa.c index 9e913629ef39..74edb1d0110f 100644 --- a/drivers/eisa/pci_eisa.c +++ b/drivers/eisa/pci_eisa.c | |||
@@ -19,8 +19,8 @@ | |||
19 | /* There is only *one* pci_eisa device per machine, right ? */ | 19 | /* There is only *one* pci_eisa device per machine, right ? */ |
20 | static struct eisa_root_device pci_eisa_root; | 20 | static struct eisa_root_device pci_eisa_root; |
21 | 21 | ||
22 | static int __devinit pci_eisa_init (struct pci_dev *pdev, | 22 | static int __init pci_eisa_init(struct pci_dev *pdev, |
23 | const struct pci_device_id *ent) | 23 | const struct pci_device_id *ent) |
24 | { | 24 | { |
25 | int rc; | 25 | int rc; |
26 | 26 | ||
diff --git a/drivers/isdn/hisax/isar.c b/drivers/isdn/hisax/isar.c index 9df9e3548cf1..c547a6665052 100644 --- a/drivers/isdn/hisax/isar.c +++ b/drivers/isdn/hisax/isar.c | |||
@@ -440,7 +440,7 @@ isar_bh(struct work_struct *work) | |||
440 | { | 440 | { |
441 | struct BCState *bcs = container_of(work, struct BCState, tqueue); | 441 | struct BCState *bcs = container_of(work, struct BCState, tqueue); |
442 | 442 | ||
443 | BChannel_bh(bcs); | 443 | BChannel_bh(work); |
444 | if (test_and_clear_bit(B_LL_NOCARRIER, &bcs->event)) | 444 | if (test_and_clear_bit(B_LL_NOCARRIER, &bcs->event)) |
445 | ll_deliver_faxstat(bcs, ISDN_FAX_CLASS1_NOCARR); | 445 | ll_deliver_faxstat(bcs, ISDN_FAX_CLASS1_NOCARR); |
446 | if (test_and_clear_bit(B_LL_CONNECT, &bcs->event)) | 446 | if (test_and_clear_bit(B_LL_CONNECT, &bcs->event)) |
diff --git a/drivers/md/md.c b/drivers/md/md.c index 6c06e825cff5..2a9b6a07e3a2 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
@@ -1318,6 +1318,7 @@ static int bind_rdev_to_array(mdk_rdev_t * rdev, mddev_t * mddev) | |||
1318 | char b[BDEVNAME_SIZE]; | 1318 | char b[BDEVNAME_SIZE]; |
1319 | struct kobject *ko; | 1319 | struct kobject *ko; |
1320 | char *s; | 1320 | char *s; |
1321 | int err; | ||
1321 | 1322 | ||
1322 | if (rdev->mddev) { | 1323 | if (rdev->mddev) { |
1323 | MD_BUG(); | 1324 | MD_BUG(); |
@@ -1352,20 +1353,29 @@ static int bind_rdev_to_array(mdk_rdev_t * rdev, mddev_t * mddev) | |||
1352 | while ( (s=strchr(rdev->kobj.k_name, '/')) != NULL) | 1353 | while ( (s=strchr(rdev->kobj.k_name, '/')) != NULL) |
1353 | *s = '!'; | 1354 | *s = '!'; |
1354 | 1355 | ||
1355 | list_add(&rdev->same_set, &mddev->disks); | ||
1356 | rdev->mddev = mddev; | 1356 | rdev->mddev = mddev; |
1357 | printk(KERN_INFO "md: bind<%s>\n", b); | 1357 | printk(KERN_INFO "md: bind<%s>\n", b); |
1358 | 1358 | ||
1359 | rdev->kobj.parent = &mddev->kobj; | 1359 | rdev->kobj.parent = &mddev->kobj; |
1360 | kobject_add(&rdev->kobj); | 1360 | if ((err = kobject_add(&rdev->kobj))) |
1361 | goto fail; | ||
1361 | 1362 | ||
1362 | if (rdev->bdev->bd_part) | 1363 | if (rdev->bdev->bd_part) |
1363 | ko = &rdev->bdev->bd_part->kobj; | 1364 | ko = &rdev->bdev->bd_part->kobj; |
1364 | else | 1365 | else |
1365 | ko = &rdev->bdev->bd_disk->kobj; | 1366 | ko = &rdev->bdev->bd_disk->kobj; |
1366 | sysfs_create_link(&rdev->kobj, ko, "block"); | 1367 | if ((err = sysfs_create_link(&rdev->kobj, ko, "block"))) { |
1368 | kobject_del(&rdev->kobj); | ||
1369 | goto fail; | ||
1370 | } | ||
1371 | list_add(&rdev->same_set, &mddev->disks); | ||
1367 | bd_claim_by_disk(rdev->bdev, rdev, mddev->gendisk); | 1372 | bd_claim_by_disk(rdev->bdev, rdev, mddev->gendisk); |
1368 | return 0; | 1373 | return 0; |
1374 | |||
1375 | fail: | ||
1376 | printk(KERN_WARNING "md: failed to register dev-%s for %s\n", | ||
1377 | b, mdname(mddev)); | ||
1378 | return err; | ||
1369 | } | 1379 | } |
1370 | 1380 | ||
1371 | static void unbind_rdev_from_array(mdk_rdev_t * rdev) | 1381 | static void unbind_rdev_from_array(mdk_rdev_t * rdev) |
@@ -2966,7 +2976,9 @@ static struct kobject *md_probe(dev_t dev, int *part, void *data) | |||
2966 | mddev->kobj.k_name = NULL; | 2976 | mddev->kobj.k_name = NULL; |
2967 | snprintf(mddev->kobj.name, KOBJ_NAME_LEN, "%s", "md"); | 2977 | snprintf(mddev->kobj.name, KOBJ_NAME_LEN, "%s", "md"); |
2968 | mddev->kobj.ktype = &md_ktype; | 2978 | mddev->kobj.ktype = &md_ktype; |
2969 | kobject_register(&mddev->kobj); | 2979 | if (kobject_register(&mddev->kobj)) |
2980 | printk(KERN_WARNING "md: cannot register %s/md - name in use\n", | ||
2981 | disk->disk_name); | ||
2970 | return NULL; | 2982 | return NULL; |
2971 | } | 2983 | } |
2972 | 2984 | ||
@@ -3144,9 +3156,12 @@ static int do_md_run(mddev_t * mddev) | |||
3144 | bitmap_destroy(mddev); | 3156 | bitmap_destroy(mddev); |
3145 | return err; | 3157 | return err; |
3146 | } | 3158 | } |
3147 | if (mddev->pers->sync_request) | 3159 | if (mddev->pers->sync_request) { |
3148 | sysfs_create_group(&mddev->kobj, &md_redundancy_group); | 3160 | if (sysfs_create_group(&mddev->kobj, &md_redundancy_group)) |
3149 | else if (mddev->ro == 2) /* auto-readonly not meaningful */ | 3161 | printk(KERN_WARNING |
3162 | "md: cannot register extra attributes for %s\n", | ||
3163 | mdname(mddev)); | ||
3164 | } else if (mddev->ro == 2) /* auto-readonly not meaningful */ | ||
3150 | mddev->ro = 0; | 3165 | mddev->ro = 0; |
3151 | 3166 | ||
3152 | atomic_set(&mddev->writes_pending,0); | 3167 | atomic_set(&mddev->writes_pending,0); |
@@ -3160,7 +3175,9 @@ static int do_md_run(mddev_t * mddev) | |||
3160 | if (rdev->raid_disk >= 0) { | 3175 | if (rdev->raid_disk >= 0) { |
3161 | char nm[20]; | 3176 | char nm[20]; |
3162 | sprintf(nm, "rd%d", rdev->raid_disk); | 3177 | sprintf(nm, "rd%d", rdev->raid_disk); |
3163 | sysfs_create_link(&mddev->kobj, &rdev->kobj, nm); | 3178 | if (sysfs_create_link(&mddev->kobj, &rdev->kobj, nm)) |
3179 | printk("md: cannot register %s for %s\n", | ||
3180 | nm, mdname(mddev)); | ||
3164 | } | 3181 | } |
3165 | 3182 | ||
3166 | set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); | 3183 | set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); |
@@ -3325,6 +3342,7 @@ static int do_md_stop(mddev_t * mddev, int mode) | |||
3325 | mddev->queue->merge_bvec_fn = NULL; | 3342 | mddev->queue->merge_bvec_fn = NULL; |
3326 | mddev->queue->unplug_fn = NULL; | 3343 | mddev->queue->unplug_fn = NULL; |
3327 | mddev->queue->issue_flush_fn = NULL; | 3344 | mddev->queue->issue_flush_fn = NULL; |
3345 | mddev->queue->backing_dev_info.congested_fn = NULL; | ||
3328 | if (mddev->pers->sync_request) | 3346 | if (mddev->pers->sync_request) |
3329 | sysfs_remove_group(&mddev->kobj, &md_redundancy_group); | 3347 | sysfs_remove_group(&mddev->kobj, &md_redundancy_group); |
3330 | 3348 | ||
@@ -5385,8 +5403,12 @@ static int remove_and_add_spares(mddev_t *mddev) | |||
5385 | if (mddev->pers->hot_add_disk(mddev,rdev)) { | 5403 | if (mddev->pers->hot_add_disk(mddev,rdev)) { |
5386 | char nm[20]; | 5404 | char nm[20]; |
5387 | sprintf(nm, "rd%d", rdev->raid_disk); | 5405 | sprintf(nm, "rd%d", rdev->raid_disk); |
5388 | sysfs_create_link(&mddev->kobj, | 5406 | if (sysfs_create_link(&mddev->kobj, |
5389 | &rdev->kobj, nm); | 5407 | &rdev->kobj, nm)) |
5408 | printk(KERN_WARNING | ||
5409 | "md: cannot register " | ||
5410 | "%s for %s\n", | ||
5411 | nm, mdname(mddev)); | ||
5390 | spares++; | 5412 | spares++; |
5391 | md_new_event(mddev); | 5413 | md_new_event(mddev); |
5392 | } else | 5414 | } else |
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 54a1ad5eef42..8d59914f2057 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c | |||
@@ -3642,12 +3642,15 @@ static int run(mddev_t *mddev) | |||
3642 | } | 3642 | } |
3643 | 3643 | ||
3644 | /* Ok, everything is just fine now */ | 3644 | /* Ok, everything is just fine now */ |
3645 | sysfs_create_group(&mddev->kobj, &raid5_attrs_group); | 3645 | if (sysfs_create_group(&mddev->kobj, &raid5_attrs_group)) |
3646 | printk(KERN_WARNING | ||
3647 | "raid5: failed to create sysfs attributes for %s\n", | ||
3648 | mdname(mddev)); | ||
3646 | 3649 | ||
3647 | mddev->queue->unplug_fn = raid5_unplug_device; | 3650 | mddev->queue->unplug_fn = raid5_unplug_device; |
3648 | mddev->queue->issue_flush_fn = raid5_issue_flush; | 3651 | mddev->queue->issue_flush_fn = raid5_issue_flush; |
3649 | mddev->queue->backing_dev_info.congested_fn = raid5_congested; | ||
3650 | mddev->queue->backing_dev_info.congested_data = mddev; | 3652 | mddev->queue->backing_dev_info.congested_data = mddev; |
3653 | mddev->queue->backing_dev_info.congested_fn = raid5_congested; | ||
3651 | 3654 | ||
3652 | mddev->array_size = mddev->size * (conf->previous_raid_disks - | 3655 | mddev->array_size = mddev->size * (conf->previous_raid_disks - |
3653 | conf->max_degraded); | 3656 | conf->max_degraded); |
@@ -3678,6 +3681,7 @@ static int stop(mddev_t *mddev) | |||
3678 | mddev->thread = NULL; | 3681 | mddev->thread = NULL; |
3679 | shrink_stripes(conf); | 3682 | shrink_stripes(conf); |
3680 | kfree(conf->stripe_hashtbl); | 3683 | kfree(conf->stripe_hashtbl); |
3684 | mddev->queue->backing_dev_info.congested_fn = NULL; | ||
3681 | blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/ | 3685 | blk_sync_queue(mddev->queue); /* the unplug fn references 'conf'*/ |
3682 | sysfs_remove_group(&mddev->kobj, &raid5_attrs_group); | 3686 | sysfs_remove_group(&mddev->kobj, &raid5_attrs_group); |
3683 | kfree(conf->disks); | 3687 | kfree(conf->disks); |
@@ -3950,7 +3954,12 @@ static int raid5_start_reshape(mddev_t *mddev) | |||
3950 | added_devices++; | 3954 | added_devices++; |
3951 | rdev->recovery_offset = 0; | 3955 | rdev->recovery_offset = 0; |
3952 | sprintf(nm, "rd%d", rdev->raid_disk); | 3956 | sprintf(nm, "rd%d", rdev->raid_disk); |
3953 | sysfs_create_link(&mddev->kobj, &rdev->kobj, nm); | 3957 | if (sysfs_create_link(&mddev->kobj, |
3958 | &rdev->kobj, nm)) | ||
3959 | printk(KERN_WARNING | ||
3960 | "raid5: failed to create " | ||
3961 | " link %s for %s\n", | ||
3962 | nm, mdname(mddev)); | ||
3954 | } else | 3963 | } else |
3955 | break; | 3964 | break; |
3956 | } | 3965 | } |
@@ -4104,6 +4113,10 @@ static struct mdk_personality raid4_personality = | |||
4104 | .spare_active = raid5_spare_active, | 4113 | .spare_active = raid5_spare_active, |
4105 | .sync_request = sync_request, | 4114 | .sync_request = sync_request, |
4106 | .resize = raid5_resize, | 4115 | .resize = raid5_resize, |
4116 | #ifdef CONFIG_MD_RAID5_RESHAPE | ||
4117 | .check_reshape = raid5_check_reshape, | ||
4118 | .start_reshape = raid5_start_reshape, | ||
4119 | #endif | ||
4107 | .quiesce = raid5_quiesce, | 4120 | .quiesce = raid5_quiesce, |
4108 | }; | 4121 | }; |
4109 | 4122 | ||
diff --git a/drivers/message/i2o/i2o_block.c b/drivers/message/i2o/i2o_block.c index da9859f2caf2..b17c4b2bc9ef 100644 --- a/drivers/message/i2o/i2o_block.c +++ b/drivers/message/i2o/i2o_block.c | |||
@@ -390,13 +390,6 @@ static int i2o_block_prep_req_fn(struct request_queue *q, struct request *req) | |||
390 | return BLKPREP_KILL; | 390 | return BLKPREP_KILL; |
391 | } | 391 | } |
392 | 392 | ||
393 | /* request is already processed by us, so return */ | ||
394 | if (blk_special_request(req)) { | ||
395 | osm_debug("REQ_SPECIAL already set!\n"); | ||
396 | req->cmd_flags |= REQ_DONTPREP; | ||
397 | return BLKPREP_OK; | ||
398 | } | ||
399 | |||
400 | /* connect the i2o_block_request to the request */ | 393 | /* connect the i2o_block_request to the request */ |
401 | if (!req->special) { | 394 | if (!req->special) { |
402 | ireq = i2o_block_request_alloc(); | 395 | ireq = i2o_block_request_alloc(); |
@@ -408,11 +401,8 @@ static int i2o_block_prep_req_fn(struct request_queue *q, struct request *req) | |||
408 | ireq->i2o_blk_dev = i2o_blk_dev; | 401 | ireq->i2o_blk_dev = i2o_blk_dev; |
409 | req->special = ireq; | 402 | req->special = ireq; |
410 | ireq->req = req; | 403 | ireq->req = req; |
411 | } else | 404 | } |
412 | ireq = req->special; | ||
413 | |||
414 | /* do not come back here */ | 405 | /* do not come back here */ |
415 | req->cmd_type = REQ_TYPE_SPECIAL; | ||
416 | req->cmd_flags |= REQ_DONTPREP; | 406 | req->cmd_flags |= REQ_DONTPREP; |
417 | 407 | ||
418 | return BLKPREP_OK; | 408 | return BLKPREP_OK; |
diff --git a/drivers/pcmcia/au1000_generic.c b/drivers/pcmcia/au1000_generic.c index 551bde5d9430..b693367d38cd 100644 --- a/drivers/pcmcia/au1000_generic.c +++ b/drivers/pcmcia/au1000_generic.c | |||
@@ -372,7 +372,7 @@ int au1x00_pcmcia_socket_probe(struct device *dev, struct pcmcia_low_level *ops, | |||
372 | skt->socket.resource_ops = &pccard_static_ops; | 372 | skt->socket.resource_ops = &pccard_static_ops; |
373 | skt->socket.ops = &au1x00_pcmcia_operations; | 373 | skt->socket.ops = &au1x00_pcmcia_operations; |
374 | skt->socket.owner = ops->owner; | 374 | skt->socket.owner = ops->owner; |
375 | skt->socket.dev.dev = dev; | 375 | skt->socket.dev.parent = dev; |
376 | 376 | ||
377 | init_timer(&skt->poll_timer); | 377 | init_timer(&skt->poll_timer); |
378 | skt->poll_timer.function = au1x00_pcmcia_poll_event; | 378 | skt->poll_timer.function = au1x00_pcmcia_poll_event; |
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 2328128728be..6657331eed93 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c | |||
@@ -189,8 +189,8 @@ static DECLARE_MUTEX(board_lock); | |||
189 | * this is exported so that for example a USB or parport based adapter | 189 | * this is exported so that for example a USB or parport based adapter |
190 | * driver could add devices (which it would learn about out-of-band). | 190 | * driver could add devices (which it would learn about out-of-band). |
191 | */ | 191 | */ |
192 | struct spi_device *__init_or_module | 192 | struct spi_device *spi_new_device(struct spi_master *master, |
193 | spi_new_device(struct spi_master *master, struct spi_board_info *chip) | 193 | struct spi_board_info *chip) |
194 | { | 194 | { |
195 | struct spi_device *proxy; | 195 | struct spi_device *proxy; |
196 | struct device *dev = master->cdev.dev; | 196 | struct device *dev = master->cdev.dev; |
@@ -352,8 +352,7 @@ static struct class spi_master_class = { | |||
352 | * the master's methods before calling spi_register_master(); and (after errors | 352 | * the master's methods before calling spi_register_master(); and (after errors |
353 | * adding the device) calling spi_master_put() to prevent a memory leak. | 353 | * adding the device) calling spi_master_put() to prevent a memory leak. |
354 | */ | 354 | */ |
355 | struct spi_master * __init_or_module | 355 | struct spi_master *spi_alloc_master(struct device *dev, unsigned size) |
356 | spi_alloc_master(struct device *dev, unsigned size) | ||
357 | { | 356 | { |
358 | struct spi_master *master; | 357 | struct spi_master *master; |
359 | 358 | ||
@@ -392,8 +391,7 @@ EXPORT_SYMBOL_GPL(spi_alloc_master); | |||
392 | * After a successful return, the caller is responsible for calling | 391 | * After a successful return, the caller is responsible for calling |
393 | * spi_unregister_master(). | 392 | * spi_unregister_master(). |
394 | */ | 393 | */ |
395 | int __init_or_module | 394 | int spi_register_master(struct spi_master *master) |
396 | spi_register_master(struct spi_master *master) | ||
397 | { | 395 | { |
398 | static atomic_t dyn_bus_id = ATOMIC_INIT((1<<16) - 1); | 396 | static atomic_t dyn_bus_id = ATOMIC_INIT((1<<16) - 1); |
399 | struct device *dev = master->cdev.dev; | 397 | struct device *dev = master->cdev.dev; |
diff --git a/fs/nfsd/nfs3xdr.c b/fs/nfsd/nfs3xdr.c index 6f677988c71d..7e4bb0af24d7 100644 --- a/fs/nfsd/nfs3xdr.c +++ b/fs/nfsd/nfs3xdr.c | |||
@@ -859,8 +859,8 @@ compose_entry_fh(struct nfsd3_readdirres *cd, struct svc_fh *fhp, | |||
859 | #define NFS3_ENTRY_BAGGAGE (2 + 1 + 2 + 1) | 859 | #define NFS3_ENTRY_BAGGAGE (2 + 1 + 2 + 1) |
860 | #define NFS3_ENTRYPLUS_BAGGAGE (1 + 21 + 1 + (NFS3_FHSIZE >> 2)) | 860 | #define NFS3_ENTRYPLUS_BAGGAGE (1 + 21 + 1 + (NFS3_FHSIZE >> 2)) |
861 | static int | 861 | static int |
862 | encode_entry(struct readdir_cd *ccd, const char *name, | 862 | encode_entry(struct readdir_cd *ccd, const char *name, int namlen, |
863 | int namlen, off_t offset, ino_t ino, unsigned int d_type, int plus) | 863 | loff_t offset, ino_t ino, unsigned int d_type, int plus) |
864 | { | 864 | { |
865 | struct nfsd3_readdirres *cd = container_of(ccd, struct nfsd3_readdirres, | 865 | struct nfsd3_readdirres *cd = container_of(ccd, struct nfsd3_readdirres, |
866 | common); | 866 | common); |
@@ -880,7 +880,7 @@ encode_entry(struct readdir_cd *ccd, const char *name, | |||
880 | *cd->offset1 = htonl(offset64 & 0xffffffff); | 880 | *cd->offset1 = htonl(offset64 & 0xffffffff); |
881 | cd->offset1 = NULL; | 881 | cd->offset1 = NULL; |
882 | } else { | 882 | } else { |
883 | xdr_encode_hyper(cd->offset, (u64) offset); | 883 | xdr_encode_hyper(cd->offset, offset64); |
884 | } | 884 | } |
885 | } | 885 | } |
886 | 886 | ||
diff --git a/fs/nfsd/nfs4acl.c b/fs/nfsd/nfs4acl.c index 832673b14587..673a53c014a3 100644 --- a/fs/nfsd/nfs4acl.c +++ b/fs/nfsd/nfs4acl.c | |||
@@ -228,7 +228,7 @@ _posix_to_nfsv4_one(struct posix_acl *pacl, struct nfs4_acl *acl, | |||
228 | struct posix_acl_summary pas; | 228 | struct posix_acl_summary pas; |
229 | unsigned short deny; | 229 | unsigned short deny; |
230 | int eflag = ((flags & NFS4_ACL_TYPE_DEFAULT) ? | 230 | int eflag = ((flags & NFS4_ACL_TYPE_DEFAULT) ? |
231 | NFS4_INHERITANCE_FLAGS : 0); | 231 | NFS4_INHERITANCE_FLAGS | NFS4_ACE_INHERIT_ONLY_ACE : 0); |
232 | 232 | ||
233 | BUG_ON(pacl->a_count < 3); | 233 | BUG_ON(pacl->a_count < 3); |
234 | summarize_posix_acl(pacl, &pas); | 234 | summarize_posix_acl(pacl, &pas); |
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 9e4067999209..af360705e551 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
@@ -750,9 +750,8 @@ nfsd4_setclientid(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate, | |||
750 | status = nfserr_clid_inuse; | 750 | status = nfserr_clid_inuse; |
751 | if (!cmp_creds(&conf->cl_cred, &rqstp->rq_cred) | 751 | if (!cmp_creds(&conf->cl_cred, &rqstp->rq_cred) |
752 | || conf->cl_addr != sin->sin_addr.s_addr) { | 752 | || conf->cl_addr != sin->sin_addr.s_addr) { |
753 | printk("NFSD: setclientid: string in use by client" | 753 | dprintk("NFSD: setclientid: string in use by client" |
754 | "(clientid %08x/%08x)\n", | 754 | "at %u.%u.%u.%u\n", NIPQUAD(conf->cl_addr)); |
755 | conf->cl_clientid.cl_boot, conf->cl_clientid.cl_id); | ||
756 | goto out; | 755 | goto out; |
757 | } | 756 | } |
758 | } | 757 | } |
@@ -3261,7 +3260,6 @@ __nfs4_state_shutdown(void) | |||
3261 | unhash_delegation(dp); | 3260 | unhash_delegation(dp); |
3262 | } | 3261 | } |
3263 | 3262 | ||
3264 | cancel_delayed_work(&laundromat_work); | ||
3265 | nfsd4_shutdown_recdir(); | 3263 | nfsd4_shutdown_recdir(); |
3266 | nfs4_init = 0; | 3264 | nfs4_init = 0; |
3267 | } | 3265 | } |
diff --git a/fs/proc/Makefile b/fs/proc/Makefile index a6b3a8f878f0..bce38e3f06cb 100644 --- a/fs/proc/Makefile +++ b/fs/proc/Makefile | |||
@@ -8,8 +8,9 @@ proc-y := nommu.o task_nommu.o | |||
8 | proc-$(CONFIG_MMU) := mmu.o task_mmu.o | 8 | proc-$(CONFIG_MMU) := mmu.o task_mmu.o |
9 | 9 | ||
10 | proc-y += inode.o root.o base.o generic.o array.o \ | 10 | proc-y += inode.o root.o base.o generic.o array.o \ |
11 | proc_tty.o proc_misc.o proc_sysctl.o | 11 | proc_tty.o proc_misc.o |
12 | 12 | ||
13 | proc-$(CONFIG_PROC_SYSCTL) += proc_sysctl.o | ||
13 | proc-$(CONFIG_PROC_KCORE) += kcore.o | 14 | proc-$(CONFIG_PROC_KCORE) += kcore.o |
14 | proc-$(CONFIG_PROC_VMCORE) += vmcore.o | 15 | proc-$(CONFIG_PROC_VMCORE) += vmcore.o |
15 | proc-$(CONFIG_PROC_DEVICETREE) += proc_devtree.o | 16 | proc-$(CONFIG_PROC_DEVICETREE) += proc_devtree.o |
diff --git a/include/asm-i386/termbits.h b/include/asm-i386/termbits.h index 12baf1d6343f..2e6237693814 100644 --- a/include/asm-i386/termbits.h +++ b/include/asm-i386/termbits.h | |||
@@ -144,7 +144,7 @@ struct ktermios { | |||
144 | #define B3000000 0010015 | 144 | #define B3000000 0010015 |
145 | #define B3500000 0010016 | 145 | #define B3500000 0010016 |
146 | #define B4000000 0010017 | 146 | #define B4000000 0010017 |
147 | #define CIBAUD 002003600000 /* input baud rate (not used) */ | 147 | #define CIBAUD 002003600000 |
148 | #define CMSPAR 010000000000 /* mark or space (stick) parity */ | 148 | #define CMSPAR 010000000000 /* mark or space (stick) parity */ |
149 | #define CRTSCTS 020000000000 /* flow control */ | 149 | #define CRTSCTS 020000000000 /* flow control */ |
150 | 150 | ||
diff --git a/include/asm-um/common.lds.S b/include/asm-um/common.lds.S index f0454516dd31..b16222b42821 100644 --- a/include/asm-um/common.lds.S +++ b/include/asm-um/common.lds.S | |||
@@ -15,6 +15,7 @@ | |||
15 | PROVIDE (_unprotected_end = .); | 15 | PROVIDE (_unprotected_end = .); |
16 | 16 | ||
17 | . = ALIGN(4096); | 17 | . = ALIGN(4096); |
18 | .note : { *(note.*) } | ||
18 | __start___ex_table = .; | 19 | __start___ex_table = .; |
19 | __ex_table : { *(__ex_table) } | 20 | __ex_table : { *(__ex_table) } |
20 | __stop___ex_table = .; | 21 | __stop___ex_table = .; |
diff --git a/include/linux/eventpoll.h b/include/linux/eventpoll.h index 84cfa8bbdc36..d2a96cbf4f0e 100644 --- a/include/linux/eventpoll.h +++ b/include/linux/eventpoll.h | |||
@@ -31,12 +31,19 @@ | |||
31 | /* | 31 | /* |
32 | * On x86-64 make the 64bit structure have the same alignment as the | 32 | * On x86-64 make the 64bit structure have the same alignment as the |
33 | * 32bit structure. This makes 32bit emulation easier. | 33 | * 32bit structure. This makes 32bit emulation easier. |
34 | * | ||
35 | * UML/x86_64 needs the same packing as x86_64 - UML + UML_X86 + | ||
36 | * 64_BIT adds up to UML/x86_64. | ||
34 | */ | 37 | */ |
35 | #ifdef __x86_64__ | 38 | #ifdef __x86_64__ |
36 | #define EPOLL_PACKED __attribute__((packed)) | 39 | #define EPOLL_PACKED __attribute__((packed)) |
37 | #else | 40 | #else |
41 | #if defined(CONFIG_UML) && defined(CONFIG_UML_X86) && defined(CONFIG_64BIT) | ||
42 | #define EPOLL_PACKED __attribute__((packed)) | ||
43 | #else | ||
38 | #define EPOLL_PACKED | 44 | #define EPOLL_PACKED |
39 | #endif | 45 | #endif |
46 | #endif | ||
40 | 47 | ||
41 | struct epoll_event { | 48 | struct epoll_event { |
42 | __u32 events; | 49 | __u32 events; |
diff --git a/include/linux/ipc.h b/include/linux/ipc.h index 636094c29b16..6da6772c19ff 100644 --- a/include/linux/ipc.h +++ b/include/linux/ipc.h | |||
@@ -92,19 +92,16 @@ extern struct ipc_namespace init_ipc_ns; | |||
92 | 92 | ||
93 | #ifdef CONFIG_SYSVIPC | 93 | #ifdef CONFIG_SYSVIPC |
94 | #define INIT_IPC_NS(ns) .ns = &init_ipc_ns, | 94 | #define INIT_IPC_NS(ns) .ns = &init_ipc_ns, |
95 | extern int copy_ipcs(unsigned long flags, struct task_struct *tsk); | ||
95 | #else | 96 | #else |
96 | #define INIT_IPC_NS(ns) | 97 | #define INIT_IPC_NS(ns) |
98 | static inline int copy_ipcs(unsigned long flags, struct task_struct *tsk) | ||
99 | { return 0; } | ||
97 | #endif | 100 | #endif |
98 | 101 | ||
99 | #ifdef CONFIG_IPC_NS | 102 | #ifdef CONFIG_IPC_NS |
100 | extern void free_ipc_ns(struct kref *kref); | 103 | extern void free_ipc_ns(struct kref *kref); |
101 | extern int copy_ipcs(unsigned long flags, struct task_struct *tsk); | ||
102 | extern int unshare_ipcs(unsigned long flags, struct ipc_namespace **ns); | 104 | extern int unshare_ipcs(unsigned long flags, struct ipc_namespace **ns); |
103 | #else | ||
104 | static inline int copy_ipcs(unsigned long flags, struct task_struct *tsk) | ||
105 | { | ||
106 | return 0; | ||
107 | } | ||
108 | #endif | 105 | #endif |
109 | 106 | ||
110 | static inline struct ipc_namespace *get_ipc_ns(struct ipc_namespace *ns) | 107 | static inline struct ipc_namespace *get_ipc_ns(struct ipc_namespace *ns) |
diff --git a/include/linux/utsname.h b/include/linux/utsname.h index a4555fe3754c..e10267d402c5 100644 --- a/include/linux/utsname.h +++ b/include/linux/utsname.h | |||
@@ -70,6 +70,8 @@ static inline int unshare_utsname(unsigned long unshare_flags, | |||
70 | 70 | ||
71 | static inline int copy_utsname(int flags, struct task_struct *tsk) | 71 | static inline int copy_utsname(int flags, struct task_struct *tsk) |
72 | { | 72 | { |
73 | if (flags & CLONE_NEWUTS) | ||
74 | return -EINVAL; | ||
73 | return 0; | 75 | return 0; |
74 | } | 76 | } |
75 | static inline void put_uts_ns(struct uts_namespace *ns) | 77 | static inline void put_uts_ns(struct uts_namespace *ns) |
diff --git a/ipc/util.c b/ipc/util.c index 08a647965b9e..0b652387d169 100644 --- a/ipc/util.c +++ b/ipc/util.c | |||
@@ -144,6 +144,13 @@ void free_ipc_ns(struct kref *kref) | |||
144 | shm_exit_ns(ns); | 144 | shm_exit_ns(ns); |
145 | kfree(ns); | 145 | kfree(ns); |
146 | } | 146 | } |
147 | #else | ||
148 | int copy_ipcs(unsigned long flags, struct task_struct *tsk) | ||
149 | { | ||
150 | if (flags & CLONE_NEWIPC) | ||
151 | return -EINVAL; | ||
152 | return 0; | ||
153 | } | ||
147 | #endif | 154 | #endif |
148 | 155 | ||
149 | /** | 156 | /** |
diff --git a/kernel/time/ntp.c b/kernel/time/ntp.c index eb12509e00bd..cb25649c6f50 100644 --- a/kernel/time/ntp.c +++ b/kernel/time/ntp.c | |||
@@ -32,7 +32,7 @@ static u64 tick_length, tick_length_base; | |||
32 | /* TIME_ERROR prevents overwriting the CMOS clock */ | 32 | /* TIME_ERROR prevents overwriting the CMOS clock */ |
33 | static int time_state = TIME_OK; /* clock synchronization status */ | 33 | static int time_state = TIME_OK; /* clock synchronization status */ |
34 | int time_status = STA_UNSYNC; /* clock status bits */ | 34 | int time_status = STA_UNSYNC; /* clock status bits */ |
35 | static long time_offset; /* time adjustment (ns) */ | 35 | static s64 time_offset; /* time adjustment (ns) */ |
36 | static long time_constant = 2; /* pll time constant */ | 36 | static long time_constant = 2; /* pll time constant */ |
37 | long time_maxerror = NTP_PHASE_LIMIT; /* maximum error (us) */ | 37 | long time_maxerror = NTP_PHASE_LIMIT; /* maximum error (us) */ |
38 | long time_esterror = NTP_PHASE_LIMIT; /* estimated error (us) */ | 38 | long time_esterror = NTP_PHASE_LIMIT; /* estimated error (us) */ |
@@ -196,7 +196,7 @@ void __attribute__ ((weak)) notify_arch_cmos_timer(void) | |||
196 | */ | 196 | */ |
197 | int do_adjtimex(struct timex *txc) | 197 | int do_adjtimex(struct timex *txc) |
198 | { | 198 | { |
199 | long ltemp, mtemp, save_adjust; | 199 | long mtemp, save_adjust, rem; |
200 | s64 freq_adj, temp64; | 200 | s64 freq_adj, temp64; |
201 | int result; | 201 | int result; |
202 | 202 | ||
@@ -277,14 +277,14 @@ int do_adjtimex(struct timex *txc) | |||
277 | time_adjust = txc->offset; | 277 | time_adjust = txc->offset; |
278 | } | 278 | } |
279 | else if (time_status & STA_PLL) { | 279 | else if (time_status & STA_PLL) { |
280 | ltemp = txc->offset * NSEC_PER_USEC; | 280 | time_offset = txc->offset * NSEC_PER_USEC; |
281 | 281 | ||
282 | /* | 282 | /* |
283 | * Scale the phase adjustment and | 283 | * Scale the phase adjustment and |
284 | * clamp to the operating range. | 284 | * clamp to the operating range. |
285 | */ | 285 | */ |
286 | time_offset = min(ltemp, MAXPHASE * NSEC_PER_USEC); | 286 | time_offset = min(time_offset, (s64)MAXPHASE * NSEC_PER_USEC); |
287 | time_offset = max(time_offset, -MAXPHASE * NSEC_PER_USEC); | 287 | time_offset = max(time_offset, (s64)-MAXPHASE * NSEC_PER_USEC); |
288 | 288 | ||
289 | /* | 289 | /* |
290 | * Select whether the frequency is to be controlled | 290 | * Select whether the frequency is to be controlled |
@@ -297,11 +297,11 @@ int do_adjtimex(struct timex *txc) | |||
297 | mtemp = xtime.tv_sec - time_reftime; | 297 | mtemp = xtime.tv_sec - time_reftime; |
298 | time_reftime = xtime.tv_sec; | 298 | time_reftime = xtime.tv_sec; |
299 | 299 | ||
300 | freq_adj = (s64)time_offset * mtemp; | 300 | freq_adj = time_offset * mtemp; |
301 | freq_adj = shift_right(freq_adj, time_constant * 2 + | 301 | freq_adj = shift_right(freq_adj, time_constant * 2 + |
302 | (SHIFT_PLL + 2) * 2 - SHIFT_NSEC); | 302 | (SHIFT_PLL + 2) * 2 - SHIFT_NSEC); |
303 | if (mtemp >= MINSEC && (time_status & STA_FLL || mtemp > MAXSEC)) { | 303 | if (mtemp >= MINSEC && (time_status & STA_FLL || mtemp > MAXSEC)) { |
304 | temp64 = (s64)time_offset << (SHIFT_NSEC - SHIFT_FLL); | 304 | temp64 = time_offset << (SHIFT_NSEC - SHIFT_FLL); |
305 | if (time_offset < 0) { | 305 | if (time_offset < 0) { |
306 | temp64 = -temp64; | 306 | temp64 = -temp64; |
307 | do_div(temp64, mtemp); | 307 | do_div(temp64, mtemp); |
@@ -314,8 +314,10 @@ int do_adjtimex(struct timex *txc) | |||
314 | freq_adj += time_freq; | 314 | freq_adj += time_freq; |
315 | freq_adj = min(freq_adj, (s64)MAXFREQ_NSEC); | 315 | freq_adj = min(freq_adj, (s64)MAXFREQ_NSEC); |
316 | time_freq = max(freq_adj, (s64)-MAXFREQ_NSEC); | 316 | time_freq = max(freq_adj, (s64)-MAXFREQ_NSEC); |
317 | time_offset = (time_offset / NTP_INTERVAL_FREQ) | 317 | time_offset = div_long_long_rem_signed(time_offset, |
318 | << SHIFT_UPDATE; | 318 | NTP_INTERVAL_FREQ, |
319 | &rem); | ||
320 | time_offset <<= SHIFT_UPDATE; | ||
319 | } /* STA_PLL */ | 321 | } /* STA_PLL */ |
320 | } /* txc->modes & ADJ_OFFSET */ | 322 | } /* txc->modes & ADJ_OFFSET */ |
321 | if (txc->modes & ADJ_TICK) | 323 | if (txc->modes & ADJ_TICK) |
@@ -328,12 +330,12 @@ leave: if ((time_status & (STA_UNSYNC|STA_CLOCKERR)) != 0) | |||
328 | result = TIME_ERROR; | 330 | result = TIME_ERROR; |
329 | 331 | ||
330 | if ((txc->modes & ADJ_OFFSET_SINGLESHOT) == ADJ_OFFSET_SINGLESHOT) | 332 | if ((txc->modes & ADJ_OFFSET_SINGLESHOT) == ADJ_OFFSET_SINGLESHOT) |
331 | txc->offset = save_adjust; | 333 | txc->offset = save_adjust; |
332 | else | 334 | else |
333 | txc->offset = shift_right(time_offset, SHIFT_UPDATE) | 335 | txc->offset = ((long)shift_right(time_offset, SHIFT_UPDATE)) * |
334 | * NTP_INTERVAL_FREQ / 1000; | 336 | NTP_INTERVAL_FREQ / 1000; |
335 | txc->freq = (time_freq / NSEC_PER_USEC) | 337 | txc->freq = (time_freq / NSEC_PER_USEC) << |
336 | << (SHIFT_USEC - SHIFT_NSEC); | 338 | (SHIFT_USEC - SHIFT_NSEC); |
337 | txc->maxerror = time_maxerror; | 339 | txc->maxerror = time_maxerror; |
338 | txc->esterror = time_esterror; | 340 | txc->esterror = time_esterror; |
339 | txc->status = time_status; | 341 | txc->status = time_status; |