* [PATCH] io_uring: only call kfree() for a non-zero pointer
@ 2020-07-08 21:18 Jens Axboe
0 siblings, 0 replies; only message in thread
From: Jens Axboe @ 2020-07-08 21:18 UTC (permalink / raw)
To: io-uring
It's safe to call kfree() with a NULL pointer, but it's also pointless.
Most of the time we don't have any data to free, and at millions of
requests per second, the redundant function call adds noticeable
overhead (about 1.3% of the runtime).
Signed-off-by: Jens Axboe <[email protected]>
---
Kinda silly, this is 100% reproducible. Actually somewhat baffled
that kfree() isn't a inline, to avoid a function call if the pointer
is NULL.
diff --git a/fs/io_uring.c b/fs/io_uring.c
index 14168fbc7d79..51ff88330f9a 100644
--- a/fs/io_uring.c
+++ b/fs/io_uring.c
@@ -1519,7 +1519,8 @@ static void io_dismantle_req(struct io_kiocb *req)
if (req->flags & REQ_F_NEED_CLEANUP)
io_cleanup_req(req);
- kfree(req->io);
+ if (req->io)
+ kfree(req->io);
if (req->file)
io_put_file(req, req->file, (req->flags & REQ_F_FIXED_FILE));
__io_put_req_task(req);
--
Jens Axboe
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2020-07-08 21:18 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-07-08 21:18 [PATCH] io_uring: only call kfree() for a non-zero pointer Jens Axboe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox