This was a very hard to trigger race condition. If we got a state packet from the peer, after drbd_nl_disk() has already changed the disk state to D_NEGOTIATING but after_state_ch() was not yet run by the worker, then receive_state() might called drbd_sync_handshake(), which in turn crashed when accessing p_uuid. Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com> Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com> |
||
|---|---|---|
| .. | ||
| Kconfig | ||
| Makefile | ||
| drbd_actlog.c | ||
| drbd_bitmap.c | ||
| drbd_int.h | ||
| drbd_main.c | ||
| drbd_nl.c | ||
| drbd_proc.c | ||
| drbd_receiver.c | ||
| drbd_req.c | ||
| drbd_req.h | ||
| drbd_strings.c | ||
| drbd_vli.h | ||
| drbd_worker.c | ||
| drbd_wrappers.h | ||