Re: [Patch net] af_unix: remove redundant lockdep class
From: Cong WangDate: Mon, 2 Apr 2018 11:01:27 -0700 > After commit 581319c58600 ("net/socket: use per af lockdep classes for sk > queues") > sock queue locks now have per-af lockdep classes, including unix socket. > It is no longer necessary to workaround it. > > I noticed this while looking at a syzbot deadlock report, this patch > itself doesn't fix it (this is why I don't add Reported-by). > > Fixes: 581319c58600 ("net/socket: use per af lockdep classes for sk queues") > Cc: Paolo Abeni > Signed-off-by: Cong Wang Applied, thanks Cong.
Re: [Patch net] af_unix: remove redundant lockdep class
On Mon, 2018-04-02 at 11:01 -0700, Cong Wang wrote: > After commit 581319c58600 ("net/socket: use per af lockdep classes for sk > queues") > sock queue locks now have per-af lockdep classes, including unix socket. > It is no longer necessary to workaround it. > > I noticed this while looking at a syzbot deadlock report, this patch > itself doesn't fix it (this is why I don't add Reported-by). > > Fixes: 581319c58600 ("net/socket: use per af lockdep classes for sk queues") > Cc: Paolo Abeni> Signed-off-by: Cong Wang > --- > net/unix/af_unix.c | 10 -- > 1 file changed, 10 deletions(-) > > diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c > index 2d465bdeccbc..45971e173924 100644 > --- a/net/unix/af_unix.c > +++ b/net/unix/af_unix.c > @@ -745,14 +745,6 @@ static struct proto unix_proto = { > .obj_size = sizeof(struct unix_sock), > }; > > -/* > - * AF_UNIX sockets do not interact with hardware, hence they > - * dont trigger interrupts - so it's safe for them to have > - * bh-unsafe locking for their sk_receive_queue.lock. Split off > - * this special lock-class by reinitializing the spinlock key: > - */ > -static struct lock_class_key af_unix_sk_receive_queue_lock_key; > - > static struct sock *unix_create1(struct net *net, struct socket *sock, int > kern) > { > struct sock *sk = NULL; > @@ -767,8 +759,6 @@ static struct sock *unix_create1(struct net *net, struct > socket *sock, int kern) > goto out; > > sock_init_data(sock, sk); > - lockdep_set_class(>sk_receive_queue.lock, > - _unix_sk_receive_queue_lock_key); > > sk->sk_allocation = GFP_KERNEL_ACCOUNT; > sk->sk_write_space = unix_write_space; LGTM Acked-by: Paolo Abeni
[Patch net] af_unix: remove redundant lockdep class
After commit 581319c58600 ("net/socket: use per af lockdep classes for sk queues") sock queue locks now have per-af lockdep classes, including unix socket. It is no longer necessary to workaround it. I noticed this while looking at a syzbot deadlock report, this patch itself doesn't fix it (this is why I don't add Reported-by). Fixes: 581319c58600 ("net/socket: use per af lockdep classes for sk queues") Cc: Paolo AbeniSigned-off-by: Cong Wang --- net/unix/af_unix.c | 10 -- 1 file changed, 10 deletions(-) diff --git a/net/unix/af_unix.c b/net/unix/af_unix.c index 2d465bdeccbc..45971e173924 100644 --- a/net/unix/af_unix.c +++ b/net/unix/af_unix.c @@ -745,14 +745,6 @@ static struct proto unix_proto = { .obj_size = sizeof(struct unix_sock), }; -/* - * AF_UNIX sockets do not interact with hardware, hence they - * dont trigger interrupts - so it's safe for them to have - * bh-unsafe locking for their sk_receive_queue.lock. Split off - * this special lock-class by reinitializing the spinlock key: - */ -static struct lock_class_key af_unix_sk_receive_queue_lock_key; - static struct sock *unix_create1(struct net *net, struct socket *sock, int kern) { struct sock *sk = NULL; @@ -767,8 +759,6 @@ static struct sock *unix_create1(struct net *net, struct socket *sock, int kern) goto out; sock_init_data(sock, sk); - lockdep_set_class(>sk_receive_queue.lock, - _unix_sk_receive_queue_lock_key); sk->sk_allocation = GFP_KERNEL_ACCOUNT; sk->sk_write_space = unix_write_space; -- 2.13.0