diff options
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | arch/arm/mach-pxa/corgi_lcd.c | 2 | ||||
| -rw-r--r-- | arch/ppc64/kernel/mpic.c | 4 | ||||
| -rw-r--r-- | drivers/char/drm/radeon_cp.c | 11 | ||||
| -rw-r--r-- | drivers/cpufreq/cpufreq_conservative.c | 6 | ||||
| -rw-r--r-- | drivers/md/md.c | 10 | ||||
| -rw-r--r-- | drivers/serial/8250_pci.c | 26 | ||||
| -rw-r--r-- | fs/hfsplus/super.c | 1 | ||||
| -rw-r--r-- | include/asm-arm/bitops.h | 1 | ||||
| -rw-r--r-- | include/asm-x86_64/pci.h | 6 | ||||
| -rw-r--r-- | include/linux/pci_ids.h | 2 | ||||
| -rw-r--r-- | kernel/exit.c | 8 | ||||
| -rw-r--r-- | kernel/posix-cpu-timers.c | 63 | ||||
| -rw-r--r-- | kernel/sched.c | 1 | ||||
| -rw-r--r-- | mm/page_alloc.c | 2 | ||||
| -rw-r--r-- | net/core/wireless.c | 9 | ||||
| -rw-r--r-- | net/ipv4/tcp_input.c | 1 | ||||
| -rw-r--r-- | net/sunrpc/svcsock.c | 2 |
18 files changed, 103 insertions, 54 deletions
| @@ -1,7 +1,7 @@ | |||
| 1 | VERSION = 2 | 1 | VERSION = 2 |
| 2 | PATCHLEVEL = 6 | 2 | PATCHLEVEL = 6 |
| 3 | SUBLEVEL = 14 | 3 | SUBLEVEL = 14 |
| 4 | EXTRAVERSION =-rc5 | 4 | EXTRAVERSION = |
| 5 | NAME=Affluent Albatross | 5 | NAME=Affluent Albatross |
| 6 | 6 | ||
| 7 | # *DOCUMENTATION* | 7 | # *DOCUMENTATION* |
diff --git a/arch/arm/mach-pxa/corgi_lcd.c b/arch/arm/mach-pxa/corgi_lcd.c index 850538fadece..370df113dc06 100644 --- a/arch/arm/mach-pxa/corgi_lcd.c +++ b/arch/arm/mach-pxa/corgi_lcd.c | |||
| @@ -488,6 +488,7 @@ static int is_pxafb_device(struct device * dev, void * data) | |||
| 488 | 488 | ||
| 489 | unsigned long spitz_get_hsync_len(void) | 489 | unsigned long spitz_get_hsync_len(void) |
| 490 | { | 490 | { |
| 491 | #ifdef CONFIG_FB_PXA | ||
| 491 | if (!spitz_pxafb_dev) { | 492 | if (!spitz_pxafb_dev) { |
| 492 | spitz_pxafb_dev = bus_find_device(&platform_bus_type, NULL, NULL, is_pxafb_device); | 493 | spitz_pxafb_dev = bus_find_device(&platform_bus_type, NULL, NULL, is_pxafb_device); |
| 493 | if (!spitz_pxafb_dev) | 494 | if (!spitz_pxafb_dev) |
| @@ -496,6 +497,7 @@ unsigned long spitz_get_hsync_len(void) | |||
| 496 | if (!get_hsync_time) | 497 | if (!get_hsync_time) |
| 497 | get_hsync_time = symbol_get(pxafb_get_hsync_time); | 498 | get_hsync_time = symbol_get(pxafb_get_hsync_time); |
| 498 | if (!get_hsync_time) | 499 | if (!get_hsync_time) |
| 500 | #endif | ||
| 499 | return 0; | 501 | return 0; |
| 500 | 502 | ||
| 501 | return pxafb_get_hsync_time(spitz_pxafb_dev); | 503 | return pxafb_get_hsync_time(spitz_pxafb_dev); |
diff --git a/arch/ppc64/kernel/mpic.c b/arch/ppc64/kernel/mpic.c index cc262a05ddb4..5f5bc73754d9 100644 --- a/arch/ppc64/kernel/mpic.c +++ b/arch/ppc64/kernel/mpic.c | |||
| @@ -506,8 +506,8 @@ struct mpic * __init mpic_alloc(unsigned long phys_addr, | |||
| 506 | mpic->senses_count = senses_count; | 506 | mpic->senses_count = senses_count; |
| 507 | 507 | ||
| 508 | /* Map the global registers */ | 508 | /* Map the global registers */ |
| 509 | mpic->gregs = ioremap(phys_addr + MPIC_GREG_BASE, 0x1000); | 509 | mpic->gregs = ioremap(phys_addr + MPIC_GREG_BASE, 0x2000); |
| 510 | mpic->tmregs = mpic->gregs + (MPIC_TIMER_BASE >> 2); | 510 | mpic->tmregs = mpic->gregs + ((MPIC_TIMER_BASE - MPIC_GREG_BASE) >> 2); |
| 511 | BUG_ON(mpic->gregs == NULL); | 511 | BUG_ON(mpic->gregs == NULL); |
| 512 | 512 | ||
| 513 | /* Reset */ | 513 | /* Reset */ |
diff --git a/drivers/char/drm/radeon_cp.c b/drivers/char/drm/radeon_cp.c index 6d9080a3ca7e..12ef13ff04ca 100644 --- a/drivers/char/drm/radeon_cp.c +++ b/drivers/char/drm/radeon_cp.c | |||
| @@ -1133,10 +1133,10 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev, | |||
| 1133 | ring_start = (dev_priv->cp_ring->offset | 1133 | ring_start = (dev_priv->cp_ring->offset |
| 1134 | - dev->agp->base | 1134 | - dev->agp->base |
| 1135 | + dev_priv->gart_vm_start); | 1135 | + dev_priv->gart_vm_start); |
| 1136 | } else | 1136 | } else |
| 1137 | #endif | 1137 | #endif |
| 1138 | ring_start = (dev_priv->cp_ring->offset | 1138 | ring_start = (dev_priv->cp_ring->offset |
| 1139 | - dev->sg->handle | 1139 | - (unsigned long)dev->sg->virtual |
| 1140 | + dev_priv->gart_vm_start); | 1140 | + dev_priv->gart_vm_start); |
| 1141 | 1141 | ||
| 1142 | RADEON_WRITE( RADEON_CP_RB_BASE, ring_start ); | 1142 | RADEON_WRITE( RADEON_CP_RB_BASE, ring_start ); |
| @@ -1164,7 +1164,8 @@ static void radeon_cp_init_ring_buffer( drm_device_t *dev, | |||
| 1164 | drm_sg_mem_t *entry = dev->sg; | 1164 | drm_sg_mem_t *entry = dev->sg; |
| 1165 | unsigned long tmp_ofs, page_ofs; | 1165 | unsigned long tmp_ofs, page_ofs; |
| 1166 | 1166 | ||
| 1167 | tmp_ofs = dev_priv->ring_rptr->offset - dev->sg->handle; | 1167 | tmp_ofs = dev_priv->ring_rptr->offset - |
| 1168 | (unsigned long)dev->sg->virtual; | ||
| 1168 | page_ofs = tmp_ofs >> PAGE_SHIFT; | 1169 | page_ofs = tmp_ofs >> PAGE_SHIFT; |
| 1169 | 1170 | ||
| 1170 | RADEON_WRITE( RADEON_CP_RB_RPTR_ADDR, | 1171 | RADEON_WRITE( RADEON_CP_RB_RPTR_ADDR, |
| @@ -1491,8 +1492,8 @@ static int radeon_do_init_cp( drm_device_t *dev, drm_radeon_init_t *init ) | |||
| 1491 | else | 1492 | else |
| 1492 | #endif | 1493 | #endif |
| 1493 | dev_priv->gart_buffers_offset = (dev->agp_buffer_map->offset | 1494 | dev_priv->gart_buffers_offset = (dev->agp_buffer_map->offset |
| 1494 | - dev->sg->handle | 1495 | - (unsigned long)dev->sg->virtual |
| 1495 | + dev_priv->gart_vm_start); | 1496 | + dev_priv->gart_vm_start); |
| 1496 | 1497 | ||
| 1497 | DRM_DEBUG( "dev_priv->gart_size %d\n", | 1498 | DRM_DEBUG( "dev_priv->gart_size %d\n", |
| 1498 | dev_priv->gart_size ); | 1499 | dev_priv->gart_size ); |
diff --git a/drivers/cpufreq/cpufreq_conservative.c b/drivers/cpufreq/cpufreq_conservative.c index e1df376e709e..2ed5c4363b53 100644 --- a/drivers/cpufreq/cpufreq_conservative.c +++ b/drivers/cpufreq/cpufreq_conservative.c | |||
| @@ -315,9 +315,9 @@ static void dbs_check_cpu(int cpu) | |||
| 315 | policy = this_dbs_info->cur_policy; | 315 | policy = this_dbs_info->cur_policy; |
| 316 | 316 | ||
| 317 | if ( init_flag == 0 ) { | 317 | if ( init_flag == 0 ) { |
| 318 | for ( /* NULL */; init_flag < NR_CPUS; init_flag++ ) { | 318 | for_each_online_cpu(j) { |
| 319 | dbs_info = &per_cpu(cpu_dbs_info, init_flag); | 319 | dbs_info = &per_cpu(cpu_dbs_info, j); |
| 320 | requested_freq[cpu] = dbs_info->cur_policy->cur; | 320 | requested_freq[j] = dbs_info->cur_policy->cur; |
| 321 | } | 321 | } |
| 322 | init_flag = 1; | 322 | init_flag = 1; |
| 323 | } | 323 | } |
diff --git a/drivers/md/md.c b/drivers/md/md.c index e9476075aa13..2a8a5696bf8a 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c | |||
| @@ -3568,7 +3568,8 @@ static void md_do_sync(mddev_t *mddev) | |||
| 3568 | mddev->curr_resync = 2; | 3568 | mddev->curr_resync = 2; |
| 3569 | 3569 | ||
| 3570 | try_again: | 3570 | try_again: |
| 3571 | if (signal_pending(current)) { | 3571 | if (signal_pending(current) || |
| 3572 | kthread_should_stop()) { | ||
| 3572 | flush_signals(current); | 3573 | flush_signals(current); |
| 3573 | set_bit(MD_RECOVERY_INTR, &mddev->recovery); | 3574 | set_bit(MD_RECOVERY_INTR, &mddev->recovery); |
| 3574 | goto skip; | 3575 | goto skip; |
| @@ -3590,8 +3591,9 @@ static void md_do_sync(mddev_t *mddev) | |||
| 3590 | */ | 3591 | */ |
| 3591 | continue; | 3592 | continue; |
| 3592 | prepare_to_wait(&resync_wait, &wq, TASK_INTERRUPTIBLE); | 3593 | prepare_to_wait(&resync_wait, &wq, TASK_INTERRUPTIBLE); |
| 3593 | if (!signal_pending(current) | 3594 | if (!signal_pending(current) && |
| 3594 | && mddev2->curr_resync >= mddev->curr_resync) { | 3595 | !kthread_should_stop() && |
| 3596 | mddev2->curr_resync >= mddev->curr_resync) { | ||
| 3595 | printk(KERN_INFO "md: delaying resync of %s" | 3597 | printk(KERN_INFO "md: delaying resync of %s" |
| 3596 | " until %s has finished resync (they" | 3598 | " until %s has finished resync (they" |
| 3597 | " share one or more physical units)\n", | 3599 | " share one or more physical units)\n", |
| @@ -3697,7 +3699,7 @@ static void md_do_sync(mddev_t *mddev) | |||
| 3697 | } | 3699 | } |
| 3698 | 3700 | ||
| 3699 | 3701 | ||
| 3700 | if (signal_pending(current)) { | 3702 | if (signal_pending(current) || kthread_should_stop()) { |
| 3701 | /* | 3703 | /* |
| 3702 | * got a signal, exit. | 3704 | * got a signal, exit. |
| 3703 | */ | 3705 | */ |
diff --git a/drivers/serial/8250_pci.c b/drivers/serial/8250_pci.c index 0e21f583690e..5c3c03932d6d 100644 --- a/drivers/serial/8250_pci.c +++ b/drivers/serial/8250_pci.c | |||
| @@ -152,6 +152,7 @@ static int __devinit pci_hp_diva_init(struct pci_dev *dev) | |||
| 152 | rc = 4; | 152 | rc = 4; |
| 153 | break; | 153 | break; |
| 154 | case PCI_DEVICE_ID_HP_DIVA_POWERBAR: | 154 | case PCI_DEVICE_ID_HP_DIVA_POWERBAR: |
| 155 | case PCI_DEVICE_ID_HP_DIVA_HURRICANE: | ||
| 155 | rc = 1; | 156 | rc = 1; |
| 156 | break; | 157 | break; |
| 157 | } | 158 | } |
| @@ -226,8 +227,10 @@ static int __devinit pci_plx9050_init(struct pci_dev *dev) | |||
| 226 | } | 227 | } |
| 227 | 228 | ||
| 228 | irq_config = 0x41; | 229 | irq_config = 0x41; |
| 229 | if (dev->vendor == PCI_VENDOR_ID_PANACOM) | 230 | if (dev->vendor == PCI_VENDOR_ID_PANACOM || |
| 231 | dev->subsystem_vendor == PCI_SUBVENDOR_ID_EXSYS) { | ||
| 230 | irq_config = 0x43; | 232 | irq_config = 0x43; |
| 233 | } | ||
| 231 | if ((dev->vendor == PCI_VENDOR_ID_PLX) && | 234 | if ((dev->vendor == PCI_VENDOR_ID_PLX) && |
| 232 | (dev->device == PCI_DEVICE_ID_PLX_ROMULUS)) { | 235 | (dev->device == PCI_DEVICE_ID_PLX_ROMULUS)) { |
| 233 | /* | 236 | /* |
| @@ -664,6 +667,15 @@ static struct pci_serial_quirk pci_serial_quirks[] = { | |||
| 664 | { | 667 | { |
| 665 | .vendor = PCI_VENDOR_ID_PLX, | 668 | .vendor = PCI_VENDOR_ID_PLX, |
| 666 | .device = PCI_DEVICE_ID_PLX_9050, | 669 | .device = PCI_DEVICE_ID_PLX_9050, |
| 670 | .subvendor = PCI_SUBVENDOR_ID_EXSYS, | ||
| 671 | .subdevice = PCI_SUBDEVICE_ID_EXSYS_4055, | ||
| 672 | .init = pci_plx9050_init, | ||
| 673 | .setup = pci_default_setup, | ||
| 674 | .exit = __devexit_p(pci_plx9050_exit), | ||
| 675 | }, | ||
| 676 | { | ||
| 677 | .vendor = PCI_VENDOR_ID_PLX, | ||
| 678 | .device = PCI_DEVICE_ID_PLX_9050, | ||
| 667 | .subvendor = PCI_SUBVENDOR_ID_KEYSPAN, | 679 | .subvendor = PCI_SUBVENDOR_ID_KEYSPAN, |
| 668 | .subdevice = PCI_SUBDEVICE_ID_KEYSPAN_SX2, | 680 | .subdevice = PCI_SUBDEVICE_ID_KEYSPAN_SX2, |
| 669 | .init = pci_plx9050_init, | 681 | .init = pci_plx9050_init, |
| @@ -927,6 +939,7 @@ enum pci_board_num_t { | |||
| 927 | pbn_panacom, | 939 | pbn_panacom, |
| 928 | pbn_panacom2, | 940 | pbn_panacom2, |
| 929 | pbn_panacom4, | 941 | pbn_panacom4, |
| 942 | pbn_exsys_4055, | ||
| 930 | pbn_plx_romulus, | 943 | pbn_plx_romulus, |
| 931 | pbn_oxsemi, | 944 | pbn_oxsemi, |
| 932 | pbn_intel_i960, | 945 | pbn_intel_i960, |
| @@ -1292,6 +1305,13 @@ static struct pciserial_board pci_boards[] __devinitdata = { | |||
| 1292 | .reg_shift = 7, | 1305 | .reg_shift = 7, |
| 1293 | }, | 1306 | }, |
| 1294 | 1307 | ||
| 1308 | [pbn_exsys_4055] = { | ||
| 1309 | .flags = FL_BASE2, | ||
| 1310 | .num_ports = 4, | ||
| 1311 | .base_baud = 115200, | ||
| 1312 | .uart_offset = 8, | ||
| 1313 | }, | ||
| 1314 | |||
| 1295 | /* I think this entry is broken - the first_offset looks wrong --rmk */ | 1315 | /* I think this entry is broken - the first_offset looks wrong --rmk */ |
| 1296 | [pbn_plx_romulus] = { | 1316 | [pbn_plx_romulus] = { |
| 1297 | .flags = FL_BASE2, | 1317 | .flags = FL_BASE2, |
| @@ -1853,6 +1873,10 @@ static struct pci_device_id serial_pci_tbl[] = { | |||
| 1853 | PCI_SUBVENDOR_ID_CHASE_PCIRAS, | 1873 | PCI_SUBVENDOR_ID_CHASE_PCIRAS, |
| 1854 | PCI_SUBDEVICE_ID_CHASE_PCIRAS8, 0, 0, | 1874 | PCI_SUBDEVICE_ID_CHASE_PCIRAS8, 0, 0, |
| 1855 | pbn_b2_8_460800 }, | 1875 | pbn_b2_8_460800 }, |
| 1876 | { PCI_VENDOR_ID_PLX, PCI_DEVICE_ID_PLX_9050, | ||
| 1877 | PCI_SUBVENDOR_ID_EXSYS, | ||
| 1878 | PCI_SUBDEVICE_ID_EXSYS_4055, 0, 0, | ||
| 1879 | pbn_exsys_4055 }, | ||
| 1856 | /* | 1880 | /* |
| 1857 | * Megawolf Romulus PCI Serial Card, from Mike Hudson | 1881 | * Megawolf Romulus PCI Serial Card, from Mike Hudson |
| 1858 | * (Exoray@isys.ca) | 1882 | * (Exoray@isys.ca) |
diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c index fd0f0f050e1d..452fc1fdbd32 100644 --- a/fs/hfsplus/super.c +++ b/fs/hfsplus/super.c | |||
| @@ -50,6 +50,7 @@ static void hfsplus_read_inode(struct inode *inode) | |||
| 50 | init_MUTEX(&HFSPLUS_I(inode).extents_lock); | 50 | init_MUTEX(&HFSPLUS_I(inode).extents_lock); |
| 51 | HFSPLUS_I(inode).flags = 0; | 51 | HFSPLUS_I(inode).flags = 0; |
| 52 | HFSPLUS_I(inode).rsrc_inode = NULL; | 52 | HFSPLUS_I(inode).rsrc_inode = NULL; |
| 53 | atomic_set(&HFSPLUS_I(inode).opencnt, 0); | ||
| 53 | 54 | ||
| 54 | if (inode->i_ino >= HFSPLUS_FIRSTUSER_CNID) { | 55 | if (inode->i_ino >= HFSPLUS_FIRSTUSER_CNID) { |
| 55 | read_inode: | 56 | read_inode: |
diff --git a/include/asm-arm/bitops.h b/include/asm-arm/bitops.h index aad7aad026b3..e007dd990da5 100644 --- a/include/asm-arm/bitops.h +++ b/include/asm-arm/bitops.h | |||
| @@ -347,7 +347,6 @@ static inline unsigned long __ffs(unsigned long word) | |||
| 347 | * the clz instruction for much better code efficiency. | 347 | * the clz instruction for much better code efficiency. |
| 348 | */ | 348 | */ |
| 349 | 349 | ||
| 350 | static __inline__ int generic_fls(int x); | ||
| 351 | #define fls(x) \ | 350 | #define fls(x) \ |
| 352 | ( __builtin_constant_p(x) ? generic_fls(x) : \ | 351 | ( __builtin_constant_p(x) ? generic_fls(x) : \ |
| 353 | ({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) ) | 352 | ({ int __r; asm("clz\t%0, %1" : "=r"(__r) : "r"(x) : "cc"); 32-__r; }) ) |
diff --git a/include/asm-x86_64/pci.h b/include/asm-x86_64/pci.h index 5a82a6762c21..eeb3088a1c9e 100644 --- a/include/asm-x86_64/pci.h +++ b/include/asm-x86_64/pci.h | |||
| @@ -50,10 +50,10 @@ extern int iommu_setup(char *opt); | |||
| 50 | * address space. The networking and block device layers use | 50 | * address space. The networking and block device layers use |
| 51 | * this boolean for bounce buffer decisions | 51 | * this boolean for bounce buffer decisions |
| 52 | * | 52 | * |
| 53 | * On x86-64 it mostly equals, but we set it to zero to tell some subsystems | 53 | * On AMD64 it mostly equals, but we set it to zero to tell some subsystems |
| 54 | * that an hard or soft IOMMU is available. | 54 | * that an IOMMU is available. |
| 55 | */ | 55 | */ |
| 56 | #define PCI_DMA_BUS_IS_PHYS 0 | 56 | #define PCI_DMA_BUS_IS_PHYS (no_iommu ? 1 : 0) |
| 57 | 57 | ||
| 58 | /* | 58 | /* |
| 59 | * x86-64 always supports DAC, but sometimes it is useful to force | 59 | * x86-64 always supports DAC, but sometimes it is useful to force |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index f74ed9462475..71834f05504f 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
| @@ -723,6 +723,7 @@ | |||
| 723 | #define PCI_DEVICE_ID_HP_DIVA_EVEREST 0x1282 | 723 | #define PCI_DEVICE_ID_HP_DIVA_EVEREST 0x1282 |
| 724 | #define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290 | 724 | #define PCI_DEVICE_ID_HP_DIVA_AUX 0x1290 |
| 725 | #define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301 | 725 | #define PCI_DEVICE_ID_HP_DIVA_RMP3 0x1301 |
| 726 | #define PCI_DEVICE_ID_HP_DIVA_HURRICANE 0x132a | ||
| 726 | #define PCI_DEVICE_ID_HP_CISS 0x3210 | 727 | #define PCI_DEVICE_ID_HP_CISS 0x3210 |
| 727 | #define PCI_DEVICE_ID_HP_CISSA 0x3220 | 728 | #define PCI_DEVICE_ID_HP_CISSA 0x3220 |
| 728 | #define PCI_DEVICE_ID_HP_CISSB 0x3222 | 729 | #define PCI_DEVICE_ID_HP_CISSB 0x3222 |
| @@ -2696,6 +2697,7 @@ | |||
| 2696 | 2697 | ||
| 2697 | #define PCI_SUBVENDOR_ID_EXSYS 0xd84d | 2698 | #define PCI_SUBVENDOR_ID_EXSYS 0xd84d |
| 2698 | #define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014 | 2699 | #define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014 |
| 2700 | #define PCI_SUBDEVICE_ID_EXSYS_4055 0x4055 | ||
| 2699 | 2701 | ||
| 2700 | #define PCI_VENDOR_ID_TIGERJET 0xe159 | 2702 | #define PCI_VENDOR_ID_TIGERJET 0xe159 |
| 2701 | #define PCI_DEVICE_ID_TIGERJET_300 0x0001 | 2703 | #define PCI_DEVICE_ID_TIGERJET_300 0x0001 |
diff --git a/kernel/exit.c b/kernel/exit.c index 4897977a1f4b..3b25b182d2be 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
| @@ -825,6 +825,14 @@ fastcall NORET_TYPE void do_exit(long code) | |||
| 825 | 825 | ||
| 826 | tsk->flags |= PF_EXITING; | 826 | tsk->flags |= PF_EXITING; |
| 827 | 827 | ||
| 828 | /* | ||
| 829 | * Make sure we don't try to process any timer firings | ||
| 830 | * while we are already exiting. | ||
| 831 | */ | ||
| 832 | tsk->it_virt_expires = cputime_zero; | ||
| 833 | tsk->it_prof_expires = cputime_zero; | ||
| 834 | tsk->it_sched_expires = 0; | ||
| 835 | |||
| 828 | if (unlikely(in_atomic())) | 836 | if (unlikely(in_atomic())) |
| 829 | printk(KERN_INFO "note: %s[%d] exited with preempt_count %d\n", | 837 | printk(KERN_INFO "note: %s[%d] exited with preempt_count %d\n", |
| 830 | current->comm, current->pid, | 838 | current->comm, current->pid, |
diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c index b15462b17a58..bf374fceb39c 100644 --- a/kernel/posix-cpu-timers.c +++ b/kernel/posix-cpu-timers.c | |||
| @@ -91,7 +91,7 @@ static inline union cpu_time_count cpu_time_sub(clockid_t which_clock, | |||
| 91 | * Update expiry time from increment, and increase overrun count, | 91 | * Update expiry time from increment, and increase overrun count, |
| 92 | * given the current clock sample. | 92 | * given the current clock sample. |
| 93 | */ | 93 | */ |
| 94 | static inline void bump_cpu_timer(struct k_itimer *timer, | 94 | static void bump_cpu_timer(struct k_itimer *timer, |
| 95 | union cpu_time_count now) | 95 | union cpu_time_count now) |
| 96 | { | 96 | { |
| 97 | int i; | 97 | int i; |
| @@ -110,7 +110,7 @@ static inline void bump_cpu_timer(struct k_itimer *timer, | |||
| 110 | for (i = 0; incr < delta - incr; i++) | 110 | for (i = 0; incr < delta - incr; i++) |
| 111 | incr = incr << 1; | 111 | incr = incr << 1; |
| 112 | for (; i >= 0; incr >>= 1, i--) { | 112 | for (; i >= 0; incr >>= 1, i--) { |
| 113 | if (delta <= incr) | 113 | if (delta < incr) |
| 114 | continue; | 114 | continue; |
| 115 | timer->it.cpu.expires.sched += incr; | 115 | timer->it.cpu.expires.sched += incr; |
| 116 | timer->it_overrun += 1 << i; | 116 | timer->it_overrun += 1 << i; |
| @@ -128,7 +128,7 @@ static inline void bump_cpu_timer(struct k_itimer *timer, | |||
| 128 | for (i = 0; cputime_lt(incr, cputime_sub(delta, incr)); i++) | 128 | for (i = 0; cputime_lt(incr, cputime_sub(delta, incr)); i++) |
| 129 | incr = cputime_add(incr, incr); | 129 | incr = cputime_add(incr, incr); |
| 130 | for (; i >= 0; incr = cputime_halve(incr), i--) { | 130 | for (; i >= 0; incr = cputime_halve(incr), i--) { |
| 131 | if (cputime_le(delta, incr)) | 131 | if (cputime_lt(delta, incr)) |
| 132 | continue; | 132 | continue; |
| 133 | timer->it.cpu.expires.cpu = | 133 | timer->it.cpu.expires.cpu = |
| 134 | cputime_add(timer->it.cpu.expires.cpu, incr); | 134 | cputime_add(timer->it.cpu.expires.cpu, incr); |
| @@ -497,7 +497,7 @@ static void process_timer_rebalance(struct task_struct *p, | |||
| 497 | left = cputime_div(cputime_sub(expires.cpu, val.cpu), | 497 | left = cputime_div(cputime_sub(expires.cpu, val.cpu), |
| 498 | nthreads); | 498 | nthreads); |
| 499 | do { | 499 | do { |
| 500 | if (!unlikely(t->exit_state)) { | 500 | if (!unlikely(t->flags & PF_EXITING)) { |
| 501 | ticks = cputime_add(prof_ticks(t), left); | 501 | ticks = cputime_add(prof_ticks(t), left); |
| 502 | if (cputime_eq(t->it_prof_expires, | 502 | if (cputime_eq(t->it_prof_expires, |
| 503 | cputime_zero) || | 503 | cputime_zero) || |
| @@ -512,7 +512,7 @@ static void process_timer_rebalance(struct task_struct *p, | |||
| 512 | left = cputime_div(cputime_sub(expires.cpu, val.cpu), | 512 | left = cputime_div(cputime_sub(expires.cpu, val.cpu), |
| 513 | nthreads); | 513 | nthreads); |
| 514 | do { | 514 | do { |
| 515 | if (!unlikely(t->exit_state)) { | 515 | if (!unlikely(t->flags & PF_EXITING)) { |
| 516 | ticks = cputime_add(virt_ticks(t), left); | 516 | ticks = cputime_add(virt_ticks(t), left); |
| 517 | if (cputime_eq(t->it_virt_expires, | 517 | if (cputime_eq(t->it_virt_expires, |
| 518 | cputime_zero) || | 518 | cputime_zero) || |
| @@ -527,7 +527,7 @@ static void process_timer_rebalance(struct task_struct *p, | |||
| 527 | nsleft = expires.sched - val.sched; | 527 | nsleft = expires.sched - val.sched; |
| 528 | do_div(nsleft, nthreads); | 528 | do_div(nsleft, nthreads); |
| 529 | do { | 529 | do { |
| 530 | if (!unlikely(t->exit_state)) { | 530 | if (!unlikely(t->flags & PF_EXITING)) { |
| 531 | ns = t->sched_time + nsleft; | 531 | ns = t->sched_time + nsleft; |
| 532 | if (t->it_sched_expires == 0 || | 532 | if (t->it_sched_expires == 0 || |
| 533 | t->it_sched_expires > ns) { | 533 | t->it_sched_expires > ns) { |
| @@ -566,6 +566,9 @@ static void arm_timer(struct k_itimer *timer, union cpu_time_count now) | |||
| 566 | struct cpu_timer_list *next; | 566 | struct cpu_timer_list *next; |
| 567 | unsigned long i; | 567 | unsigned long i; |
| 568 | 568 | ||
| 569 | if (CPUCLOCK_PERTHREAD(timer->it_clock) && (p->flags & PF_EXITING)) | ||
| 570 | return; | ||
| 571 | |||
| 569 | head = (CPUCLOCK_PERTHREAD(timer->it_clock) ? | 572 | head = (CPUCLOCK_PERTHREAD(timer->it_clock) ? |
| 570 | p->cpu_timers : p->signal->cpu_timers); | 573 | p->cpu_timers : p->signal->cpu_timers); |
| 571 | head += CPUCLOCK_WHICH(timer->it_clock); | 574 | head += CPUCLOCK_WHICH(timer->it_clock); |
| @@ -576,17 +579,15 @@ static void arm_timer(struct k_itimer *timer, union cpu_time_count now) | |||
| 576 | listpos = head; | 579 | listpos = head; |
| 577 | if (CPUCLOCK_WHICH(timer->it_clock) == CPUCLOCK_SCHED) { | 580 | if (CPUCLOCK_WHICH(timer->it_clock) == CPUCLOCK_SCHED) { |
| 578 | list_for_each_entry(next, head, entry) { | 581 | list_for_each_entry(next, head, entry) { |
| 579 | if (next->expires.sched > nt->expires.sched) { | 582 | if (next->expires.sched > nt->expires.sched) |
| 580 | listpos = &next->entry; | ||
| 581 | break; | 583 | break; |
| 582 | } | 584 | listpos = &next->entry; |
| 583 | } | 585 | } |
| 584 | } else { | 586 | } else { |
| 585 | list_for_each_entry(next, head, entry) { | 587 | list_for_each_entry(next, head, entry) { |
| 586 | if (cputime_gt(next->expires.cpu, nt->expires.cpu)) { | 588 | if (cputime_gt(next->expires.cpu, nt->expires.cpu)) |
| 587 | listpos = &next->entry; | ||
| 588 | break; | 589 | break; |
| 589 | } | 590 | listpos = &next->entry; |
| 590 | } | 591 | } |
| 591 | } | 592 | } |
| 592 | list_add(&nt->entry, listpos); | 593 | list_add(&nt->entry, listpos); |
| @@ -1206,7 +1207,7 @@ static void check_process_timers(struct task_struct *tsk, | |||
| 1206 | 1207 | ||
| 1207 | do { | 1208 | do { |
| 1208 | t = next_thread(t); | 1209 | t = next_thread(t); |
| 1209 | } while (unlikely(t->exit_state)); | 1210 | } while (unlikely(t->flags & PF_EXITING)); |
| 1210 | } while (t != tsk); | 1211 | } while (t != tsk); |
| 1211 | } | 1212 | } |
| 1212 | } | 1213 | } |
| @@ -1295,30 +1296,30 @@ void run_posix_cpu_timers(struct task_struct *tsk) | |||
| 1295 | 1296 | ||
| 1296 | #undef UNEXPIRED | 1297 | #undef UNEXPIRED |
| 1297 | 1298 | ||
| 1299 | BUG_ON(tsk->exit_state); | ||
| 1300 | |||
| 1298 | /* | 1301 | /* |
| 1299 | * Double-check with locks held. | 1302 | * Double-check with locks held. |
| 1300 | */ | 1303 | */ |
| 1301 | read_lock(&tasklist_lock); | 1304 | read_lock(&tasklist_lock); |
| 1302 | if (likely(tsk->signal != NULL)) { | 1305 | spin_lock(&tsk->sighand->siglock); |
| 1303 | spin_lock(&tsk->sighand->siglock); | ||
| 1304 | 1306 | ||
| 1305 | /* | 1307 | /* |
| 1306 | * Here we take off tsk->cpu_timers[N] and tsk->signal->cpu_timers[N] | 1308 | * Here we take off tsk->cpu_timers[N] and tsk->signal->cpu_timers[N] |
| 1307 | * all the timers that are firing, and put them on the firing list. | 1309 | * all the timers that are firing, and put them on the firing list. |
| 1308 | */ | 1310 | */ |
| 1309 | check_thread_timers(tsk, &firing); | 1311 | check_thread_timers(tsk, &firing); |
| 1310 | check_process_timers(tsk, &firing); | 1312 | check_process_timers(tsk, &firing); |
| 1311 | 1313 | ||
| 1312 | /* | 1314 | /* |
| 1313 | * We must release these locks before taking any timer's lock. | 1315 | * We must release these locks before taking any timer's lock. |
| 1314 | * There is a potential race with timer deletion here, as the | 1316 | * There is a potential race with timer deletion here, as the |
| 1315 | * siglock now protects our private firing list. We have set | 1317 | * siglock now protects our private firing list. We have set |
| 1316 | * the firing flag in each timer, so that a deletion attempt | 1318 | * the firing flag in each timer, so that a deletion attempt |
| 1317 | * that gets the timer lock before we do will give it up and | 1319 | * that gets the timer lock before we do will give it up and |
| 1318 | * spin until we've taken care of that timer below. | 1320 | * spin until we've taken care of that timer below. |
| 1319 | */ | 1321 | */ |
| 1320 | spin_unlock(&tsk->sighand->siglock); | 1322 | spin_unlock(&tsk->sighand->siglock); |
| 1321 | } | ||
| 1322 | read_unlock(&tasklist_lock); | 1323 | read_unlock(&tasklist_lock); |
| 1323 | 1324 | ||
| 1324 | /* | 1325 | /* |
diff --git a/kernel/sched.c b/kernel/sched.c index 1f31a528fdba..1e5cafdf4e27 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
| @@ -3879,6 +3879,7 @@ EXPORT_SYMBOL(cpu_present_map); | |||
| 3879 | 3879 | ||
| 3880 | #ifndef CONFIG_SMP | 3880 | #ifndef CONFIG_SMP |
| 3881 | cpumask_t cpu_online_map = CPU_MASK_ALL; | 3881 | cpumask_t cpu_online_map = CPU_MASK_ALL; |
| 3882 | EXPORT_SYMBOL_GPL(cpu_online_map); | ||
| 3882 | cpumask_t cpu_possible_map = CPU_MASK_ALL; | 3883 | cpumask_t cpu_possible_map = CPU_MASK_ALL; |
| 3883 | #endif | 3884 | #endif |
| 3884 | 3885 | ||
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index cc1fe2672a31..e1d3d77f4aee 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c | |||
| @@ -1750,6 +1750,8 @@ inline void setup_pageset(struct per_cpu_pageset *p, unsigned long batch) | |||
| 1750 | { | 1750 | { |
| 1751 | struct per_cpu_pages *pcp; | 1751 | struct per_cpu_pages *pcp; |
| 1752 | 1752 | ||
| 1753 | memset(p, 0, sizeof(*p)); | ||
| 1754 | |||
| 1753 | pcp = &p->pcp[0]; /* hot */ | 1755 | pcp = &p->pcp[0]; /* hot */ |
| 1754 | pcp->count = 0; | 1756 | pcp->count = 0; |
| 1755 | pcp->low = 2 * batch; | 1757 | pcp->low = 2 * batch; |
diff --git a/net/core/wireless.c b/net/core/wireless.c index d17f1583ea3e..271ddb35b0b2 100644 --- a/net/core/wireless.c +++ b/net/core/wireless.c | |||
| @@ -455,10 +455,15 @@ static inline struct iw_statistics *get_wireless_stats(struct net_device *dev) | |||
| 455 | 455 | ||
| 456 | /* Old location, field to be removed in next WE */ | 456 | /* Old location, field to be removed in next WE */ |
| 457 | if(dev->get_wireless_stats) { | 457 | if(dev->get_wireless_stats) { |
| 458 | printk(KERN_DEBUG "%s (WE) : Driver using old /proc/net/wireless support, please fix driver !\n", | 458 | static int printed_message; |
| 459 | dev->name); | 459 | |
| 460 | if (!printed_message++) | ||
| 461 | printk(KERN_DEBUG "%s (WE) : Driver using old /proc/net/wireless support, please fix driver !\n", | ||
| 462 | dev->name); | ||
| 463 | |||
| 460 | return dev->get_wireless_stats(dev); | 464 | return dev->get_wireless_stats(dev); |
| 461 | } | 465 | } |
| 466 | |||
| 462 | /* Not found */ | 467 | /* Not found */ |
| 463 | return (struct iw_statistics *) NULL; | 468 | return (struct iw_statistics *) NULL; |
| 464 | } | 469 | } |
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 677419d0c9ad..3e98b57578dc 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
| @@ -2239,6 +2239,7 @@ static int tcp_ack_update_window(struct sock *sk, struct tcp_sock *tp, | |||
| 2239 | /* Note, it is the only place, where | 2239 | /* Note, it is the only place, where |
| 2240 | * fast path is recovered for sending TCP. | 2240 | * fast path is recovered for sending TCP. |
| 2241 | */ | 2241 | */ |
| 2242 | tp->pred_flags = 0; | ||
| 2242 | tcp_fast_path_check(sk, tp); | 2243 | tcp_fast_path_check(sk, tp); |
| 2243 | 2244 | ||
| 2244 | if (nwin > tp->max_window) { | 2245 | if (nwin > tp->max_window) { |
diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c index 30ec3efc48a6..691dea4a58e7 100644 --- a/net/sunrpc/svcsock.c +++ b/net/sunrpc/svcsock.c | |||
| @@ -587,7 +587,7 @@ svc_udp_recvfrom(struct svc_rqst *rqstp) | |||
| 587 | struct timeval tv; | 587 | struct timeval tv; |
| 588 | 588 | ||
| 589 | tv.tv_sec = xtime.tv_sec; | 589 | tv.tv_sec = xtime.tv_sec; |
| 590 | tv.tv_usec = xtime.tv_nsec * 1000; | 590 | tv.tv_usec = xtime.tv_nsec / NSEC_PER_USEC; |
| 591 | skb_set_timestamp(skb, &tv); | 591 | skb_set_timestamp(skb, &tv); |
| 592 | /* Don't enable netstamp, sunrpc doesn't | 592 | /* Don't enable netstamp, sunrpc doesn't |
| 593 | need that much accuracy */ | 593 | need that much accuracy */ |
