Received: by 10.223.176.5 with SMTP id f5csp1409272wra; Sun, 4 Feb 2018 03:26:45 -0800 (PST) X-Google-Smtp-Source: AH8x224YVbEtq76vQhZ0UZYI2xxCUAZiJ54Amg14glUDgZBxFb/97RnVPBeayQrmQVNRXjN0L2s9 X-Received: by 10.101.80.75 with SMTP id k11mr24460934pgo.451.1517743605579; Sun, 04 Feb 2018 03:26:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517743605; cv=none; d=google.com; s=arc-20160816; b=nCdOTtN1CnSGzqXqeMPfBS432N4Z2j2tFB3An2GD2Kj3djnTfsoDdErJ4ucnq1GdYp a5RuVtjfGN+EwBOJPHWklVOy0b6HMQ3t/ZZaMZjbhMq9PpdVFYaKxoF67y4SR9uSc1XH SEMlFZneG98AI7sisy1XVMdyDgiwBnNp9k3miQ/SkcGwMuaypIq39f4mAGw3+5s7TEoT 5UNQHOV8DdVauTV4RSY+8okB6isxt3Ds5R+j0ttTbIIYttQCEmUNkSaPJn++8Wsg5Mbv eH4Q1eP3lV0xbMy6mVFz+huPLJdi6pat//PxA8/E1MQ7I0plGdYBFiV1LUutzkZ2ha3H womg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:arc-authentication-results; bh=pZyC3ISFD7ApGYzl+1stgYJoL/iCA0IIhbcVk6VHbJA=; b=V15G2Lm+qdOBUFjCz0XxdVHVrB+qxcXT0Vss7p8JIhGrGBHSmllGeRTQ4k29UZ2AJK q1Q6vu4CXmWyrqlidn3XnRkPbbKj/mdhhu+azJ3qKokAaS3xwYhw5Url2/0wgwu0WRwE kJ6+9cSNxu66LaajNh8OsCQfVITfv/Nllwjs0HNnZJSgoCpbm/GYAhG7L+KLVXzZIBje Vprr+l0RJvn0NLUIdF7lZA9nE011E/7umVN3IRgegXix3lMjcy/XfDfFjtq3LhyzVa+k HUsp6heq13nOvMrw4n4dOnTHGmOSwejQktqcxzYV4gEvl9w8rs/On/bl+HkHBF7n02dU Delg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h12-v6si3205222plt.241.2018.02.04.03.26.31; Sun, 04 Feb 2018 03:26:45 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751960AbeBDLYi (ORCPT + 99 others); Sun, 4 Feb 2018 06:24:38 -0500 Received: from mout.gmx.net ([212.227.15.18]:49515 "EHLO mout.gmx.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751853AbeBDLYe (ORCPT ); Sun, 4 Feb 2018 06:24:34 -0500 Received: from [192.168.10.110] ([109.104.53.165]) by mail.gmx.com (mrgmx001 [212.227.17.190]) with ESMTPSA (Nemesis) id 0Mg3Vt-1eLPnJ2dFd-00NVNm; Sun, 04 Feb 2018 12:24:08 +0100 Subject: Re: [PATCH] staging: lustre: llite: replace variable length array To: "Dilger, Andreas" , James Simmons Cc: Greg Kroah-Hartman , "Drokin, Oleg" , lkml , "devel@driverdev.osuosl.org" , lustre-devel , "Eremin, Dmitry" References: <20180127214228.26986-1-sven.dziadek@gmx.de> From: Sven Dziadek Message-ID: <58963c7f-139c-1156-0179-13decf0bcddf@gmx.de> Date: Sun, 4 Feb 2018 12:24:05 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Language: en-US Content-Transfer-Encoding: 8bit X-Provags-ID: V03:K0:SnASyH58fo+TchvXOPqbFreqJ9wxIEFaZQ/qW6HWv0UEwZI42ew 1PhE2s33b/PUE2e7C5/4pewFRDSvfeQlLC0s5x3ZrY4dyY9cj+71spkxyJ4tpYIevRC4u9g NFV3xGr9twLjKCddm+mWsWNZSckosYyDLVMfNWL9eDXHlYkf7E7GR1mae98xhhzsloO6nDF +pkkdnHRoq+Amd+zkmHbA== X-UI-Out-Filterresults: notjunk:1;V01:K0:55rM2CIx/7Y=:bQgnZhUdLH0qEem1qmhMM5 3fbPiB/agh9bJkLOe4a0ChWa5ysXF1ORKDQ4t6sJyKMmzfb1rNuIE1HnaBcts2re53C8cX1qz Gz0xRHALTE0Hu7AgvHF2ZNSPEVltlBI9mGpBSSKBo/Ke9t5fg9zPqz5tKNAByJboTyyXhz44o wTeAqwKJ4GR5/EQdjhiwkc0ZsfC5KdlSYZpmJRW61E5AW1jm9JCoKjxuh+NPggHrKMD+M2pEv bcyWJ2N+yoaDpVF0zPKwBmCy5YbFMkvR/KwEFMAQeQRNE8nmnuwxse+OqZ/HWS6uhuX6wLW/3 JVd8mG53sSmj5YZ9QOhfvkBjvLlt6gL964eXfpyz1kTOmrDo4QyHGucNqNHUCXwm0NC6h7P4Z yxghYG1tgMYSTZ6z9WD/IJVK3kUS12ngrdFvIfz3cZ8+z79jH8BZ9eSfBvO9WHM24VYgPsGSf rpUh3Hnlf8HMoCSsgm4EUm9PAhWWbII2lEqolHBrdQn9tZc4wLACGZH1LdtPe6KnZk8vFOczN zItSrV5Eu8px6pYwR6DroiCa+sp0ls/HeMJdJd6lvi1jia3MYopHl8BxPIa7fDgg77gRLhbcu xuNnR/ob6VwuXOq+AQUnJ8pPPEHg0tW8EghQpEqo2sACLLpSf73TvwwWggzu7cxDXUKsmeWO1 ANrZTc6pHnMsBQCWeuSLL6ydxi0b9RBH0uoo7V2YfcFjNff0cs870wDcvrXOgcHFDSTMknlqS 4mKOeROfRk4blU0cz9H8SM8XztvMBZoDqDZEI1pAkOT1BQpSqbRgwzIBwiY4T2IdmWYI/dfRu ijTLhm+AwIRTL+SwqoiC8kDb1+dRrB8Tc7rI53xcvFVzG5iLlQ= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 01/30/2018 03:04 AM, Dilger, Andreas wrote: > On Jan 27, 2018, at 14:42, Sven Dziadek wrote: >> >> The functionality of the removed variable length array is already >> implemented by the function xattr_full_name in fs/xattr.c >> >> This fixes the sparse warning: >> warning: Variable length array is used. >> >> Signed-off-by: Sven Dziadek >> --- >> drivers/staging/lustre/lustre/llite/xattr.c | 12 ++++-------- >> 1 file changed, 4 insertions(+), 8 deletions(-) >> >> diff --git a/drivers/staging/lustre/lustre/llite/xattr.c b/drivers/staging/lustre/lustre/llite/xattr.c >> index 532384c91447..4fd28213c6a1 100644 >> --- a/drivers/staging/lustre/lustre/llite/xattr.c >> +++ b/drivers/staging/lustre/lustre/llite/xattr.c >> @@ -87,7 +87,6 @@ ll_xattr_set_common(const struct xattr_handler *handler, >> const char *name, const void *value, size_t size, >> int flags) >> { >> - char fullname[strlen(handler->prefix) + strlen(name) + 1]; >> struct ll_sb_info *sbi = ll_i2sbi(inode); >> struct ptlrpc_request *req = NULL; >> const char *pv = value; >> @@ -141,9 +140,8 @@ ll_xattr_set_common(const struct xattr_handler *handler, >> return -EPERM; >> } >> >> - sprintf(fullname, "%s%s\n", handler->prefix, name); >> - rc = md_setxattr(sbi->ll_md_exp, ll_inode2fid(inode), >> - valid, fullname, pv, size, 0, flags, >> + rc = md_setxattr(sbi->ll_md_exp, ll_inode2fid(inode), valid, >> + xattr_full_name(handler, name), pv, size, 0, flags, >> ll_i2suppgid(inode), &req); > > Hi Sven, > thanks for the patch. > > Looking at the details of "xattr_full_name()", this seems quite risky. This > is essentially returning the pointer _before_ "name" on the assumption that > it contains the full "prefix.name" string. IMHO, that is not necessarily a > safe assumption to make several layers down in the code. Thanks for your reply. And yeah, it feels strange, right. But it really looks like this is how the name and the prefix is handled in the xattr code. It seems this helper function has been introduced with commit e409de992e3ea (which also removes some fullname pointer) and indeed, fs/xattr.c splits the prefix and the name in xattr_resolve_name. So I still think the patch should be correct..? > James, I thought you had a patch for this to use kasprintf() instead of the > on-stack "fullname" declaration? Sorry for replying that late, I though James would maybe know if the above assumption is correct.. >> if (rc) { >> if (rc == -EOPNOTSUPP && handler->flags == XATTR_USER_T) { >> @@ -364,7 +362,6 @@ static int ll_xattr_get_common(const struct xattr_handler *handler, >> struct dentry *dentry, struct inode *inode, >> const char *name, void *buffer, size_t size) >> { >> - char fullname[strlen(handler->prefix) + strlen(name) + 1]; >> struct ll_sb_info *sbi = ll_i2sbi(inode); >> #ifdef CONFIG_FS_POSIX_ACL >> struct ll_inode_info *lli = ll_i2info(inode); >> @@ -411,9 +408,8 @@ static int ll_xattr_get_common(const struct xattr_handler *handler, >> if (handler->flags == XATTR_ACL_DEFAULT_T && !S_ISDIR(inode->i_mode)) >> return -ENODATA; >> #endif >> - sprintf(fullname, "%s%s\n", handler->prefix, name); >> - return ll_xattr_list(inode, fullname, handler->flags, buffer, size, >> - OBD_MD_FLXATTR); >> + return ll_xattr_list(inode, xattr_full_name(handler, name), >> + handler->flags, buffer, size, OBD_MD_FLXATTR); >> } >> >> static ssize_t ll_getxattr_lov(struct inode *inode, void *buf, size_t buf_size) >> -- >> 2.11.0 >>