]> git.baikalelectronics.ru Git - kernel.git/commit
libceph: only kunmap kmapped pages
authorAlex Elder <elder@inktank.com>
Fri, 21 Sep 2012 22:59:58 +0000 (17:59 -0500)
committerSage Weil <sage@inktank.com>
Sat, 22 Sep 2012 03:49:26 +0000 (20:49 -0700)
commit1f1efbb64467fc1708d89c329a991fcaa24db353
treecb442bbfd50da04f9d5b59be82b60c6880735da5
parent0df39b5ec0bbacdac24588fda457ddc57cb1c440
libceph: only kunmap kmapped pages

In write_partial_msg_pages(), pages need to be kmapped in order to
perform a CRC-32c calculation on them.  As an artifact of the way
this code used to be structured, the kunmap() call was separated
from the kmap() call and both were done conditionally.  But the
conditions under which the kmap() and kunmap() calls were made
differed, so there was a chance a kunmap() call would be done on a
page that had not been mapped.

The symptom of this was tripping a BUG() in kunmap_high() when
pkmap_count[nr] became 0.

Reported-by: Bryan K. Wright <bryan@virginia.edu>
Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
net/ceph/messenger.c