tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: cloning device close race?



On Sun, Dec 18, 2011 at 11:59:35PM -0500, Christos Zoulas wrote:
> On Dec 18, 11:54pm, tls%panix.com@localhost (Thor Lancelot Simon) wrote:
> -- Subject: Re: cloning device close race?
> 
> | > >I am guessing the problem also exists with other cloning
> | > >pseudodevices, not just the new /dev/random implementation.
> | > 
> | > Does adding:
> | > 
> | >   vn_close(nd.ni_vp, flags, l->l_cred);
> | > 
> | > just after fd_dupopen in vfs_syscalls.c help? This should be right since
> | > the open is not associated with that vnode anymore, right?
> | 
> | How is this not always leaking?  Why does the DIAGNOSTIC check not catch
> | it more often?
> 
> Good question. I think that we just don't open and close cloners frequently
> enough.

Hm.  No, that's not it.  Looks like it's _not_ usually leaking.  The kernel
with that change dies like this, I think it's on the first open of the
pseudodevice:

        Configuring network interfaces: wm0panic: kernel diagnostic assertion 
"(use & VC_MASK) > 1" failed: file "/Volumes/csfs/src/sys/kern/vfs_vnode.c", 
line 598
        cpu0: Begin traceback...
        kern_assert() at netbsd:kern_assert+0x48
        vrele() at netbsd:vrele+0xd4
        vn_close() at netbsd:vn_close+0x42
        sys_open() at netbsd:sys_open+0x1d3
        syscall() at netbsd:syscall+0xac
        cpu0: End traceback...

Thor


Home | Main Index | Thread Index | Old Index