]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
add missing state change on corrupt packet header in drbd_recv_header
authorLars Ellenberg <lars.ellenberg@linbit.com>
Mon, 16 Nov 2009 14:58:04 +0000 (15:58 +0100)
committerPhilipp Reisner <philipp.reisner@linbit.com>
Tue, 24 Nov 2009 17:12:13 +0000 (18:12 +0100)
Otherwise the 'state fixup' in the receiver will change to Unconnected,
but the receiver will terminate itself, and any attempt at 'down'ing
that drbd later will block forever.

see also Bugz. #259

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

index 9bbc509443e5bfae8b2953f1815f91b365bae9b4..fb29a75053ef28771982d28cc9f91f5a15b3a7d8 100644 (file)
@@ -3499,8 +3499,10 @@ static void drbdd(struct drbd_conf *mdev)
 
        while (get_t_state(&mdev->receiver) == Running) {
                drbd_thread_current_set_cpu(mdev);
-               if (!drbd_recv_header(mdev, header))
+               if (!drbd_recv_header(mdev, header)) {
+                       drbd_force_state(mdev, NS(conn, C_PROTOCOL_ERROR));
                        break;
+               }
 
                if (header->command < P_MAX_CMD)
                        handler = drbd_cmd_handler[header->command];