From nobody Fri Feb 24 10:40:40 2023 X-Original-To: dev-commits-src-branches@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PNRJ55qstz3tphb; Fri, 24 Feb 2023 10:40:53 +0000 (UTC) (envelope-from melifaro@freebsd.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4PNRJ55NRVz3p06; Fri, 24 Feb 2023 10:40:53 +0000 (UTC) (envelope-from melifaro@freebsd.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1677235253; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ls1+5o/x4zXkjkq1L5u9a792AqbAhC9V57TAM1XHLwA=; b=V9+QK7InVcGjeYPn4aje0Tai6W4qQyk8Z6MMwEXbvB7nQLnw2Lgp7Olk8hlKXKVENUxuQB 4WP6w2WI1s5+jrnq+dezAwAnUn8zRq3CpFMCMNpSLTb/tGW798XRfK87gbgVVhSE/K0j9i h1kls+d7mski1XOj2X4wOiR7Kk+jElpHBt8tXbhilFclbxMm+T1txVjr5oVwN8EnydB7ST bSyAblbE+VqYifN1Y1DG4yeg+lnNr2ku6l70kPmxMi98+XQtswTh0QfPmsY/dJQD+gZjoE cMbKA5EtkPwM6dg606IUzJcEXeXaIOCqXIpCK6QGdXc2ZaGbNpVo79hkYf74/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1677235253; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=ls1+5o/x4zXkjkq1L5u9a792AqbAhC9V57TAM1XHLwA=; b=Zp8sZqde0j3atEZXQi+/hrBRidfczwISIYIa6BDLB5E7Tf1Oa1Pw7UiOHUK47k+/LxYMQq LOf3q6UiT03rmdGTki6IaFGdoHS1PT6VlW0dYFXnyg5XezfTtIOno/9vyhvcaVjnGWvDV/ CTvxdNHrEi8czkSonRzw+3BivOBmVFbX+j2mOp9dZenQqg3UPl2tsBvrhUAdBZayvkNCoH 8zTjoYZTOpsRTjy+YRLvon9O/LtAj2wqm6YFRKE88jKLd22oNhaMdnP3txs//iLClsC+aR gngwyhtw8m+fycH03Lqj6556GHD9hAa37Oj7Ug4aouJ1h/383yGz8KqKIOFLOQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1677235253; a=rsa-sha256; cv=none; b=cloFxotdSKWhJnWO/PWib3GcoH/eaQCUygzZttwEWhRBit/cTZVP430ukk2/DwC/kWXrrp B1jf35NMumFUA/EgXbDTeC153c+2R+zKFCF+34ce1U8MuvsbnHviE0tS6ZfBLpEkc/AcRy dYIUUVwsz/MnzJlkY85zBRcicLNo6ndnJZmCV9UIa08FWsuKeeavU+78VMfcpfrY7D0e1+ +dT37M8FygwlT8hpkdk86/yibQqLvUI698Bw5pqTtKSQl6HmKYS3iPGmbAyspvq5o8oWtV zRaSc0Q5gQCsh1fmDNcHQhn/CprZp7LTVgMie8suxebV3mpMMX7mT54/hZOWvA== Received: from smtpclient.apple (unknown [IPv6:2a02:8084:d6bb:510:8470:49be:b746:8dbc]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) (Authenticated sender: melifaro/mail) by smtp.freebsd.org (Postfix) with ESMTPSA id 4PNRJ50tFSzt2q; Fri, 24 Feb 2023 10:40:53 +0000 (UTC) (envelope-from melifaro@freebsd.org) Content-Type: text/plain; charset=utf-8 List-Id: Commits to the stable branches of the FreeBSD src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-branches List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-branches@freebsd.org X-BeenThere: dev-commits-src-branches@freebsd.org Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3731.400.51.1.1\)) Subject: Re: git: c3d3f3594fdf - stable/13 - netlink: allow to override sb_max for netlink sockets. From: Alexander Chernikov In-Reply-To: <721D2CDA-6740-482D-BDC9-C5EFE56F7AE0@karels.net> Date: Fri, 24 Feb 2023 10:40:40 +0000 Cc: "src-committers@freebsd.org" , "dev-commits-src-all@freebsd.org" , "dev-commits-src-branches@freebsd.org" Content-Transfer-Encoding: quoted-printable Message-Id: <2F9CFF0F-F14C-401F-97D6-E83B3842A599@FreeBSD.org> References: <202302101619.31AGJESZ073291@gitrepo.freebsd.org> <721D2CDA-6740-482D-BDC9-C5EFE56F7AE0@karels.net> To: Mike Karels X-Mailer: Apple Mail (2.3731.400.51.1.1) X-ThisMailContainsUnwantedMimeParts: N > On 10 Feb 2023, at 17:00, Mike Karels wrote: >=20 > On 10 Feb 2023, at 10:19, Alexander V. Chernikov wrote: >=20 >> The branch stable/13 has been updated by melifaro: >>=20 >> URL: = https://cgit.FreeBSD.org/src/commit/?id=3Dc3d3f3594fdf653392936594b75ec330= af12d7fa >>=20 >> commit c3d3f3594fdf653392936594b75ec330af12d7fa >> Author: Alexander V. Chernikov >> AuthorDate: 2023-02-10 16:07:17 +0000 >> Commit: Alexander V. Chernikov >> CommitDate: 2023-02-10 16:07:22 +0000 >>=20 >> netlink: allow to override sb_max for netlink sockets. >>=20 >> Netlink sockets sometimes require larger buffers than other = sockets. >> For example, full-view IPv4 dump sent via netlink may consume 50+ = megabytes. >> The desired buffer may be bigger than the system maximum `sb_max`. >> FreeBSD HEAD has a mechanism for overriding protocol `setsockopt()` = handler, >> which netlink uses to permit buffer reservations beyond `sb_max`. >> This behaviour is handy as it doesn't require system administrator = to lift >> the limits for other sockets. >> Stable/13 lack such muchanism, so a different approach has to be = used. >> This diff is a direct commit to stable/13 and it simply copies the = logic from >> Netlink in -HEAD for checking if the larger buffer size should be = permitted. >>=20 >> Differential Revision: https://reviews.freebsd.org/D38472 >> --- >> sys/kern/uipc_sockbuf.c | 3 ++- >> sys/kern/uipc_socket.c | 10 ++++++++++ >> sys/sys/sockopt.h | 1 + >> 3 files changed, 13 insertions(+), 1 deletion(-) >>=20 >> diff --git a/sys/kern/uipc_sockbuf.c b/sys/kern/uipc_sockbuf.c >> index cbfcc0e5fe95..277965412779 100644 >> --- a/sys/kern/uipc_sockbuf.c >> +++ b/sys/kern/uipc_sockbuf.c >> @@ -693,7 +693,8 @@ sbsetopt(struct socket *so, int cmd, u_long cc) >> if (*lowat > *hiwat) >> *lowat =3D *hiwat; >> } else { >> - if (!sbreserve_locked(sb, cc, so, curthread)) >> + u_long limit =3D sogetmaxbuf(so); >=20 > Spaces instead of tabs. >=20 > Mike Ups. Haven=E2=80=99t noticed that one. Fixed in f9f0d2f475e05ad88120ef1c0a645d2aa6dc3e94. Thank you! >=20 >> + if (!sbreserve_locked_limit(sb, cc, so, limit, curthread)) >> error =3D ENOBUFS; >> } >> if (error =3D=3D 0) >> diff --git a/sys/kern/uipc_socket.c b/sys/kern/uipc_socket.c >> index f8931b653a4d..fdf718de2483 100644 >> --- a/sys/kern/uipc_socket.c >> +++ b/sys/kern/uipc_socket.c >> @@ -128,6 +128,7 @@ __FBSDID("$FreeBSD$"); >> #include >> #include >> #include >> +#include >> #include >> #include >> #include >> @@ -2975,6 +2976,15 @@ sooptcopyin(struct sockopt *sopt, void *buf, = size_t len, size_t minlen) >> return (0); >> } >>=20 >> +u_long >> +sogetmaxbuf(struct socket *so) >> +{ >> + if (so->so_proto->pr_domain->dom_family !=3D PF_NETLINK) >> + return (sb_max); >> + u_long nl_maxsockbuf =3D 512 * 1024 * 1024; /* 512M, XXX: init = based on physmem */ >> + return ((priv_check(curthread, PRIV_NET_ROUTE) =3D=3D 0) ? = nl_maxsockbuf : sb_max); >> +} >> + >> /* >> * Kernel version of setsockopt(2). >> * >> diff --git a/sys/sys/sockopt.h b/sys/sys/sockopt.h >> index cb7fc3ffca27..d01d62f21680 100644 >> --- a/sys/sys/sockopt.h >> +++ b/sys/sys/sockopt.h >> @@ -68,5 +68,6 @@ int accept_filt_getopt(struct socket *, struct = sockopt *); >> int accept_filt_setopt(struct socket *, struct sockopt *); >> int so_setsockopt(struct socket *so, int level, int optname, >> void *optval, size_t optlen); >> +u_long sogetmaxbuf(struct socket *so); >>=20 >> #endif /* _SYS_SOCKOPT_H_ */