Received: by 2002:a25:b794:0:0:0:0:0 with SMTP id n20csp2746760ybh; Mon, 5 Aug 2019 06:13:18 -0700 (PDT) X-Google-Smtp-Source: APXvYqyTLmE+ZfFbHVS4HpyDsIwQyeYX7kshNzgi/5YRE0hbgXZfvgfHk3l+hIKrRkDM0P7IPtv6 X-Received: by 2002:a17:902:b48c:: with SMTP id y12mr109211417plr.202.1565010798038; Mon, 05 Aug 2019 06:13:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565010798; cv=none; d=google.com; s=arc-20160816; b=wbdBRxgCj5PRUx8TlDiH37eSpy7Mh16vV5bExaLisrkUUc2fXEVtad2GdGUOMfQKKS 1QDkcFbXb2iZCc6H35urzbCY61nheEcqkPn8bd56P2lxXE8znVnK8XhzQpMZhL9BsJbt Hu53nWZpHe3dOjQTvsWOQmKQlvkOsi6nWdr0n3NHlfjFBKICXlRXRYHuIrMrtzJ/AUmx h7iwcHY7LXcrUd9lngfA96LsvGdwOT0ZF/meb2tCZmr7EfSM/TCpZcZp4dUK7CmCvssW M5TpziL9MEgB1p/G77RSWSH7w+TECpUTgW0W9t25R384MNz8J8mHOYE1+RDmBl/1soXy Xslg== 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:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=yeAogt5T9/nKaeXymq0tEzeQUWwcxpAYuAsFEFDbhwY=; b=swu/BnCOxeDfMprdOyQBl7xyXE9t8cKVKDRrrvy1GFhf/J2tnh6cF6DcB6DlG8gPiR YxpZ1dLTqgscYI3weI66e3jqXcVAJ3dqTI3FkbL4DcSRjrFdH9sdebu03VVcfEqL86IW VQEAr+OoyKyJdIy0bA1py9fwiSkuO6M3iLT4UQ7b5K2sSUzF+5LIB4CKEIAHt67h8YuP F3My9Y9LqYwZytIM0V8wSuqpJkONhqr1eWA8NdwHt53+ElWTlIKCAgZsvaqc1BzwAtdl zT3qpxeB3GUihxNktpfJyrHtyrWCWgs/c4jhNocNY9xr586Rp3wKBP0kbSimJp5c++ZJ 50QA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=pZeMFxRA; 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 r67si12852683pjb.19.2019.08.05.06.13.02; Mon, 05 Aug 2019 06:13:18 -0700 (PDT) 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; dkim=pass header.i=@kernel.org header.s=default header.b=pZeMFxRA; 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 S1729791AbfHENKt (ORCPT + 99 others); Mon, 5 Aug 2019 09:10:49 -0400 Received: from mail.kernel.org ([198.145.29.99]:49858 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729781AbfHENKs (ORCPT ); Mon, 5 Aug 2019 09:10:48 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id B22962173B; Mon, 5 Aug 2019 13:10:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1565010647; bh=ObF09PEldkspaLUW+MIYiqOE8+Q42gtENzpbGpd5d0k=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pZeMFxRAw4cfbulJDXn6xL8Hvn7l/XiPypkONmtYssKy7zZq40RmybL3CW+Z1wz5j 7XTYXP/2vrqT/wtKAvrW58y1/7Yi+ejhPn9rSliHoKojDVSsNCPpKSbGzGHnJNnBBX wqvPB+51bh1oiyBuOvFtzoAwrZED+QCkad5SZlBI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Jeff Layton , "Yan, Zheng" , Ilya Dryomov , Sasha Levin Subject: [PATCH 4.19 19/74] ceph: return -ERANGE if virtual xattr value didnt fit in buffer Date: Mon, 5 Aug 2019 15:02:32 +0200 Message-Id: <20190805124937.343935663@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190805124935.819068648@linuxfoundation.org> References: <20190805124935.819068648@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [ Upstream commit 3b421018f48c482bdc9650f894aa1747cf90e51d ] The getxattr manpage states that we should return ERANGE if the destination buffer size is too small to hold the value. ceph_vxattrcb_layout does this internally, but we should be doing this for all vxattrs. Fix the only caller of getxattr_cb to check the returned size against the buffer length and return -ERANGE if it doesn't fit. Drop the same check in ceph_vxattrcb_layout and just rely on the caller to handle it. Signed-off-by: Jeff Layton Reviewed-by: "Yan, Zheng" Acked-by: Ilya Dryomov Signed-off-by: Ilya Dryomov Signed-off-by: Sasha Levin --- fs/ceph/xattr.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/fs/ceph/xattr.c b/fs/ceph/xattr.c index 5cc8b94f82069..0a2d4898ee163 100644 --- a/fs/ceph/xattr.c +++ b/fs/ceph/xattr.c @@ -79,7 +79,7 @@ static size_t ceph_vxattrcb_layout(struct ceph_inode_info *ci, char *val, const char *ns_field = " pool_namespace="; char buf[128]; size_t len, total_len = 0; - int ret; + ssize_t ret; pool_ns = ceph_try_get_string(ci->i_layout.pool_ns); @@ -103,11 +103,8 @@ static size_t ceph_vxattrcb_layout(struct ceph_inode_info *ci, char *val, if (pool_ns) total_len += strlen(ns_field) + pool_ns->len; - if (!size) { - ret = total_len; - } else if (total_len > size) { - ret = -ERANGE; - } else { + ret = total_len; + if (size >= total_len) { memcpy(val, buf, len); ret = len; if (pool_name) { @@ -817,8 +814,11 @@ ssize_t __ceph_getxattr(struct inode *inode, const char *name, void *value, if (err) return err; err = -ENODATA; - if (!(vxattr->exists_cb && !vxattr->exists_cb(ci))) + if (!(vxattr->exists_cb && !vxattr->exists_cb(ci))) { err = vxattr->getxattr_cb(ci, value, size); + if (size && size < err) + err = -ERANGE; + } return err; } -- 2.20.1