From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932612AbcKGQKO (ORCPT ); Mon, 7 Nov 2016 11:10:14 -0500 Received: from mail-db5eur01on0098.outbound.protection.outlook.com ([104.47.2.98]:62397 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S932237AbcKGQKM (ORCPT ); Mon, 7 Nov 2016 11:10:12 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=dsafonov@virtuozzo.com; From: Dmitry Safonov To: CC: <0x7f454c46@gmail.com>, Dmitry Safonov , Al Viro , Andrey Vagin , "Eric W. Biederman" , Rob Landley Subject: [RFC] proc: don't show kernel-internal mnt_id in fdinfo (if possible) Date: Mon, 7 Nov 2016 19:06:35 +0300 Message-ID: <20161107160635.21556-1-dsafonov@virtuozzo.com> X-Mailer: git-send-email 2.10.2 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [195.214.232.10] X-ClientProxiedBy: VI1PR07CA0078.eurprd07.prod.outlook.com (10.164.94.174) To HE1PR0801MB1738.eurprd08.prod.outlook.com (10.168.149.150) X-MS-Office365-Filtering-Correlation-Id: 580a0532-4d34-4914-cc88-08d407287836 X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;2:Sd05c24n1XxJ6YMB6FhdTYPHusz5HPKNi2KA7Nt8Ec/s2jGmh50bxDyDhAUPGZd1zTRt1SUdUF3MiTg0l7dltFhnnrDMjYhf5Zc3mUuMTuE6qa2yCKwRWMQXpLj4Gke/H0Ps3y40miYPsNuozoHOCsQVxmlQNHLNwNcitBw0YpXTaVt1LifSHNTdOqDpBdhu8DuGdiqIHbnEoPZBZ332pQ==;3:bmtLohtQ7WTwjz+j6foxgIVAlE0xGQUZ7gtPg4UzCE9t14oRG8mZkSI7QzI8qAm3hwPoAoFm4YMEX/nd9NKK5H/PV2cC0OD3gTkdklLEMyNB9b+pCYsSgX4E9phsYvM0Ew/QdowW5/9sIlleUH1C2g== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1738; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;25:+CX2H0/jwbo9/itkmadQiYI8RW0y0CFp/PWmNkXVa7goe1kNQpkxRLiuL4ef3wCh15YJIIPWdtnwIMqcHSz9747upX9H7NulSMI7OfRUbt05QXmAJKMD5m4d645Rt9eErsmHOBDzO/iorMb3iIkcVMNBjiH09fObh2ejUjkJXLmSkKKBZNCFk9YXiFyHbTr9BkFfgX+3xP2uPx/pWAR6J18OwMd/jgez9SIwoewE/9uOupTN+qAMqyed1jh7X9v7m1o3qsZaSK6CAj72J4PNb26aFOYRoBpDKYfanXrYCMZGrwpfDY71ztDX1yGKA+5NW/EXdcSf+k3RWl5IAD7i0hPf++Oq+MagdP/WRmsabF2clp2tkz3nMGysDbtKg5iwvoOGMLq+vK84jHera8Iqx+L5KwAVSLGYX16sFx2ddL9TfFCy/ZhV7ginYQU5aiBjA4jtfpwBuDI/uGI2KywqW30BaPSKnsct458yxwfCYDzyRhY9lRHBXYCZq1Ws0Jw+nvU1rXYQ+uy69DlFcSjNfD/n5TnAiyuuWRASgNX1X4DSBv15sWu2gvcXxXKbFl/dmCnilpMCq6vJBVjJH+YIfbovSf19X1iq6mxlXG5LSnwu9S6BuycXD6ayNujnQJSySsNNVmvt2wL63F9Y7p3awL5UQ3M3jqxfd7oEAm32Tyxz5JwQN8oEeR8EpmWRaeAEvvqEn5SdVfIstn4fuAvJqBGm1JMAEcvHAAPqBL0dX24= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;31:NSHg8bLiJ4abomJKw3Qpyx6Mvtddw4esi/LXOWgOI7zDfdYd3J8fWYdUtvt4hr5Ss/CxWuuzEczVLPPmQW6pr6SS6HzeqdzChKSD2oTEBtqX4CH9hSUyWp5O4YPpzlM/NSW9BIG02nvSUiawYfxRx97K0V0ct4i8ZzkJGBVMOeepOVxUPbmjLcD6SGhcqGWjM9si7BjkGusaWmHHBNfS1yAYjnuqtE2C72CRUv/DRP+ivNCJgkak5rxJeJPGI+LlWLhhFnkQwUj5+5kggsgRbw==;20:YmjW5zh6VR3CeSX2e1a48zDepCNXiAODcV5QRoiKYXv+e6K2YH4vF6fy2CM47zYZODkOuAXfG0jgAlU8bxSdhDxFUEbtDhrY8T2aUCGgc7dlq914Ibct/6mGwFrJdHo1A6izXhUkUo7thTYkun7Kn8RZSQiDIwUEbL8G7jC4gvqPVtf1m+j++I1Ek/vGSdII2wzhp1giFjr0dHp9PGRzD37sJOkD6NyBLPf1NGpBguGmzGfZDHWJBuzoZ5Crk9B7 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040176)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(6043046)(6042046);SRVR:HE1PR0801MB1738;BCL:0;PCL:0;RULEID:;SRVR:HE1PR0801MB1738; X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;4:4J/aMXUhRH9oAXfeUupsaNat2wp1bldEJNrkecNrHOqlkL2KSi/GFBeY4VnnF6b3xXR1dzlsrhDs76xU2yizYcg0sElrQuQ0nyEtM1a6eDxfX2XUDteJi0c+nqI0R4Y2P/Wi7fun8PN/Ut4JoubzgBDrXtakKHLN+ehUv0P/3P7lKhVkI1CYfhRm8YRz7VijS9IlzI/196zB6erMoO2SK/40rqew+0GkpW3l7kQaAf1fU6nnRxmvJtP2cTUJZvSWn/Rmug+z5Sy0PNZYwL42Olra9PAfr3aPm9p/vTXkUqePrEF4iNEZru1Xt2nz0t4Hq+MJdJ5H80tuQ3hZ2F+5msnv4EqFFalHvEJ4Yy6HZHQGEYACppl7zD2sRPhxZ7vy6dorrXLTCBJIlBgqKg5ldmE3rPAbwnzkIRRS7nDOm2xnEhuuw+b3vORtdGI7Fgf/ X-Forefront-PRVS: 0119DC3B5E X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6009001)(7916002)(199003)(189002)(19580405001)(42186005)(1076002)(8676002)(586003)(53416004)(50226002)(5660300001)(305945005)(7846002)(86362001)(2906002)(50466002)(6916009)(48376002)(110136003)(66066001)(229853001)(2351001)(68736007)(77096005)(92566002)(81156014)(81166006)(69596002)(7736002)(50986999)(36756003)(33646002)(101416001)(5003940100001)(47776003)(105586002)(97736004)(189998001)(4326007)(6116002)(19580395003)(3846002)(106356001);DIR:OUT;SFP:1102;SCL:1;SRVR:HE1PR0801MB1738;H:dsafonov.sw.ru;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;HE1PR0801MB1738;23:37AMLMSFnBHOnAgzvNo6NkeVODbLuM4LKmNdCsU?= =?us-ascii?Q?ajjjjBY9bmy3d7Y+eHxgORp0tzskQZ8mSK4gxwkNlXCkqL0IA6KhmRwbH9iL?= =?us-ascii?Q?W+gnDo+6QN5dgDnsfAFc3smeU7uEaH8AHptKf+zLC8Kgn0yF+pprHMKyekWd?= =?us-ascii?Q?7iX1k/fAXyhvdKNPpll97XIAwnRyCbiT3ZQOY3BTs3CTNvde/EeeCzKAbhL4?= =?us-ascii?Q?aRzQohMzcbCqx9q34OA1didUkvu71xNfido+LfUELNP4YSfE0h6+83cYZR+O?= =?us-ascii?Q?1OxFjjLWUICMAd00APy+iEKAe5TFGOh98V6AM10hyJtnTb6gE68ghts0299y?= =?us-ascii?Q?f0PppP/JcFWGBLux9TeBLsC0LUeveIK4BHJQlFLlrN8eNzVFYxVaaVRRoL81?= =?us-ascii?Q?ElI6zeao40hHv/OTcIr4srV0f89BN7co6Vg8lmWGL+R5C57uSHbyizBLgv9Y?= =?us-ascii?Q?b3e3o+ILE0UgTg+yD8mvememkzjsoy6ilA8ZPVRBaUeo8lmx7RBqaQ7OgkWu?= =?us-ascii?Q?BS3XC3c6ExSIhSlefpGmE7t6LynKTCjKT7a0wf+h4lV6U7KuumpWKGvKbSFG?= =?us-ascii?Q?AImSGYTzqmjEkW2Vwzll5a/MxO3dpnoPMXj+yhjjC2oDHoZleMvRw3yEQ2oM?= =?us-ascii?Q?Ux2ZsG6CcoYnBKWOb8h8LYoVNPDe/f6hDyCaBjvFziTgj4Mc0grfEbnQ2NEN?= =?us-ascii?Q?kDvdmRzbTZVNf58uzvFHZtJ0Y5F5PHg58OsGL7Z+cLvABkcavUiop+HTTdXB?= =?us-ascii?Q?pE9JOoFkjwFj1IfN4Wlwp468DyKPDMqnL/G0/N7SuV8d9ljQaOzmxFLHCSG9?= =?us-ascii?Q?Uw4oTnea2IY25wxrzjGI6w5EKFAKkDrAI9abbLnwZxbX3oAiHFHn2eRvRNlZ?= =?us-ascii?Q?Bzf658DCcaOkCaYmuZpCBLPOSwlyvlXdBxCtAHf2/4n79KqtnMPncewTe7WQ?= =?us-ascii?Q?uvhKSIkOO0yexBHU4Wa9CVyrEhJ759j4jtJsTiu6vXLB6j30ynpvAG7ZuhCT?= =?us-ascii?Q?T8D1P4TW+GsPCSyGdqg1z+gy5rIXGAkNuskWob1Gb8HjnP45/Ll02JjW1mK0?= =?us-ascii?Q?CDBRN9jbD94ek8Vq10RZw6B88p97QuTvYwHF7Tm7NMdJuAX5c8HRvkubOJJW?= =?us-ascii?Q?fhTdv9ydAvDE=3D?= X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;6:BL88nIKJ7Vx/UsAKrc8J7LEgHHDPczKbK9NPpdpBPDoW8R+eNPNjlB0q6nzzgxKoKHs1zFEKVQLt89Ek9eYrwjy6Ek28lOBMo/o32hV3nhgh+te0Qi1lSxjTTIUPRqe5qzQtk6sKXHhmhQztIQgR44kUnGvVFL2FS+bU5acMkzxcm1JZ6jccyyv0iilh0RBnjdJAhLbXYpDMBtfnxzWds5Lfu9o+vVvhMUvnN7IOzygAVFZAOj/MIawrnQwBJa2/G/+VwIRo/X6kfOY805lJRKWAaKNEPPWDNRvY4Fg2rBvpNJeHk+RnAxoPFiX9WLbbfoGQJ+soGn1L5VM11p1bsg==;5:t0CQ0MHsp4mt/lPbxZa1kIzovKHKs4Ycar4IJRgJo422fTNXMoB58lr66RiIpb7xAmJEXHb83u/Rld18/xUhICTxnuWVEZRsvM/mmWlaoH7nJQhb6FcrqZN7ZzUzF4pKZ0SEgmrhdxgFdkbb03W+Fw==;24:58/1KFryKF8Jm6nX4+OU0rw6WuFehdTzznJuSL3mTn6ISDi48PTZIadMeMuYSF13xnZflVLuh6xImNP15FoDse2E5JSfl8CwBAit0PN6Csc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;HE1PR0801MB1738;7:E+JK4/nLg/gEtE0dYcyZ9DajZUGgWdZGYCneEO2QefcnkAulUjkMMofzfb6oYW2PjuczEjTO7W1ghqIrjWS1kLRqAQZEav1ytPlg0P8zRumozUjaX7WYyLwrFUSPMTVdo6zIAsrwYDRVdC3+r5lud6doaYzLLrBKaEDU374aaoUFuag8OZtBb2EQ5wvfj5Lt0M2slh5OF9l8NHFPjxFFiVdANUQnTvEBCJ1IvN67QP8vR2TpCkORmfOibX/F4BdY8vJB0O9WEPyYRVWcJNhmrTyc6PRNIgjvh9Y0ltV4aoJjq7v8+wsiTFD5QkhexoQU9ZhAX3wzaCDKdE/K8d5SG2aMrgsfqQ5/iRfiIqYd5iE=;20:9IjVRWdfgOB7GqIXri2PQLhLFHnFVwVRvoxDOZutUb6lHOVSOArwAPSrtVE+aPCliNfeDryVzAWxLSxfQpGzOf5ExQuoOI/QS4nWEJvgWcO0kyDxMbeW/RhYj77rICNdLxO9VuThvUuUP7Bd98nORjtkA4qQKPzdGsamcTAeC6g= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Nov 2016 16:09:35.3438 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0801MB1738 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Some kernel special fs could be mounted by userspace, let's show userspace mnt_id in those cases. Otherwise, I got: [~]# cat /proc/11299/fdinfo/3 pos: 0 flags: 02000002 mnt_id: 14 [~]# cat /proc/11299/mountinfo | grep '^14' [~]# ls -l /proc/11299/fd/3 lrwx------. 1 root root 64 Nov 7 18:30 /proc/11299/fd/3 -> /test-queue [~]# ls /dev/mqueue/ test-queue [~]# cat /proc/11299/mountinfo | grep mqueue 32 18 0:14 / /dev/mqueue rw,relatime shared:17 - mqueue mqueue rw,seclabel This happens because mqueue fs is mounted twice: - the first is kernel-internal mnt on init: kernel_init=>do_one_initcall=>init_mqueue_fs=>mq_init_ns=>vfs_kern_mount - the second time it's systemd's mount-unit: entry_SYSCALL_64_fastpath=>SyS_mount=>do_mount=>vfs_kern_mount For the purpose of userspace parsing, having in-kernel mnt_id is less useful then mnt_id of mount point: afterwards I'm able to see fs type, path, etc: [~]# cat /proc/11152/mountinfo | grep mqueue 32 18 0:14 / /dev/mqueue rw,relatime shared:18 - mqueue mqueue rw,seclabel [~]# cat /proc/11152/fdinfo/3 pos: 0 flags: 02000002 mnt_id: 32 On a bad side - if we've no userspace mount, we still can't tell a thing about opened fd.. Cc: Al Viro Cc: Andrey Vagin Cc: "Eric W. Biederman" Cc: Rob Landley Signed-off-by: Dmitry Safonov --- fs/proc/fd.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/fs/proc/fd.c b/fs/proc/fd.c index d21dafef3102..bfa8699bcd8e 100644 --- a/fs/proc/fd.c +++ b/fs/proc/fd.c @@ -9,6 +9,7 @@ #include #include #include +#include #include @@ -19,9 +20,10 @@ static int seq_show(struct seq_file *m, void *v) { struct files_struct *files = NULL; - int f_flags = 0, ret = -ENOENT; + int f_flags = 0, ret = -ENOENT, mnt_id = 0; struct file *file = NULL; struct task_struct *task; + struct mount *mount; task = get_proc_task(m->private); if (!task) @@ -52,9 +54,25 @@ static int seq_show(struct seq_file *m, void *v) if (ret) return ret; + mount = real_mount(file->f_path.mnt); + if (mount->mnt_ns == MNT_NS_INTERNAL) { + struct mount *mnt; + + lock_mount_hash(); + list_for_each_entry(mnt, &mount->mnt_instance, mnt_instance) { + if (current->nsproxy->mnt_ns == mnt->mnt_ns) { + mnt_id = mnt->mnt_id; + break; + } + } + unlock_mount_hash(); + } + + if (mnt_id == 0) + mnt_id = mount->mnt_id; + seq_printf(m, "pos:\t%lli\nflags:\t0%o\nmnt_id:\t%i\n", - (long long)file->f_pos, f_flags, - real_mount(file->f_path.mnt)->mnt_id); + (long long)file->f_pos, f_flags, mnt_id); show_fd_locks(m, file, files); if (seq_has_overflowed(m)) -- 2.10.2