All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Greg KH <gregkh@linuxfoundation.org>,
	torvalds@linux-foundation.org, akpm@linux-foundation.org,
	alan@lxorguk.ukuu.org.uk, Dave Jones <davej@redhat.com>,
	Eric Dumazet <edumazet@google.com>, Jens Axboe <axboe@kernel.dk>,
	Alexander Viro <viro@zeniv.linux.org.uk>,
	Tom Herbert <therbert@google.com>,
	Ben Hutchings <ben@decadent.org.uk>
Subject: [ 174/187] splice: fix racy pipe->buffers uses
Date: Thu, 12 Jul 2012 15:35:30 -0700	[thread overview]
Message-ID: <20120712191539.433405264@linuxfoundation.org> (raw)
In-Reply-To: <20120712191522.742634173@linuxfoundation.org>

From: Greg KH <gregkh@linuxfoundation.org>

3.4-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Eric Dumazet <edumazet@google.com>

commit 047fe3605235888f3ebcda0c728cb31937eadfe6 upstream.

Dave Jones reported a kernel BUG at mm/slub.c:3474! triggered
by splice_shrink_spd() called from vmsplice_to_pipe()

commit 35f3d14dbbc5 (pipe: add support for shrinking and growing pipes)
added capability to adjust pipe->buffers.

Problem is some paths don't hold pipe mutex and assume pipe->buffers
doesn't change for their duration.

Fix this by adding nr_pages_max field in struct splice_pipe_desc, and
use it in place of pipe->buffers where appropriate.

splice_shrink_spd() loses its struct pipe_inode_info argument.

Reported-by: Dave Jones <davej@redhat.com>
Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Tom Herbert <therbert@google.com>
Tested-by: Dave Jones <davej@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
[bwh: Backported to 3.2:
 - Adjust context in vmsplice_to_pipe()
 - Update one more call to splice_shrink_spd(), from skb_splice_bits()]
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 fs/splice.c            |   35 ++++++++++++++++++++---------------
 include/linux/splice.h |    8 ++++----
 kernel/relay.c         |    5 +++--
 kernel/trace/trace.c   |    6 ++++--
 mm/shmem.c             |    3 ++-
 net/core/skbuff.c      |    3 ++-
 6 files changed, 35 insertions(+), 25 deletions(-)

--- a/fs/splice.c
+++ b/fs/splice.c
@@ -273,13 +273,16 @@ void spd_release_page(struct splice_pipe
  * Check if we need to grow the arrays holding pages and partial page
  * descriptions.
  */
-int splice_grow_spd(struct pipe_inode_info *pipe, struct splice_pipe_desc *spd)
+int splice_grow_spd(const struct pipe_inode_info *pipe, struct splice_pipe_desc *spd)
 {
-	if (pipe->buffers <= PIPE_DEF_BUFFERS)
+	unsigned int buffers = ACCESS_ONCE(pipe->buffers);
+
+	spd->nr_pages_max = buffers;
+	if (buffers <= PIPE_DEF_BUFFERS)
 		return 0;
 
-	spd->pages = kmalloc(pipe->buffers * sizeof(struct page *), GFP_KERNEL);
-	spd->partial = kmalloc(pipe->buffers * sizeof(struct partial_page), GFP_KERNEL);
+	spd->pages = kmalloc(buffers * sizeof(struct page *), GFP_KERNEL);
+	spd->partial = kmalloc(buffers * sizeof(struct partial_page), GFP_KERNEL);
 
 	if (spd->pages && spd->partial)
 		return 0;
@@ -289,10 +292,9 @@ int splice_grow_spd(struct pipe_inode_in
 	return -ENOMEM;
 }
 
-void splice_shrink_spd(struct pipe_inode_info *pipe,
-		       struct splice_pipe_desc *spd)
+void splice_shrink_spd(struct splice_pipe_desc *spd)
 {
-	if (pipe->buffers <= PIPE_DEF_BUFFERS)
+	if (spd->nr_pages_max <= PIPE_DEF_BUFFERS)
 		return;
 
 	kfree(spd->pages);
@@ -315,6 +317,7 @@ __generic_file_splice_read(struct file *
 	struct splice_pipe_desc spd = {
 		.pages = pages,
 		.partial = partial,
+		.nr_pages_max = PIPE_DEF_BUFFERS,
 		.flags = flags,
 		.ops = &page_cache_pipe_buf_ops,
 		.spd_release = spd_release_page,
@@ -326,7 +329,7 @@ __generic_file_splice_read(struct file *
 	index = *ppos >> PAGE_CACHE_SHIFT;
 	loff = *ppos & ~PAGE_CACHE_MASK;
 	req_pages = (len + loff + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
-	nr_pages = min(req_pages, pipe->buffers);
+	nr_pages = min(req_pages, spd.nr_pages_max);
 
 	/*
 	 * Lookup the (hopefully) full range of pages we need.
@@ -497,7 +500,7 @@ fill_it:
 	if (spd.nr_pages)
 		error = splice_to_pipe(pipe, &spd);
 
-	splice_shrink_spd(pipe, &spd);
+	splice_shrink_spd(&spd);
 	return error;
 }
 
@@ -598,6 +601,7 @@ ssize_t default_file_splice_read(struct
 	struct splice_pipe_desc spd = {
 		.pages = pages,
 		.partial = partial,
+		.nr_pages_max = PIPE_DEF_BUFFERS,
 		.flags = flags,
 		.ops = &default_pipe_buf_ops,
 		.spd_release = spd_release_page,
@@ -608,8 +612,8 @@ ssize_t default_file_splice_read(struct
 
 	res = -ENOMEM;
 	vec = __vec;
-	if (pipe->buffers > PIPE_DEF_BUFFERS) {
-		vec = kmalloc(pipe->buffers * sizeof(struct iovec), GFP_KERNEL);
+	if (spd.nr_pages_max > PIPE_DEF_BUFFERS) {
+		vec = kmalloc(spd.nr_pages_max * sizeof(struct iovec), GFP_KERNEL);
 		if (!vec)
 			goto shrink_ret;
 	}
@@ -617,7 +621,7 @@ ssize_t default_file_splice_read(struct
 	offset = *ppos & ~PAGE_CACHE_MASK;
 	nr_pages = (len + offset + PAGE_CACHE_SIZE - 1) >> PAGE_CACHE_SHIFT;
 
-	for (i = 0; i < nr_pages && i < pipe->buffers && len; i++) {
+	for (i = 0; i < nr_pages && i < spd.nr_pages_max && len; i++) {
 		struct page *page;
 
 		page = alloc_page(GFP_USER);
@@ -665,7 +669,7 @@ ssize_t default_file_splice_read(struct
 shrink_ret:
 	if (vec != __vec)
 		kfree(vec);
-	splice_shrink_spd(pipe, &spd);
+	splice_shrink_spd(&spd);
 	return res;
 
 err:
@@ -1612,6 +1616,7 @@ static long vmsplice_to_pipe(struct file
 	struct splice_pipe_desc spd = {
 		.pages = pages,
 		.partial = partial,
+		.nr_pages_max = PIPE_DEF_BUFFERS,
 		.flags = flags,
 		.ops = &user_page_pipe_buf_ops,
 		.spd_release = spd_release_page,
@@ -1627,13 +1632,13 @@ static long vmsplice_to_pipe(struct file
 
 	spd.nr_pages = get_iovec_page_array(iov, nr_segs, spd.pages,
 					    spd.partial, flags & SPLICE_F_GIFT,
-					    pipe->buffers);
+					    spd.nr_pages_max);
 	if (spd.nr_pages <= 0)
 		ret = spd.nr_pages;
 	else
 		ret = splice_to_pipe(pipe, &spd);
 
-	splice_shrink_spd(pipe, &spd);
+	splice_shrink_spd(&spd);
 	return ret;
 }
 
--- a/include/linux/splice.h
+++ b/include/linux/splice.h
@@ -51,7 +51,8 @@ struct partial_page {
 struct splice_pipe_desc {
 	struct page **pages;		/* page map */
 	struct partial_page *partial;	/* pages[] may not be contig */
-	int nr_pages;			/* number of pages in map */
+	int nr_pages;			/* number of populated pages in map */
+	unsigned int nr_pages_max;	/* pages[] & partial[] arrays size */
 	unsigned int flags;		/* splice flags */
 	const struct pipe_buf_operations *ops;/* ops associated with output pipe */
 	void (*spd_release)(struct splice_pipe_desc *, unsigned int);
@@ -85,9 +86,8 @@ extern ssize_t splice_direct_to_actor(st
 /*
  * for dynamic pipe sizing
  */
-extern int splice_grow_spd(struct pipe_inode_info *, struct splice_pipe_desc *);
-extern void splice_shrink_spd(struct pipe_inode_info *,
-				struct splice_pipe_desc *);
+extern int splice_grow_spd(const struct pipe_inode_info *, struct splice_pipe_desc *);
+extern void splice_shrink_spd(struct splice_pipe_desc *);
 extern void spd_release_page(struct splice_pipe_desc *, unsigned int);
 
 extern const struct pipe_buf_operations page_cache_pipe_buf_ops;
--- a/kernel/relay.c
+++ b/kernel/relay.c
@@ -1235,6 +1235,7 @@ static ssize_t subbuf_splice_actor(struc
 	struct splice_pipe_desc spd = {
 		.pages = pages,
 		.nr_pages = 0,
+		.nr_pages_max = PIPE_DEF_BUFFERS,
 		.partial = partial,
 		.flags = flags,
 		.ops = &relay_pipe_buf_ops,
@@ -1302,8 +1303,8 @@ static ssize_t subbuf_splice_actor(struc
                 ret += padding;
 
 out:
-	splice_shrink_spd(pipe, &spd);
-        return ret;
+	splice_shrink_spd(&spd);
+	return ret;
 }
 
 static ssize_t relay_file_splice_read(struct file *in,
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -3565,6 +3565,7 @@ static ssize_t tracing_splice_read_pipe(
 		.pages		= pages_def,
 		.partial	= partial_def,
 		.nr_pages	= 0, /* This gets updated below. */
+		.nr_pages_max	= PIPE_DEF_BUFFERS,
 		.flags		= flags,
 		.ops		= &tracing_pipe_buf_ops,
 		.spd_release	= tracing_spd_release_pipe,
@@ -3636,7 +3637,7 @@ static ssize_t tracing_splice_read_pipe(
 
 	ret = splice_to_pipe(pipe, &spd);
 out:
-	splice_shrink_spd(pipe, &spd);
+	splice_shrink_spd(&spd);
 	return ret;
 
 out_err:
@@ -4126,6 +4127,7 @@ tracing_buffers_splice_read(struct file
 	struct splice_pipe_desc spd = {
 		.pages		= pages_def,
 		.partial	= partial_def,
+		.nr_pages_max	= PIPE_DEF_BUFFERS,
 		.flags		= flags,
 		.ops		= &buffer_pipe_buf_ops,
 		.spd_release	= buffer_spd_release,
@@ -4213,7 +4215,7 @@ tracing_buffers_splice_read(struct file
 	}
 
 	ret = splice_to_pipe(pipe, &spd);
-	splice_shrink_spd(pipe, &spd);
+	splice_shrink_spd(&spd);
 out:
 	return ret;
 }
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -1365,6 +1365,7 @@ static ssize_t shmem_file_splice_read(st
 	struct splice_pipe_desc spd = {
 		.pages = pages,
 		.partial = partial,
+		.nr_pages_max = PIPE_DEF_BUFFERS,
 		.flags = flags,
 		.ops = &page_cache_pipe_buf_ops,
 		.spd_release = spd_release_page,
@@ -1453,7 +1454,7 @@ static ssize_t shmem_file_splice_read(st
 	if (spd.nr_pages)
 		error = splice_to_pipe(pipe, &spd);
 
-	splice_shrink_spd(pipe, &spd);
+	splice_shrink_spd(&spd);
 
 	if (error > 0) {
 		*ppos += error;
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -1712,6 +1712,7 @@ int skb_splice_bits(struct sk_buff *skb,
 	struct splice_pipe_desc spd = {
 		.pages = pages,
 		.partial = partial,
+		.nr_pages_max = MAX_SKB_FRAGS,
 		.flags = flags,
 		.ops = &sock_pipe_buf_ops,
 		.spd_release = sock_spd_release,
@@ -1758,7 +1759,7 @@ done:
 		lock_sock(sk);
 	}
 
-	splice_shrink_spd(pipe, &spd);
+	splice_shrink_spd(&spd);
 	return ret;
 }
 



  parent reply	other threads:[~2012-07-12 22:50 UTC|newest]

Thread overview: 191+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-12 19:24 [ 000/187] 3.4.5-stable review Greg KH
2012-07-12 22:23 ` [ 001/187] Tools: hv: verify origin of netlink connector message Greg Kroah-Hartman
2012-07-12 22:23   ` [ 002/187] ARM: tegra: make tegra_cpu_reset_handler_enable() __init Greg Kroah-Hartman
2012-07-12 22:23   ` [ 003/187] ALSA: hda - Add Realtek ALC280 codec support Greg Kroah-Hartman
2012-07-12 22:23   ` [ 004/187] ALSA: hda - Fix memory leaks at module unload Greg Kroah-Hartman
2012-07-12 22:32 ` [ 005/187] ALSA: hda - Fix power-map regression for HP dv6 & co Greg Kroah-Hartman
2012-07-12 22:32   ` [ 006/187] powerpc/ftrace: Do not trace restore_interrupts() Greg Kroah-Hartman
2012-07-12 22:32   ` [ 007/187] powerpc: Fix uninitialised error in numa.c Greg Kroah-Hartman
2012-07-12 22:32   ` [ 008/187] powerpc/pseries: Fix software invalidate TCE Greg Kroah-Hartman
2012-07-12 22:32   ` [ 009/187] powerpc: check_and_cede_processor() never cedes Greg Kroah-Hartman
2012-07-12 22:32   ` [ 010/187] ARM: SAMSUNG: Fix for S3C2412 EBI memory mapping Greg Kroah-Hartman
2012-07-12 22:32   ` [ 011/187] ARM: SAMSUNG: Should check for IS_ERR(clk) instead of NULL Greg Kroah-Hartman
2012-07-12 22:32   ` [ 012/187] ARM: 7438/1: fill possible PMD empty section gaps Greg Kroah-Hartman
2012-07-12 22:32   ` [ 013/187] powerpc/kvm: sldi should be sld Greg Kroah-Hartman
2012-07-12 22:32   ` [ 014/187] powerpc/xmon: Use cpumask iterator to avoid warning Greg Kroah-Hartman
2012-07-12 22:32   ` [ 015/187] media: smsusb: add autodetection support for USB ID 2040:f5a0 Greg Kroah-Hartman
2012-07-12 22:32   ` [ 016/187] bql: Fix POSDIFF() to integer overflow aware Greg Kroah-Hartman
2012-07-12 22:32   ` [ 017/187] bql: Avoid unneeded limit decrement Greg Kroah-Hartman
2012-07-12 22:32   ` [ 018/187] bql: Avoid possible inconsistent calculation Greg Kroah-Hartman
2012-07-12 22:32   ` [ 019/187] net: sock: validate data_len before allocating skb in sock_alloc_send_pskb() Greg Kroah-Hartman
2012-07-12 22:32   ` [ 020/187] cipso: handle CIPSO options correctly when NetLabel is disabled Greg Kroah-Hartman
2012-07-12 22:32   ` [ 021/187] r8169: call netif_napi_del at errpaths and at driver unload Greg Kroah-Hartman
2012-07-12 22:32   ` [ 022/187] drop_monitor: dont sleep in atomic context Greg Kroah-Hartman
2012-07-12 22:32   ` [ 023/187] inetpeer: fix a race in inetpeer_gc_worker() Greg Kroah-Hartman
2012-07-12 22:33   ` [ 024/187] net: l2tp_eth: fix kernel panic on rmmod l2tp_eth Greg Kroah-Hartman
2012-07-12 22:33   ` [ 025/187] l2tp: fix a race in l2tp_ip_sendmsg() Greg Kroah-Hartman
2012-07-12 22:33   ` [ 026/187] lpc_eth: add missing ndo_change_mtu() Greg Kroah-Hartman
2012-07-12 22:33   ` [ 027/187] lpc_eth: fix tx completion Greg Kroah-Hartman
2012-07-12 22:33   ` [ 028/187] net: neighbour: fix neigh_dump_info() Greg Kroah-Hartman
2012-07-12 22:33   ` [ 029/187] ipv6: fib: Restore NTF_ROUTER exception in fib6_age() Greg Kroah-Hartman
2012-07-12 22:33   ` [ 030/187] ipv6: Move ipv6 proc file registration to end of init order Greg Kroah-Hartman
2012-07-12 22:33   ` [ 031/187] sky2: fix checksum bit management on some chips Greg Kroah-Hartman
2012-07-12 22:33   ` [ 032/187] Revert "niu: Add support for byte queue limits." Greg Kroah-Hartman
2012-07-12 22:33   ` [ 033/187] be2net: fix a race in be_xmit() Greg Kroah-Hartman
2012-07-12 22:33   ` [ 034/187] dummy: fix rcu_sched self-detected stalls Greg Kroah-Hartman
2012-07-12 22:33   ` [ 035/187] bonding: Fix corrupted queue_mapping Greg Kroah-Hartman
2012-07-12 22:33   ` [ 036/187] netpoll: fix netpoll_send_udp() bugs Greg Kroah-Hartman
2012-07-12 22:33   ` [ 037/187] bnx2x: fix checksum validation Greg Kroah-Hartman
2012-07-12 22:33   ` [ 038/187] bnx2x: fix panic when TX ring is full Greg Kroah-Hartman
2012-07-12 22:33   ` [ 039/187] net: remove skb_orphan_try() Greg Kroah-Hartman
2012-07-12 22:33   ` [ 040/187] bridge: Assign rtnl_link_ops to bridge devices created via ioctl (v2) Greg Kroah-Hartman
2012-07-12 22:33   ` [ 041/187] xen/netfront: teardown the device before unregistering it Greg Kroah-Hartman
2012-07-12 22:33   ` [ 042/187] mm: fix slab->page _count corruption when using slub Greg Kroah-Hartman
2012-07-12 22:33   ` [ 043/187] powerpc: More fixes for lazy IRQ vs. idle Greg Kroah-Hartman
2012-07-12 22:33   ` [ 044/187] powerpc: Fix build of some debug irq code Greg Kroah-Hartman
2012-07-12 22:33   ` [ 045/187] NFC: Return from rawsock_release when sk is NULL Greg Kroah-Hartman
2012-07-12 22:33   ` [ 046/187] NFC: Prevent multiple buffer overflows in NCI Greg Kroah-Hartman
2012-07-12 22:33   ` [ 047/187] hwmon: (applesmc) Limit key length in warning messages Greg Kroah-Hartman
2012-07-12 22:33   ` [ 048/187] staging: r8712u: Add new USB IDs Greg Kroah-Hartman
2012-07-12 22:33   ` [ 049/187] nilfs2: ensure proper cache clearing for gc-inodes Greg Kroah-Hartman
2012-07-12 22:33   ` [ 050/187] udf: Use ret instead of abusing i in udf_load_logicalvol() Greg Kroah-Hartman
2012-07-12 22:33   ` [ 051/187] udf: Avoid run away loop when partition table length is corrupted Greg Kroah-Hartman
2012-07-12 22:33   ` [ 052/187] udf: Fortify loading of sparing table Greg Kroah-Hartman
2012-07-12 22:33   ` [ 053/187] iommu/amd: Fix missing iommu_shutdown initialization in passthrough mode Greg Kroah-Hartman
2012-07-12 22:33   ` [ 054/187] iommu/amd: Initialize dma_ops for hotplug and sriov devices Greg Kroah-Hartman
2012-07-12 22:33   ` [ 055/187] iommu/tegra: smmu: Fix unsleepable memory allocation Greg Kroah-Hartman
2012-07-12 22:33   ` [ 056/187] rpmsg: avoid premature deallocation of endpoints Greg Kroah-Hartman
2012-07-12 22:33   ` [ 057/187] rpmsg: make sure inflight messages dont invoke just-removed callbacks Greg Kroah-Hartman
2012-07-12 22:33   ` [ 058/187] cifs: fix parsing of password mount option Greg Kroah-Hartman
2012-07-12 22:33   ` [ 060/187] ath9k: Fix a WARNING on suspend/resume with IBSS Greg Kroah-Hartman
2012-07-12 22:33   ` [ 061/187] ath9k: Fix softlockup in AR9485 Greg Kroah-Hartman
2012-07-12 22:33   ` [ 062/187] ath9k: fix a tx rate duration calculation bug Greg Kroah-Hartman
2012-07-12 22:33   ` =?y?q?=5B=20063/187=5D=20ath9k=3A=20fix=20invalid=20pointer=20access=20in=20the=20tx=20path?= Greg Kroah-Hartman
2012-07-12 22:33   ` [ 064/187] ath9k_hw: avoid possible infinite loop in ar9003_get_pll_sqsum_dvc Greg Kroah-Hartman
2012-07-12 22:33   ` [ 065/187] ath9k_htc: configure bssid on ASSOC/IBSS change Greg Kroah-Hartman
2012-07-12 22:33   ` [ 066/187] ath9k: fix dynamic WEP related regression Greg Kroah-Hartman
2012-07-12 22:33   ` [ 067/187] ath9k: enable serialize_regmode for non-PCIE AR9287 Greg Kroah-Hartman
2012-07-12 22:33   ` [ 068/187] ASoC: wm2200: Add missing BCLK rate Greg Kroah-Hartman
2012-07-12 22:33   ` [ 069/187] ASoC: tlv320aic3x: Fix codec pll configure bug Greg Kroah-Hartman
2012-07-12 22:33   ` [ 070/187] Btrfs: run delayed directory updates during log replay Greg Kroah-Hartman
2012-07-12 22:33   ` [ 071/187] drm/edid: dont return stack garbage from supports_rb Greg Kroah-Hartman
2012-07-12 22:33   ` [ 072/187] drm/nouveau/fbcon: using nv_two_heads is not a good idea Greg Kroah-Hartman
2012-07-12 22:33   ` [ 073/187] drm/i915: Fix eDP blank screen after S3 resume on HP desktops Greg Kroah-Hartman
2012-07-12 22:33   ` [ 074/187] drm/radeon: fix VM page table setup on SI Greg Kroah-Hartman
2012-07-12 22:33   ` [ 075/187] ACPI video: Still use ACPI backlight control if _DOS doesnt exist Greg Kroah-Hartman
2012-07-12 22:33   ` [ 076/187] acpi_pad: fix power_saving thread deadlock Greg Kroah-Hartman
2012-07-12 22:33   ` [ 077/187] ACPI, APEI, Avoid too much error reporting in runtime Greg Kroah-Hartman
2012-07-12 22:33   ` [ 078/187] ACPI: Make acpi_skip_timer_override cover all source_irq==0 cases Greg Kroah-Hartman
2012-07-12 22:33   ` [ 079/187] ACPI: Remove one board specific WARN when ignoring timer overriding Greg Kroah-Hartman
2012-07-12 22:33   ` [ 080/187] ACPI: Add a quirk for "AMILO PRO V2030" to ignore the " Greg Kroah-Hartman
2012-07-12 22:33   ` [ 081/187] ACPI, x86: fix Dell M6600 ACPI reboot regression via DMI Greg Kroah-Hartman
2012-07-12 22:33   ` [ 082/187] ACPI sysfs.c strlen fix Greg Kroah-Hartman
2012-07-12 22:33   ` [ 083/187] ARM: Orion: Fix Virtual/Physical mixup with watchdog Greg Kroah-Hartman
2012-07-12 22:34   ` [ 084/187] ARM: Orion: Fix WDT compile for Dove and MV78xx0 Greg Kroah-Hartman
2012-07-12 22:34   ` [ 085/187] xen/blkback: Copy id field when doing BLKIF_DISCARD Greg Kroah-Hartman
2012-07-12 22:34   ` [ 086/187] umem: fix up unplugging Greg Kroah-Hartman
2012-07-12 22:34   ` [ 087/187] stable: Allow merging of backports for serious user-visible performance issues Greg Kroah-Hartman
2012-07-12 22:34   ` [ 088/187] mm: correctly synchronize rss-counters at exit/exec Greg Kroah-Hartman
2012-07-12 22:34   ` [ 089/187] PM / Sleep: Prevent waiting forever on asynchronous suspend after abort Greg Kroah-Hartman
2012-07-12 22:34   ` [ 090/187] dmaengine: pl330: dont complete descriptor for cyclic dma Greg Kroah-Hartman
2012-07-12 22:34   ` [ 091/187] NFS: Force the legacy idmapper to be single threaded Greg Kroah-Hartman
2012-07-12 22:34   ` [ 092/187] clk: Allow late cache allocation for clk->parents Greg Kroah-Hartman
2012-07-12 22:34   ` [ 093/187] clk: fix parent validation in __clk_set_parent() Greg Kroah-Hartman
2012-07-12 22:34   ` [ 094/187] gpiolib: wm8994: Pay attention to the value set when enabling as output Greg Kroah-Hartman
2012-07-12 22:34   ` [ 095/187] USB: option: add id for Cellient MEN-200 Greg Kroah-Hartman
2012-07-12 22:34   ` [ 096/187] USB: option: Add USB ID for Novatel Ovation MC551 Greg Kroah-Hartman
2012-07-12 22:34   ` [ 097/187] USB: CP210x Add 10 Device IDs Greg Kroah-Hartman
2012-07-12 22:34   ` [ 098/187] SCSI & usb-storage: add try_rc_10_first flag Greg Kroah-Hartman
2012-07-12 22:34   ` [ 099/187] usb-storage: revert commit afff07e61a52 (Add 090c:1000 to unusal-devs) Greg Kroah-Hartman
2012-07-12 22:34   ` [ 100/187] cfg80211: fix potential deadlock in regulatory Greg Kroah-Hartman
2012-07-12 22:34   ` [ 101/187] batman-adv: fix skb->data assignment Greg Kroah-Hartman
2012-07-12 22:34   ` [ 102/187] batman-adv: only drop packets of known wifi clients Greg Kroah-Hartman
2012-07-12 22:34   ` [ 103/187] ixgbe: Do not pad FCoE frames as this can cause issues with FCoE DDP Greg Kroah-Hartman
2012-07-12 22:34   ` [ 104/187] can: c_can: precedence error in c_can_chip_config() Greg Kroah-Hartman
2012-07-12 22:34   ` [ 105/187] can: flexcan: use be32_to_cpup to handle the value of dt entry Greg Kroah-Hartman
2012-07-12 22:34   ` =?y?q?=5B=20106/187=5D=20USB=3A=20qmi=5Fwwan=3A=20Make=20forced=20int=204=20whitelist=20generic?= Greg Kroah-Hartman
2012-07-12 22:34   ` =?y?q?=5B=20107/187=5D=20USB=3A=20qmi=5Fwwan=3A=20Add=20ZTE=20=28Vodafone=29=20K3520-Z?= Greg Kroah-Hartman
2012-07-12 22:34   ` =?y?q?=5B=20108/187=5D=20net=3A=20qmi=5Fwwan=3A=20fix=20Gobi=20device=20probing?= Greg Kroah-Hartman
2012-07-12 22:34   ` =?y?q?=5B=20109/187=5D=20net=3A=20qmi=5Fwwan=3A=20fix=20Oops=20while=20disconnecting?= Greg Kroah-Hartman
2012-07-12 22:34   ` [ 110/187] oprofile: perf: use NR_CPUS instead or nr_cpumask_bits for static array Greg Kroah-Hartman
2012-07-12 22:34   ` [ 111/187] x86, compat: Use test_thread_flag(TIF_IA32) in compat signal delivery Greg Kroah-Hartman
2012-07-12 22:34   ` [ 112/187] x86, cpufeature: Rename X86_FEATURE_DTS to X86_FEATURE_DTHERM Greg Kroah-Hartman
2012-07-12 22:34   ` [ 113/187] igbvf: fix divide by zero Greg Kroah-Hartman
2012-07-12 22:34   ` [ 114/187] rtlwifi: rtl8192cu: New USB IDs Greg Kroah-Hartman
2012-07-12 22:34   ` [ 115/187] mac80211: clear ifmgd->bssid only after building DELBA Greg Kroah-Hartman
2012-07-12 22:34   ` [ 116/187] mac80211: correct behaviour on unrecognised action frames Greg Kroah-Hartman
2012-07-12 22:34   ` [ 117/187] mwifiex: fix 11n rx packet drop issue Greg Kroah-Hartman
2012-07-12 22:34   ` [ 118/187] mwifiex: fix WPS eapol handshake failure Greg Kroah-Hartman
2012-07-12 22:34   ` =?y?q?=5B=20119/187=5D=20vfs=3A=20make=20O=5FPATH=20file=20descriptors=20usable=20for=20fchdir=28=29?= Greg Kroah-Hartman
2012-07-12 22:34   ` [ 120/187] mtd: cafe_nand: fix an & vs | mistake Greg Kroah-Hartman
2012-07-12 22:34   ` [ 121/187] aio: make kiocb->private NUll in init_sync_kiocb() Greg Kroah-Hartman
2012-07-12 22:34   ` [ 122/187] ocfs2: clear unaligned io flag when dio fails Greg Kroah-Hartman
2012-07-12 22:34   ` [ 123/187] iwlwifi: fix activating inactive stations Greg Kroah-Hartman
2012-07-12 22:34   ` [ 124/187] tcm_fc: Resolve suspicious RCU usage warnings Greg Kroah-Hartman
2012-07-12 22:34   ` [ 125/187] e1000e: remove use of IP payload checksum Greg Kroah-Hartman
2012-07-12 22:34   ` [ 126/187] remoteproc/omap: fix randconfig unmet direct dependencies Greg Kroah-Hartman
2012-07-12 22:34   ` [ 127/187] remoteproc: fix missing CONFIG_FW_LOADER configurations Greg Kroah-Hartman
2012-07-12 22:34   ` [ 128/187] hwspinlock/core: use global ID to register hwspinlocks on multiple devices Greg Kroah-Hartman
2012-07-12 22:34   ` [ 129/187] md/raid10: Dont try to recovery unmatched (and unused) chunks Greg Kroah-Hartman
2012-07-12 22:34   ` [ 130/187] md/raid10: fix failure when trying to repair a read error Greg Kroah-Hartman
2012-07-12 22:34   ` [ 131/187] md/raid5: In ops_run_io, inc nr_pending before calling md_wait_for_blocked_rdev Greg Kroah-Hartman
2012-07-12 22:34   ` [ 132/187] dm: verity fix documentation Greg Kroah-Hartman
2012-07-12 22:34   ` [ 133/187] dm persistent data: fix shadow_info_leak on dm_tm_destroy Greg Kroah-Hartman
2012-07-12 22:34   ` [ 134/187] dm persistent data: handle space map checker creation failure Greg Kroah-Hartman
2012-07-12 22:34   ` [ 135/187] dm persistent data: fix allocation failure in space map checker init Greg Kroah-Hartman
2012-07-12 22:34   ` [ 136/187] eCryptfs: Gracefully refuse miscdev file ops on inherited/passed files Greg Kroah-Hartman
2012-07-12 22:34   ` [ 137/187] eCryptfs: Fix lockdep warning in miscdev operations Greg Kroah-Hartman
2012-07-12 22:34   ` [ 138/187] eCryptfs: Properly check for O_RDONLY flag before doing privileged open Greg Kroah-Hartman
2012-07-12 22:34   ` [ 139/187] mm/memblock: cleanup on duplicate VA/PA conversion Greg Kroah-Hartman
2012-07-12 22:34   ` [ 140/187] mm/memblock: fix memory leak on extending regions Greg Kroah-Hartman
2012-07-12 22:34   ` [ 141/187] mm/memblock: fix overlapping allocation when doubling reserved array Greg Kroah-Hartman
2012-07-12 22:34   ` [ 142/187] OMAPDSS: use DSI_FIFO_BUG workaround only for manual update displays Greg Kroah-Hartman
2012-07-12 22:34   ` [ 143/187] e1000e: test for valid check_reset_block function pointer Greg Kroah-Hartman
2012-07-12 22:35   ` [ 144/187] HID: hid-multitouch: fix wrong protocol detection Greg Kroah-Hartman
2012-07-12 22:35   ` [ 145/187] ACPI / PM: Make acpi_pm_device_sleep_state() follow the specification Greg Kroah-Hartman
2012-07-12 22:35   ` [ 146/187] SCSI: Fix NULL dereferences in scsi_cmd_to_driver Greg Kroah-Hartman
2012-07-12 22:35   ` [ 147/187] SCSI: libsas: fix taskfile corruption in sas_ata_qc_fill_rtf Greg Kroah-Hartman
2012-07-12 22:35   ` [ 148/187] ACPI / PM: Leave Bus Master Arbitration enabled for suspend/resume Greg Kroah-Hartman
2012-07-12 22:35   ` [ 149/187] USB: metro-usb: fix tty_flip_buffer_push use Greg Kroah-Hartman
2012-07-12 22:35   ` =?y?q?=5B=20150/187=5D=20USB=3A=20cdc-wdm=3A=20fix=20lockup=20on=20error=20in=20wdm=5Fread?= Greg Kroah-Hartman
2012-07-12 22:35   ` =?y?q?=5B=20151/187=5D=20USB=3A=20option=3A=20add=20ZTE=20MF60?= Greg Kroah-Hartman
2012-07-12 22:35   ` [ 152/187] USB: option: Add MEDIATEK product ids Greg Kroah-Hartman
2012-07-12 22:35   ` [ 153/187] usb: Add support for root hub port status CAS Greg Kroah-Hartman
2012-07-12 22:35   ` [ 154/187] xhci: Fix hang on back-to-back Set TR Deq Ptr commands Greg Kroah-Hartman
2012-07-12 22:35   ` [ 155/187] PCI: EHCI: fix crash during suspend on ASUS computers Greg Kroah-Hartman
2012-07-12 22:35   ` [ 156/187] ipheth: add support for iPad Greg Kroah-Hartman
2012-07-12 22:35   ` [ 157/187] Lockd: pass network namespace to creation and destruction routines Greg Kroah-Hartman
2012-07-12 22:35   ` [ 158/187] SUNRPC: new svc_bind() routine introduced Greg Kroah-Hartman
2012-07-12 22:35   ` [ 159/187] SUNRPC: move per-net operations from svc_destroy() Greg Kroah-Hartman
2012-07-12 22:35   ` [ 160/187] NFS: hard-code init_net for NFS callback transports Greg Kroah-Hartman
2012-07-12 22:35   ` [ 161/187] mac80211: fix queues stuck issue with HT bandwidth change Greg Kroah-Hartman
2012-07-12 22:35   ` [ 162/187] iwlwifi: remove log_event debugfs file debugging is disabled Greg Kroah-Hartman
2012-07-12 22:35   ` [ 163/187] tracing: change CPU ring buffer state from tracing_cpumask Greg Kroah-Hartman
2012-07-12 22:35   ` [ 164/187] mwifiex: fix wrong return values in add_virtual_intf() error cases Greg Kroah-Hartman
2012-07-12 22:35   ` [ 165/187] gspca-core: Fix buffers staying in queued state after a stream_off Greg Kroah-Hartman
2012-07-12 22:35   ` [ 166/187] raid5: delayed stripe fix Greg Kroah-Hartman
2012-07-12 22:35   ` [ 167/187] tg3: Apply short DMA frag workaround to 5906 Greg Kroah-Hartman
2012-07-12 22:35   ` [ 168/187] ath9k: fix panic caused by returning a descriptor we have queued for reuse Greg Kroah-Hartman
2012-07-12 22:35   ` [ 169/187] mm: pmd_read_atomic: fix 32bit PAE pmd walk vs pmd_populate SMP race condition Greg Kroah-Hartman
2012-07-12 22:35   ` [ 170/187] thp: avoid atomic64_read in pmd_read_atomic for 32bit PAE Greg Kroah-Hartman
2012-07-12 22:35   ` [ 171/187] rtl8187: ->brightness_set can not sleep Greg Kroah-Hartman
2012-07-12 22:35   ` [ 172/187] macvtap: zerocopy: validate vectors before building skb Greg Kroah-Hartman
2012-07-12 22:35   ` [ 173/187] net/wireless: ipw2x00: add supported cipher suites to wiphy initialization Greg Kroah-Hartman
2012-07-12 22:35   ` Greg Kroah-Hartman [this message]
2012-07-12 22:35   ` [ 175/187] drm/i915: Refactor the deferred PM_IIR handling into a single function Greg Kroah-Hartman
2012-07-12 22:35   ` [ 176/187] drm/i915: rip out the PM_IIR WARN Greg Kroah-Hartman
2012-07-12 22:35   ` [ 177/187] mm: Hold a file reference in madvise_remove Greg Kroah-Hartman
2012-07-12 22:35   ` [ 178/187] md/raid5: Do not add data_offset before call to is_badblock Greg Kroah-Hartman
2012-07-12 22:35   ` [ 179/187] staging:iio:ad7606: Re-add missing scale attribute Greg Kroah-Hartman
2012-07-12 22:35   ` [ 180/187] memory hotplug: fix invalid memory access caused by stale kswapd pointer Greg Kroah-Hartman
2012-07-12 22:35   ` [ 181/187] drivers/rtc/rtc-spear.c: fix use-after-free in spear_rtc_remove() Greg Kroah-Hartman
2012-07-12 22:35   ` [ 182/187] drivers/rtc/rtc-ab8500.c: use IRQF_ONESHOT when requesting a threaded IRQ Greg Kroah-Hartman
2012-07-12 22:35   ` =?y?q?=5B=20183/187=5D=20drivers/rtc/rtc-mxc=2Ec=3A=20fix=20irq=20enabled=20interrupts=20warning?= Greg Kroah-Hartman
2012-07-12 22:35   ` [ 184/187] mm, thp: abort compaction if migration page cannot be charged to memcg Greg Kroah-Hartman
2012-07-12 22:35   ` [ 185/187] fs: ramfs: file-nommu: add SetPageUptodate() Greg Kroah-Hartman
2012-07-12 22:35   ` [ 186/187] memblock: free allocated memblock_reserved_regions later Greg Kroah-Hartman
2012-07-12 22:35   ` [ 187/187] ocfs2: fix NULL pointer dereference in __ocfs2_change_file_space() Greg Kroah-Hartman
2012-07-13  4:42 ` [ 000/187] 3.4.5-stable review Sven Joachim
2012-07-13 14:06   ` Greg KH
2012-07-13 14:18   ` Herton Ronaldo Krzesinski
2012-07-13 14:25     ` Greg KH

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=20120712191539.433405264@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=axboe@kernel.dk \
    --cc=ben@decadent.org.uk \
    --cc=davej@redhat.com \
    --cc=edumazet@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=therbert@google.com \
    --cc=torvalds@linux-foundation.org \
    --cc=viro@zeniv.linux.org.uk \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.