Revision 3b7995a98ad76da5597b488fa84aa5a56d43b608 authored by Yang Yingliang on 18 December 2019, 08:44:04 UTC, committed by Jens Axboe on 20 December 2019, 18:52:01 UTC
When I doing fuzzy test, get the memleak report:

BUG: memory leak
unreferenced object 0xffff88837af80000 (size 4096):
  comm "memleak", pid 3557, jiffies 4294817681 (age 112.499s)
  hex dump (first 32 bytes):
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
    20 00 00 00 10 01 00 00 00 00 00 00 01 00 00 00   ...............
  backtrace:
    [<000000001c894df8>] bio_alloc_bioset+0x393/0x590
    [<000000008b139a3c>] bio_copy_user_iov+0x300/0xcd0
    [<00000000a998bd8c>] blk_rq_map_user_iov+0x2f1/0x5f0
    [<000000005ceb7f05>] blk_rq_map_user+0xf2/0x160
    [<000000006454da92>] sg_common_write.isra.21+0x1094/0x1870
    [<00000000064bb208>] sg_write.part.25+0x5d9/0x950
    [<000000004fc670f6>] sg_write+0x5f/0x8c
    [<00000000b0d05c7b>] __vfs_write+0x7c/0x100
    [<000000008e177714>] vfs_write+0x1c3/0x500
    [<0000000087d23f34>] ksys_write+0xf9/0x200
    [<000000002c8dbc9d>] do_syscall_64+0x9f/0x4f0
    [<00000000678d8e9a>] entry_SYSCALL_64_after_hwframe+0x49/0xbe

If __blk_rq_map_user_iov() is failed in blk_rq_map_user_iov(),
the bio(s) which is allocated before this failing will leak. The
refcount of the bio(s) is init to 1 and increased to 2 by calling
bio_get(), but __blk_rq_unmap_user() only decrease it to 1, so
the bio cannot be freed. Fix it by calling blk_rq_unmap_user().

Reviewed-by: Bob Liu <bob.liu@oracle.com>
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
1 parent daa400f
History
File Mode Size
actions
analogbits
at91
axis
axs10x
bcm
berlin
davinci
h8300
hisilicon
imgtec
imx
ingenic
keystone
loongson1
mediatek
meson
microchip
mmp
mvebu
mxs
nxp
pistachio
pxa
qcom
renesas
rockchip
samsung
sifive
sirf
socfpga
spear
sprd
st
sunxi
sunxi-ng
tegra
ti
uniphier
ux500
versatile
x86
zte
zynq
zynqmp
Kconfig -rw-r--r-- 10.2 KB
Makefile -rw-r--r-- 4.7 KB
clk-asm9260.c -rw-r--r-- 10.8 KB
clk-aspeed.c -rw-r--r-- 20.0 KB
clk-aspeed.h -rw-r--r-- 2.3 KB
clk-ast2600.c -rw-r--r-- 21.6 KB
clk-axi-clkgen.c -rw-r--r-- 11.9 KB
clk-axm5516.c -rw-r--r-- 13.0 KB
clk-bd718x7.c -rw-r--r-- 3.2 KB
clk-bm1880.c -rw-r--r-- 27.1 KB
clk-bulk.c -rw-r--r-- 5.0 KB
clk-cdce706.c -rw-r--r-- 17.6 KB
clk-cdce925.c -rw-r--r-- 21.0 KB
clk-clps711x.c -rw-r--r-- 4.7 KB
clk-composite.c -rw-r--r-- 9.2 KB
clk-conf.c -rw-r--r-- 3.7 KB
clk-cs2000-cp.c -rw-r--r-- 11.4 KB
clk-devres.c -rw-r--r-- 3.2 KB
clk-divider.c -rw-r--r-- 17.0 KB
clk-efm32gg.c -rw-r--r-- 3.2 KB
clk-fixed-factor.c -rw-r--r-- 6.3 KB
clk-fixed-mmio.c -rw-r--r-- 2.3 KB
clk-fixed-rate.c -rw-r--r-- 5.9 KB
clk-fractional-divider.c -rw-r--r-- 5.0 KB
clk-gate.c -rw-r--r-- 5.0 KB
clk-gemini.c -rw-r--r-- 11.8 KB
clk-gpio.c -rw-r--r-- 7.6 KB
clk-hi655x.c -rw-r--r-- 2.8 KB
clk-highbank.c -rw-r--r-- 7.6 KB
clk-hsdk-pll.c -rw-r--r-- 10.9 KB
clk-lochnagar.c -rw-r--r-- 7.7 KB
clk-max77686.c -rw-r--r-- 7.2 KB
clk-max9485.c -rw-r--r-- 9.9 KB
clk-milbeaut.c -rw-r--r-- 17.1 KB
clk-moxart.c -rw-r--r-- 2.4 KB
clk-multiplier.c -rw-r--r-- 3.8 KB
clk-mux.c -rw-r--r-- 6.1 KB
clk-nomadik.c -rw-r--r-- 13.1 KB
clk-npcm7xx.c -rw-r--r-- 21.6 KB
clk-nspire.c -rw-r--r-- 3.6 KB
clk-oxnas.c -rw-r--r-- 6.5 KB
clk-palmas.c -rw-r--r-- 7.5 KB
clk-pwm.c -rw-r--r-- 3.4 KB
clk-qoriq.c -rw-r--r-- 34.7 KB
clk-rk808.c -rw-r--r-- 5.0 KB
clk-s2mps11.c -rw-r--r-- 7.1 KB
clk-scmi.c -rw-r--r-- 4.6 KB
clk-scpi.c -rw-r--r-- 7.4 KB
clk-si514.c -rw-r--r-- 9.5 KB
clk-si5341.c -rw-r--r-- 33.5 KB
clk-si5351.c -rw-r--r-- 42.1 KB
clk-si5351.h -rw-r--r-- 5.5 KB
clk-si544.c -rw-r--r-- 12.5 KB
clk-si570.c -rw-r--r-- 12.8 KB
clk-stm32f4.c -rw-r--r-- 50.7 KB
clk-stm32h7.c -rw-r--r-- 36.3 KB
clk-stm32mp1.c -rw-r--r-- 53.8 KB
clk-tango4.c -rw-r--r-- 2.6 KB
clk-twl6040.c -rw-r--r-- 3.7 KB
clk-u300.c -rw-r--r-- 37.7 KB
clk-versaclock5.c -rw-r--r-- 26.4 KB
clk-vt8500.c -rw-r--r-- 17.7 KB
clk-wm831x.c -rw-r--r-- 9.3 KB
clk-xgene.c -rw-r--r-- 18.7 KB
clk.c -rw-r--r-- 120.3 KB
clk.h -rw-r--r-- 1.0 KB
clkdev.c -rw-r--r-- 10.5 KB

back to top