diff options
-rw-r--r-- | Documentation/crypto/api-intro.txt | 2 | ||||
-rw-r--r-- | arch/i386/kernel/i8253.c | 10 | ||||
-rw-r--r-- | arch/ia64/kernel/crash.c | 2 | ||||
-rw-r--r-- | arch/ia64/kernel/setup.c | 22 | ||||
-rw-r--r-- | arch/ia64/mm/contig.c | 30 | ||||
-rw-r--r-- | arch/ia64/mm/discontig.c | 4 | ||||
-rw-r--r-- | arch/ia64/mm/init.c | 16 | ||||
-rw-r--r-- | arch/ia64/sn/kernel/setup.c | 6 | ||||
-rw-r--r-- | crypto/scatterwalk.c | 4 | ||||
-rw-r--r-- | crypto/tcrypt.c | 2 | ||||
-rw-r--r-- | drivers/infiniband/hw/cxgb3/iwch_provider.c | 5 | ||||
-rw-r--r-- | drivers/infiniband/hw/ehca/ehca_irq.c | 8 | ||||
-rw-r--r-- | drivers/infiniband/hw/ipath/ipath_fs.c | 16 | ||||
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_cm.c | 4 | ||||
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_ib.c | 4 | ||||
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_main.c | 4 | ||||
-rw-r--r-- | drivers/infiniband/ulp/ipoib/ipoib_multicast.c | 6 | ||||
-rw-r--r-- | include/asm-ia64/meminit.h | 1 |
18 files changed, 92 insertions, 54 deletions
diff --git a/Documentation/crypto/api-intro.txt b/Documentation/crypto/api-intro.txt index e41a79aa71ce..9b84b805ab75 100644 --- a/Documentation/crypto/api-intro.txt +++ b/Documentation/crypto/api-intro.txt | |||
@@ -60,7 +60,7 @@ Here's an example of how to use the API: | |||
60 | desc.tfm = tfm; | 60 | desc.tfm = tfm; |
61 | desc.flags = 0; | 61 | desc.flags = 0; |
62 | 62 | ||
63 | if (crypto_hash_digest(&desc, &sg, 2, result)) | 63 | if (crypto_hash_digest(&desc, sg, 2, result)) |
64 | fail(); | 64 | fail(); |
65 | 65 | ||
66 | crypto_free_hash(tfm); | 66 | crypto_free_hash(tfm); |
diff --git a/arch/i386/kernel/i8253.c b/arch/i386/kernel/i8253.c index 5cbb776b3089..10cef5ca8a5b 100644 --- a/arch/i386/kernel/i8253.c +++ b/arch/i386/kernel/i8253.c | |||
@@ -47,9 +47,17 @@ static void init_pit_timer(enum clock_event_mode mode, | |||
47 | outb(LATCH >> 8 , PIT_CH0); /* MSB */ | 47 | outb(LATCH >> 8 , PIT_CH0); /* MSB */ |
48 | break; | 48 | break; |
49 | 49 | ||
50 | case CLOCK_EVT_MODE_ONESHOT: | 50 | /* |
51 | * Avoid unnecessary state transitions, as it confuses | ||
52 | * Geode / Cyrix based boxen. | ||
53 | */ | ||
51 | case CLOCK_EVT_MODE_SHUTDOWN: | 54 | case CLOCK_EVT_MODE_SHUTDOWN: |
55 | if (evt->mode == CLOCK_EVT_MODE_UNUSED) | ||
56 | break; | ||
52 | case CLOCK_EVT_MODE_UNUSED: | 57 | case CLOCK_EVT_MODE_UNUSED: |
58 | if (evt->mode == CLOCK_EVT_MODE_SHUTDOWN) | ||
59 | break; | ||
60 | case CLOCK_EVT_MODE_ONESHOT: | ||
53 | /* One shot setup */ | 61 | /* One shot setup */ |
54 | outb_p(0x38, PIT_MODE); | 62 | outb_p(0x38, PIT_MODE); |
55 | udelay(10); | 63 | udelay(10); |
diff --git a/arch/ia64/kernel/crash.c b/arch/ia64/kernel/crash.c index 7d1bbb4403ba..80a94e707827 100644 --- a/arch/ia64/kernel/crash.c +++ b/arch/ia64/kernel/crash.c | |||
@@ -164,7 +164,7 @@ kdump_init_notifier(struct notifier_block *self, unsigned long val, void *data) | |||
164 | 164 | ||
165 | nd = (struct ia64_mca_notify_die *)args->err; | 165 | nd = (struct ia64_mca_notify_die *)args->err; |
166 | /* Reason code 1 means machine check rendezous*/ | 166 | /* Reason code 1 means machine check rendezous*/ |
167 | if ((val == DIE_INIT_MONARCH_ENTER || DIE_INIT_SLAVE_ENTER) && | 167 | if ((val == DIE_INIT_MONARCH_ENTER || val == DIE_INIT_SLAVE_ENTER) && |
168 | nd->sos->rv_rc == 1) | 168 | nd->sos->rv_rc == 1) |
169 | return NOTIFY_DONE; | 169 | return NOTIFY_DONE; |
170 | 170 | ||
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index 339e8a54c2f1..69b9bb3fd7c5 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c | |||
@@ -692,12 +692,15 @@ struct seq_operations cpuinfo_op = { | |||
692 | .show = show_cpuinfo | 692 | .show = show_cpuinfo |
693 | }; | 693 | }; |
694 | 694 | ||
695 | static char brandname[128]; | 695 | #define MAX_BRANDS 8 |
696 | static char brandname[MAX_BRANDS][128]; | ||
696 | 697 | ||
697 | static char * __cpuinit | 698 | static char * __cpuinit |
698 | get_model_name(__u8 family, __u8 model) | 699 | get_model_name(__u8 family, __u8 model) |
699 | { | 700 | { |
701 | static int overflow; | ||
700 | char brand[128]; | 702 | char brand[128]; |
703 | int i; | ||
701 | 704 | ||
702 | memcpy(brand, "Unknown", 8); | 705 | memcpy(brand, "Unknown", 8); |
703 | if (ia64_pal_get_brand_info(brand)) { | 706 | if (ia64_pal_get_brand_info(brand)) { |
@@ -709,12 +712,17 @@ get_model_name(__u8 family, __u8 model) | |||
709 | case 2: memcpy(brand, "Madison up to 9M cache", 23); break; | 712 | case 2: memcpy(brand, "Madison up to 9M cache", 23); break; |
710 | } | 713 | } |
711 | } | 714 | } |
712 | if (brandname[0] == '\0') | 715 | for (i = 0; i < MAX_BRANDS; i++) |
713 | return strcpy(brandname, brand); | 716 | if (strcmp(brandname[i], brand) == 0) |
714 | else if (strcmp(brandname, brand) == 0) | 717 | return brandname[i]; |
715 | return brandname; | 718 | for (i = 0; i < MAX_BRANDS; i++) |
716 | else | 719 | if (brandname[i][0] == '\0') |
717 | return kstrdup(brand, GFP_KERNEL); | 720 | return strcpy(brandname[i], brand); |
721 | if (overflow++ == 0) | ||
722 | printk(KERN_ERR | ||
723 | "%s: Table overflow. Some processor model information will be missing\n", | ||
724 | __FUNCTION__); | ||
725 | return "Unknown"; | ||
718 | } | 726 | } |
719 | 727 | ||
720 | static void __cpuinit | 728 | static void __cpuinit |
diff --git a/arch/ia64/mm/contig.c b/arch/ia64/mm/contig.c index fb0f4698f5d0..44ce5ed9444c 100644 --- a/arch/ia64/mm/contig.c +++ b/arch/ia64/mm/contig.c | |||
@@ -97,26 +97,6 @@ void show_mem(void) | |||
97 | unsigned long bootmap_start; | 97 | unsigned long bootmap_start; |
98 | 98 | ||
99 | /** | 99 | /** |
100 | * find_max_pfn - adjust the maximum page number callback | ||
101 | * @start: start of range | ||
102 | * @end: end of range | ||
103 | * @arg: address of pointer to global max_pfn variable | ||
104 | * | ||
105 | * Passed as a callback function to efi_memmap_walk() to determine the highest | ||
106 | * available page frame number in the system. | ||
107 | */ | ||
108 | int | ||
109 | find_max_pfn (unsigned long start, unsigned long end, void *arg) | ||
110 | { | ||
111 | unsigned long *max_pfnp = arg, pfn; | ||
112 | |||
113 | pfn = (PAGE_ALIGN(end - 1) - PAGE_OFFSET) >> PAGE_SHIFT; | ||
114 | if (pfn > *max_pfnp) | ||
115 | *max_pfnp = pfn; | ||
116 | return 0; | ||
117 | } | ||
118 | |||
119 | /** | ||
120 | * find_bootmap_location - callback to find a memory area for the bootmap | 100 | * find_bootmap_location - callback to find a memory area for the bootmap |
121 | * @start: start of region | 101 | * @start: start of region |
122 | * @end: end of region | 102 | * @end: end of region |
@@ -177,9 +157,10 @@ find_memory (void) | |||
177 | reserve_memory(); | 157 | reserve_memory(); |
178 | 158 | ||
179 | /* first find highest page frame number */ | 159 | /* first find highest page frame number */ |
180 | max_pfn = 0; | 160 | min_low_pfn = ~0UL; |
181 | efi_memmap_walk(find_max_pfn, &max_pfn); | 161 | max_low_pfn = 0; |
182 | 162 | efi_memmap_walk(find_max_min_low_pfn, NULL); | |
163 | max_pfn = max_low_pfn; | ||
183 | /* how many bytes to cover all the pages */ | 164 | /* how many bytes to cover all the pages */ |
184 | bootmap_size = bootmem_bootmap_pages(max_pfn) << PAGE_SHIFT; | 165 | bootmap_size = bootmem_bootmap_pages(max_pfn) << PAGE_SHIFT; |
185 | 166 | ||
@@ -189,7 +170,8 @@ find_memory (void) | |||
189 | if (bootmap_start == ~0UL) | 170 | if (bootmap_start == ~0UL) |
190 | panic("Cannot find %ld bytes for bootmap\n", bootmap_size); | 171 | panic("Cannot find %ld bytes for bootmap\n", bootmap_size); |
191 | 172 | ||
192 | bootmap_size = init_bootmem(bootmap_start >> PAGE_SHIFT, max_pfn); | 173 | bootmap_size = init_bootmem_node(NODE_DATA(0), |
174 | (bootmap_start >> PAGE_SHIFT), 0, max_pfn); | ||
193 | 175 | ||
194 | /* Free all available memory, then mark bootmem-map as being in use. */ | 176 | /* Free all available memory, then mark bootmem-map as being in use. */ |
195 | efi_memmap_walk(filter_rsvd_memory, free_bootmem); | 177 | efi_memmap_walk(filter_rsvd_memory, free_bootmem); |
diff --git a/arch/ia64/mm/discontig.c b/arch/ia64/mm/discontig.c index 11a2d8825d89..872da7a2accd 100644 --- a/arch/ia64/mm/discontig.c +++ b/arch/ia64/mm/discontig.c | |||
@@ -88,9 +88,6 @@ static int __init build_node_maps(unsigned long start, unsigned long len, | |||
88 | bdp->node_low_pfn = max(epfn, bdp->node_low_pfn); | 88 | bdp->node_low_pfn = max(epfn, bdp->node_low_pfn); |
89 | } | 89 | } |
90 | 90 | ||
91 | min_low_pfn = min(min_low_pfn, bdp->node_boot_start>>PAGE_SHIFT); | ||
92 | max_low_pfn = max(max_low_pfn, bdp->node_low_pfn); | ||
93 | |||
94 | return 0; | 91 | return 0; |
95 | } | 92 | } |
96 | 93 | ||
@@ -438,6 +435,7 @@ void __init find_memory(void) | |||
438 | /* These actually end up getting called by call_pernode_memory() */ | 435 | /* These actually end up getting called by call_pernode_memory() */ |
439 | efi_memmap_walk(filter_rsvd_memory, build_node_maps); | 436 | efi_memmap_walk(filter_rsvd_memory, build_node_maps); |
440 | efi_memmap_walk(filter_rsvd_memory, find_pernode_space); | 437 | efi_memmap_walk(filter_rsvd_memory, find_pernode_space); |
438 | efi_memmap_walk(find_max_min_low_pfn, NULL); | ||
441 | 439 | ||
442 | for_each_online_node(node) | 440 | for_each_online_node(node) |
443 | if (mem_data[node].bootmem_data.node_low_pfn) { | 441 | if (mem_data[node].bootmem_data.node_low_pfn) { |
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index f225dd72968b..c8da621aab17 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
@@ -648,6 +648,22 @@ count_reserved_pages (u64 start, u64 end, void *arg) | |||
648 | return 0; | 648 | return 0; |
649 | } | 649 | } |
650 | 650 | ||
651 | int | ||
652 | find_max_min_low_pfn (unsigned long start, unsigned long end, void *arg) | ||
653 | { | ||
654 | unsigned long pfn_start, pfn_end; | ||
655 | #ifdef CONFIG_FLATMEM | ||
656 | pfn_start = (PAGE_ALIGN(__pa(start))) >> PAGE_SHIFT; | ||
657 | pfn_end = (PAGE_ALIGN(__pa(end - 1))) >> PAGE_SHIFT; | ||
658 | #else | ||
659 | pfn_start = GRANULEROUNDDOWN(__pa(start)) >> PAGE_SHIFT; | ||
660 | pfn_end = GRANULEROUNDUP(__pa(end - 1)) >> PAGE_SHIFT; | ||
661 | #endif | ||
662 | min_low_pfn = min(min_low_pfn, pfn_start); | ||
663 | max_low_pfn = max(max_low_pfn, pfn_end); | ||
664 | return 0; | ||
665 | } | ||
666 | |||
651 | /* | 667 | /* |
652 | * Boot command-line option "nolwsys" can be used to disable the use of any light-weight | 668 | * Boot command-line option "nolwsys" can be used to disable the use of any light-weight |
653 | * system call handler. When this option is in effect, all fsyscalls will end up bubbling | 669 | * system call handler. When this option is in effect, all fsyscalls will end up bubbling |
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c index bd5373d593e1..a9bed5ca2ed8 100644 --- a/arch/ia64/sn/kernel/setup.c +++ b/arch/ia64/sn/kernel/setup.c | |||
@@ -348,8 +348,7 @@ sn_scan_pcdp(void) | |||
348 | continue; /* not PCI interconnect */ | 348 | continue; /* not PCI interconnect */ |
349 | 349 | ||
350 | if (if_pci.translation & PCDP_PCI_TRANS_IOPORT) | 350 | if (if_pci.translation & PCDP_PCI_TRANS_IOPORT) |
351 | vga_console_iobase = | 351 | vga_console_iobase = if_pci.ioport_tra; |
352 | if_pci.ioport_tra | __IA64_UNCACHED_OFFSET; | ||
353 | 352 | ||
354 | if (if_pci.translation & PCDP_PCI_TRANS_MMIO) | 353 | if (if_pci.translation & PCDP_PCI_TRANS_MMIO) |
355 | vga_console_membase = | 354 | vga_console_membase = |
@@ -429,7 +428,8 @@ void __init sn_setup(char **cmdline_p) | |||
429 | * bus containing the VGA console. | 428 | * bus containing the VGA console. |
430 | */ | 429 | */ |
431 | if (vga_console_iobase) { | 430 | if (vga_console_iobase) { |
432 | io_space[0].mmio_base = vga_console_iobase; | 431 | io_space[0].mmio_base = |
432 | (unsigned long) ioremap(vga_console_iobase, 0); | ||
433 | io_space[0].sparse = 0; | 433 | io_space[0].sparse = 0; |
434 | } | 434 | } |
435 | 435 | ||
diff --git a/crypto/scatterwalk.c b/crypto/scatterwalk.c index 35172d3f043b..a66423121773 100644 --- a/crypto/scatterwalk.c +++ b/crypto/scatterwalk.c | |||
@@ -91,6 +91,8 @@ void scatterwalk_copychunks(void *buf, struct scatter_walk *walk, | |||
91 | memcpy_dir(buf, vaddr, len_this_page, out); | 91 | memcpy_dir(buf, vaddr, len_this_page, out); |
92 | scatterwalk_unmap(vaddr, out); | 92 | scatterwalk_unmap(vaddr, out); |
93 | 93 | ||
94 | scatterwalk_advance(walk, nbytes); | ||
95 | |||
94 | if (nbytes == len_this_page) | 96 | if (nbytes == len_this_page) |
95 | break; | 97 | break; |
96 | 98 | ||
@@ -99,7 +101,5 @@ void scatterwalk_copychunks(void *buf, struct scatter_walk *walk, | |||
99 | 101 | ||
100 | scatterwalk_pagedone(walk, out, 1); | 102 | scatterwalk_pagedone(walk, out, 1); |
101 | } | 103 | } |
102 | |||
103 | scatterwalk_advance(walk, nbytes); | ||
104 | } | 104 | } |
105 | EXPORT_SYMBOL_GPL(scatterwalk_copychunks); | 105 | EXPORT_SYMBOL_GPL(scatterwalk_copychunks); |
diff --git a/crypto/tcrypt.c b/crypto/tcrypt.c index f5e9da319ece..8eaa5aa210b0 100644 --- a/crypto/tcrypt.c +++ b/crypto/tcrypt.c | |||
@@ -768,7 +768,7 @@ static void test_deflate(void) | |||
768 | tv = (void *)tvmem; | 768 | tv = (void *)tvmem; |
769 | 769 | ||
770 | tfm = crypto_alloc_comp("deflate", 0, CRYPTO_ALG_ASYNC); | 770 | tfm = crypto_alloc_comp("deflate", 0, CRYPTO_ALG_ASYNC); |
771 | if (tfm == NULL) { | 771 | if (IS_ERR(tfm)) { |
772 | printk("failed to load transform for deflate\n"); | 772 | printk("failed to load transform for deflate\n"); |
773 | return; | 773 | return; |
774 | } | 774 | } |
diff --git a/drivers/infiniband/hw/cxgb3/iwch_provider.c b/drivers/infiniband/hw/cxgb3/iwch_provider.c index f2774ae906bf..24e0df04f7db 100644 --- a/drivers/infiniband/hw/cxgb3/iwch_provider.c +++ b/drivers/infiniband/hw/cxgb3/iwch_provider.c | |||
@@ -545,11 +545,14 @@ static int iwch_reregister_phys_mem(struct ib_mr *mr, | |||
545 | php = to_iwch_pd(pd); | 545 | php = to_iwch_pd(pd); |
546 | if (mr_rereg_mask & IB_MR_REREG_ACCESS) | 546 | if (mr_rereg_mask & IB_MR_REREG_ACCESS) |
547 | mh.attr.perms = iwch_ib_to_tpt_access(acc); | 547 | mh.attr.perms = iwch_ib_to_tpt_access(acc); |
548 | if (mr_rereg_mask & IB_MR_REREG_TRANS) | 548 | if (mr_rereg_mask & IB_MR_REREG_TRANS) { |
549 | ret = build_phys_page_list(buffer_list, num_phys_buf, | 549 | ret = build_phys_page_list(buffer_list, num_phys_buf, |
550 | iova_start, | 550 | iova_start, |
551 | &total_size, &npages, | 551 | &total_size, &npages, |
552 | &shift, &page_list); | 552 | &shift, &page_list); |
553 | if (ret) | ||
554 | return ret; | ||
555 | } | ||
553 | 556 | ||
554 | ret = iwch_reregister_mem(rhp, php, &mh, shift, page_list, npages); | 557 | ret = iwch_reregister_mem(rhp, php, &mh, shift, page_list, npages); |
555 | kfree(page_list); | 558 | kfree(page_list); |
diff --git a/drivers/infiniband/hw/ehca/ehca_irq.c b/drivers/infiniband/hw/ehca/ehca_irq.c index 20f36bf8b2b6..f284be1c9166 100644 --- a/drivers/infiniband/hw/ehca/ehca_irq.c +++ b/drivers/infiniband/hw/ehca/ehca_irq.c | |||
@@ -66,7 +66,9 @@ | |||
66 | static void queue_comp_task(struct ehca_cq *__cq); | 66 | static void queue_comp_task(struct ehca_cq *__cq); |
67 | 67 | ||
68 | static struct ehca_comp_pool* pool; | 68 | static struct ehca_comp_pool* pool; |
69 | #ifdef CONFIG_HOTPLUG_CPU | ||
69 | static struct notifier_block comp_pool_callback_nb; | 70 | static struct notifier_block comp_pool_callback_nb; |
71 | #endif | ||
70 | 72 | ||
71 | static inline void comp_event_callback(struct ehca_cq *cq) | 73 | static inline void comp_event_callback(struct ehca_cq *cq) |
72 | { | 74 | { |
@@ -733,6 +735,7 @@ static void take_over_work(struct ehca_comp_pool *pool, | |||
733 | 735 | ||
734 | } | 736 | } |
735 | 737 | ||
738 | #ifdef CONFIG_HOTPLUG_CPU | ||
736 | static int comp_pool_callback(struct notifier_block *nfb, | 739 | static int comp_pool_callback(struct notifier_block *nfb, |
737 | unsigned long action, | 740 | unsigned long action, |
738 | void *hcpu) | 741 | void *hcpu) |
@@ -775,6 +778,7 @@ static int comp_pool_callback(struct notifier_block *nfb, | |||
775 | 778 | ||
776 | return NOTIFY_OK; | 779 | return NOTIFY_OK; |
777 | } | 780 | } |
781 | #endif | ||
778 | 782 | ||
779 | int ehca_create_comp_pool(void) | 783 | int ehca_create_comp_pool(void) |
780 | { | 784 | { |
@@ -805,9 +809,11 @@ int ehca_create_comp_pool(void) | |||
805 | } | 809 | } |
806 | } | 810 | } |
807 | 811 | ||
812 | #ifdef CONFIG_HOTPLUG_CPU | ||
808 | comp_pool_callback_nb.notifier_call = comp_pool_callback; | 813 | comp_pool_callback_nb.notifier_call = comp_pool_callback; |
809 | comp_pool_callback_nb.priority =0; | 814 | comp_pool_callback_nb.priority =0; |
810 | register_cpu_notifier(&comp_pool_callback_nb); | 815 | register_cpu_notifier(&comp_pool_callback_nb); |
816 | #endif | ||
811 | 817 | ||
812 | printk(KERN_INFO "eHCA scaling code enabled\n"); | 818 | printk(KERN_INFO "eHCA scaling code enabled\n"); |
813 | 819 | ||
@@ -821,7 +827,9 @@ void ehca_destroy_comp_pool(void) | |||
821 | if (!ehca_scaling_code) | 827 | if (!ehca_scaling_code) |
822 | return; | 828 | return; |
823 | 829 | ||
830 | #ifdef CONFIG_HOTPLUG_CPU | ||
824 | unregister_cpu_notifier(&comp_pool_callback_nb); | 831 | unregister_cpu_notifier(&comp_pool_callback_nb); |
832 | #endif | ||
825 | 833 | ||
826 | for (i = 0; i < NR_CPUS; i++) { | 834 | for (i = 0; i < NR_CPUS; i++) { |
827 | if (cpu_online(i)) | 835 | if (cpu_online(i)) |
diff --git a/drivers/infiniband/hw/ipath/ipath_fs.c b/drivers/infiniband/hw/ipath/ipath_fs.c index 5b40a846ff95..ed55979bfd34 100644 --- a/drivers/infiniband/hw/ipath/ipath_fs.c +++ b/drivers/infiniband/hw/ipath/ipath_fs.c | |||
@@ -451,12 +451,18 @@ bail: | |||
451 | return ret; | 451 | return ret; |
452 | } | 452 | } |
453 | 453 | ||
454 | static void remove_file(struct dentry *parent, char *name) | 454 | static int remove_file(struct dentry *parent, char *name) |
455 | { | 455 | { |
456 | struct dentry *tmp; | 456 | struct dentry *tmp; |
457 | int ret; | ||
457 | 458 | ||
458 | tmp = lookup_one_len(name, parent, strlen(name)); | 459 | tmp = lookup_one_len(name, parent, strlen(name)); |
459 | 460 | ||
461 | if (IS_ERR(tmp)) { | ||
462 | ret = PTR_ERR(tmp); | ||
463 | goto bail; | ||
464 | } | ||
465 | |||
460 | spin_lock(&dcache_lock); | 466 | spin_lock(&dcache_lock); |
461 | spin_lock(&tmp->d_lock); | 467 | spin_lock(&tmp->d_lock); |
462 | if (!(d_unhashed(tmp) && tmp->d_inode)) { | 468 | if (!(d_unhashed(tmp) && tmp->d_inode)) { |
@@ -469,6 +475,14 @@ static void remove_file(struct dentry *parent, char *name) | |||
469 | spin_unlock(&tmp->d_lock); | 475 | spin_unlock(&tmp->d_lock); |
470 | spin_unlock(&dcache_lock); | 476 | spin_unlock(&dcache_lock); |
471 | } | 477 | } |
478 | |||
479 | ret = 0; | ||
480 | bail: | ||
481 | /* | ||
482 | * We don't expect clients to care about the return value, but | ||
483 | * it's there if they need it. | ||
484 | */ | ||
485 | return ret; | ||
472 | } | 486 | } |
473 | 487 | ||
474 | static int remove_device_files(struct super_block *sb, | 488 | static int remove_device_files(struct super_block *sb, |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_cm.c b/drivers/infiniband/ulp/ipoib/ipoib_cm.c index 3484e8ba24a4..e70492db74f6 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_cm.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_cm.c | |||
@@ -452,7 +452,7 @@ void ipoib_cm_send(struct net_device *dev, struct sk_buff *skb, struct ipoib_cm_ | |||
452 | skb->len, tx->mtu); | 452 | skb->len, tx->mtu); |
453 | ++priv->stats.tx_dropped; | 453 | ++priv->stats.tx_dropped; |
454 | ++priv->stats.tx_errors; | 454 | ++priv->stats.tx_errors; |
455 | ipoib_cm_skb_too_long(dev, skb, tx->mtu - INFINIBAND_ALEN); | 455 | ipoib_cm_skb_too_long(dev, skb, tx->mtu - IPOIB_ENCAP_LEN); |
456 | return; | 456 | return; |
457 | } | 457 | } |
458 | 458 | ||
@@ -1095,7 +1095,7 @@ static void ipoib_cm_stale_task(struct work_struct *work) | |||
1095 | /* List if sorted by LRU, start from tail, | 1095 | /* List if sorted by LRU, start from tail, |
1096 | * stop when we see a recently used entry */ | 1096 | * stop when we see a recently used entry */ |
1097 | p = list_entry(priv->cm.passive_ids.prev, typeof(*p), list); | 1097 | p = list_entry(priv->cm.passive_ids.prev, typeof(*p), list); |
1098 | if (time_after_eq(jiffies, p->jiffies + IPOIB_CM_RX_TIMEOUT)) | 1098 | if (time_before_eq(jiffies, p->jiffies + IPOIB_CM_RX_TIMEOUT)) |
1099 | break; | 1099 | break; |
1100 | list_del_init(&p->list); | 1100 | list_del_init(&p->list); |
1101 | spin_unlock_irqrestore(&priv->lock, flags); | 1101 | spin_unlock_irqrestore(&priv->lock, flags); |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c index f2aa923ddbea..ba0ee5cf2ad7 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c | |||
@@ -328,9 +328,9 @@ void ipoib_send(struct net_device *dev, struct sk_buff *skb, | |||
328 | struct ipoib_tx_buf *tx_req; | 328 | struct ipoib_tx_buf *tx_req; |
329 | u64 addr; | 329 | u64 addr; |
330 | 330 | ||
331 | if (unlikely(skb->len > priv->mcast_mtu + INFINIBAND_ALEN)) { | 331 | if (unlikely(skb->len > priv->mcast_mtu + IPOIB_ENCAP_LEN)) { |
332 | ipoib_warn(priv, "packet len %d (> %d) too long to send, dropping\n", | 332 | ipoib_warn(priv, "packet len %d (> %d) too long to send, dropping\n", |
333 | skb->len, priv->mcast_mtu + INFINIBAND_ALEN); | 333 | skb->len, priv->mcast_mtu + IPOIB_ENCAP_LEN); |
334 | ++priv->stats.tx_dropped; | 334 | ++priv->stats.tx_dropped; |
335 | ++priv->stats.tx_errors; | 335 | ++priv->stats.tx_errors; |
336 | ipoib_cm_skb_too_long(dev, skb, priv->mcast_mtu); | 336 | ipoib_cm_skb_too_long(dev, skb, priv->mcast_mtu); |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c index f9dbc6f68145..0741c6d1337c 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c | |||
@@ -380,7 +380,7 @@ static void path_rec_completion(int status, | |||
380 | struct net_device *dev = path->dev; | 380 | struct net_device *dev = path->dev; |
381 | struct ipoib_dev_priv *priv = netdev_priv(dev); | 381 | struct ipoib_dev_priv *priv = netdev_priv(dev); |
382 | struct ipoib_ah *ah = NULL; | 382 | struct ipoib_ah *ah = NULL; |
383 | struct ipoib_neigh *neigh; | 383 | struct ipoib_neigh *neigh, *tn; |
384 | struct sk_buff_head skqueue; | 384 | struct sk_buff_head skqueue; |
385 | struct sk_buff *skb; | 385 | struct sk_buff *skb; |
386 | unsigned long flags; | 386 | unsigned long flags; |
@@ -418,7 +418,7 @@ static void path_rec_completion(int status, | |||
418 | while ((skb = __skb_dequeue(&path->queue))) | 418 | while ((skb = __skb_dequeue(&path->queue))) |
419 | __skb_queue_tail(&skqueue, skb); | 419 | __skb_queue_tail(&skqueue, skb); |
420 | 420 | ||
421 | list_for_each_entry(neigh, &path->neigh_list, list) { | 421 | list_for_each_entry_safe(neigh, tn, &path->neigh_list, list) { |
422 | kref_get(&path->ah->ref); | 422 | kref_get(&path->ah->ref); |
423 | neigh->ah = path->ah; | 423 | neigh->ah = path->ah; |
424 | memcpy(&neigh->dgid.raw, &path->pathrec.dgid.raw, | 424 | memcpy(&neigh->dgid.raw, &path->pathrec.dgid.raw, |
diff --git a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c index 56c87a81bb67..54fbead4de01 100644 --- a/drivers/infiniband/ulp/ipoib/ipoib_multicast.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_multicast.c | |||
@@ -644,6 +644,9 @@ static int ipoib_mcast_leave(struct net_device *dev, struct ipoib_mcast *mcast) | |||
644 | struct ipoib_dev_priv *priv = netdev_priv(dev); | 644 | struct ipoib_dev_priv *priv = netdev_priv(dev); |
645 | int ret = 0; | 645 | int ret = 0; |
646 | 646 | ||
647 | if (test_and_clear_bit(IPOIB_MCAST_FLAG_BUSY, &mcast->flags)) | ||
648 | ib_sa_free_multicast(mcast->mc); | ||
649 | |||
647 | if (test_and_clear_bit(IPOIB_MCAST_FLAG_ATTACHED, &mcast->flags)) { | 650 | if (test_and_clear_bit(IPOIB_MCAST_FLAG_ATTACHED, &mcast->flags)) { |
648 | ipoib_dbg_mcast(priv, "leaving MGID " IPOIB_GID_FMT "\n", | 651 | ipoib_dbg_mcast(priv, "leaving MGID " IPOIB_GID_FMT "\n", |
649 | IPOIB_GID_ARG(mcast->mcmember.mgid)); | 652 | IPOIB_GID_ARG(mcast->mcmember.mgid)); |
@@ -655,9 +658,6 @@ static int ipoib_mcast_leave(struct net_device *dev, struct ipoib_mcast *mcast) | |||
655 | ipoib_warn(priv, "ipoib_mcast_detach failed (result = %d)\n", ret); | 658 | ipoib_warn(priv, "ipoib_mcast_detach failed (result = %d)\n", ret); |
656 | } | 659 | } |
657 | 660 | ||
658 | if (test_and_clear_bit(IPOIB_MCAST_FLAG_BUSY, &mcast->flags)) | ||
659 | ib_sa_free_multicast(mcast->mc); | ||
660 | |||
661 | return 0; | 661 | return 0; |
662 | } | 662 | } |
663 | 663 | ||
diff --git a/include/asm-ia64/meminit.h b/include/asm-ia64/meminit.h index 21ec5f3d23de..3a62878e84f3 100644 --- a/include/asm-ia64/meminit.h +++ b/include/asm-ia64/meminit.h | |||
@@ -36,6 +36,7 @@ extern void reserve_memory (void); | |||
36 | extern void find_initrd (void); | 36 | extern void find_initrd (void); |
37 | extern int filter_rsvd_memory (unsigned long start, unsigned long end, void *arg); | 37 | extern int filter_rsvd_memory (unsigned long start, unsigned long end, void *arg); |
38 | extern void efi_memmap_init(unsigned long *, unsigned long *); | 38 | extern void efi_memmap_init(unsigned long *, unsigned long *); |
39 | extern int find_max_min_low_pfn (unsigned long , unsigned long, void *); | ||
39 | 40 | ||
40 | extern unsigned long vmcore_find_descriptor_size(unsigned long address); | 41 | extern unsigned long vmcore_find_descriptor_size(unsigned long address); |
41 | extern int reserve_elfcorehdr(unsigned long *start, unsigned long *end); | 42 | extern int reserve_elfcorehdr(unsigned long *start, unsigned long *end); |