drbd: Restore late assigning of tconn->data.sock and meta.sock
authorPhilipp Reisner <philipp.reisner@linbit.com>
Mon, 19 Dec 2011 21:42:56 +0000 (22:42 +0100)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Thu, 8 Nov 2012 15:58:13 +0000 (16:58 +0100)
commit7da358625c056b631b0abf2fcf50dad5bcbc22d9
treebddb07eb9171846ddc48119c9549b078b0d395ac
parenta01842ebeea315cbe4382703c065f671d8cd7622
drbd: Restore late assigning of tconn->data.sock and meta.sock

With commit from Mon Mar 28 16:33:12 2011 +0200
"drbd: drbd_connect(): Initialize struct drbd_socket before sending anything"

tconn->data.sock and tconn->meta.sock get assigned early, in
conn_connect.

The early assigning can trigger an OOPS, because it may released the socket
without acquiring the mutex protecting the socket. An other thread (worker)
might use setsockopt() on the socket while it gets free()ed.

Restored the (proven) 8.3 behavior of assigning these sockets after the two
connections are established.

Credits for reporting the issue are going to Arne Redlich.

Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
drivers/block/drbd/drbd_receiver.c