alistair23-linux/net/core
Eric Dumazet 047fe36052 splice: fix racy pipe->buffers uses
Dave Jones reported a kernel BUG at mm/slub.c:3474! triggered
by splice_shrink_spd() called from vmsplice_to_pipe()

commit 35f3d14dbb (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>
Cc: stable <stable@vger.kernel.org> # 2.6.35
Tested-by: Dave Jones <davej@redhat.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2012-06-13 21:16:42 +02:00
..
datagram.c net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
dev.c net: napi_frags_skb() is static 2012-05-19 02:51:00 -04:00
dev_addr_lists.c net: addr_list: add exclusive dev_uc_add and dev_mc_add 2012-04-15 13:06:04 -04:00
drop_monitor.c drop_monitor: Add module alias to enable automatic module loading 2012-05-29 22:33:56 -04:00
dst.c
ethtool.c ethtool: Extend the ethtool API to obtain plugin module eeprom data 2012-05-10 02:22:17 +01:00
fib_rules.c fib_rules: Stop using NLA_PUT*(). 2012-04-02 04:33:44 -04:00
filter.c Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security 2012-05-21 20:27:36 -07:00
flow.c
flow_dissector.c net: flow_dissector.c missing include linux/export.h 2012-01-24 16:03:33 -05:00
gen_estimator.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
gen_stats.c gen_stats: Stop using NLA_PUT*(). 2012-04-02 04:33:44 -04:00
iovec.c net: get rid of some pointless casts to sockaddr 2012-03-11 19:11:22 -07:00
link_watch.c
Makefile
neighbour.c net: core: Use pr_<level> 2012-05-17 05:00:04 -04:00
net-sysfs.c net: cleanup unsigned to unsigned int 2012-04-15 12:44:40 -04:00
net-sysfs.h
net-traces.c
net_namespace.c net: core: Use pr_<level> 2012-05-17 05:00:04 -04:00
netevent.c
netpoll.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-02-19 16:03:15 -05:00
netprio_cgroup.c Merge branch 'for-3.5' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup 2012-05-22 17:40:19 -07:00
pktgen.c Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2012-05-20 21:53:04 -04:00
request_sock.c
rtnetlink.c net: Convert net_ratelimit uses to net_<level>_ratelimited 2012-05-15 13:45:03 -04:00
scm.c Remove all #inclusions of asm/system.h 2012-03-28 18:30:03 +01:00
secure_seq.c net: fix some sparse errors 2012-01-17 10:31:12 -05:00
skbuff.c splice: fix racy pipe->buffers uses 2012-06-13 21:16:42 +02:00
sock.c net: sock: validate data_len before allocating skb in sock_alloc_send_pskb() 2012-05-31 18:22:45 -04:00
sock_diag.c net: sock_diag_handler structs can be const 2012-04-25 20:46:59 -04:00
stream.c
sysctl_net_core.c net: Delete all remaining instances of ctl_path 2012-04-20 21:22:30 -04:00
timestamping.c
user_dma.c
utils.c net: Fixed coding style issues relating to braces. 2012-04-12 16:35:48 -04:00