diff options
author | Sowmini Varadhan <sowmini.varadhan@oracle.com> | 2018-02-13 09:46:16 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-02-13 13:52:02 -0500 |
commit | d4014d8cc6dfa964e3e66df525de2384e3583018 (patch) | |
tree | 7571e6aa6e2a1025c33735300cc8dbd3c8996789 /net/rds/connection.c | |
parent | f7219bf31122e2f70887ed48ba7c4c15dad45da0 (diff) | |
download | linux-d4014d8cc6dfa964e3e66df525de2384e3583018.tar.bz2 |
rds: do not call ->conn_alloc with GFP_KERNEL
Commit ebeeb1ad9b8a ("rds: tcp: use rds_destroy_pending() to synchronize
netns/module teardown and rds connection/workq management")
adds an rcu read critical section to __rd_conn_create. The
memory allocations in that critcal section need to use
GFP_ATOMIC to avoid sleeping.
This patch was verified with syzkaller reproducer.
Reported-by: syzbot+a0564419941aaae3fe3c@syzkaller.appspotmail.com
Fixes: ebeeb1ad9b8a ("rds: tcp: use rds_destroy_pending() to synchronize
netns/module teardown and rds connection/workq management")
Signed-off-by: Sowmini Varadhan <sowmini.varadhan@oracle.com>
Acked-by: Santosh Shilimkar <santosh.shilimkar@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/rds/connection.c')
-rw-r--r-- | net/rds/connection.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/rds/connection.c b/net/rds/connection.c index 94e190febfdd..2da3176bf792 100644 --- a/net/rds/connection.c +++ b/net/rds/connection.c @@ -224,7 +224,7 @@ static struct rds_connection *__rds_conn_create(struct net *net, if (rds_destroy_pending(conn)) ret = -ENETDOWN; else - ret = trans->conn_alloc(conn, gfp); + ret = trans->conn_alloc(conn, GFP_ATOMIC); if (ret) { rcu_read_unlock(); kfree(conn->c_path); |