diff options
author | Philipp Reisner | 2011-05-16 12:57:15 +0200 |
---|---|---|
committer | Philipp Reisner | 2012-11-08 16:55:52 +0100 |
commit | 46e1ce4177aac86b8e39bc7bb5763e9d040ae5cb (patch) | |
tree | a5d277ef1bd84a141edd7e7ad8597ac7fda24176 /drivers/block/drbd/drbd_main.c | |
parent | drbd: Refuse to change network options online when... (diff) | |
download | kernel-qcow2-linux-46e1ce4177aac86b8e39bc7bb5763e9d040ae5cb.tar.gz kernel-qcow2-linux-46e1ce4177aac86b8e39bc7bb5763e9d040ae5cb.tar.xz kernel-qcow2-linux-46e1ce4177aac86b8e39bc7bb5763e9d040ae5cb.zip |
drbd: protect updates to integrits_tfm by tconn->data->mutex
Since we need to hold that mutex anyways to make sure the peer
gets that change in the right position in the data stream,
it makes a lot of sense to use the same mutex to ensure existence
of the tfm.
Signed-off-by: Philipp Reisner <philipp.reisner@linbit.com>
Signed-off-by: Lars Ellenberg <lars.ellenberg@linbit.com>
Diffstat (limited to 'drivers/block/drbd/drbd_main.c')
-rw-r--r-- | drivers/block/drbd/drbd_main.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/block/drbd/drbd_main.c b/drivers/block/drbd/drbd_main.c index 26d7763d5255..bca599a3c1e1 100644 --- a/drivers/block/drbd/drbd_main.c +++ b/drivers/block/drbd/drbd_main.c @@ -1720,11 +1720,11 @@ int drbd_send_dblock(struct drbd_conf *mdev, struct drbd_request *req) int dgs; int err; + sock = &mdev->tconn->data; + p = drbd_prepare_command(mdev, sock); dgs = (mdev->tconn->agreed_pro_version >= 87 && mdev->tconn->integrity_tfm) ? crypto_hash_digestsize(mdev->tconn->integrity_tfm) : 0; - sock = &mdev->tconn->data; - p = drbd_prepare_command(mdev, sock); if (!p) return -EIO; p->sector = cpu_to_be64(req->i.sector); @@ -1793,11 +1793,12 @@ int drbd_send_block(struct drbd_conf *mdev, enum drbd_packet cmd, int err; int dgs; + sock = &mdev->tconn->data; + p = drbd_prepare_command(mdev, sock); + dgs = (mdev->tconn->agreed_pro_version >= 87 && mdev->tconn->integrity_tfm) ? crypto_hash_digestsize(mdev->tconn->integrity_tfm) : 0; - sock = &mdev->tconn->data; - p = drbd_prepare_command(mdev, sock); if (!p) return -EIO; p->sector = cpu_to_be64(peer_req->i.sector); |