Thread (5 messages) flat view 5 messages, 3 authors, 2012-08-22

Re: [PATCH] tun: don't zeroize sock->file on detach

From: Neal Cardwell <ncardwell@google.com>
Date: 2012-08-21 17:18:07
Also in: lkml

On Tue, Aug 21, 2012 at 12:04 PM, Stanislav Kinsbursky
[off-list ref] wrote:
10.08.2012 03:16, David Miller пишет:
quoted
From: Stanislav Kinsbursky <redacted>
Date: Thu, 09 Aug 2012 16:50:40 +0400
quoted
This is a fix for bug, introduced in 3.4 kernel by commit
1ab5ecb90cb6a3df1476e052f76a6e8f6511cb3d, which, among other things,
replaced
simple sock_put() by sk_release_kernel(). Below is sequence, which leads
to
oops for non-persistent devices:

tun_chr_close()
tun_detach()                            <== tun->socket.file = NULL
tun_free_netdev()
sk_release_sock()
sock_release(sock->file == NULL)
iput(SOCK_INODE(sock))                  <== dereference on NULL pointer

This patch just removes zeroing of socket's file from __tun_detach().
sock_release() will do this.

Cc: stable@vger.kernel.org
Reported-by: Ruan Zhijie <redacted>
Tested-by: Ruan Zhijie <redacted>
Acked-by: Al Viro <viro@ZenIV.linux.org.uk>
Acked-by: Eric Dumazet <edumazet@google.com>
Acked-by: Yuchung Cheng <redacted>
Signed-off-by: Stanislav Kinsbursky <redacted>

Applied, thanks.
Hi, David.
I found out, that this commit: b09e786bd1dd66418b69348cb110f3a64764626a
was previous attempt to fix the problem.
I believe this commit have to be dropped.
Have you tried testing with that commit reverted? AFAICT from reading
the code, if you revert b09e786bd1dd66418b69348cb110f3a64764626a then
the sockets_in_use count becomes incorrect, because sock_release()
will be calling this_cpu_sub() for each tun socket teardown when there
was no corresponding this_cpu_add() for the tun socket (because the
tun socket is not allocated with sock_alloc()).

Can you sketch in more detail why that commit should be dropped?

neal
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help