Re: [PATCH v2] ubifs: Fix reference count leak in ubifsumount

Tom Rini
2022-07-08T16:38:38Z

[-- Attachment #1: Type: text/plain, Size: 1460 bytes --]

On Mon, May 30, 2022 at 11:09:11AM +0200, Pali Rohár wrote:

> Original ubifs code was designed that after ubifs_umount() call it is
> required to also call ubi_close_volume() which closes underlying UBI
> volume. But U-Boot ubifs modification have not implemented it properly
> which caused that ubifsumount command contains resource leak. It can be
> observed by calling simple sequence of commands:
>
> => ubi part mtd2
> ubi0: attaching mtd2
> ...
> => ubifsmount ubi0
> => ubifsumount
> Unmounting UBIFS volume rootfs!
> => ubi detach
> ubi0 error: ubi_detach_mtd_dev: ubi0 reference count 1, destroy anyway
> ubi0: detaching mtd2
> ubi0: mtd2 is detached
>
> Fix this issue by calling ubi_close_volume() and mutex_unlock() in
> directly in ubifs_umount() function before freeing U-Boot's global
> ubifs_sb. And remove duplicate calls of these two functions in remaining
> places. Note that when ubifs_umount() is not called then during error
> handling is still needed to call ubi_close_volume() and mutex_unlock.
>
> With this change ubifsumount command does not throw that error anymore:
>
> => ubi part rootfs
> ubi0: attaching mtd2
> ...
> => ubifsmount ubi0
> => ubifsumount
> Unmounting UBIFS volume rootfs!
> => ubi detach
> ubi0: detaching mtd2
> ubi0: mtd2 is detached
>
> Signed-off-by: Pali Rohár <pali@kernel.org>

Applied to u-boot/next, thanks!

--
Tom

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 659 bytes --]