diff mbox series

[v2,1/1] sandbox: host bind must close file descriptor

Message ID 20210202232156.323871-1-xypron.glpk@gmx.de
State Accepted
Commit 297b8b3ebfc2bdeb0b245b1dbe31ae8302d9b1b8
Delegated to: Simon Glass
Headers show
Series [v2,1/1] sandbox: host bind must close file descriptor | expand

Commit Message

Heinrich Schuchardt Feb. 2, 2021, 11:21 p.m. UTC
Each invocation of the 'host bind' command with a file name argument opens
a file descriptor. The next invocation of the 'host bind' command destroys
the block device but the file descriptor remains open. The same holds true
for the 'unbind blk' command.

Close the file descriptor when unbinding the host block device.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
---
v2:
	remove superfluous data checking
---
 drivers/block/sandbox.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

--
2.30.0

Comments

Simon Glass Feb. 3, 2021, 9:42 p.m. UTC | #1
On Tue, 2 Feb 2021 at 16:22, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> Each invocation of the 'host bind' command with a file name argument opens
> a file descriptor. The next invocation of the 'host bind' command destroys
> the block device but the file descriptor remains open. The same holds true
> for the 'unbind blk' command.
>
> Close the file descriptor when unbinding the host block device.
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
> v2:
>         remove superfluous data checking
> ---
>  drivers/block/sandbox.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>
Simon Glass Feb. 7, 2021, 12:17 a.m. UTC | #2
On Tue, 2 Feb 2021 at 16:22, Heinrich Schuchardt <xypron.glpk@gmx.de> wrote:
>
> Each invocation of the 'host bind' command with a file name argument opens
> a file descriptor. The next invocation of the 'host bind' command destroys
> the block device but the file descriptor remains open. The same holds true
> for the 'unbind blk' command.
>
> Close the file descriptor when unbinding the host block device.
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
> ---
> v2:
>         remove superfluous data checking
> ---
>  drivers/block/sandbox.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)

Reviewed-by: Simon Glass <sjg@chromium.org>

Applied to u-boot-dm, thanks!
diff mbox series

Patch

diff --git a/drivers/block/sandbox.c b/drivers/block/sandbox.c
index f57f690d3c..ac20ff6493 100644
--- a/drivers/block/sandbox.c
+++ b/drivers/block/sandbox.c
@@ -230,6 +230,18 @@  int host_get_dev_err(int devnum, struct blk_desc **blk_devp)
 }

 #ifdef CONFIG_BLK
+
+int sandbox_host_unbind(struct udevice *dev)
+{
+	struct host_block_dev *host_dev;
+
+	/* Data validity is checked in host_dev_bind() */
+	host_dev = dev_get_plat(dev);
+	os_close(host_dev->fd);
+
+	return 0;
+}
+
 static const struct blk_ops sandbox_host_blk_ops = {
 	.read	= host_block_read,
 	.write	= host_block_write,
@@ -239,6 +251,7 @@  U_BOOT_DRIVER(sandbox_host_blk) = {
 	.name		= "sandbox_host_blk",
 	.id		= UCLASS_BLK,
 	.ops		= &sandbox_host_blk_ops,
+	.unbind		= sandbox_host_unbind,
 	.plat_auto	= sizeof(struct host_block_dev),
 };
 #else