From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932178AbdJYAZg (ORCPT ); Tue, 24 Oct 2017 20:25:36 -0400 Received: from mail-db5eur01on0107.outbound.protection.outlook.com ([104.47.2.107]:8752 "EHLO EUR01-DB5-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751635AbdJYAZc (ORCPT ); Tue, 24 Oct 2017 20:25:32 -0400 Date: Tue, 24 Oct 2017 17:25:16 -0700 From: Andrei Vagin To: Cyrill Gorcunov Cc: NETDEV , LKML , Andrey Vagin , "David S. Miller" , Pavel Emelyanov Subject: Re: [RFC] net/unix_diag: Provide UDIAG_SHOW_VFS2 attribute to fetch complete inode number Message-ID: <20171025002509.GA12438@outlook.office365.com> References: <20171024214814.GO5343@uranus> MIME-Version: 1.0 Content-Type: text/plain; charset=koi8-r Content-Disposition: inline In-Reply-To: <20171024214814.GO5343@uranus> User-Agent: Mutt/1.8.3 (2017-05-23) X-Originating-IP: [65.152.152.74] X-ClientProxiedBy: CY4PR20CA0008.namprd20.prod.outlook.com (2603:10b6:903:98::18) To VI1PR08MB0750.eurprd08.prod.outlook.com (2a01:111:e400:5a04::12) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ee1b1020-4127-4002-4d04-08d51b3ee4b9 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(4534020)(4602075)(4627075)(201703031133081)(201702281549075)(2017052603234);SRVR:VI1PR08MB0750; X-Microsoft-Exchange-Diagnostics: 1;VI1PR08MB0750;3:TSye/fgQhSzAdszS0YZ2Ok+yZt+dVypwNwTYKeUkHTF4nNsnVjbtV/FBnK5+9ojUFGGm9TpSNHhGlEKi/6XKdCdlaLOjwrCoS+63uma2GI0t7OirTMVh2u0gYvQ0gEQOMtS8Jm0JIGsTRhqGw412/fhHYUAGzeOAFtHupm1W9d0o4OvU6j9SvZKOrcP5fP3PXQ3BjQuKzCl2ZpKFh15RRakbFiyQXTCJUFZnALaBWHM+la11P3huPyXomnkHQhEo;25:LqlWmHvYDvCe1OlBv2tFHkMLB5hRnkV/QQU/0kRjgzbRYCivj7UloXow+1a1ZkXvfiKcetYkE4VYZrKBqVBiYg6mB+QAbg4W3n5NFOacS0BM76MHLr9r4DU+SYDbposb5A6cGJAHAClESHiFDqJF3yCR7W6qM8qTKhKDxJSeGspDspT5wJsKz2C/P6eLafz7ggcUjSZSFqXB5I6j+9TYJ4wFcOGUQuTLwqGgcoc3nfRvP1ltfmYdsIySa40egIK/nhXYIEKn3fT2Ffh/MIkDioPHalnztmUyzyNnFScrIC0XG40cUCnSZkxjS2nUuoq6x2wjX+kIN/qX4kVlSf2PqSSekA8ZWYr0Q/QWWk/QiDM=;31:zsrHlUrXmcBuIujwX723sVT8UzF4w5pPqixLFxmavZV2PtKXR1mBdrnYqQd4YUf0EswiQXzM3a8pxIl9O1VG63mjX0tIAaAcrif5ROnWROIfzBiPkMCUSHlRZ/CM2ALZg3q3tfJa9qJTLkDiH9Uvk0Wmf6jReqNuYqLuk6iRdJ2WbMbSyPYTeHvVRO//XkKQoj0Hg2S7I19Cf9tVF60mavWwFnZPdPXZPHYWzeKo/Ac= X-MS-TrafficTypeDiagnostic: VI1PR08MB0750: Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=avagin@virtuozzo.com; X-Microsoft-Exchange-Diagnostics: 1;VI1PR08MB0750;20:s0x0RmnGjHPWPGvW1nVKGnyA42JwlBJvqolnZOO/7WKqTx4vqvkkcP7gdvyvEAGdpbQXiouEK4Hvf+ZpirUExJJ1Qd0ieVd1GoMY0E34lFhfcaVWIWdFMs7D4n/HkGiDl/UxMK/ueZ68yCays09j1SCS6PcxumxpneILilR6S5CALBWsoObRPESfeJfgFhMVzZupkNxMh4mjwgPRzPdq+xT8n/qWwKL1a94urozDjZzPm+7oHbxPCZ/rls2fGIOIXfKpY6cmq7gmzN6BXkPgEyHbVZz5WLydpgJgm96AHAYXqxSQbce5MEXhURqb68axN+XcGYXZ/qJ63SJ6Im0L5P03b6bhnoqJr+t+iZ/w85rAwIXWYf+4+Evwg/tRvjPZ0/APSBfX2+D/wxoiQK28pZ+TaOrilfJe9UFsidflR54=;4:BWP0aRwSVkFgPN8mu4O009muXz9pJqnbtSyNk08CEognTh58qPpfGyju95/I8xIY0MvpXSrHmZ9en91mxVBCzIUpUGisbHnLlvDmORRIVWlNY9AW4f7SnXn6h2VOrdO4KQBy22eim6JotknkSrpNBugHN4ka+Tb9FL45rSsdOeBTpA7Uw7FwIkaKOLuCTWbSm1IHXEWlmM5Eq6SPVRwkkWA5SzZZ9gH0WTzh/ovTXtC3jnlzgodIQ+7ePvNtCZanlGM8vuy+ZPQCfUip/fCvvzGQTZXhx2/yST4OtBV/jGwhUQaGOy8XoN8p6rC4IeRd X-Exchange-Antispam-Report-Test: UriScan:(20558992708506); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(3231020)(10201501046)(100000703101)(100105400095)(6041248)(20161123562025)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:VI1PR08MB0750;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:VI1PR08MB0750; X-Forefront-PRVS: 0471B73328 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(6009001)(346002)(376002)(24454002)(189002)(199003)(83506002)(81166006)(53416004)(50466002)(5660300001)(69596002)(16526018)(6666003)(6916009)(53936002)(66066001)(8936002)(189998001)(33656002)(2950100002)(81156014)(478600001)(7736002)(316002)(97736004)(58126008)(2906002)(8676002)(25786009)(39060400002)(6116002)(3846002)(76176999)(305945005)(23686003)(86362001)(1411001)(16586007)(101416001)(106356001)(54356999)(55016002)(50986999)(47776003)(1076002)(68736007)(229853002)(107886003)(6506006)(105586002)(6246003)(9686003)(54906003)(4326008)(18370500001);DIR:OUT;SFP:1102;SCL:1;SRVR:VI1PR08MB0750;H:outlook.office365.com;FPR:;SPF:None;PTR:InfoNoRecords;MX:1;A:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?koi8-r?Q?1;VI1PR08MB0750;23:Prb9M90fKhRTz3vlso6c0UGlPQRprj3/xUIsroIyS+n?= =?koi8-r?Q?p1lRenpDmd3KmFrxhjV2NRYA0abK6JL6RdTFgUYFD97WbaDCrfR8jzFnH3INFS?= =?koi8-r?Q?jGrO+FkVanxuVfyx2lKajOgk5aVA/08gOl2I7EFS50I22rU2Ir41BxiNTvt9zN?= =?koi8-r?Q?CHpL2UYkRMGRoEUPrsQJP2jjuO+m56kwjRx1Ne6lueW+6JFOkrqMHlmqX7z9Ae?= =?koi8-r?Q?lx5UtvqXd6+xJjxyNj9vwnM/80yi5nihaw4y5dtvb9sQsIm+CFG3HjJFcIuRuL?= =?koi8-r?Q?JSiuxWdW1yWtfkl6f170C+BytZOneuVlGKBSLJT8znsPNuurxy1EQZIt4IqQIH?= =?koi8-r?Q?GY/YRkCVFLijmYuPPOxEbMKUT/aTzmzvFgCV/5IWckdm1SJ8VLnLbt7UGgejYS?= =?koi8-r?Q?UoXjZP0APQZSS4Pyp6Y5ypg9Gb6GhuDVvzSvmBmknfxm5oCXxO1gidJFfGgupD?= =?koi8-r?Q?+QrEahd1NwkuLEADB/1uOlfn57NOW8RDoWgQByUbEEtJ6uxCX9n0XEjCvDTfoz?= =?koi8-r?Q?aLhp3zPUy93DbbhMxxoSzrB0gyocvZvI13ulqUijol+BRdUvaLT74ml3vZWUrW?= =?koi8-r?Q?Hr4A3cq2Q/QPx4WfZqWU6Ygixs4Bfi0JgmXWe+AqXaQWE6cdlV7+aGR71nlde8?= =?koi8-r?Q?S880S234oowMKgTQjju8r6JZ71H8QStIHoVNYv+QcG9NJcl1QtowlRhx2rDkd3?= =?koi8-r?Q?8729mba3oxCyk7r2ws+ZnDUP4VToLPUD0Xa0sWM+O5WJs5OBZXTp+DDC32N1QL?= =?koi8-r?Q?A/uBcP4pCVwqyn+gZKfd/HnXOLLTopeaDvSwu/9ksxoD/vfPN1WSEcLl34dy3t?= =?koi8-r?Q?TWFcQ+WDNXKjfljh8lZt/zerTt+0eXGMctXjx5z8lmQYyDHctjjFYoi1tRIFRx?= =?koi8-r?Q?sor/xYNJ9wYUToGvg6Ow4PZ6wfiH60CDHPi25y3u6cFBexxV5zdxScOxx7TuYf?= =?koi8-r?Q?RrZZJpGNvTw0YOAOwftt8pzgRgFD3dKc+OQo53DuNobnJafM2QPgnPMyA5ye/5?= =?koi8-r?Q?wqdXYiZ5jki5uKZB/NtIkkYwv464sX/4275UZ8sy9RDvBCesYILEX5FXXxD/lv?= =?koi8-r?Q?VrVNjzI4dg/slZfByV4UiA4vwDaOi0GBNLzo7O2DtLcRwK07a4Rh0vxACSzJ4a?= =?koi8-r?Q?TD8T0+jNWx2a1nJm6E6DFhlm21lSro0Hu9BRdioKCGSmeJ8cQgeFkyTMpeb+uM?= =?koi8-r?Q?tw+m9dL6qaVMKrAQDFa1/JntFoBwuZrpsClWjtVhoQTVcVCk8aSZKZ7RdrCd8R?= =?koi8-r?Q?HRAwIF3rKS2gBN0EvoA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR08MB0750;6:BT1PT2LGA3eble2bqotLX/6s92mvp79YnlsIg8Q19EHq33tEnrmP5k5AqDXYd5mAR1ZK/hA5CjcCMPfug+Uji1mIk2NsP9e6yQ8KK/Ob/oaPXojbwSFGE5MnUFoL/pJSqYmdq0igUWsEySPhagO3bGZ60NwlMg+Wwddlfv9NBj4CRNRMYpTtwuLz9Q5VXuIRmWZFDoTEIk5bZ5GsKDiakY7YW1fZQmgRXfBOkNogwy3TrLVtEOTO5WBZLGvjuKyfrD/8toe77wcuP7CuPuS1vl0w+c5zaFFSZOLc2I1yDZ3ea4sevrGjHJ8UBzEUkfOU/+XsnS1AtpWo0wiByYRnQ7vxwWZuclY8Zext3fNsuG8=;5:AokkibSe6VGtnTvsH7UHBiSyGDYaR64WWAv9VsDv1ijFYQEPEwpODWcpc9RHUd5hWA2zU5IpbK+PDB+EZSqTBe3kohbfM43wRJtKkJd/M9b9WT8o1KnW/VQN8DrguGBAtctETkJBpGxycsNhoP0CWBws9JxOp2Yqe37lDUZ/yAs=;24:bQnioe8IJawJhX7unJUmYuDv+S3kal8psKyxGRV+mvA8rIEIcrpBXMXVrJGRvV7tHqJ+Nj6WHGjhwqAHy+6IWT9XiQt38OZdF0db7NNkUnU=;7:VbuB28t2cWAY9Qri95VmLErnT7oiTksRjUvoxQ5y69VBw1TsSg+H5ryz5ZHSKbeZxGfrW8sVellLJ6pPz5hGpv872r2TZq3ZZmDUK0JS7jdkj8gQ5Ohh6+Jj974AiWY9hDxGEpWI4Mn+46KfEu6Rg44hhpYyMQzPev360ksbjBAKMGyQntV6sN6aSHfSKiEzrx4f/zdvJNMN0I7j8qDC2H2M26Ulc2VqLBFiHTgtRgUxk/Zx1xSlAbQO6Zwktc65 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR08MB0750;20:bVjOMGipNka2sZtLSOkUhZGfKcy4eh/JOd3UuMaYOPBHFYdEgrnBfdpTF0osGAXGelrTDvfg8FcUUDNxxt2L7WsQmTmwfwM6bHP+tJgxNbSo0r0AnElS5C66VkUWVLF4COh1nepwhMsGZijhsZ4dztVj2FferFp9jdh50tJn3qQ= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Oct 2017 00:25:26.8157 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ee1b1020-4127-4002-4d04-08d51b3ee4b9 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB0750 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Wed, Oct 25, 2017 at 12:48:14AM +0300, Cyrill Gorcunov wrote: > Currently unix_diag_vfs structure reports unix socket inode > as u32 value which of course doesn't fit to ino_t type and BTW: As far as I understand, it is not a problem right now, because get_next_ino returns int. And I'm agree that it maybe a problem in a future and it is better to be ready. > the number may be trimmed. Lets rather deprecate old UDIAG_SHOW_VFS > interface and provide UDIAG_SHOW_VFS2 (with one field "__zero" reserved > which we could extend in future). There is one more place where we return ino as u32: static int sk_diag_dump_peer(struct sock *sk, struct sk_buff *nlskb) .... return nla_put_u32(nlskb, UNIX_DIAG_PEER, ino); > > CC: Andrey Vagin > CC: David S. Miller > CC: Pavel Emelyanov > Signed-off-by: Cyrill Gorcunov > --- > > I build-tested it only thus not for inclusion yet, but rather > to discuss if there some better way to handle this potential > problem. > > include/uapi/linux/unix_diag.h | 8 ++++++++ > net/unix/diag.c | 25 ++++++++++++++++--------- > 2 files changed, 24 insertions(+), 9 deletions(-) > > Index: linux-ml.git/include/uapi/linux/unix_diag.h > =================================================================== > --- linux-ml.git.orig/include/uapi/linux/unix_diag.h > +++ linux-ml.git/include/uapi/linux/unix_diag.h > @@ -19,6 +19,7 @@ struct unix_diag_req { > #define UDIAG_SHOW_ICONS 0x00000008 /* show pending connections */ > #define UDIAG_SHOW_RQLEN 0x00000010 /* show skb receive queue len */ > #define UDIAG_SHOW_MEMINFO 0x00000020 /* show memory info of a socket */ > +#define UDIAG_SHOW_VFS2 0x00000040 /* show VFS inode info v2 */ > > struct unix_diag_msg { > __u8 udiag_family; > @@ -39,6 +40,7 @@ enum { > UNIX_DIAG_RQLEN, > UNIX_DIAG_MEMINFO, > UNIX_DIAG_SHUTDOWN, > + UNIX_DIAG_VFS2, > > __UNIX_DIAG_MAX, > }; > @@ -50,6 +52,12 @@ struct unix_diag_vfs { > __u32 udiag_vfs_dev; > }; > > +struct unix_diag_vfs2 { > + __u64 udiag_vfs_ino; > + __u32 udiag_vfs_dev; > + __u32 __zero; /* Reserve for future use */ How can a user understand whether this field is used or not? Each netlink attribute has its size in a header. Any attribute can be extended, and users can understand which fields are filled by a size of an attribute. > +}; > + > struct unix_diag_rqlen { > __u32 udiag_rqueue; > __u32 udiag_wqueue; > Index: linux-ml.git/net/unix/diag.c > =================================================================== > --- linux-ml.git.orig/net/unix/diag.c > +++ linux-ml.git/net/unix/diag.c > @@ -19,17 +19,24 @@ static int sk_diag_dump_name(struct sock > addr->name->sun_path); > } > > -static int sk_diag_dump_vfs(struct sock *sk, struct sk_buff *nlskb) > +static int sk_diag_dump_vfs(struct sock *sk, struct sk_buff *nlskb, unsigned int flags) > { > struct dentry *dentry = unix_sk(sk)->path.dentry; > > if (dentry) { > - struct unix_diag_vfs uv = { > - .udiag_vfs_ino = d_backing_inode(dentry)->i_ino, > - .udiag_vfs_dev = dentry->d_sb->s_dev, > - }; > - > - return nla_put(nlskb, UNIX_DIAG_VFS, sizeof(uv), &uv); > + if (flags & UDIAG_SHOW_VFS2) { > + struct unix_diag_vfs uv = { > + .udiag_vfs_ino = d_backing_inode(dentry)->i_ino, > + .udiag_vfs_dev = dentry->d_sb->s_dev, > + }; > + return nla_put(nlskb, UNIX_DIAG_VFS, sizeof(uv), &uv); > + } else { > + struct unix_diag_vfs2 uv = { > + .udiag_vfs_ino = d_backing_inode(dentry)->i_ino, > + .udiag_vfs_dev = dentry->d_sb->s_dev, > + }; > + return nla_put(nlskb, UDIAG_SHOW_VFS2, sizeof(uv), &uv); > + } > } > > return 0; > @@ -132,8 +139,8 @@ static int sk_diag_fill(struct sock *sk, > sk_diag_dump_name(sk, skb)) > goto out_nlmsg_trim; > > - if ((req->udiag_show & UDIAG_SHOW_VFS) && > - sk_diag_dump_vfs(sk, skb)) > + if ((req->udiag_show & (UDIAG_SHOW_VFS | UDIAG_SHOW_VFS2)) && > + sk_diag_dump_vfs(sk, skb, req->udiag_show)) > goto out_nlmsg_trim; > > if ((req->udiag_show & UDIAG_SHOW_PEER) &&