2012-03-28 09:48:42

by David Herrmann

[permalink] [raw]
Subject: [PATCH] Bluetooth: vhci: Ignore return code of nonseekable_open()

The comment in ./fs/open.c clearly states that nonseekable_open() will
never fail. Therefore, we can safely ignore the return code. This is the
recommended way to deal with nonseekable_open().
Our current code looks like nonseekable_open() is checked for the return
code. However, if we check the return code, we must also kfree() our
private data if the open fails. To avoid this overhead and to avoid
confusion, we simply drop the return code and return 0.

Signed-off-by: David Herrmann <[email protected]>
---
See the UHID discussion for more information. Marcel suggested to also fix vhci
so here is the patch ;)

drivers/bluetooth/hci_vhci.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/bluetooth/hci_vhci.c b/drivers/bluetooth/hci_vhci.c
index 2ed6ab1..d8a2a4f 100644
--- a/drivers/bluetooth/hci_vhci.c
+++ b/drivers/bluetooth/hci_vhci.c
@@ -260,8 +260,9 @@ static int vhci_open(struct inode *inode, struct file *file)
}

file->private_data = data;
+ nonseekable_open(inode, file);

- return nonseekable_open(inode, file);
+ return 0;
}

static int vhci_release(struct inode *inode, struct file *file)
--
1.7.9.4


2012-03-28 10:42:36

by Johan Hedberg

[permalink] [raw]
Subject: Re: [PATCH] Bluetooth: vhci: Ignore return code of nonseekable_open()

Hi,

On Wed, Mar 28, 2012, Marcel Holtmann wrote:
> > The comment in ./fs/open.c clearly states that nonseekable_open() will
> > never fail. Therefore, we can safely ignore the return code. This is the
> > recommended way to deal with nonseekable_open().
> > Our current code looks like nonseekable_open() is checked for the return
> > code. However, if we check the return code, we must also kfree() our
> > private data if the open fails. To avoid this overhead and to avoid
> > confusion, we simply drop the return code and return 0.
> >
> > Signed-off-by: David Herrmann <[email protected]>
> > ---
> > See the UHID discussion for more information. Marcel suggested to also fix vhci
> > so here is the patch ;)
> >
> > drivers/bluetooth/hci_vhci.c | 3 ++-
> > 1 file changed, 2 insertions(+), 1 deletion(-)
>
> Acked-by: Marcel Holtmann <[email protected]>

Applied to bluetooth-next. Thanks.

Johan

2012-03-28 10:25:13

by Marcel Holtmann

[permalink] [raw]
Subject: Re: [PATCH] Bluetooth: vhci: Ignore return code of nonseekable_open()

Hi David,

> The comment in ./fs/open.c clearly states that nonseekable_open() will
> never fail. Therefore, we can safely ignore the return code. This is the
> recommended way to deal with nonseekable_open().
> Our current code looks like nonseekable_open() is checked for the return
> code. However, if we check the return code, we must also kfree() our
> private data if the open fails. To avoid this overhead and to avoid
> confusion, we simply drop the return code and return 0.
>
> Signed-off-by: David Herrmann <[email protected]>
> ---
> See the UHID discussion for more information. Marcel suggested to also fix vhci
> so here is the patch ;)
>
> drivers/bluetooth/hci_vhci.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)

Acked-by: Marcel Holtmann <[email protected]>

Regards

Marcel