mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Hugh Dickins <hughd@google.com>
To: Paul Gortmaker <paul.gortmaker@windriver.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
	stable@kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [34-longterm 167/179] futex: Fix regression with read only mappings
Date: Mon, 14 May 2012 21:38:54 -0700 (PDT)	[thread overview]
Message-ID: <alpine.LSU.2.00.1205142126180.2196@eggly.anvils> (raw)
In-Reply-To: <1337048075-6132-168-git-send-email-paul.gortmaker@windriver.com>

On Mon, 14 May 2012, Paul Gortmaker wrote:
> From: Shawn Bohrer <sbohrer@rgmadvisors.com>
> 
>                    -------------------
>     This is a commit scheduled for the next v2.6.34 longterm release.
>     http://git.kernel.org/?p=linux/kernel/git/paulg/longterm-queue-2.6.34.git
>     If you see a problem with using this for longterm, please comment.
>                    -------------------
> 
> commit 9ea71503a8ed9184d2d0b8ccc4d269d05f7940ae upstream.
> 
> commit 7485d0d3758e8e6491a5c9468114e74dc050785d (futexes: Remove rw
> parameter from get_futex_key()) in 2.6.33 fixed two problems:  First, It
> prevented a loop when encountering a ZERO_PAGE. Second, it fixed RW
> MAP_PRIVATE futex operations by forcing the COW to occur by
> unconditionally performing a write access get_user_pages_fast() to get
> the page.  The commit also introduced a user-mode regression in that it
> broke futex operations on read-only memory maps.  For example, this
> breaks workloads that have one or more reader processes doing a
> FUTEX_WAIT on a futex within a read only shared file mapping, and a
> writer processes that has a writable mapping issuing the FUTEX_WAKE.
> 
> This fixes the regression for valid futex operations on RO mappings by
> trying a RO get_user_pages_fast() when the RW get_user_pages_fast()
> fails. This change makes it necessary to also check for invalid use
> cases, such as anonymous RO mappings (which can never change) and the
> ZERO_PAGE which the commit referenced above was written to address.
> 
> This patch does restore the original behavior with RO MAP_PRIVATE
> mappings, which have inherent user-mode usage problems and don't really
> make sense.  With this patch performing a FUTEX_WAIT within a RO
> MAP_PRIVATE mapping will be successfully woken provided another process
> updates the region of the underlying mapped file.  However, the mmap()
> man page states that for a MAP_PRIVATE mapping:
> 
>   It is unspecified whether changes made to the file after
>   the mmap() call are visible in the mapped region.
> 
> So user-mode users attempting to use futex operations on RO MAP_PRIVATE
> mappings are depending on unspecified behavior.  Additionally a
> RO MAP_PRIVATE mapping could fail to wake up in the following case.
> 
>   Thread-A: call futex(FUTEX_WAIT, memory-region-A).
>             get_futex_key() return inode based key.
>             sleep on the key
>   Thread-B: call mprotect(PROT_READ|PROT_WRITE, memory-region-A)
>   Thread-B: write memory-region-A.
>             COW happen. This process's memory-region-A become related
>             to new COWed private (ie PageAnon=1) page.
>   Thread-B: call futex(FUETX_WAKE, memory-region-A).
>             get_futex_key() return mm based key.
>             IOW, we fail to wake up Thread-A.
> 
> Once again doing something like this is just silly and users who do
> something like this get what they deserve.
> 
> While RO MAP_PRIVATE mappings are nonsensical, checking for a private
> mapping requires walking the vmas and was deemed too costly to avoid a
> userspace hang.
> 
> This Patch is based on Peter Zijlstra's initial patch with modifications to
> only allow RO mappings for futex operations that need VERIFY_READ access.
> 
> Reported-by: David Oliver <david@rgmadvisors.com>
> Signed-off-by: Shawn Bohrer <sbohrer@rgmadvisors.com>
> Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
> Signed-off-by: Darren Hart <dvhart@linux.intel.com>
> Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
> Cc: peterz@infradead.org
> Cc: eric.dumazet@gmail.com
> Cc: zvonler@rgmadvisors.com
> Cc: hughd@google.com
> Link: http://lkml.kernel.org/r/1309450892-30676-1-git-send-email-sbohrer@rgmadvisors.com
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> [PG: in 34, the variable is "page"; in original 9ea71503a it is page_head]
> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
> ---
>  kernel/futex.c |   54 ++++++++++++++++++++++++++++++++++++++++++------------
>  1 file changed, 42 insertions(+), 12 deletions(-)
> 
> diff --git a/kernel/futex.c b/kernel/futex.c
> index e328f57..98a354d 100644
> --- a/kernel/futex.c
> +++ b/kernel/futex.c
> @@ -203,6 +203,8 @@ static void drop_futex_key_refs(union futex_key *key)
>   * @uaddr:	virtual address of the futex
>   * @fshared:	0 for a PROCESS_PRIVATE futex, 1 for PROCESS_SHARED
>   * @key:	address where result is stored.
> + * @rw:		mapping needs to be read/write (values: VERIFY_READ,
> + *              VERIFY_WRITE)
>   *
>   * Returns a negative error code or 0
>   * The key words are stored in *key on success.
> @@ -214,12 +216,12 @@ static void drop_futex_key_refs(union futex_key *key)
>   * lock_page() might sleep, the caller should not hold a spinlock.
>   */
>  static int
> -get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key)
> +get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key, int rw)
>  {
>  	unsigned long address = (unsigned long)uaddr;
>  	struct mm_struct *mm = current->mm;
>  	struct page *page;
> -	int err;
> +	int err, ro = 0;
>  
>  	/*
>  	 * The futex address must be "naturally" aligned.
> @@ -247,14 +249,31 @@ get_futex_key(u32 __user *uaddr, int fshared, union futex_key *key)
>  
>  again:
>  	err = get_user_pages_fast(address, 1, 1, &page);
> +	/*
> +	 * If write access is not required (eg. FUTEX_WAIT), try
> +	 * and get read-only access.
> +	 */
> +	if (err == -EFAULT && rw == VERIFY_READ) {
> +		err = get_user_pages_fast(address, 1, 0, &page);
> +		ro = 1;
> +	}
>  	if (err < 0)
>  		return err;
> +	else
> +		err = 0;
>  
>  	page = compound_head(page);
>  	lock_page(page);
>  	if (!page->mapping) {
>  		unlock_page(page);
>  		put_page(page);
> +		/*
> +		* ZERO_PAGE pages don't have a mapping. Avoid a busy loop
> +		* trying to find one. RW mapping would have COW'd (and thus
> +		* have a mapping) so this page is RO and won't ever change.
> +		*/
> +		if ((page == ZERO_PAGE(address)))
> +			return -EFAULT;
>  		goto again;
>  	}
>  
> @@ -266,6 +285,15 @@ again:
>  	 * the object not the particular process.
>  	 */
>  	if (PageAnon(page)) {
> +		/*
> +		 * A RO anonymous page will never change and thus doesn't make
> +		 * sense for futex operations.
> +		 */
> +		if (ro) {
> +			err = -EFAULT;
> +			goto out;
> +		}
> +
>  		key->both.offset |= FUT_OFF_MMSHARED; /* ref taken on mm */
>  		key->private.mm = mm;
>  		key->private.address = address;
> @@ -277,9 +305,10 @@ again:
>  
>  	get_futex_key_refs(key);
>  
> +out:
>  	unlock_page(page);
>  	put_page(page);
> -	return 0;
> +	return err;
>  }
>  
>  static inline
> @@ -880,7 +909,7 @@ static int futex_wake(u32 __user *uaddr, int fshared, int nr_wake, u32 bitset)
>  	if (!bitset)
>  		return -EINVAL;
>  
> -	ret = get_futex_key(uaddr, fshared, &key);
> +	ret = get_futex_key(uaddr, fshared, &key, VERIFY_READ);
>  	if (unlikely(ret != 0))
>  		goto out;
>  
> @@ -926,10 +955,10 @@ futex_wake_op(u32 __user *uaddr1, int fshared, u32 __user *uaddr2,
>  	int ret, op_ret;
>  
>  retry:
> -	ret = get_futex_key(uaddr1, fshared, &key1);
> +	ret = get_futex_key(uaddr1, fshared, &key1, VERIFY_READ);
>  	if (unlikely(ret != 0))
>  		goto out;
> -	ret = get_futex_key(uaddr2, fshared, &key2);
> +	ret = get_futex_key(uaddr2, fshared, &key2, VERIFY_WRITE);
>  	if (unlikely(ret != 0))
>  		goto out_put_key1;
>  
> @@ -1188,10 +1217,11 @@ retry:
>  		pi_state = NULL;
>  	}
>  
> -	ret = get_futex_key(uaddr1, fshared, &key1);
> +	ret = get_futex_key(uaddr1, fshared, &key1, VERIFY_READ);
>  	if (unlikely(ret != 0))
>  		goto out;
> -	ret = get_futex_key(uaddr2, fshared, &key2);
> +	ret = get_futex_key(uaddr2, fshared, &key2,
> +			    requeue_pi ? VERIFY_WRITE : VERIFY_READ);
>  	if (unlikely(ret != 0))
>  		goto out_put_key1;
>  
> @@ -1746,7 +1776,7 @@ static int futex_wait_setup(u32 __user *uaddr, u32 val, int fshared,
>  	 */
>  retry:
>  	q->key = FUTEX_KEY_INIT;
> -	ret = get_futex_key(uaddr, fshared, &q->key);
> +	ret = get_futex_key(uaddr, fshared, &q->key, VERIFY_READ);
>  	if (unlikely(ret != 0))
>  		return ret;
>  
> @@ -1912,7 +1942,7 @@ static int futex_lock_pi(u32 __user *uaddr, int fshared,
>  	q.requeue_pi_key = NULL;
>  retry:
>  	q.key = FUTEX_KEY_INIT;
> -	ret = get_futex_key(uaddr, fshared, &q.key);
> +	ret = get_futex_key(uaddr, fshared, &q.key, VERIFY_WRITE);
>  	if (unlikely(ret != 0))
>  		goto out;
>  
> @@ -2031,7 +2061,7 @@ retry:
>  	if ((uval & FUTEX_TID_MASK) != task_pid_vnr(current))
>  		return -EPERM;
>  
> -	ret = get_futex_key(uaddr, fshared, &key);
> +	ret = get_futex_key(uaddr, fshared, &key, VERIFY_WRITE);
>  	if (unlikely(ret != 0))
>  		goto out;
>  
> @@ -2223,7 +2253,7 @@ static int futex_wait_requeue_pi(u32 __user *uaddr, int fshared,
>  	rt_waiter.task = NULL;
>  
>  	key2 = FUTEX_KEY_INIT;
> -	ret = get_futex_key(uaddr2, fshared, &key2);
> +	ret = get_futex_key(uaddr2, fshared, &key2, VERIFY_WRITE);
>  	if (unlikely(ret != 0))
>  		goto out;
>  
> -- 
> 1.7.9.6

Including this commit worries me a little, because it introduces
the ZERO_PAGE case which we later had to change.  Though I did end up
supplying the patch below, it was very much in consultation with Peter
and Linus: I'm no expert on futices, and haven't followed the history
of intervening patches between what you're including above and this one
below (and I don't see an rw arg to get_futex_key() in latest source).

I don't know: I'm not NAKking it, I'm just waving a reddish flag,
and hoping that Peter will remember more, and have something more
constructive to say, than I can think of at this moment.

Hugh

commit e6780f7243eddb133cc20ec37fa69317c218b709
Author: Hugh Dickins <hughd@google.com>
Date:   Sat Dec 31 11:44:01 2011 -0800

    futex: Fix uninterruptible loop due to gate_area
    
    It was found (by Sasha) that if you use a futex located in the gate
    area we get stuck in an uninterruptible infinite loop, much like the
    ZERO_PAGE issue.
    
    While looking at this problem, PeterZ realized you'll get into similar
    trouble when hitting any install_special_pages() mapping.  And are there
    still drivers setting up their own special mmaps without page->mapping,
    and without special VM or pte flags to make get_user_pages fail?
    
    In most cases, if page->mapping is NULL, we do not need to retry at all:
    Linus points out that even /proc/sys/vm/drop_caches poses no problem,
    because it ends up using remove_mapping(), which takes care not to
    interfere when the page reference count is raised.
    
    But there is still one case which does need a retry: if memory pressure
    called shmem_writepage in between get_user_pages_fast dropping page
    table lock and our acquiring page lock, then the page gets switched from
    filecache to swapcache (and ->mapping set to NULL) whatever the refcount.
    Fault it back in to get the page->mapping needed for key->shared.inode.
    
    Reported-by: Sasha Levin <levinsasha928@gmail.com>
    Signed-off-by: Hugh Dickins <hughd@google.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

diff --git a/kernel/futex.c b/kernel/futex.c
index ea87f4d..1614be2 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -314,17 +314,29 @@ again:
 #endif
 
 	lock_page(page_head);
+
+	/*
+	 * If page_head->mapping is NULL, then it cannot be a PageAnon
+	 * page; but it might be the ZERO_PAGE or in the gate area or
+	 * in a special mapping (all cases which we are happy to fail);
+	 * or it may have been a good file page when get_user_pages_fast
+	 * found it, but truncated or holepunched or subjected to
+	 * invalidate_complete_page2 before we got the page lock (also
+	 * cases which we are happy to fail).  And we hold a reference,
+	 * so refcount care in invalidate_complete_page's remove_mapping
+	 * prevents drop_caches from setting mapping to NULL beneath us.
+	 *
+	 * The case we do have to guard against is when memory pressure made
+	 * shmem_writepage move it from filecache to swapcache beneath us:
+	 * an unlikely race, but we do need to retry for page_head->mapping.
+	 */
 	if (!page_head->mapping) {
+		int shmem_swizzled = PageSwapCache(page_head);
 		unlock_page(page_head);
 		put_page(page_head);
-		/*
-		* ZERO_PAGE pages don't have a mapping. Avoid a busy loop
-		* trying to find one. RW mapping would have COW'd (and thus
-		* have a mapping) so this page is RO and won't ever change.
-		*/
-		if ((page_head == ZERO_PAGE(address)))
-			return -EFAULT;
-		goto again;
+		if (shmem_swizzled)
+			goto again;
+		return -EFAULT;
 	}
 
 	/*

  reply	other threads:[~2012-05-15  4:39 UTC|newest]

Thread overview: 190+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-15  2:11 [34-longterm 000/179] v2.6.34.12 longterm review Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 001/179] ftrace: Only update the function code on write to filter files Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 002/179] kmemleak: Do not return a pointer to an object that kmemleak did not get Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 003/179] CPU hotplug, re-create sysfs directory and symlinks Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 004/179] Fix memory leak in cpufreq_stat Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 005/179] powerpc/kexec: Fix memory corruption from unallocated slaves Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 006/179] powerpc/oprofile: Handle events that raise an exception without overflowing Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 007/179] block: add proper state guards to __elv_next_request Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 008/179] mtd: mtdconcat: fix NAND OOB write Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 009/179] x86, 64-bit: Fix copy_[to/from]_user() checks for the userspace address limit Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 010/179] ext3: Fix fs corruption when make_indexed_dir() fails Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 011/179] jbd: Fix forever sleeping process in do_get_write_access() Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 012/179] jbd: fix fsync() tid wraparound bug Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 013/179] ext4: release page cache in ext4_mb_load_buddy error path Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 014/179] Fix Ultrastor asm snippet Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 015/179] x86, amd: Use _safe() msr access for GartTlbWlk disable code Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 016/179] rcu: Fix unpaired rcu_irq_enter() from locking selftests Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 017/179] staging: usbip: fix wrong endian conversion Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 018/179] seqlock: Don't smp_rmb in seqlock reader spin loop Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 019/179] ALSA: HDA: Use one dmic only for Dell Studio 1558 Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 020/179] ASoC: Ensure output PGA is enabled for line outputs in wm_hubs Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 021/179] ASoC: Add some missing volume update bit sets for wm_hubs devices Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 022/179] mm/page_alloc.c: prevent unending loop in __alloc_pages_slowpath() Paul Gortmaker
2012-05-15  2:11 ` [34-longterm 023/179] loop: limit 'max_part' module param to DISK_MAX_PARTS Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 024/179] loop: handle on-demand devices correctly Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 025/179] USB: CP210x Add 4 Device IDs for AC-Services Devices Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 026/179] USB: moto_modem: Add USB identifier for the Motorola VE240 Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 027/179] USB: serial: ftdi_sio: adding support for TavIR STK500 Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 028/179] USB: gamin_gps: Fix for data transfer problems in native mode Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 029/179] usb/gadget: at91sam9g20 fix end point max packet size Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 030/179] usb: gadget: rndis: don't test against req->length Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 031/179] xhci: Fix full speed bInterval encoding Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 032/179] p54usb: add zoom 4410 usbid Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 033/179] eCryptfs: Allow 2 scatterlist entries for encrypted filenames Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 034/179] UBIFS: fix a rare memory leak in ro to rw remounting path Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 035/179] i8k: Avoid lahf in 64-bit code Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 036/179] cpuidle: menu: fixed wrapping timers at 4.294 seconds Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 037/179] dm table: reject devices without request fns Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 038/179] atm: expose ATM device index in sysfs Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 039/179] brd: limit 'max_part' module param to DISK_MAX_PARTS Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 040/179] brd: handle on-demand devices correctly Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 041/179] SUNRPC: Deal with the lack of a SYN_SENT sk->sk_state_change callback Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 042/179] PCI: Add quirk for setting valid class for TI816X Endpoint Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 043/179] xen mmu: fix a race window causing leave_mm BUG() Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 044/179] UBIFS: fix shrinker object count reports Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 045/179] UBIFS: fix memory leak on error path Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 046/179] nbd: limit module parameters to a sane value Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 047/179] block: export blk_{get,put}_queue() Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 048/179] Fix oops caused by queue refcounting failure Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 049/179] mm: fix ENOSPC returned by handle_mm_fault() Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 050/179] PCI: Set PCIE maxpayload for card during hotplug insertion Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 051/179] nl80211: fix check for valid SSID size in scan operations Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 052/179] lockdep: Fix lock_is_held() on recursion Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 053/179] drm/i915: Add a no lvds quirk for the Asus EeeBox PC EB1007 Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 054/179] drm/radeon/kms: fix for radeon on systems >4GB without hardware iommu Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 055/179] fat: Fix corrupt inode flags when remove ATTR_SYS flag Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 056/179] xen: off by one errors in multicalls.c Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 057/179] x86/amd-iommu: Fix 3 possible endless loops Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 058/179] USB: cdc-acm: Adding second ACM channel support for Nokia E7 and C7 Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 059/179] USB: core: Tolerate protocol stall during hub and port status read Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 060/179] USB: serial: add another 4N-GALAXY.DE PID to ftdi_sio driver Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 061/179] USB: xhci - fix interval calculation for FS isoc endpoints Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 062/179] oprofile, dcookies: Fix possible circular locking dependency Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 063/179] Remove cpufreq_stats sysfs entries on module unload Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 064/179] md: check ->hot_remove_disk when removing disk Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 065/179] md/raid5: fix raid5_set_bi_hw_segments Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 066/179] md/raid5: fix FUA request handling in ops_run_io() Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 067/179] pata_cm64x: fix boot crash on parisc Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 068/179] xfs: properly account for reclaimed inodes Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 069/179] exec: delay address limit change until point of no return Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 070/179] netfilter: IPv6: initialize TOS field in REJECT target module Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 071/179] netfilter: IPv6: fix DSCP mangle code Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 072/179] xen: events: do not unmask event channels on resume Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 073/179] genirq: Add IRQF_FORCE_RESUME Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 074/179] xen: Use IRQF_FORCE_RESUME Paul Gortmaker
2012-05-15  5:02   ` Jonathan Nieder
2012-05-15 16:33     ` Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 075/179] time: Compensate for rounding on odd-frequency clocksources Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 076/179] ksm: fix NULL pointer dereference in scan_get_next_rmap_item() Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 077/179] migrate: don't account swapcache as shmem Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 078/179] xen: partially revert "xen: set max_pfn_mapped to the last pfn mapped" Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 079/179] clocksource: Make watchdog robust vs. interruption Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 080/179] TTY: ldisc, do not close until there are readers Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 081/179] xhci: Reject double add of active endpoints Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 082/179] PM: Free memory bitmaps if opening /dev/snapshot fails Paul Gortmaker
2012-05-15  2:12 ` [34-longterm 083/179] ath5k: fix memory leak when fewer than N_PD_CURVES are in use Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 084/179] mm: fix negative commitlimit when gigantic hugepages are allocated Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 085/179] uvcvideo: Remove buffers from the queues when freeing Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 086/179] watchdog: mtx1-wdt: request gpio before using it Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 087/179] debugobjects: Fix boot crash when kmemleak and debugobjects enabled Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 088/179] cfq-iosched: fix locking around ioc->ioc_data assignment Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 089/179] cfq-iosched: fix a rcu warning Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 090/179] i2c-taos-evm: Fix log messages Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 091/179] md: avoid endless recovery loop when waiting for fail device to complete Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 092/179] SUNRPC: Ensure the RPC client only quits on fatal signals Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 093/179] 6pack,mkiss: fix lock inconsistency Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 094/179] USB: don't let errors prevent system sleep Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 095/179] USB: don't let the hub driver " Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 096/179] uml: fix CONFIG_STATIC_LINK=y build failure with newer glibc Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 097/179] PM / Hibernate: Avoid hitting OOM during preallocation of memory Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 098/179] PM / Hibernate: Fix free_unnecessary_pages() Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 099/179] bug.h: Add WARN_RATELIMIT Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 100/179] net: filter: Use WARN_RATELIMIT Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 101/179] af_packet: prevent information leak Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 102/179] net/ipv4: Check for mistakenly passed in non-IPv4 address Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 103/179] ipv6/udp: Use the correct variable to determine non-blocking condition Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 104/179] udp/recvmsg: Clear MSG_TRUNC flag when starting over for a new packet Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 105/179] mm: prevent concurrent unmap_mapping_range() on the same inode Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 106/179] ASoC: Fix Blackfin I2S _pointer() implementation return in bounds values Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 107/179] v4l2-ioctl.c: prefill tuner type for g_frequency and g/s_tuner Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 108/179] pvrusb2: fix g/s_tuner support Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 109/179] bttv: fix s_tuner for radio Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 110/179] NFSv4.1: update nfs4_fattr_bitmap_maxsz Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 111/179] SUNRPC: Fix a race between work-queue and rpc_killall_tasks Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 112/179] SUNRPC: Fix use of static variable in rpcb_getport_async Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 113/179] si4713-i2c: avoid potential buffer overflow on si4713 Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 114/179] hwmon: (max1111) Fix race condition causing NULL pointer exception Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 115/179] bridge: send proper message_age in config BPDU Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 116/179] davinci: DM365 EVM: fix video input mux bits Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 117/179] libata: fix unexpectedly frozen port after ata_eh_reset() Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 118/179] x86: Make Dell Latitude E5420 use reboot=pci Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 119/179] USB: pl2303.h: checkpatch cleanups Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 120/179] USB: serial: add IDs for WinChipHead USB->RS232 adapter Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 121/179] staging: comedi: fix infoleak to userspace Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 122/179] USB: OHCI: fix another regression for NVIDIA controllers Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 123/179] ARM: pxa/cm-x300: fix V3020 RTC functionality Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 124/179] jme: Fix unmap error (Causing system freeze) Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 125/179] libsas: remove expander from dev list on error Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 126/179] mac80211: Restart STA timers only on associated state Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 127/179] Blacklist Traxdata CDR4120 and IOMEGA Zip drive to avoid lock ups Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 128/179] ses: requesting a fault indication Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 129/179] pmcraid: reject negative request size Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 130/179] kexec, x86: Fix incorrect jump back address if not preserving context Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 131/179] powerpc/kdump: Fix timeout in crash_kexec_wait_realmode Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 132/179] PCI: ARI is a PCIe v2 feature Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 133/179] cciss: do not attempt to read from a write-only register Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 134/179] xtensa: prevent arbitrary read in ptrace Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 135/179] ext3: Fix oops in ext3_try_to_allocate_with_rsv() Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 136/179] svcrpc: fix list-corrupting race on nfsd shutdown Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 137/179] EHCI: only power off port if over-current is active Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 138/179] EHCI: fix direction handling for interrupt data toggles Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 139/179] powerpc/pseries/hvconsole: Fix dropped console output Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 140/179] cifs: clean up cifs_find_smb_ses (try #2) Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 141/179] cifs: fix NULL pointer dereference in cifs_find_smb_ses Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 142/179] cifs: check for NULL session password Paul Gortmaker
2012-05-15  2:13 ` [34-longterm 143/179] alpha: fix several security issues Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 144/179] proc: restrict access to /proc/PID/io Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 145/179] ALSA: sound/core/pcm_compat.c: adjust array index Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 146/179] dm mpath: fix potential NULL pointer in feature arg processing Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 147/179] dm: fix idr leak on module removal Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 148/179] x86: Hpet: Avoid the comparator readback penalty Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 149/179] x86: HPET: Chose a paranoid safe value for the ETIME check Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 150/179] crypto: Move md5_transform to lib/md5.c Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 151/179] net: Compute protocol sequence numbers and fragment IDs using MD5 Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 152/179] ALSA: timer - Fix Oops at closing slave timer Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 153/179] ALSA: snd-usb-caiaq: Fix keymap for RigKontrol3 Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 154/179] powerpc: Fix device tree claim code Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 155/179] powerpc: pseries: Fix kexec on machines with more than 4TB of RAM Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 156/179] USB: xhci: fix OS want to own HC Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 157/179] USB: assign instead of equal in usbtmc.c Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 158/179] USB: usb-storage: unusual_devs entry for ARM V2M motherboard Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 159/179] USB: Serial: Added device ID for Qualcomm Modem in Sagemcom's HiLo3G Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 160/179] atm: br2864: sent packets truncated in VC routed mode Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 161/179] hwmon: (ibmaem) add missing kfree Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 162/179] ALSA: snd-usb-caiaq: Correct offset fields of outbound iso_frame_desc Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 163/179] mm: fix wrong vmap address calculations with odd NR_CPUS values Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 164/179] perf tools: do not look at ./config for configuration Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 165/179] ALSA: snd_usb_caiaq: track submitted output urbs Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 166/179] ALSA: ac97: Add HP Compaq dc5100 SFF(PT003AW) to Headphone Jack Sense whitelist Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 167/179] futex: Fix regression with read only mappings Paul Gortmaker
2012-05-15  4:38   ` Hugh Dickins [this message]
2012-05-15 10:51     ` Peter Zijlstra
2012-05-15 16:02       ` Paul Gortmaker
2012-05-15 18:55         ` Willy Tarreau
2012-05-15  2:14 ` [34-longterm 168/179] x86-32, vdso: On system call restart after SYSENTER, use int $0x80 Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 169/179] x86, UV: Remove UV delay in starting slave cpus Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 170/179] drm/ttm: fix ttm_bo_add_ttm(user) failure path Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 171/179] fuse: check size of FUSE_NOTIFY_INVAL_ENTRY message Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 172/179] igb: Fix lack of flush after register write and before delay Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 173/179] tty: Make tiocgicount a handler Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 174/179] tty: icount changeover for other main devices Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 175/179] nozomi: Fix warning from the previous TIOCGCOUNT changes Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 176/179] tty: fix warning in synclink driver Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 177/179] score: fix off-by-one index into syscall table Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 178/179] x86/PCI: use host bridge _CRS info on MSI MS-7253 Paul Gortmaker
2012-05-15  2:14 ` [34-longterm 179/179] x86/PCI: do not tie MSI MS-7253 use_crs quirk to BIOS version Paul Gortmaker
2012-05-15 14:44   ` Alan Cox
2012-05-15 14:47     ` Alan Cox
2012-05-15 16:03       ` Paul Gortmaker
2012-05-15  3:01 ` [34-longterm 000/179] v2.6.34.12 longterm review Paul Gortmaker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.LSU.2.00.1205142126180.2196@eggly.anvils \
    --to=hughd@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paul.gortmaker@windriver.com \
    --cc=peterz@infradead.org \
    --cc=stable@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®