aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/mdio
diff options
context:
space:
mode:
authorGravatar Kuniyuki Iwashima <kuniyu@amazon.co.jp> 2021-09-28 09:42:27 +0900
committerGravatar David S. Miller <davem@davemloft.net> 2021-09-28 13:22:57 +0100
commitf4bd73b5a950866f6c6fc98a7b684d307c5d586a (patch)
treeae8184e77f0e5436c280ade82a213dac64c1e264 /drivers/net/mdio
parentnet: udp: annotate data race around udp_sk(sk)->corkflag (diff)
downloadlinux-f4bd73b5a950866f6c6fc98a7b684d307c5d586a.tar.gz
linux-f4bd73b5a950866f6c6fc98a7b684d307c5d586a.tar.bz2
linux-f4bd73b5a950866f6c6fc98a7b684d307c5d586a.zip
af_unix: Return errno instead of NULL in unix_create1().
unix_create1() returns NULL on error, and the callers assume that it never fails for reasons other than out of memory. So, the callers always return -ENOMEM when unix_create1() fails. However, it also returns NULL when the number of af_unix sockets exceeds twice the limit controlled by sysctl: fs.file-max. In this case, the callers should return -ENFILE like alloc_empty_file(). This patch changes unix_create1() to return the correct error value instead of NULL on error. Out of curiosity, the assumption has been wrong since 1999 due to this change introduced in 2.2.4 [0]. diff -u --recursive --new-file v2.2.3/linux/net/unix/af_unix.c linux/net/unix/af_unix.c --- v2.2.3/linux/net/unix/af_unix.c Tue Jan 19 11:32:53 1999 +++ linux/net/unix/af_unix.c Sun Mar 21 07:22:00 1999 @@ -388,6 +413,9 @@ { struct sock *sk; + if (atomic_read(&unix_nr_socks) >= 2*max_files) + return NULL; + MOD_INC_USE_COUNT; sk = sk_alloc(PF_UNIX, GFP_KERNEL, 1); if (!sk) { [0]: https://cdn.kernel.org/pub/linux/kernel/v2.2/patch-2.2.4.gz Fixes: 1da177e4c3f4 ("Linux-2.6.12-rc2") Signed-off-by: Kuniyuki Iwashima <kuniyu@amazon.co.jp> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/mdio')
0 files changed, 0 insertions, 0 deletions