Received: by 2002:a25:b794:0:0:0:0:0 with SMTP id n20csp2757441ybh; Mon, 5 Aug 2019 06:22:32 -0700 (PDT) X-Google-Smtp-Source: APXvYqyQC6kB2yQDT+gG+DjHv7/NGfkvm/STeL9c2tzWE90rjx0vw7Laa/jIrZktBOiXB9NFA9QX X-Received: by 2002:a17:90b:f0e:: with SMTP id br14mr18191648pjb.117.1565011352601; Mon, 05 Aug 2019 06:22:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1565011352; cv=none; d=google.com; s=arc-20160816; b=yiCfhoWrAZUAuZP3flNvKYmdUGTJD5Y76mWt8eE/ddL9zZ9btbPHPslomuMH0XjcOI uucCfYDguwrpQ47j0P6+X0sKHIP3u1dxtzCtKh1Jyfph90CbuUPmjgwFrSCUJ9P1hJa1 glFxQOjmVFpn8c2m2DXrk50XhyJFlgd0ZPZmQfRa7fKqi98fKOvGWbKAoKp19Pa4LrP1 QFu9WKy1+EH78uogU7JDEp8uancVdHnQLjIeqbQ/ZSOoAbv6bxNOUbN6Fmam1rVIBCHd i7nQa0Pfp6iv61Tz7SSs0mlYXos2X0ch4V0Y6bdYn9SQPPke7ysfpxvYQvNUGT1miQv8 Zt7g== 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=naSf3Cbb2lW/27WuMAO63KWk4jTPOtEYIE6anSt9mQM=; b=a9pEZkCmPo1IyRrvRKdS3P50eeps0iLxd9RNWwbJEBekmh+yzT2mZLgaqW+KiwQe3c Qcan3nLbN2xNwFRJ8flsg8v2J8gTAyHFfo8VWm5sQ2xScJHnEHX+KFw/5mgLK9W+dO6O UqlWEszNBUD87f/AgPLBdUycMOhmzPmbmJkrRDTIdOCLPq4uXJpuLr5T2IlbVsXZ8DPW HtYbC38VwomJkvGGoiJG3USnc3qe216UumdfgwFRp4VlZIJP/ztejo3oMbsNDTN82mC7 KgqLO9h7Qb+8aPLIxLJ8BCSIZpWcTS22G3hk1unb2Rlq5my9hUzDLipU6LKFFKfVpC96 9r1Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=yecyaKFU; 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 c12si14720565pgl.252.2019.08.05.06.22.17; Mon, 05 Aug 2019 06:22:32 -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=yecyaKFU; 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 S1730538AbfHENVc (ORCPT + 99 others); Mon, 5 Aug 2019 09:21:32 -0400 Received: from mail.kernel.org ([198.145.29.99]:57616 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730521AbfHENV0 (ORCPT ); Mon, 5 Aug 2019 09:21:26 -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 849BC20644; Mon, 5 Aug 2019 13:21:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1565011285; bh=/kzTnyloOZDoMV+K4jSpJHqoXv0Ymtku2Qm+4QA698Y=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=yecyaKFUQOmfQqYTBcdOMAA5IBwDv9v77ELtrl+nBhBj1BWp234HJWWTO2vkrrbN1 uvc+vdaPR7PhTBecagKEPYStt97qdvV1K8QF/R9EIsp76AVvaRRD/j2S+YOm070WP5 UWiJYZGBTFxpK0dH6rFw/4qkRryIDZa5Q2s5lKjY= 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 5.2 034/131] ceph: return -ERANGE if virtual xattr value didnt fit in buffer Date: Mon, 5 Aug 2019 15:02:01 +0200 Message-Id: <20190805124953.713040556@linuxfoundation.org> X-Mailer: git-send-email 2.22.0 In-Reply-To: <20190805124951.453337465@linuxfoundation.org> References: <20190805124951.453337465@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 0cc42c8879e9a..0619adbcbe14c 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) { @@ -835,8 +832,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