]> git.baikalelectronics.ru Git - kernel.git/commit
net: Fix recursive descent in __scm_destroy().
authorDavid S. Miller <davem@davemloft.net>
Thu, 6 Nov 2008 23:45:32 +0000 (15:45 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 6 Nov 2008 23:45:32 +0000 (15:45 -0800)
commit40dfc9ae142307f1108874b297cf489082ca16f3
treeaf88f6c7ecbdf06719c92cc8891f75f497b70555
parent162d6a382138ab25889b28b03ee67bb061d6a396
net: Fix recursive descent in __scm_destroy().

__scm_destroy() walks the list of file descriptors in the scm_fp_list
pointed to by the scm_cookie argument.

Those, in turn, can close sockets and invoke __scm_destroy() again.

There is nothing which limits how deeply this can occur.

The idea for how to fix this is from Linus.  Basically, we do all of
the fput()s at the top level by collecting all of the scm_fp_list
objects hit by an fput().  Inside of the initial __scm_destroy() we
keep running the list until it is empty.

Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/sched.h
include/net/scm.h
net/core/scm.c