OSDN Git Service

loop: avoid EAGAIN, if offset or block_size are changed
authorJaegeuk Kim <jaegeuk@kernel.org>
Fri, 17 May 2019 23:37:50 +0000 (16:37 -0700)
committer0ranko0P <ranko0p@outlook.com>
Tue, 24 Dec 2019 20:42:45 +0000 (04:42 +0800)
commita0eae4bd1f2521287391d5530ddbc29197ccba03
treea48a9e4368da86968f487e0a29b1ddff1d4868b5
parentb825efc9a74418766e7c57fbbed87c8b5df1da7c
loop: avoid EAGAIN, if offset or block_size are changed

This patch tries to avoid EAGAIN due to nrpages!=0 that was originally trying
to drop stale pages resulting in wrong data access.

Report: https://bugs.chromium.org/p/chromium/issues/detail?id=938958#c38

Cc: <stable@vger.kernel.org>
Cc: Jens Axboe <axboe@kernel.dk>
Cc: linux-block@vger.kernel.org
Cc: Bart Van Assche <bvanassche@acm.org>
Fixes: 5db470e229e2 ("loop: drop caches if offset or block_size are changed")
Reported-by: Gwendal Grignou <gwendal@chromium.org>
Reported-by: grygorii tertychnyi <gtertych@cisco.com>
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Signed-off-by: Julian Liu <wlootlxt123@gmail.com>
drivers/block/loop.c