From nobody Fri Jun 17 19:38:54 2022 X-Original-To: dev-commits-src-all@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 2BD2285BAC4; Fri, 17 Jun 2022 19:38:55 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (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 "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4LPq9B5pHbz3Qby; Fri, 17 Jun 2022 19:38:54 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1655494735; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jXyx2XX5we2Bja8WUXdyn0l17IQCLMg1n7eGoKjY9j8=; b=m29QyZh+XqnBOizJzgH1KB171alrg6sOG/R4emwWQzTc6fFUN3W/ELsKD+QQak8oNIkQlq ujqW4InZ8maAlsaBu/VkVd11APfVl+OAoYLn1eDCOQsgVhy69yyFv18ruypIeVTsQaLNJX V19RNdiYa03nie1CaOE6F4/01CwzbsM2cExAEQfMt1OVG5i2dPg4Oz7I8XKCtJlepVAazb uYJyyZY0RvkLaYzMp2ZF+Bb/LUboPvquR89dce6KbNgLwfpKa6LAZka2oHB5Jq9AViYD1G jSBRDLr7Kh8VCcQlSkOAoBLnJVPXqvrDYVw+vhrii/3ECvBbB90CiF3KPabjHQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (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 did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8146025D88; Fri, 17 Jun 2022 19:38:54 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 25HJcsGw015307; Fri, 17 Jun 2022 19:38:54 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 25HJcsW8015306; Fri, 17 Jun 2022 19:38:54 GMT (envelope-from git) Date: Fri, 17 Jun 2022 19:38:54 GMT Message-Id: <202206171938.25HJcsW8015306@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dmitry Chagin Subject: git: 708fc30050cd - stable/13 - linprocfs: Add /proc/self/oom_score_adj. List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dchagin X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 708fc30050cddaf30f1503bf61c1a1edeb201729 Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1655494735; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=jXyx2XX5we2Bja8WUXdyn0l17IQCLMg1n7eGoKjY9j8=; b=gfAGAfNpbqNi90zSdKfUIMUiPZdST2P2g8TW/j7+NMxFh0Hka2G29ErJWSRHloiM6ytvTD XXUTqDNL+ApN29e8cZm/cqUA5zQdn/f+NckiSNSSKRi47Q1X0ka1v4/5uNRWgtct9U8ZwV q1eah4q7rm4RfEmuFhbGnhvr9jcBe7YiCiIauwE8DfJ4ril10EBB7KiXQlnyfhuYAxiq86 P9oiUyOnfQa6aAW2AmOZIfcECy/lmUdl3STndp0v06f0M+OLdoOD/P7iXERmb9IUElVSew BPU5OBv9T0CDliyNoMJP/llqqnLosmTk4gqJJv38u6MZ4VhgSoeq48VnhtWYrA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1655494735; a=rsa-sha256; cv=none; b=NkNVOiZAQmeJi5fcJAJD2JoWfzLnJcEt/aL0RAuxxSZzjZOeX7eed33rYKDsxWbgZr6uDJ o6oRsJalUDAkis/vWjiaQL2FP61LYB82b3iXyhIxt7utDTR01Bv/aAN1JDsorU2pXmfj3u eMDb+BMLOwZzPumPhRgbJgr8bWOvxww3zusbTjkz4bYtDKkAWOJeH6N0PWd7M5KJQtSy/u TaMtFs5PclU/dpzu3Xnpyf/6pJO238q+NWXbZ3GBqBpwucyjq8nmLfZvEJW5sK7E2Ykt+D I4mL29RU21de6MwmFw/FzaFuCwXfFVlVqBaja6v2/qllgxo0QCoYA1HBn/QvPg== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by dchagin: URL: https://cgit.FreeBSD.org/src/commit/?id=708fc30050cddaf30f1503bf61c1a1edeb201729 commit 708fc30050cddaf30f1503bf61c1a1edeb201729 Author: Dmitry Chagin AuthorDate: 2022-03-31 18:04:44 +0000 Commit: Dmitry Chagin CommitDate: 2022-06-17 19:33:47 +0000 linprocfs: Add /proc/self/oom_score_adj. To avoid annoyng messages from LTP test suites add the simple implementation of /proc/self/oom_score_adj which is do nothing. Reviewed by: emaste Differential revision: https://reviews.freebsd.org/D34710 MFC after: 2 weeks (cherry picked from commit b7df7b987e8fac05006aa5f132c424e2b2bcf156) --- sys/compat/linprocfs/linprocfs.c | 30 ++++++++++++++++++++++++++++++ sys/compat/linux/linux_emul.c | 1 + sys/compat/linux/linux_emul.h | 1 + sys/compat/linux/linux_misc.h | 4 ++++ 4 files changed, 36 insertions(+) diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c index 641fc1e3c10c..97ae357a229e 100644 --- a/sys/compat/linprocfs/linprocfs.c +++ b/sys/compat/linprocfs/linprocfs.c @@ -80,6 +80,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -104,6 +105,7 @@ __FBSDID("$FreeBSD$"); #endif /* __i386__ || __amd64__ */ #include +#include #include #include #include @@ -1932,6 +1934,32 @@ linprocfs_doauxv(PFS_FILL_ARGS) return (error); } +/* + * Filler function for proc/self/oom_score_adj + */ +static int +linprocfs_do_oom_score_adj(PFS_FILL_ARGS) +{ + struct linux_pemuldata *pem; + long oom; + + pem = pem_find(p); + if (pem == NULL || uio == NULL) + return (EOPNOTSUPP); + if (uio->uio_rw == UIO_READ) { + sbuf_printf(sb, "%d\n", pem->oom_score_adj); + } else { + sbuf_trim(sb); + sbuf_finish(sb); + oom = strtol(sbuf_data(sb), NULL, 10); + if (oom < LINUX_OOM_SCORE_ADJ_MIN || + oom > LINUX_OOM_SCORE_ADJ_MAX) + return (EINVAL); + pem->oom_score_adj = oom; + } + return (0); +} + /* * Constructor */ @@ -2018,6 +2046,8 @@ linprocfs_init(PFS_INIT_ARGS) NULL, &procfs_candebug, NULL, PFS_RD|PFS_RAWRD); pfs_create_file(dir, "limits", &linprocfs_doproclimits, NULL, NULL, NULL, PFS_RD); + pfs_create_file(dir, "oom_score_adj", &linprocfs_do_oom_score_adj, + procfs_attr_rw, &procfs_candebug, NULL, PFS_RDWR); /* /proc//task/... */ dir = pfs_create_dir(dir, "task", linprocfs_dotaskattr, NULL, NULL, 0); diff --git a/sys/compat/linux/linux_emul.c b/sys/compat/linux/linux_emul.c index eb132d97db4a..12e078546ac6 100644 --- a/sys/compat/linux/linux_emul.c +++ b/sys/compat/linux/linux_emul.c @@ -187,6 +187,7 @@ linux_proc_init(struct thread *td, struct thread *newtd, bool init_thread) pem = pem_find(p); KASSERT(pem != NULL, ("proc_exit: proc emuldata not found.\n")); pem->persona = 0; + pem->oom_score_adj = 0; } } diff --git a/sys/compat/linux/linux_emul.h b/sys/compat/linux/linux_emul.h index 70646cc93847..4e35da64606f 100644 --- a/sys/compat/linux/linux_emul.h +++ b/sys/compat/linux/linux_emul.h @@ -75,6 +75,7 @@ struct linux_pemuldata { struct sx pem_sx; /* lock for this struct */ uint32_t persona; /* process execution domain */ uint32_t ptrace_flags; /* used by ptrace(2) */ + uint32_t oom_score_adj; /* /proc/self/oom_score_adj */ }; #define LINUX_PEM_XLOCK(p) sx_xlock(&(p)->pem_sx) diff --git a/sys/compat/linux/linux_misc.h b/sys/compat/linux/linux_misc.h index a2dd5eb9f82b..0f134fc62e72 100644 --- a/sys/compat/linux/linux_misc.h +++ b/sys/compat/linux/linux_misc.h @@ -157,6 +157,10 @@ extern int stclohz; /* Linux seccomp flags */ #define LINUX_SECCOMP_GET_ACTION_AVAIL 2 +/* Linux /proc/self/oom_score_adj */ +#define LINUX_OOM_SCORE_ADJ_MIN -1000 +#define LINUX_OOM_SCORE_ADJ_MAX 1000 + #if defined(__aarch64__) || (defined(__amd64__) && !defined(COMPAT_LINUX32)) int linux_ptrace_status(struct thread *td, int pid, int status); #endif