Skip to contentSkip to conversation

aio: fix failure to put the file pointer

PATCH Superseded Jens Axboe 2 participants 3 messages Nov 18, 2018

Subsystems (2)

v1 of 2 Superseded Latest is v2 →

lore
Share & tools
lore

Jens Axboe

author
#0 lore raw

PATCH 1/1 aio: fix failure to put the file pointer

If the ioprio capability check fails, we return without putting the file pointer.

Fixes d9a08a9e616b ("fs: Add aio iopriority support")
fs/aio.c +2 -1
index b36691268b6c..9075571e673f 100644
@@ -1436,7 +1436,7 @@ static int aio_prep_rw(struct kiocb *req, struct iocb *iocb)
 		ret = ioprio_check_cap(iocb->aio_reqprio);
 		if (ret) {
 			pr_debug("aio ioprio check cap error: %d\n", ret);
-			return ret;
+			goto err;
 		}
 
 		req->ki_ioprio = iocb->aio_reqprio;
@@ -1444,6 +1444,7 @@ static int aio_prep_rw(struct kiocb *req, struct iocb *iocb)
 		req->ki_ioprio = IOPRIO_PRIO_VALUE(IOPRIO_CLASS_NONE, 0);
 
 	ret = kiocb_set_rw_flags(req, iocb->aio_rw_flags);
+err:
 	if (unlikely(ret))
 		fput(req->ki_filp);
 	return ret;
Signature · 1 line
Jens Axboe
maintainer
#1 lore raw
Quoted 11 lines · Jens Axboe

If the ioprio capability check fails, we return without putting the file pointer.

Fixes d9a08a9e616b ("fs: Add aio iopriority support")
fs/aio.c +0 -0
index b36691268b6c..9075571e673f 100644

fs/aio.c static int aio_prep_rw(struct kiocb *req, struct iocb *iocb) · line 1439

Quoted 5 lines
fs/aio.c +1 -1
@@ -1436,7 +1436,7 @@ static int aio_prep_rw(struct kiocb *req, struct iocb *iocb)
 		ret = ioprio_check_cap(iocb->aio_reqprio);
 		if (ret) {
 			pr_debug("aio ioprio check cap error: %d\n", ret);
-			return ret;
+			goto err;

Better an explicit fput() here, IMO...

author
#2 lore raw
Quoted 7 lines · Al Viro
Quoted 6 lines · Jens Axboe

If the ioprio capability check fails, we return without putting the file pointer.

Fixes d9a08a9e616b ("fs: Add aio iopriority support")
Quoted 12 lines

fs/aio.c static int aio_prep_rw(struct kiocb *req, struct iocb *iocb) · line 1439

Quoted 10 lines
fs/aio.c +1 -1
index b36691268b6c..9075571e673f 100644
@@ -1436,7 +1436,7 @@ static int aio_prep_rw(struct kiocb *req, struct iocb *iocb)
 		ret = ioprio_check_cap(iocb->aio_reqprio);
 		if (ret) {
 			pr_debug("aio ioprio check cap error: %d\n", ret);
-			return ret;
+			goto err;

Better an explicit fput() here, IMO...

OK, v2 sent.

Signature · 1 line
Jens Axboe