diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-05 04:38:59 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-02-05 04:38:59 -0500 |
| commit | 3296944e29a048c06c5d724ef5c2c8c6e1297161 (patch) | |
| tree | 57ffef4f8e20f9f025efb3ec796da6ed6b2a8a7a | |
| parent | 3f4e5aacf754bad84dd54826ea3a77983e201c80 (diff) | |
| parent | e7e034e18a0ab6bafb2425c3242cac311164f4d6 (diff) | |
Merge branch 'akpm' (Andrew's patch-bomb)
Merge mix fixes from Andrew Morton.
* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (12 commits)
drivers/rtc/rtc-pl031.c: fix the missing operation on enable
drivers/rtc/rtc-isl1208.c: call rtc_update_irq() from the alarm irq handler
samples/seccomp: be less stupid about cross compiling
checkpatch: fix $Float creation of match variables
memcg: fix typo in kmemcg cache walk macro
mm: fix wrong comments about anon_vma lock
MAINTAINERS: update avr32 web ressources
mm/hugetlb: set PTE as huge in hugetlb_change_protection and remove_migration_pte
drivers/rtc/rtc-vt8500.c: fix year field in vt8500_rtc_set_time()
tools/vm: add .gitignore to ignore built binaries
thp: avoid dumping huge zero page
nilfs2: fix fix very long mount time issue
| -rw-r--r-- | MAINTAINERS | 2 | ||||
| -rw-r--r-- | drivers/rtc/rtc-isl1208.c | 3 | ||||
| -rw-r--r-- | drivers/rtc/rtc-pl031.c | 8 | ||||
| -rw-r--r-- | drivers/rtc/rtc-vt8500.c | 2 | ||||
| -rw-r--r-- | fs/nilfs2/ioctl.c | 5 | ||||
| -rw-r--r-- | include/linux/memcontrol.h | 2 | ||||
| -rw-r--r-- | include/linux/mmu_notifier.h | 2 | ||||
| -rw-r--r-- | mm/huge_memory.c | 4 | ||||
| -rw-r--r-- | mm/hugetlb.c | 1 | ||||
| -rw-r--r-- | mm/migrate.c | 4 | ||||
| -rw-r--r-- | mm/mmap.c | 2 | ||||
| -rw-r--r-- | samples/seccomp/Makefile | 2 | ||||
| -rwxr-xr-x | scripts/checkpatch.pl | 10 | ||||
| -rw-r--r-- | tools/vm/.gitignore | 2 |
14 files changed, 34 insertions, 15 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 212c255b9347..35a56bcd5e75 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -1489,7 +1489,7 @@ AVR32 ARCHITECTURE | |||
| 1489 | M: Haavard Skinnemoen <hskinnemoen@gmail.com> | 1489 | M: Haavard Skinnemoen <hskinnemoen@gmail.com> |
| 1490 | M: Hans-Christian Egtvedt <egtvedt@samfundet.no> | 1490 | M: Hans-Christian Egtvedt <egtvedt@samfundet.no> |
| 1491 | W: http://www.atmel.com/products/AVR32/ | 1491 | W: http://www.atmel.com/products/AVR32/ |
| 1492 | W: http://avr32linux.org/ | 1492 | W: http://mirror.egtvedt.no/avr32linux.org/ |
| 1493 | W: http://avrfreaks.net/ | 1493 | W: http://avrfreaks.net/ |
| 1494 | S: Maintained | 1494 | S: Maintained |
| 1495 | F: arch/avr32/ | 1495 | F: arch/avr32/ |
diff --git a/drivers/rtc/rtc-isl1208.c b/drivers/rtc/rtc-isl1208.c index afb7cfa85ccc..c016ad81767a 100644 --- a/drivers/rtc/rtc-isl1208.c +++ b/drivers/rtc/rtc-isl1208.c | |||
| @@ -506,6 +506,7 @@ isl1208_rtc_interrupt(int irq, void *data) | |||
| 506 | { | 506 | { |
| 507 | unsigned long timeout = jiffies + msecs_to_jiffies(1000); | 507 | unsigned long timeout = jiffies + msecs_to_jiffies(1000); |
| 508 | struct i2c_client *client = data; | 508 | struct i2c_client *client = data; |
| 509 | struct rtc_device *rtc = i2c_get_clientdata(client); | ||
| 509 | int handled = 0, sr, err; | 510 | int handled = 0, sr, err; |
| 510 | 511 | ||
| 511 | /* | 512 | /* |
| @@ -528,6 +529,8 @@ isl1208_rtc_interrupt(int irq, void *data) | |||
| 528 | if (sr & ISL1208_REG_SR_ALM) { | 529 | if (sr & ISL1208_REG_SR_ALM) { |
| 529 | dev_dbg(&client->dev, "alarm!\n"); | 530 | dev_dbg(&client->dev, "alarm!\n"); |
| 530 | 531 | ||
| 532 | rtc_update_irq(rtc, 1, RTC_IRQF | RTC_AF); | ||
| 533 | |||
| 531 | /* Clear the alarm */ | 534 | /* Clear the alarm */ |
| 532 | sr &= ~ISL1208_REG_SR_ALM; | 535 | sr &= ~ISL1208_REG_SR_ALM; |
| 533 | sr = i2c_smbus_write_byte_data(client, ISL1208_REG_SR, sr); | 536 | sr = i2c_smbus_write_byte_data(client, ISL1208_REG_SR, sr); |
diff --git a/drivers/rtc/rtc-pl031.c b/drivers/rtc/rtc-pl031.c index 08378e3cc21c..10c1a3454e48 100644 --- a/drivers/rtc/rtc-pl031.c +++ b/drivers/rtc/rtc-pl031.c | |||
| @@ -44,6 +44,7 @@ | |||
| 44 | #define RTC_YMR 0x34 /* Year match register */ | 44 | #define RTC_YMR 0x34 /* Year match register */ |
| 45 | #define RTC_YLR 0x38 /* Year data load register */ | 45 | #define RTC_YLR 0x38 /* Year data load register */ |
| 46 | 46 | ||
| 47 | #define RTC_CR_EN (1 << 0) /* counter enable bit */ | ||
| 47 | #define RTC_CR_CWEN (1 << 26) /* Clockwatch enable bit */ | 48 | #define RTC_CR_CWEN (1 << 26) /* Clockwatch enable bit */ |
| 48 | 49 | ||
| 49 | #define RTC_TCR_EN (1 << 1) /* Periodic timer enable bit */ | 50 | #define RTC_TCR_EN (1 << 1) /* Periodic timer enable bit */ |
| @@ -320,7 +321,7 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id) | |||
| 320 | struct pl031_local *ldata; | 321 | struct pl031_local *ldata; |
| 321 | struct pl031_vendor_data *vendor = id->data; | 322 | struct pl031_vendor_data *vendor = id->data; |
| 322 | struct rtc_class_ops *ops = &vendor->ops; | 323 | struct rtc_class_ops *ops = &vendor->ops; |
| 323 | unsigned long time; | 324 | unsigned long time, data; |
| 324 | 325 | ||
| 325 | ret = amba_request_regions(adev, NULL); | 326 | ret = amba_request_regions(adev, NULL); |
| 326 | if (ret) | 327 | if (ret) |
| @@ -345,10 +346,11 @@ static int pl031_probe(struct amba_device *adev, const struct amba_id *id) | |||
| 345 | dev_dbg(&adev->dev, "designer ID = 0x%02x\n", amba_manf(adev)); | 346 | dev_dbg(&adev->dev, "designer ID = 0x%02x\n", amba_manf(adev)); |
| 346 | dev_dbg(&adev->dev, "revision = 0x%01x\n", amba_rev(adev)); | 347 | dev_dbg(&adev->dev, "revision = 0x%01x\n", amba_rev(adev)); |
| 347 | 348 | ||
| 349 | data = readl(ldata->base + RTC_CR); | ||
| 348 | /* Enable the clockwatch on ST Variants */ | 350 | /* Enable the clockwatch on ST Variants */ |
| 349 | if (vendor->clockwatch) | 351 | if (vendor->clockwatch) |
| 350 | writel(readl(ldata->base + RTC_CR) | RTC_CR_CWEN, | 352 | data |= RTC_CR_CWEN; |
| 351 | ldata->base + RTC_CR); | 353 | writel(data | RTC_CR_EN, ldata->base + RTC_CR); |
| 352 | 354 | ||
| 353 | /* | 355 | /* |
| 354 | * On ST PL031 variants, the RTC reset value does not provide correct | 356 | * On ST PL031 variants, the RTC reset value does not provide correct |
diff --git a/drivers/rtc/rtc-vt8500.c b/drivers/rtc/rtc-vt8500.c index 00c930f4b6f3..2730533e2d2d 100644 --- a/drivers/rtc/rtc-vt8500.c +++ b/drivers/rtc/rtc-vt8500.c | |||
| @@ -137,7 +137,7 @@ static int vt8500_rtc_set_time(struct device *dev, struct rtc_time *tm) | |||
| 137 | return -EINVAL; | 137 | return -EINVAL; |
| 138 | } | 138 | } |
| 139 | 139 | ||
| 140 | writel((bin2bcd(tm->tm_year - 100) << DATE_YEAR_S) | 140 | writel((bin2bcd(tm->tm_year % 100) << DATE_YEAR_S) |
| 141 | | (bin2bcd(tm->tm_mon + 1) << DATE_MONTH_S) | 141 | | (bin2bcd(tm->tm_mon + 1) << DATE_MONTH_S) |
| 142 | | (bin2bcd(tm->tm_mday)) | 142 | | (bin2bcd(tm->tm_mday)) |
| 143 | | ((tm->tm_year >= 200) << DATE_CENTURY_S), | 143 | | ((tm->tm_year >= 200) << DATE_CENTURY_S), |
diff --git a/fs/nilfs2/ioctl.c b/fs/nilfs2/ioctl.c index fdb180769485..f3859354e41a 100644 --- a/fs/nilfs2/ioctl.c +++ b/fs/nilfs2/ioctl.c | |||
| @@ -664,8 +664,11 @@ static int nilfs_ioctl_clean_segments(struct inode *inode, struct file *filp, | |||
| 664 | if (ret < 0) | 664 | if (ret < 0) |
| 665 | printk(KERN_ERR "NILFS: GC failed during preparation: " | 665 | printk(KERN_ERR "NILFS: GC failed during preparation: " |
| 666 | "cannot read source blocks: err=%d\n", ret); | 666 | "cannot read source blocks: err=%d\n", ret); |
| 667 | else | 667 | else { |
| 668 | if (nilfs_sb_need_update(nilfs)) | ||
| 669 | set_nilfs_discontinued(nilfs); | ||
| 668 | ret = nilfs_clean_segments(inode->i_sb, argv, kbufs); | 670 | ret = nilfs_clean_segments(inode->i_sb, argv, kbufs); |
| 671 | } | ||
| 669 | 672 | ||
| 670 | nilfs_remove_all_gcinodes(nilfs); | 673 | nilfs_remove_all_gcinodes(nilfs); |
| 671 | clear_nilfs_gc_running(nilfs); | 674 | clear_nilfs_gc_running(nilfs); |
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 0108a56f814e..28bd5fa2ff2e 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h | |||
| @@ -429,7 +429,7 @@ extern int memcg_limited_groups_array_size; | |||
| 429 | * the slab_mutex must be held when looping through those caches | 429 | * the slab_mutex must be held when looping through those caches |
| 430 | */ | 430 | */ |
| 431 | #define for_each_memcg_cache_index(_idx) \ | 431 | #define for_each_memcg_cache_index(_idx) \ |
| 432 | for ((_idx) = 0; i < memcg_limited_groups_array_size; (_idx)++) | 432 | for ((_idx) = 0; (_idx) < memcg_limited_groups_array_size; (_idx)++) |
| 433 | 433 | ||
| 434 | static inline bool memcg_kmem_enabled(void) | 434 | static inline bool memcg_kmem_enabled(void) |
| 435 | { | 435 | { |
diff --git a/include/linux/mmu_notifier.h b/include/linux/mmu_notifier.h index bc823c4c028b..deca87452528 100644 --- a/include/linux/mmu_notifier.h +++ b/include/linux/mmu_notifier.h | |||
| @@ -151,7 +151,7 @@ struct mmu_notifier_ops { | |||
| 151 | * Therefore notifier chains can only be traversed when either | 151 | * Therefore notifier chains can only be traversed when either |
| 152 | * | 152 | * |
| 153 | * 1. mmap_sem is held. | 153 | * 1. mmap_sem is held. |
| 154 | * 2. One of the reverse map locks is held (i_mmap_mutex or anon_vma->mutex). | 154 | * 2. One of the reverse map locks is held (i_mmap_mutex or anon_vma->rwsem). |
| 155 | * 3. No other concurrent thread can access the list (release) | 155 | * 3. No other concurrent thread can access the list (release) |
| 156 | */ | 156 | */ |
| 157 | struct mmu_notifier { | 157 | struct mmu_notifier { |
diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 6001ee6347a9..b5783d81eda9 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c | |||
| @@ -1257,6 +1257,10 @@ struct page *follow_trans_huge_pmd(struct vm_area_struct *vma, | |||
| 1257 | if (flags & FOLL_WRITE && !pmd_write(*pmd)) | 1257 | if (flags & FOLL_WRITE && !pmd_write(*pmd)) |
| 1258 | goto out; | 1258 | goto out; |
| 1259 | 1259 | ||
| 1260 | /* Avoid dumping huge zero page */ | ||
| 1261 | if ((flags & FOLL_DUMP) && is_huge_zero_pmd(*pmd)) | ||
| 1262 | return ERR_PTR(-EFAULT); | ||
| 1263 | |||
| 1260 | page = pmd_page(*pmd); | 1264 | page = pmd_page(*pmd); |
| 1261 | VM_BUG_ON(!PageHead(page)); | 1265 | VM_BUG_ON(!PageHead(page)); |
| 1262 | if (flags & FOLL_TOUCH) { | 1266 | if (flags & FOLL_TOUCH) { |
diff --git a/mm/hugetlb.c b/mm/hugetlb.c index 4f3ea0b1e57c..546db81820e4 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c | |||
| @@ -3033,6 +3033,7 @@ unsigned long hugetlb_change_protection(struct vm_area_struct *vma, | |||
| 3033 | if (!huge_pte_none(huge_ptep_get(ptep))) { | 3033 | if (!huge_pte_none(huge_ptep_get(ptep))) { |
| 3034 | pte = huge_ptep_get_and_clear(mm, address, ptep); | 3034 | pte = huge_ptep_get_and_clear(mm, address, ptep); |
| 3035 | pte = pte_mkhuge(pte_modify(pte, newprot)); | 3035 | pte = pte_mkhuge(pte_modify(pte, newprot)); |
| 3036 | pte = arch_make_huge_pte(pte, vma, NULL, 0); | ||
| 3036 | set_huge_pte_at(mm, address, ptep, pte); | 3037 | set_huge_pte_at(mm, address, ptep, pte); |
| 3037 | pages++; | 3038 | pages++; |
| 3038 | } | 3039 | } |
diff --git a/mm/migrate.c b/mm/migrate.c index c38778610aa8..2fd8b4af4744 100644 --- a/mm/migrate.c +++ b/mm/migrate.c | |||
| @@ -160,8 +160,10 @@ static int remove_migration_pte(struct page *new, struct vm_area_struct *vma, | |||
| 160 | if (is_write_migration_entry(entry)) | 160 | if (is_write_migration_entry(entry)) |
| 161 | pte = pte_mkwrite(pte); | 161 | pte = pte_mkwrite(pte); |
| 162 | #ifdef CONFIG_HUGETLB_PAGE | 162 | #ifdef CONFIG_HUGETLB_PAGE |
| 163 | if (PageHuge(new)) | 163 | if (PageHuge(new)) { |
| 164 | pte = pte_mkhuge(pte); | 164 | pte = pte_mkhuge(pte); |
| 165 | pte = arch_make_huge_pte(pte, vma, new, 0); | ||
| 166 | } | ||
| 165 | #endif | 167 | #endif |
| 166 | flush_cache_page(vma, addr, pte_pfn(pte)); | 168 | flush_cache_page(vma, addr, pte_pfn(pte)); |
| 167 | set_pte_at(mm, addr, ptep, pte); | 169 | set_pte_at(mm, addr, ptep, pte); |
| @@ -2943,7 +2943,7 @@ static void vm_lock_mapping(struct mm_struct *mm, struct address_space *mapping) | |||
| 2943 | * vma in this mm is backed by the same anon_vma or address_space. | 2943 | * vma in this mm is backed by the same anon_vma or address_space. |
| 2944 | * | 2944 | * |
| 2945 | * We can take all the locks in random order because the VM code | 2945 | * We can take all the locks in random order because the VM code |
| 2946 | * taking i_mmap_mutex or anon_vma->mutex outside the mmap_sem never | 2946 | * taking i_mmap_mutex or anon_vma->rwsem outside the mmap_sem never |
| 2947 | * takes more than one of them in a row. Secondly we're protected | 2947 | * takes more than one of them in a row. Secondly we're protected |
| 2948 | * against a concurrent mm_take_all_locks() by the mm_all_locks_mutex. | 2948 | * against a concurrent mm_take_all_locks() by the mm_all_locks_mutex. |
| 2949 | * | 2949 | * |
diff --git a/samples/seccomp/Makefile b/samples/seccomp/Makefile index bbbd276659ba..7203e66dcd6f 100644 --- a/samples/seccomp/Makefile +++ b/samples/seccomp/Makefile | |||
| @@ -19,6 +19,7 @@ bpf-direct-objs := bpf-direct.o | |||
| 19 | 19 | ||
| 20 | # Try to match the kernel target. | 20 | # Try to match the kernel target. |
| 21 | ifndef CONFIG_64BIT | 21 | ifndef CONFIG_64BIT |
| 22 | ifndef CROSS_COMPILE | ||
| 22 | 23 | ||
| 23 | # s390 has -m31 flag to build 31 bit binaries | 24 | # s390 has -m31 flag to build 31 bit binaries |
| 24 | ifndef CONFIG_S390 | 25 | ifndef CONFIG_S390 |
| @@ -35,6 +36,7 @@ HOSTLOADLIBES_bpf-direct += $(MFLAG) | |||
| 35 | HOSTLOADLIBES_bpf-fancy += $(MFLAG) | 36 | HOSTLOADLIBES_bpf-fancy += $(MFLAG) |
| 36 | HOSTLOADLIBES_dropper += $(MFLAG) | 37 | HOSTLOADLIBES_dropper += $(MFLAG) |
| 37 | endif | 38 | endif |
| 39 | endif | ||
| 38 | 40 | ||
| 39 | # Tell kbuild to always build the programs | 41 | # Tell kbuild to always build the programs |
| 40 | always := $(hostprogs-y) | 42 | always := $(hostprogs-y) |
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index 4d2c7dfdaabd..2bb08a962ce3 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl | |||
| @@ -230,12 +230,12 @@ our $Inline = qr{inline|__always_inline|noinline}; | |||
| 230 | our $Member = qr{->$Ident|\.$Ident|\[[^]]*\]}; | 230 | our $Member = qr{->$Ident|\.$Ident|\[[^]]*\]}; |
| 231 | our $Lval = qr{$Ident(?:$Member)*}; | 231 | our $Lval = qr{$Ident(?:$Member)*}; |
| 232 | 232 | ||
| 233 | our $Float_hex = qr{(?i:0x[0-9a-f]+p-?[0-9]+[fl]?)}; | 233 | our $Float_hex = qr{(?i)0x[0-9a-f]+p-?[0-9]+[fl]?}; |
| 234 | our $Float_dec = qr{(?i:((?:[0-9]+\.[0-9]*|[0-9]*\.[0-9]+)(?:e-?[0-9]+)?[fl]?))}; | 234 | our $Float_dec = qr{(?i)(?:[0-9]+\.[0-9]*|[0-9]*\.[0-9]+)(?:e-?[0-9]+)?[fl]?}; |
| 235 | our $Float_int = qr{(?i:[0-9]+e-?[0-9]+[fl]?)}; | 235 | our $Float_int = qr{(?i)[0-9]+e-?[0-9]+[fl]?}; |
| 236 | our $Float = qr{$Float_hex|$Float_dec|$Float_int}; | 236 | our $Float = qr{$Float_hex|$Float_dec|$Float_int}; |
| 237 | our $Constant = qr{(?:$Float|(?i:(?:0x[0-9a-f]+|[0-9]+)[ul]*))}; | 237 | our $Constant = qr{$Float|(?i)(?:0x[0-9a-f]+|[0-9]+)[ul]*}; |
| 238 | our $Assignment = qr{(?:\*\=|/=|%=|\+=|-=|<<=|>>=|&=|\^=|\|=|=)}; | 238 | our $Assignment = qr{\*\=|/=|%=|\+=|-=|<<=|>>=|&=|\^=|\|=|=}; |
| 239 | our $Compare = qr{<=|>=|==|!=|<|>}; | 239 | our $Compare = qr{<=|>=|==|!=|<|>}; |
| 240 | our $Operators = qr{ | 240 | our $Operators = qr{ |
| 241 | <=|>=|==|!=| | 241 | <=|>=|==|!=| |
diff --git a/tools/vm/.gitignore b/tools/vm/.gitignore new file mode 100644 index 000000000000..44f095fa2604 --- /dev/null +++ b/tools/vm/.gitignore | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | slabinfo | ||
| 2 | page-types | ||
