block: Warn and free bio if bi_end_io is not set
In bio_endio if bio doesn't have bi_end_io (should be an error case), we set bio to NULL and continue silently without freeing the bio. It would be good to have a WARN and free the bio to avoid memory leak. Signed-off-by: Muthukumar Ratty <muthur@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
0fec08b4ec
commit
95d4403889
9
fs/bio.c
9
fs/bio.c
|
@ -1770,6 +1770,15 @@ void bio_endio(struct bio *bio, int error)
|
|||
} else {
|
||||
if (bio->bi_end_io)
|
||||
bio->bi_end_io(bio, error);
|
||||
else {
|
||||
char dev_name[BDEVNAME_SIZE];
|
||||
|
||||
WARN(1, "bio_endio: bio for %s without endio\n",
|
||||
bio->bi_bdev ? bdevname(bio->bi_bdev,
|
||||
dev_name) : "(unknown)");
|
||||
bio_put(bio);
|
||||
}
|
||||
|
||||
bio = NULL;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue