Message ID | 20250606190432.438187-1-slava@dubeyko.com |
---|---|
State | New |
Headers | show |
Series | ceph: add checking of wait_for_completion_killable() return value | expand |
Reviewed by: Alex Markuze <amarkuze@redhat.com> On Fri, Jun 6, 2025 at 10:04 PM Viacheslav Dubeyko <slava@dubeyko.com> wrote: > > From: Viacheslav Dubeyko <Slava.Dubeyko@ibm.com> > > The Coverity Scan service has detected the calling of > wait_for_completion_killable() without checking the return > value in ceph_lock_wait_for_completion() [1]. The CID 1636232 > defect contains explanation: "If the function returns an error > value, the error value may be mistaken for a normal value. > In ceph_lock_wait_for_completion(): Value returned from > a function is not checked for errors before being used. (CWE-252)". > > The patch adds the checking of wait_for_completion_killable() > return value and return the error code from > ceph_lock_wait_for_completion(). > > [1] https://scan5.scan.coverity.com/#/project-view/64304/10063?selectedIssue=1636232 > > Signed-off-by: Viacheslav Dubeyko <Slava.Dubeyko@ibm.com> > --- > fs/ceph/locks.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/fs/ceph/locks.c b/fs/ceph/locks.c > index ebf4ac0055dd..dd764f9c64b9 100644 > --- a/fs/ceph/locks.c > +++ b/fs/ceph/locks.c > @@ -221,7 +221,10 @@ static int ceph_lock_wait_for_completion(struct ceph_mds_client *mdsc, > if (err && err != -ERESTARTSYS) > return err; > > - wait_for_completion_killable(&req->r_safe_completion); > + err = wait_for_completion_killable(&req->r_safe_completion); > + if (err) > + return err; > + > return 0; > } > > -- > 2.49.0 >
diff --git a/fs/ceph/locks.c b/fs/ceph/locks.c index ebf4ac0055dd..dd764f9c64b9 100644 --- a/fs/ceph/locks.c +++ b/fs/ceph/locks.c @@ -221,7 +221,10 @@ static int ceph_lock_wait_for_completion(struct ceph_mds_client *mdsc, if (err && err != -ERESTARTSYS) return err; - wait_for_completion_killable(&req->r_safe_completion); + err = wait_for_completion_killable(&req->r_safe_completion); + if (err) + return err; + return 0; }