From owner-svn-src-all@freebsd.org Tue Apr 24 14:49:10 2018 Return-Path: Delivered-To: svn-src-all@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 9AC9CFA7E76; Tue, 24 Apr 2018 14:49:10 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4885B76C3E; Tue, 24 Apr 2018 14:49:10 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 3F37C14858; Tue, 24 Apr 2018 14:49:10 +0000 (UTC) (envelope-from eadler@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id w3OEnAZA057704; Tue, 24 Apr 2018 14:49:10 GMT (envelope-from eadler@FreeBSD.org) Received: (from eadler@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w3OEn9TJ057700; Tue, 24 Apr 2018 14:49:09 GMT (envelope-from eadler@FreeBSD.org) Message-Id: <201804241449.w3OEn9TJ057700@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: eadler set sender to eadler@FreeBSD.org using -f From: Eitan Adler Date: Tue, 24 Apr 2018 14:49:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r332936 - in head/sys: compat/linprocfs fs/procfs X-SVN-Group: head X-SVN-Commit-Author: eadler X-SVN-Commit-Paths: in head/sys: compat/linprocfs fs/procfs X-SVN-Commit-Revision: 332936 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.25 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 24 Apr 2018 14:49:10 -0000 Author: eadler Date: Tue Apr 24 14:49:09 2018 New Revision: 332936 URL: https://svnweb.freebsd.org/changeset/base/332936 Log: [procfs] Split procfs_attr into multiple functions Reviewed by: des, kib Discussed with: mmacy Differential Revision: https://reviews.freebsd.org/D15150 Modified: head/sys/compat/linprocfs/linprocfs.c head/sys/fs/procfs/procfs.c head/sys/fs/procfs/procfs.h Modified: head/sys/compat/linprocfs/linprocfs.c ============================================================================== --- head/sys/compat/linprocfs/linprocfs.c Tue Apr 24 14:35:39 2018 (r332935) +++ head/sys/compat/linprocfs/linprocfs.c Tue Apr 24 14:49:09 2018 (r332936) @@ -1591,7 +1591,7 @@ linprocfs_init(PFS_INIT_ARGS) pfs_create_file(dir, "maps", &linprocfs_doprocmaps, NULL, NULL, NULL, PFS_RD); pfs_create_file(dir, "mem", &procfs_doprocmem, - &procfs_attr, &procfs_candebug, NULL, PFS_RDWR|PFS_RAW); + procfs_attr_rw, &procfs_candebug, NULL, PFS_RDWR | PFS_RAW); pfs_create_file(dir, "mounts", &linprocfs_domtab, NULL, NULL, NULL, PFS_RD); pfs_create_link(dir, "root", &linprocfs_doprocroot, Modified: head/sys/fs/procfs/procfs.c ============================================================================== --- head/sys/fs/procfs/procfs.c Tue Apr 24 14:35:39 2018 (r332935) +++ head/sys/fs/procfs/procfs.c Tue Apr 24 14:49:09 2018 (r332936) @@ -98,24 +98,10 @@ procfs_docurproc(PFS_FILL_ARGS) return (0); } -/* - * Adjust mode for some nodes that need it - */ -int -procfs_attr(PFS_ATTR_ARGS) -{ +static int +procfs_attr(PFS_ATTR_ARGS, int mode) { - /* XXX inefficient, split into separate functions */ - if (strcmp(pn->pn_name, "note") == 0 || - strcmp(pn->pn_name, "notepg") == 0) - vap->va_mode = 0200; - else if (strcmp(pn->pn_name, "mem") == 0 || - strcmp(pn->pn_name, "regs") == 0 || - strcmp(pn->pn_name, "dbregs") == 0 || - strcmp(pn->pn_name, "fpregs") == 0 || - strcmp(pn->pn_name, "osrel") == 0) - vap->va_mode = 0600; - + vap->va_mode = mode; if (p != NULL) { PROC_LOCK_ASSERT(p, MA_OWNED); @@ -126,6 +112,27 @@ procfs_attr(PFS_ATTR_ARGS) return (0); } +int +procfs_attr_all_rx(PFS_ATTR_ARGS) +{ + + return (procfs_attr(td, p, pn, vap, 0555)); +} + +int +procfs_attr_rw(PFS_ATTR_ARGS) +{ + + return (procfs_attr(td, p, pn, vap, 0600)); +} + +int +procfs_attr_w(PFS_ATTR_ARGS) +{ + + return (procfs_attr(td, p, pn, vap, 0200)); +} + /* * Visibility: some files only exist for non-system processes * Non-static because linprocfs uses it. @@ -164,33 +171,33 @@ procfs_init(PFS_INIT_ARGS) NULL, NULL, NULL, 0); dir = pfs_create_dir(root, "pid", - procfs_attr, NULL, NULL, PFS_PROCDEP); + procfs_attr_all_rx, NULL, NULL, PFS_PROCDEP); pfs_create_file(dir, "cmdline", procfs_doproccmdline, NULL, NULL, NULL, PFS_RD); pfs_create_file(dir, "dbregs", procfs_doprocdbregs, - procfs_attr, procfs_candebug, NULL, PFS_RDWR|PFS_RAW); + procfs_attr_rw, procfs_candebug, NULL, PFS_RDWR | PFS_RAW); pfs_create_file(dir, "etype", procfs_doproctype, NULL, NULL, NULL, PFS_RD); pfs_create_file(dir, "fpregs", procfs_doprocfpregs, - procfs_attr, procfs_candebug, NULL, PFS_RDWR|PFS_RAW); + procfs_attr_rw, procfs_candebug, NULL, PFS_RDWR | PFS_RAW); pfs_create_file(dir, "map", procfs_doprocmap, NULL, procfs_notsystem, NULL, PFS_RD); node = pfs_create_file(dir, "mem", procfs_doprocmem, - procfs_attr, procfs_candebug, NULL, PFS_RDWR|PFS_RAW); + procfs_attr_rw, procfs_candebug, NULL, PFS_RDWR | PFS_RAW); node->pn_ioctl = procfs_ioctl; node->pn_close = procfs_close; pfs_create_file(dir, "note", procfs_doprocnote, - procfs_attr, procfs_candebug, NULL, PFS_WR); + procfs_attr_w, procfs_candebug, NULL, PFS_WR); pfs_create_file(dir, "notepg", procfs_doprocnote, - procfs_attr, procfs_candebug, NULL, PFS_WR); + procfs_attr_w, procfs_candebug, NULL, PFS_WR); pfs_create_file(dir, "regs", procfs_doprocregs, - procfs_attr, procfs_candebug, NULL, PFS_RDWR|PFS_RAW); + procfs_attr_rw, procfs_candebug, NULL, PFS_RDWR | PFS_RAW); pfs_create_file(dir, "rlimit", procfs_doprocrlimit, NULL, NULL, NULL, PFS_RD); pfs_create_file(dir, "status", procfs_doprocstatus, NULL, NULL, NULL, PFS_RD); pfs_create_file(dir, "osrel", procfs_doosrel, - procfs_attr, procfs_candebug, NULL, PFS_RDWR); + procfs_attr_rw, procfs_candebug, NULL, PFS_RDWR); pfs_create_link(dir, "file", procfs_doprocfile, NULL, procfs_notsystem, NULL, 0); Modified: head/sys/fs/procfs/procfs.h ============================================================================== --- head/sys/fs/procfs/procfs.h Tue Apr 24 14:35:39 2018 (r332935) +++ head/sys/fs/procfs/procfs.h Tue Apr 24 14:49:09 2018 (r332936) @@ -57,7 +57,9 @@ int procfs_ioctl(PFS_IOCTL_ARGS); int procfs_close(PFS_CLOSE_ARGS); /* Attributes */ -int procfs_attr(PFS_ATTR_ARGS); +int procfs_attr_w(PFS_ATTR_ARGS); +int procfs_attr_rw(PFS_ATTR_ARGS); +int procfs_attr_all_rx(PFS_ATTR_ARGS); /* Visibility */ int procfs_notsystem(PFS_VIS_ARGS);