Skip to content

Commit

Permalink
add missing state change on corrupt packet header in drbd_recv_header
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Lars Ellenberg authored and Philipp Reisner committed Nov 24, 2009
1 parent 6c6c795 commit 0b33a91
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion drivers/block/drbd/drbd_receiver.c
Original file line number Diff line number Diff line change
Expand Up @@ -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];
Expand Down

0 comments on commit 0b33a91

Please sign in to comment.