net/rds: An rds_sock is added too early to the hash table
authorKa-Cheong Poon <ka-cheong.poon@oracle.com>
Wed, 11 Sep 2019 09:58:05 +0000 (02:58 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 11 Sep 2019 14:05:40 +0000 (15:05 +0100)
commitc5c1a030a7dbf8dd4e1fa4405ae9a89dc1d2a8db
tree881936d703b86d97f0232c727ebdfb2f4ce82a69
parent3e493173b7841259a08c5c8e5cbe90adb349da7e
net/rds: An rds_sock is added too early to the hash table

In rds_bind(), an rds_sock is added to the RDS bind hash table before
rs_transport is set.  This means that the socket can be found by the
receive code path when rs_transport is NULL.  And the receive code
path de-references rs_transport for congestion update check.  This can
cause a panic.  An rds_sock should not be added to the bind hash table
before all the needed fields are set.

Reported-by: syzbot+4b4f8163c2e246df3c4c@syzkaller.appspotmail.com
Signed-off-by: Ka-Cheong Poon <ka-cheong.poon@oracle.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/rds/bind.c