Received: by 10.223.176.5 with SMTP id f5csp3705093wra; Mon, 29 Jan 2018 18:05:07 -0800 (PST) X-Google-Smtp-Source: AH8x226Gryq8zYAatnVxJJ+Tv+WXok1Dunz3k42g9EP905d8l/N5UZd8F1/laNvsmUhYv7rQe/7C X-Received: by 2002:a17:902:46:: with SMTP id 64-v6mr23946682pla.341.1517277907757; Mon, 29 Jan 2018 18:05:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517277907; cv=none; d=google.com; s=arc-20160816; b=Ok/AM8JhWBprhdoEITp/qYXzTITK5SP39foX1unrDHbZ+5/2006TWZFzGUjEEfswNe gYP8nFRx95w8989RV4vV6EZn6g09hveBBX7xWZyiFgyJbnm2ltYe6f+jI/EXNU1Ami+S jdWuhTEMCC3sP7u5UDbWnMJVZIIcETOl7QqWCYfyrQNxFG437AUtFhG2I7oVWpXHEvB0 ZZn6C3ZP6BQEqxbYeMk0qaeBnRFpSNbLM1NlDtbOeq3TWU89Zh7thQMJ9uBbX2INJHGi 5oIcgzsravPlVNQtXmEG8wnk8So5yGXzeEvMxiPAnFYCIEmyxhZiqsUPHNlcng3AUVSB o4lg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :arc-authentication-results; bh=BQQ28eZGdZ9gretz1/8qbZJs0oqkQE83mML8tDimDpg=; b=bVLg4PwHer4WGFiBbbPUin9BuQkA9YfkND4a5AwgQvUetfvtR0HQAs5S3bzdm2/C2i sJtkm/vCM0Eru7v1ambofsJZF4LzlwQ+u8jG8PgoLeaB7MXuxzIouIP6KYXbqdDSjSQc yzw56VtVM52AK+oDwpm7qVq1KnAyhf5Ljga5kg+CKujs5vAu1dohovpd+kVzw+QbY2wJ onGv/nyeA+0bnsgmBycolz9/njAnmjBoYy80WrwIWyJ2gqNia9ajY15IBAfqit1F7QkB iEWe5NV2YVvM525/6aKRL+lC14BgUbR6ovjTVVnlVGWVYikfNjEPmyHnMq0s7a++hD5s Rtfg== 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 u7-v6si130719plq.120.2018.01.29.18.04.52; Mon, 29 Jan 2018 18:05:07 -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 S1752378AbeA3CE1 convert rfc822-to-8bit (ORCPT + 99 others); Mon, 29 Jan 2018 21:04:27 -0500 Received: from mga03.intel.com ([134.134.136.65]:22913 "EHLO mga03.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752076AbeA3CE0 (ORCPT ); Mon, 29 Jan 2018 21:04:26 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Jan 2018 18:04:25 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,433,1511856000"; d="scan'208";a="14024562" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga008.jf.intel.com with ESMTP; 29 Jan 2018 18:04:25 -0800 Received: from fmsmsx116.amr.corp.intel.com (10.18.116.20) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 29 Jan 2018 18:04:25 -0800 Received: from FMSMSX109.amr.corp.intel.com ([169.254.15.91]) by fmsmsx116.amr.corp.intel.com ([169.254.2.104]) with mapi id 14.03.0319.002; Mon, 29 Jan 2018 18:04:24 -0800 From: "Dilger, Andreas" To: Sven Dziadek , James Simmons CC: Greg Kroah-Hartman , "Drokin, Oleg" , lkml , "devel@driverdev.osuosl.org" , lustre-devel , "Eremin, Dmitry" Subject: Re: [PATCH] staging: lustre: llite: replace variable length array Thread-Topic: [PATCH] staging: lustre: llite: replace variable length array Thread-Index: AQHTl7fMXdPdP1SKdUmPlI+8F1FWGqOMM/iA Date: Tue, 30 Jan 2018 02:04:23 +0000 Message-ID: References: <20180127214228.26986-1-sven.dziadek@gmx.de> In-Reply-To: <20180127214228.26986-1-sven.dziadek@gmx.de> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.254.105.141] Content-Type: text/plain; charset="us-ascii" Content-ID: <62DA445337F6884CB72B0502E5804D65@intel.com> Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. James, I thought you had a patch for this to use kasprintf() instead of the on-stack "fullname" declaration? Cheers, Andreas > 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 > Cheers, Andreas -- Andreas Dilger Lustre Principal Architect Intel Corporation