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