linux/net/rds
Linus Torvalds 1b1f693d7a net: fix rds_iovec page count overflow
As reported by Thomas Pollet, the rdma page counting can overflow.  We
get the rdma sizes in 64-bit unsigned entities, but then limit it to
UINT_MAX bytes and shift them down to pages (so with a possible "+1" for
an unaligned address).

So each individual page count fits comfortably in an 'unsigned int' (not
even close to overflowing into signed), but as they are added up, they
might end up resulting in a signed return value. Which would be wrong.

Catch the case of tot_pages turning negative, and return the appropriate
error code.

Reported-by: Thomas Pollet <thomas.pollet@gmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Andy Grover <andy.grover@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-10-30 16:34:16 -07:00
..
af_rds.c RDS/IB: print string constants in more places 2010-09-08 18:16:50 -07:00
bind.c rds: Use RCU for the bind lookup searches 2010-09-08 18:15:08 -07:00
cong.c RDS: Bypass workqueue when queueing cong updates 2010-09-08 18:12:16 -07:00
connection.c rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
ib_cm.c rds: double unlock in rds_ib_cm_handle_connect() 2010-09-19 11:59:44 -07:00
ib_rdma.c rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
ib_recv.c RDS/IB: print string constants in more places 2010-09-08 18:16:50 -07:00
ib_ring.c RDS/IW+IB: Set recv ring low water mark to 1/2 full. 2009-04-09 17:21:14 -07:00
ib_send.c RDS: Implement masked atomic operations 2010-09-08 18:16:51 -07:00
ib_stats.c RDS: Move atomic stats from general to ib-specific area 2010-09-08 18:12:20 -07:00
ib_sysctl.c rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
ib.c rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
ib.h rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
info.c RDS: cleanup: remove "== NULL"s and "!= NULL"s in ptr comparisons 2010-09-08 18:11:32 -07:00
info.h RDS: Info and stats 2009-02-26 23:39:25 -08:00
iw_cm.c RDS: cleanup: remove "== NULL"s and "!= NULL"s in ptr comparisons 2010-09-08 18:11:32 -07:00
iw_rdma.c rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
iw_recv.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
iw_ring.c RDS/IW+IB: Set recv ring low water mark to 1/2 full. 2009-04-09 17:21:14 -07:00
iw_send.c RDS: Rename data op members prefix from m_ to op_ 2010-09-08 18:11:59 -07:00
iw_stats.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2009-09-15 09:39:44 -07:00
iw_sysctl.c rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
iw.c rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
iw.h rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
Kconfig RDS: Modularize RDMA and TCP transports 2009-08-23 19:13:09 -07:00
loop.c RDS: Stop supporting old cong map sending method 2010-09-08 18:12:10 -07:00
loop.h RDS: loopback 2009-02-26 23:39:26 -08:00
Makefile RDS: Modularize RDMA and TCP transports 2009-08-23 19:13:09 -07:00
message.c rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
page.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-10-21 08:43:05 -07:00
rdma_transport.c rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
rdma_transport.h rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
rdma.c net: fix rds_iovec page count overflow 2010-10-30 16:34:16 -07:00
rds.h rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
recv.c rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
send.c rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
stats.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
sysctl.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
tcp_connect.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-09-27 01:03:03 -07:00
tcp_listen.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-09-27 01:03:03 -07:00
tcp_recv.c rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
tcp_send.c rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
tcp_stats.c RDS: Add TCP transport to RDS 2009-08-23 19:13:02 -07:00
tcp.c rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
tcp.h rds: make local functions/variables static 2010-10-21 04:26:39 -07:00
threads.c RDS: remove __init and __exit annotation 2010-09-08 18:16:39 -07:00
transport.c RDS: have sockets get transport module references 2010-09-08 18:16:47 -07:00
xlist.h RDS: Remove unused XLIST_PTR_TAIL and xlist_protect() 2010-09-08 18:16:06 -07:00