History

Merge branch 'akpm' (Andrew's tree)

Five fixes * branch 'akpm': pcmcia: fix socket refcount decrementing on each resume mm: fix UP THP spin_is_locked BUGs drivers/leds/leds-lm3530.c: fix setting pltfm->als_vmax mm: compaction: check for overlapping nodes during isolation for migration nilfs2: avoid overflowing segment numbers in nilfs_ioctl_clean_segments()

Linus Torvalds committed 14 years ago

Commit 15a46352 parents e862f2e 025e4ab6 files · +18 −9Browse files

Unified · Split

6 files
  1. drivers/leds/leds-lm3530.c +2 −2
  2. drivers/pcmcia/ds.c +1 −3
  3. fs/nilfs2/ioctl.c +2 −0
  4. mm/compaction.c +10 −1
  5. mm/huge_memory.c +2 −2
  6. mm/swap.c +1 −1
drivers/leds/leds-lm3530.c+2−2
@@ -164,8 +164,8 @@ static int lm3530_init_registers(struct lm3530_data *drvdata) · 163 unmodified lines
164164
165165 if (drvdata->mode == LM3530_BL_MODE_ALS) {
166166 if (pltfm->als_vmax == 0) {
167− pltfm->als_vmin = als_vmin = 0;
168− pltfm->als_vmin = als_vmax = LM3530_ALS_WINDOW_mV;
167+ pltfm->als_vmin = 0;
168+ pltfm->als_vmax = LM3530_ALS_WINDOW_mV;
169169 }
170170
171171 als_vmin = pltfm->als_vmin;
drivers/pcmcia/ds.c+1−3
@@ -1269,10 +1269,8 @@ static int pcmcia_bus_add(struct pcmcia_socket *skt) · 1268 unmodified lines
12691269
12701270 static int pcmcia_bus_early_resume(struct pcmcia_socket *skt)
12711271 {
1272− if (!verify_cis_cache(skt)) {
1273− pcmcia_put_socket(skt);
1272+ if (!verify_cis_cache(skt))
12741273 return 0;
1275− }
12761274
12771275 dev_dbg(&skt->dev, "cis mismatch - different card\n");
12781276
fs/nilfs2/ioctl.c+2−0
@@ -603,6 +603,8 @@ static int nilfs_ioctl_clean_segments(struct inode *inode, struct file *filp, · 602 unmodified lines
603603 nsegs = argv[4].v_nmembs;
604604 if (argv[4].v_size != argsz[4])
605605 goto out;
606+ if (nsegs > UINT_MAX / sizeof(__u64))
607+ goto out;
606608
607609 /*
608610 * argv[4] points to segment numbers this ioctl cleans. We
mm/compaction.c+10−1
@@ -330,8 +330,17 @@ static isolate_migrate_t isolate_migratepages(struct zone *zone, · 329 unmodified lines
330330 continue;
331331 nr_scanned++;
332332
333− /* Get the page and skip if free */
333+ /*
334+ * Get the page and ensure the page is within the same zone.
335+ * See the comment in isolate_freepages about overlapping
336+ * nodes. It is deliberate that the new zone lock is not taken
337+ * as memory compaction should not move pages between nodes.
338+ */
334339 page = pfn_to_page(low_pfn);
340+ if (page_zone(page) != zone)
341+ continue;
342+
343+ /* Skip if free */
335344 if (PageBuddy(page))
336345 continue;
337346
mm/huge_memory.c+2−2
@@ -2083,7 +2083,7 @@ static void collect_mm_slot(struct mm_slot *mm_slot) · 2082 unmodified lines
20832083 {
20842084 struct mm_struct *mm = mm_slot->mm;
20852085
2086− VM_BUG_ON(!spin_is_locked(&khugepaged_mm_lock));
2086+ VM_BUG_ON(NR_CPUS != 1 && !spin_is_locked(&khugepaged_mm_lock));
20872087
20882088 if (khugepaged_test_exit(mm)) {
20892089 /* free mm_slot */
@@ -2113,7 +2113,7 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, · 23 unmodified lines
21132113 int progress = 0;
21142114
21152115 VM_BUG_ON(!pages);
2116− VM_BUG_ON(!spin_is_locked(&khugepaged_mm_lock));
2116+ VM_BUG_ON(NR_CPUS != 1 && !spin_is_locked(&khugepaged_mm_lock));
21172117
21182118 if (khugepaged_scan.mm_slot)
21192119 mm_slot = khugepaged_scan.mm_slot;
mm/swap.c+1−1
@@ -659,7 +659,7 @@ void lru_add_page_tail(struct zone* zone, · 658 unmodified lines
659659 VM_BUG_ON(!PageHead(page));
660660 VM_BUG_ON(PageCompound(page_tail));
661661 VM_BUG_ON(PageLRU(page_tail));
662− VM_BUG_ON(!spin_is_locked(&zone->lru_lock));
662+ VM_BUG_ON(NR_CPUS != 1 && !spin_is_locked(&zone->lru_lock));
663663
664664 SetPageLRU(page_tail);
665665