···260260261261 if (val > sysctl_wmem_max)262262 val = sysctl_wmem_max;263263-263263+set_sndbuf:264264 sk->sk_userlocks |= SOCK_SNDBUF_LOCK;265265 if ((val * 2) < SOCK_MIN_SNDBUF)266266 sk->sk_sndbuf = SOCK_MIN_SNDBUF;···274274 sk->sk_write_space(sk);275275 break;276276277277+ case SO_SNDBUFFORCE:278278+ if (!capable(CAP_NET_ADMIN)) {279279+ ret = -EPERM;280280+ break;281281+ }282282+ goto set_sndbuf;283283+277284 case SO_RCVBUF:278285 /* Don't error on this BSD doesn't and if you think279286 about it this is right. Otherwise apps have to···289282290283 if (val > sysctl_rmem_max)291284 val = sysctl_rmem_max;292292-285285+set_rcvbuf:293286 sk->sk_userlocks |= SOCK_RCVBUF_LOCK;294287 /* FIXME: is this lower bound the right one? */295288 if ((val * 2) < SOCK_MIN_RCVBUF)···297290 else298291 sk->sk_rcvbuf = val * 2;299292 break;293293+294294+ case SO_RCVBUFFORCE:295295+ if (!capable(CAP_NET_ADMIN)) {296296+ ret = -EPERM;297297+ break;298298+ }299299+ goto set_rcvbuf;300300301301 case SO_KEEPALIVE:302302#ifdef CONFIG_INET