]> git.karo-electronics.de Git - mv-sheeva.git/blobdiff - drivers/block/drbd/drbd_receiver.c
drbd: fix potential protocol error
[mv-sheeva.git] / drivers / block / drbd / drbd_receiver.c
index 93106fb92be82605d558605445ec212dd46ef83f..c7285e16b667a2d5b23a7dc0c98f1e0458d8b563 100644 (file)
@@ -1331,6 +1331,9 @@ static int drbd_drain_block(struct drbd_conf *mdev, int data_size)
        int rr, rv = 1;
        void *data;
 
+       if (!data_size)
+               return TRUE;
+
        page = drbd_pp_alloc(mdev, 1);
 
        data = kmap(page);
@@ -1946,7 +1949,7 @@ static int receive_DataRequest(struct drbd_conf *mdev, struct p_header *h)
                            "no local data.\n");
                drbd_send_ack_rp(mdev, h->command == P_DATA_REQUEST ? P_NEG_DREPLY :
                                 P_NEG_RS_DREPLY , p);
-               return TRUE;
+               return drbd_drain_block(mdev, h->length - brps);
        }
 
        /* GFP_NOIO, because we must not cause arbitrary write-out: in a DRBD