Skip to content

Commit

Permalink
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel…
Browse files Browse the repository at this point in the history
…/git/sage/ceph-client

Pull two ceph fixes from Sage Weil:
 "The first fixes a leak in the rbd setup error path, and the second
  fixes a more serious problem with mismatched kmap/kunmap that surfaced
  after the recent refactoring work."

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client:
  libceph: only kunmap kmapped pages
  rbd: drop dev reference on error in rbd_open()
  • Loading branch information
Linus Torvalds committed Sep 24, 2012
2 parents 979570e + 5ce765a commit bee2d97
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 8 deletions.
7 changes: 3 additions & 4 deletions drivers/block/rbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -246,13 +246,12 @@ static int rbd_open(struct block_device *bdev, fmode_t mode)
{
struct rbd_device *rbd_dev = bdev->bd_disk->private_data;

rbd_get_dev(rbd_dev);

set_device_ro(bdev, rbd_dev->read_only);

if ((mode & FMODE_WRITE) && rbd_dev->read_only)
return -EROFS;

rbd_get_dev(rbd_dev);
set_device_ro(bdev, rbd_dev->read_only);

return 0;
}

Expand Down
5 changes: 1 addition & 4 deletions net/ceph/messenger.c
Original file line number Diff line number Diff line change
Expand Up @@ -1073,16 +1073,13 @@ static int write_partial_msg_pages(struct ceph_connection *con)
BUG_ON(kaddr == NULL);
base = kaddr + con->out_msg_pos.page_pos + bio_offset;
crc = crc32c(crc, base, len);
kunmap(page);
msg->footer.data_crc = cpu_to_le32(crc);
con->out_msg_pos.did_page_crc = true;
}
ret = ceph_tcp_sendpage(con->sock, page,
con->out_msg_pos.page_pos + bio_offset,
len, 1);

if (do_datacrc)
kunmap(page);

if (ret <= 0)
goto out;

Expand Down

0 comments on commit bee2d97

Please sign in to comment.