]> git.baikalelectronics.ru Git - kernel.git/commit
orangefs: initialize op on loop restart in orangefs_devreq_read
authorMartin Brandenburg <martin@omnibond.com>
Mon, 22 Jan 2018 20:44:52 +0000 (15:44 -0500)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 22 Jan 2018 21:51:14 +0000 (13:51 -0800)
commitec3e8a7cdf31a655214f20325c1b8c8852b3ec8c
tree8d0cc23735e87e082097578dc2eee24b79df8668
parentdf9bcb90bd9fec5fe7cb2a743dc1937a655dd3c6
orangefs: initialize op on loop restart in orangefs_devreq_read

In orangefs_devreq_read, there is a loop which picks an op off the list
of pending ops.  If the loop fails to find an op, there is nothing to
read, and it returns EAGAIN.  If the op has been given up on, the loop
is restarted via a goto.  The bug is that the variable which the found
op is written to is not reinitialized, so if there are no more eligible
ops on the list, the code runs again on the already handled op.

This is triggered by interrupting a process while the op is being copied
to the client-core.  It's a fairly small window, but it's there.

Signed-off-by: Martin Brandenburg <martin@omnibond.com>
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
fs/orangefs/devorangefs-req.c