2012-06-12 20:07:36

by Sasha Levin

[permalink] [raw]
Subject: [PATCH] NFC: only put local on destruction if it was created before

Not having 'local' is a valid case when a socket was created but never
bound or connected to anything, so avoid putting 'local' if it was
never created.

Signed-off-by: Sasha Levin <[email protected]>
---
net/nfc/llcp/sock.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/net/nfc/llcp/sock.c b/net/nfc/llcp/sock.c
index 2c0b317..54daa10 100644
--- a/net/nfc/llcp/sock.c
+++ b/net/nfc/llcp/sock.c
@@ -710,7 +710,8 @@ void nfc_llcp_sock_free(struct nfc_llcp_sock *sock)

sock->parent = NULL;

- nfc_llcp_local_put(sock->local);
+ if (sock->local)
+ nfc_llcp_local_put(sock->local);
}

static int llcp_sock_create(struct net *net, struct socket *sock,
--
1.7.8.6



2012-06-25 17:18:05

by Samuel Ortiz

[permalink] [raw]
Subject: Re: [PATCH] NFC: only put local on destruction if it was created before

On Mon, Jun 25, 2012 at 07:15:46PM +0200, Sasha Levin wrote:
> On Mon, 2012-06-25 at 19:17 +0200, Samuel Ortiz wrote:
> > Hi Sasha,
> >
> > On Tue, Jun 12, 2012 at 10:08:19PM +0200, Sasha Levin wrote:
> > > Not having 'local' is a valid case when a socket was created but never
> > > bound or connected to anything, so avoid putting 'local' if it was
> > > never created.
> > >
> > > Signed-off-by: Sasha Levin <[email protected]>
> > > ---
> > > net/nfc/llcp/sock.c | 3 ++-
> > > 1 files changed, 2 insertions(+), 1 deletions(-)
> > >
> > > diff --git a/net/nfc/llcp/sock.c b/net/nfc/llcp/sock.c
> > > index 2c0b317..54daa10 100644
> > > --- a/net/nfc/llcp/sock.c
> > > +++ b/net/nfc/llcp/sock.c
> > > @@ -710,7 +710,8 @@ void nfc_llcp_sock_free(struct nfc_llcp_sock *sock)
> > >
> > > sock->parent = NULL;
> > >
> > > - nfc_llcp_local_put(sock->local);
> > > + if (sock->local)
> > > + nfc_llcp_local_put(sock->local);
> > nfc_llcp_local_put() already checks for its argument being NULL or not.
>
> nfc_llcp_local_put() triggers a warning in this case as well, which
> means that this code path shouldn't be happening.
>
> Should we remove the WARN_ON from nfc_llcp_local_put() instead?
Yes, that would be better.

Cheers,
Samuel.

--
Intel Open Source Technology Centre
http://oss.intel.com/

2012-06-25 17:15:09

by Sasha Levin

[permalink] [raw]
Subject: Re: [PATCH] NFC: only put local on destruction if it was created before

On Mon, 2012-06-25 at 19:17 +0200, Samuel Ortiz wrote:
> Hi Sasha,
>
> On Tue, Jun 12, 2012 at 10:08:19PM +0200, Sasha Levin wrote:
> > Not having 'local' is a valid case when a socket was created but never
> > bound or connected to anything, so avoid putting 'local' if it was
> > never created.
> >
> > Signed-off-by: Sasha Levin <[email protected]>
> > ---
> > net/nfc/llcp/sock.c | 3 ++-
> > 1 files changed, 2 insertions(+), 1 deletions(-)
> >
> > diff --git a/net/nfc/llcp/sock.c b/net/nfc/llcp/sock.c
> > index 2c0b317..54daa10 100644
> > --- a/net/nfc/llcp/sock.c
> > +++ b/net/nfc/llcp/sock.c
> > @@ -710,7 +710,8 @@ void nfc_llcp_sock_free(struct nfc_llcp_sock *sock)
> >
> > sock->parent = NULL;
> >
> > - nfc_llcp_local_put(sock->local);
> > + if (sock->local)
> > + nfc_llcp_local_put(sock->local);
> nfc_llcp_local_put() already checks for its argument being NULL or not.

nfc_llcp_local_put() triggers a warning in this case as well, which
means that this code path shouldn't be happening.

Should we remove the WARN_ON from nfc_llcp_local_put() instead?


2012-06-25 17:06:39

by Samuel Ortiz

[permalink] [raw]
Subject: Re: [PATCH] NFC: only put local on destruction if it was created before

Hi Sasha,

On Tue, Jun 12, 2012 at 10:08:19PM +0200, Sasha Levin wrote:
> Not having 'local' is a valid case when a socket was created but never
> bound or connected to anything, so avoid putting 'local' if it was
> never created.
>
> Signed-off-by: Sasha Levin <[email protected]>
> ---
> net/nfc/llcp/sock.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/net/nfc/llcp/sock.c b/net/nfc/llcp/sock.c
> index 2c0b317..54daa10 100644
> --- a/net/nfc/llcp/sock.c
> +++ b/net/nfc/llcp/sock.c
> @@ -710,7 +710,8 @@ void nfc_llcp_sock_free(struct nfc_llcp_sock *sock)
>
> sock->parent = NULL;
>
> - nfc_llcp_local_put(sock->local);
> + if (sock->local)
> + nfc_llcp_local_put(sock->local);
nfc_llcp_local_put() already checks for its argument being NULL or not.

Cheers,
Samuel.

--
Intel Open Source Technology Centre
http://oss.intel.com/