diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-17 16:11:09 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-17 16:11:09 -0700 | 
| commit | 1ce6ec91a8528f80442eee7157be1b016248a883 (patch) | |
| tree | 7a7f6ecf83016a4b9ff3bd357303e0e6b4f585a5 | |
| parent | 96d8683483b7eb194609edd1afe9143a0467b7d3 (diff) | |
| parent | b9e146d8eb3b9ecae5086d373b50fa0c1f3e7f0f (diff) | |
| download | olio-linux-3.10-1ce6ec91a8528f80442eee7157be1b016248a883.tar.xz olio-linux-3.10-1ce6ec91a8528f80442eee7157be1b016248a883.zip | |
Merge branch 'akpm' (fixes from Andrew)
Pull misc fixes from Andrew Morton:
 "Ten fixes"
* emailed patches from Andrew Morton <akpm@linux-foundation.org>:
  kernel/signal.c: stop info leak via the tkill and the tgkill syscalls
  mm/vmscan: fix error return in kswapd_run()
  hfsplus: fix potential overflow in hfsplus_file_truncate()
  avr32: fix build error in atstk1006_defconfig
  hugetlbfs: add swap entry check in follow_hugetlb_page()
  fs/binfmt_elf.c: fix hugetlb memory check in vma_dump_size()
  hugetlbfs: stop setting VM_DONTDUMP in initializing vma(VM_HUGETLB)
  checkpatch: fix stringification macro defect
  drivers/video/mmp/core.c: fix use-after-free bug
  thinkpad-acpi: kill hotkey_thread_mutex
| -rw-r--r-- | arch/avr32/include/asm/io.h | 4 | ||||
| -rw-r--r-- | drivers/platform/x86/thinkpad_acpi.c | 10 | ||||
| -rw-r--r-- | drivers/video/mmp/core.c | 2 | ||||
| -rw-r--r-- | fs/binfmt_elf.c | 1 | ||||
| -rw-r--r-- | fs/hfsplus/extents.c | 2 | ||||
| -rw-r--r-- | fs/hugetlbfs/inode.c | 2 | ||||
| -rw-r--r-- | kernel/signal.c | 2 | ||||
| -rw-r--r-- | mm/hugetlb.c | 12 | ||||
| -rw-r--r-- | mm/vmscan.c | 2 | ||||
| -rwxr-xr-x | scripts/checkpatch.pl | 1 | 
10 files changed, 21 insertions, 17 deletions
| diff --git a/arch/avr32/include/asm/io.h b/arch/avr32/include/asm/io.h index cf60d0a9f17..fc6483f83cc 100644 --- a/arch/avr32/include/asm/io.h +++ b/arch/avr32/include/asm/io.h @@ -165,6 +165,10 @@ BUILDIO_IOPORT(l, u32)  #define readw_be			__raw_readw  #define readl_be			__raw_readl +#define writeb_relaxed			writeb +#define writew_relaxed			writew +#define writel_relaxed			writel +  #define writeb_be			__raw_writeb  #define writew_be			__raw_writew  #define writel_be			__raw_writel diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c index 9a907567f41..edec135b168 100644 --- a/drivers/platform/x86/thinkpad_acpi.c +++ b/drivers/platform/x86/thinkpad_acpi.c @@ -1964,9 +1964,6 @@ struct tp_nvram_state {  /* kthread for the hotkey poller */  static struct task_struct *tpacpi_hotkey_task; -/* Acquired while the poller kthread is running, use to sync start/stop */ -static struct mutex hotkey_thread_mutex; -  /*   * Acquire mutex to write poller control variables as an   * atomic block. @@ -2462,8 +2459,6 @@ static int hotkey_kthread(void *data)  	unsigned int poll_freq;  	bool was_frozen; -	mutex_lock(&hotkey_thread_mutex); -  	if (tpacpi_lifecycle == TPACPI_LIFE_EXITING)  		goto exit; @@ -2523,7 +2518,6 @@ static int hotkey_kthread(void *data)  	}  exit: -	mutex_unlock(&hotkey_thread_mutex);  	return 0;  } @@ -2533,9 +2527,6 @@ static void hotkey_poll_stop_sync(void)  	if (tpacpi_hotkey_task) {  		kthread_stop(tpacpi_hotkey_task);  		tpacpi_hotkey_task = NULL; -		mutex_lock(&hotkey_thread_mutex); -		/* at this point, the thread did exit */ -		mutex_unlock(&hotkey_thread_mutex);  	}  } @@ -3234,7 +3225,6 @@ static int __init hotkey_init(struct ibm_init_struct *iibm)  	mutex_init(&hotkey_mutex);  #ifdef CONFIG_THINKPAD_ACPI_HOTKEY_POLL -	mutex_init(&hotkey_thread_mutex);  	mutex_init(&hotkey_thread_data_mutex);  #endif diff --git a/drivers/video/mmp/core.c b/drivers/video/mmp/core.c index 9ed83419038..84de2632857 100644 --- a/drivers/video/mmp/core.c +++ b/drivers/video/mmp/core.c @@ -252,7 +252,5 @@ void mmp_unregister_path(struct mmp_path *path)  	kfree(path);  	mutex_unlock(&disp_lock); - -	dev_info(path->dev, "de-register %s\n", path->name);  }  EXPORT_SYMBOL_GPL(mmp_unregister_path); diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c index 3939829f6c5..86af964c242 100644 --- a/fs/binfmt_elf.c +++ b/fs/binfmt_elf.c @@ -1137,6 +1137,7 @@ static unsigned long vma_dump_size(struct vm_area_struct *vma,  			goto whole;  		if (!(vma->vm_flags & VM_SHARED) && FILTER(HUGETLB_PRIVATE))  			goto whole; +		return 0;  	}  	/* Do not dump I/O mapped devices or special mappings */ diff --git a/fs/hfsplus/extents.c b/fs/hfsplus/extents.c index a94f0f779d5..fe0a76213d9 100644 --- a/fs/hfsplus/extents.c +++ b/fs/hfsplus/extents.c @@ -533,7 +533,7 @@ void hfsplus_file_truncate(struct inode *inode)  		struct address_space *mapping = inode->i_mapping;  		struct page *page;  		void *fsdata; -		u32 size = inode->i_size; +		loff_t size = inode->i_size;  		res = pagecache_write_begin(NULL, mapping, size, 0,  						AOP_FLAG_UNINTERRUPTIBLE, diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c index 84e3d856e91..523464e6284 100644 --- a/fs/hugetlbfs/inode.c +++ b/fs/hugetlbfs/inode.c @@ -110,7 +110,7 @@ static int hugetlbfs_file_mmap(struct file *file, struct vm_area_struct *vma)  	 * way when do_mmap_pgoff unwinds (may be important on powerpc  	 * and ia64).  	 */ -	vma->vm_flags |= VM_HUGETLB | VM_DONTEXPAND | VM_DONTDUMP; +	vma->vm_flags |= VM_HUGETLB | VM_DONTEXPAND;  	vma->vm_ops = &hugetlb_vm_ops;  	if (vma->vm_pgoff & (~huge_page_mask(h) >> PAGE_SHIFT)) diff --git a/kernel/signal.c b/kernel/signal.c index dd72567767d..598dc06be42 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -2948,7 +2948,7 @@ do_send_specific(pid_t tgid, pid_t pid, int sig, struct siginfo *info)  static int do_tkill(pid_t tgid, pid_t pid, int sig)  { -	struct siginfo info; +	struct siginfo info = {};  	info.si_signo = sig;  	info.si_errno = 0; diff --git a/mm/hugetlb.c b/mm/hugetlb.c index ca9a7c6d7e9..1a12f5b9a0a 100644 --- a/mm/hugetlb.c +++ b/mm/hugetlb.c @@ -2961,7 +2961,17 @@ long follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma,  			break;  		} -		if (absent || +		/* +		 * We need call hugetlb_fault for both hugepages under migration +		 * (in which case hugetlb_fault waits for the migration,) and +		 * hwpoisoned hugepages (in which case we need to prevent the +		 * caller from accessing to them.) In order to do this, we use +		 * here is_swap_pte instead of is_hugetlb_entry_migration and +		 * is_hugetlb_entry_hwpoisoned. This is because it simply covers +		 * both cases, and because we can't follow correct pages +		 * directly from any kind of swap entries. +		 */ +		if (absent || is_swap_pte(huge_ptep_get(pte)) ||  		    ((flags & FOLL_WRITE) && !pte_write(huge_ptep_get(pte)))) {  			int ret; diff --git a/mm/vmscan.c b/mm/vmscan.c index 88c5fed8b9a..669fba39be1 100644 --- a/mm/vmscan.c +++ b/mm/vmscan.c @@ -3188,9 +3188,9 @@ int kswapd_run(int nid)  	if (IS_ERR(pgdat->kswapd)) {  		/* failure at boot is fatal */  		BUG_ON(system_state == SYSTEM_BOOTING); -		pgdat->kswapd = NULL;  		pr_err("Failed to start kswapd on node %d\n", nid);  		ret = PTR_ERR(pgdat->kswapd); +		pgdat->kswapd = NULL;  	}  	return ret;  } diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl index b28cc384a5b..4de4bc48493 100755 --- a/scripts/checkpatch.pl +++ b/scripts/checkpatch.pl @@ -3016,6 +3016,7 @@ sub process {  			    $dstat !~ /^'X'$/ &&					# character constants  			    $dstat !~ /$exceptions/ &&  			    $dstat !~ /^\.$Ident\s*=/ &&				# .foo = +			    $dstat !~ /^(?:\#\s*$Ident|\#\s*$Constant)\s*$/ &&		# stringification #foo  			    $dstat !~ /^do\s*$Constant\s*while\s*$Constant;?$/ &&	# do {...} while (...); // do {...} while (...)  			    $dstat !~ /^for\s*$Constant$/ &&				# for (...)  			    $dstat !~ /^for\s*$Constant\s+(?:$Ident|-?$Constant)$/ &&	# for (...) bar() |