Commit 579ba855 authored by shamir rabinovitch's avatar shamir rabinovitch Committed by David S. Miller

RDS: fix congestion map corruption for PAGE_SIZE > 4k

When PAGE_SIZE > 4k single page can contain 2 RDS fragments. If
'rds_ib_cong_recv' ignore the RDS fragment offset in to the page it
then read the data fragment as far congestion map update and lead to
corruption of the RDS connection far congestion map.
Signed-off-by: default avatarShamir Rabinovitch <shamir.rabinovitch@oracle.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e98499ac
...@@ -796,7 +796,7 @@ static void rds_ib_cong_recv(struct rds_connection *conn, ...@@ -796,7 +796,7 @@ static void rds_ib_cong_recv(struct rds_connection *conn,
addr = kmap_atomic(sg_page(&frag->f_sg)); addr = kmap_atomic(sg_page(&frag->f_sg));
src = addr + frag_off; src = addr + frag->f_sg.offset + frag_off;
dst = (void *)map->m_page_addrs[map_page] + map_off; dst = (void *)map->m_page_addrs[map_page] + map_off;
for (k = 0; k < to_copy; k += 8) { for (k = 0; k < to_copy; k += 8) {
/* Record ports that became uncongested, ie /* Record ports that became uncongested, ie
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment