getnewvnode() return code

Antonio Huete Jimenez ahuete.devel at gmail.com
Mon May 27 09:32:18 PDT 2013


Hi,

As far as I can see, getnewvnode() always returns 0. However the path to
get a new vnode, which is:

objcache_get() <- sysref_alloc() <- allovnode() <- getnewvnode()

may return NULL via objcache_get.

Filesystems like NFS for example use vx_put() on the vnode obtained via
getnewvnode() in its nfsnode allocation path. In the case the returned
vnode pointer was NULL that would cause a kernel panic.

All filesystems check the return code from getnewvnode() but they don't
check whether the returned vnode is NULL.

In any case, I could be missing something; thoughts are appreciated.

Cheers,
Antonio Huete
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.dragonflybsd.org/pipermail/kernel/attachments/20130527/a67fac4f/attachment.html>


More information about the Kernel mailing list