[PATCH V2 0/4] nvme: init ctrl memleak and debugfs fix

Chaitanya Kulkarni chaitanyak at nvidia.com
Fri Apr 28 01:41:28 PDT 2023


On 4/28/23 00:31, Chaitanya Kulkarni wrote:
> Hi,
>
> There is memleak in nvme_ctrl_dhchap_secret_store(),
> nvme_ctrl_dhchap_ctrl_secret_store(), and nvme_init_ctrl().
>
> Fix dhchap memleaks by adding right kfree() :-
>
> unreferenced object 0xffff8886376ea800 (size 64):
>    comm "check", pid 22048, jiffies 4344316705 (age 92.199s)
>    hex dump (first 32 bytes):
>      44 48 48 43 2d 31 3a 30 30 3a 6e 78 72 35 4b 67  DHHC-1:00:nxr5Kg
>      75 58 34 75 6f 41 78 73 4a 61 34 63 2f 68 75 4c  uX4uoAxsJa4c/huL
>    backtrace:
>      [<0000000030ce5d4b>] __kmalloc+0x4b/0x130
>      [<000000009be1cdc1>] nvme_ctrl_dhchap_secret_store+0x8f/0x160 [nvme_core]
>      [<00000000ac06c96a>] kernfs_fop_write_iter+0x12b/0x1c0
>      [<00000000437e7ced>] vfs_write+0x2ba/0x3c0
>      [<00000000f9491baf>] ksys_write+0x5f/0xe0
>      [<000000001c46513d>] do_syscall_64+0x3b/0x90
>      [<00000000ecf348fe>] entry_SYSCALL_64_after_hwframe+0x72/0xdc
>
> Fix dev_pm_qos related memleak in nvme_init_ctrl() with adding
> dev_pm_qos_hide_latency_tolerance() in the error unwind code :-
>
> nvme/044 (Test bi-directional authentication)                [passed]
>      runtime  2.111s  ...  2.124s
> unreferenced object 0xffff888110c46240 (size 96):
>    comm "nvme", pid 33461, jiffies 4345365353 (age 75.586s)
>    hex dump (first 32 bytes):
>      00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
>      00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
>    backtrace:
>      [<0000000069ac2cec>] kmalloc_trace+0x25/0x90
>      [<000000006acc66d5>] dev_pm_qos_update_user_latency_tolerance+0x6f/0x100
>      [<00000000cc376ea7>] nvme_init_ctrl+0x38e/0x410 [nvme_core]
>      [<000000007df61b4b>] 0xffffffffc05e88b3
>      [<00000000d152b985>] 0xffffffffc05744cb
>      [<00000000f04a4041>] vfs_write+0xc5/0x3c0
>      [<00000000f9491baf>] ksys_write+0x5f/0xe0
>      [<000000001c46513d>] do_syscall_64+0x3b/0x90
>      [<00000000ecf348fe>] entry_SYSCALL_64_after_hwframe+0x72/0xdc
>
> When blktests are running multiple times we get following messages
> consistently :-
>
> [  147.853464] debugfs: Directory 'nvme1' with parent '/' already present!
> [  147.853973] nvme1: failed to create debugfs attr
> [  148.802490] debugfs: Directory 'nvme1' with parent '/' already present!
> [  148.803244] nvme1: failed to create debugfs attr
> [  148.877304] debugfs: Directory 'nvme1' with parent '/' already present!
> [  148.877775] nvme1: failed to create debugfs attr
> [  149.816652] debugfs: Directory 'nvme1' with parent '/' already present!
> [  149.818011] nvme1: failed to create debugfs attr
>
> Fix those by adding nvme_fault inject_fini() call in the error unwind
> code path.
>
> Still trying to find out device_add() memleak, will send patch soon.
>
> -ck
>
>

I've generated this series on the linux-block/for-next, forget to
mentioned that in the cover-letter, plz let me know if I should
re-post this on linux-block mailing list...

-ck




More information about the Linux-nvme mailing list