History

aio: take final put_ioctx() into callers of io_destroy()

Al Viro committed 14 years ago

Commit a2e18591 parent 06af1211 file · +4 −6Browse files

Unified · Split

fs/aio.c+4−6
@@ -1270,7 +1270,6 @@ static void io_destroy(struct kioctx *ioctx) · 1269 unmodified lines
1270 * locking done by the above calls to ensure this consistency.1270 * locking done by the above calls to ensure this consistency.
1271 */1271 */
1272 wake_up_all(&ioctx->wait);1272 wake_up_all(&ioctx->wait);
1273 put_ioctx(ioctx); /* once for the lookup */
1274}1273}
1275 1274
1276/* sys_io_setup:1275/* sys_io_setup:
@@ -1307,11 +1306,9 @@ SYSCALL_DEFINE2(io_setup, unsigned, nr_events, aio_context_t __user *, ctxp) · 30 unmodified lines
1307 ret = PTR_ERR(ioctx);1306 ret = PTR_ERR(ioctx);
1308 if (!IS_ERR(ioctx)) {1307 if (!IS_ERR(ioctx)) {
1309 ret = put_user(ioctx->user_id, ctxp);1308 ret = put_user(ioctx->user_id, ctxp);
1310 if (!ret) {1309 if (ret)
1311 put_ioctx(ioctx);1310 io_destroy(ioctx);
1312 return 0;1311 put_ioctx(ioctx);
1313 }
1314 io_destroy(ioctx);
1315 }1312 }
1316 1313
1317out:1314out:
@@ -1329,6 +1326,7 @@ SYSCALL_DEFINE1(io_destroy, aio_context_t, ctx) · 11 unmodified lines
1329 struct kioctx *ioctx = lookup_ioctx(ctx);1326 struct kioctx *ioctx = lookup_ioctx(ctx);
1330 if (likely(NULL != ioctx)) {1327 if (likely(NULL != ioctx)) {
1331 io_destroy(ioctx);1328 io_destroy(ioctx);
1329 put_ioctx(ioctx);
1332 return 0;1330 return 0;
1333 }1331 }
1334 pr_debug("EINVAL: io_destroy: invalid context id\n");1332 pr_debug("EINVAL: io_destroy: invalid context id\n");