Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp1532043pxb; Thu, 28 Jan 2021 20:57:44 -0800 (PST) X-Google-Smtp-Source: ABdhPJy21JLPvkcDVdKV5Z/OXWpkrxsPU9mgo4OEEpeUAiyoIcqUv+FyAcAsq/itHWoxtKRBBnVV X-Received: by 2002:a05:6402:3122:: with SMTP id dd2mr3198258edb.262.1611896264521; Thu, 28 Jan 2021 20:57:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611896264; cv=none; d=google.com; s=arc-20160816; b=kDprZtoGFEHAVqkhXrd4C+fnRoGJHdWVK1qTdFeFam2KHdFUVpPq592PVqIWxU38z9 swb3qBtnWn3jSy3AgIg13Vl+XcThup38XnaTGm3AojKGJTr0UHhrfNDz+bf5+uzussJx ws4H55VgCjCQp/S1F6la6G6wmMgpmpM3w65vyBLqLPnTdP9fMJ0e0ORWSwlS6xetDInv HdgDI3plf410VZTNBzql5Vit7Lgw8VHCYOOdkQdavU7JZCrnwm3ZXBuzW1suPbH5WtoD EGHlK3DVq5VKR4xamvzaI2pLEHws2MXKQnux64uZXzvf/d7vQOFNWUPXg5Z4P7adJdZY a3Gg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=wfbbTjNfQS1LbaTBsuwmDY1te/Tbf+KMjs5axLHur/E=; b=xO4b0rU4shtQsxUMiZznTJN76Rgd8lkgopwLkbkL9xZ9q6Yi3vSbjRP9p4QNyUpSFw pLdqFaXl4CnhfztR67Zkrgz5Ohyvkh52twflDRBznNn1Qvmz3Au01gkfNV7P4li/IiFu 6AeFVle31G6QIlaTSN54lP2hqZyXf2mb3qHmUNiB/v/AgxZRsU38zvzJvjF7qeTt5/lV 5xQKS7i8uYfyqU0TemBH72YJvMbm8tJjpwfCci+I+iE11cNMFE/zUa0oUVhg0LK+Vdyt id1P6k6PYYMT5WD1vMo97uQZVBs5WvWgIZ+SG3fnPaYeBDwKwPdRvSa/HNkb1q2AHgjY Eq1Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@synology.com header.s=123 header.b=MvgukezE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=synology.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j23si4136055eje.347.2021.01.28.20.57.20; Thu, 28 Jan 2021 20:57:44 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@synology.com header.s=123 header.b=MvgukezE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=synology.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231966AbhA2E4B (ORCPT + 99 others); Thu, 28 Jan 2021 23:56:01 -0500 Received: from mail.synology.com ([211.23.38.101]:46528 "EHLO synology.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S231919AbhA2Ez7 (ORCPT ); Thu, 28 Jan 2021 23:55:59 -0500 Received: from localhost.localdomain (unknown [10.17.36.35]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by synology.com (Postfix) with ESMTPSA id 466EECE781CF; Fri, 29 Jan 2021 12:55:17 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synology.com; s=123; t=1611896117; bh=KR/d7f/IJiq7eFafCUwFZBsFyYlfdC/PGOHGOdEzuUM=; h=From:To:Cc:Subject:Date; b=MvgukezEm3wc6GEw9IV/Vzojnk/AFbjAMchAhV+2TLgifYWnrfkfgpSMeItOR1+Tu oPgGMild9oYvjwWBsO6CSnfqCI+N280mIb+gTCr0zBI7CkrQeOukdQdrjuascCLluM fpW+mAVOLmuDsE5wDo7GqoIB48IhAE2qSIHqRjXE= From: bingjingc To: viro@zeniv.linux.org.uk, jack@suse.com, jack@suse.cz, axboe@kernel.dk, linux-fsdevel@vger.kernel.org Cc: linux-kernel@vger.kernel.org, cccheng@synology.com, bingjingc@synology.com, robbieko@synology.com, willy@infradead.org, rdunlap@infradead.org, miklos@szeredi.hu Subject: [PATCH v3 3/3] udf: handle large user and group ID Date: Fri, 29 Jan 2021 12:55:02 +0800 Message-Id: <20210129045502.10546-1-bingjingc@synology.com> X-Mailer: git-send-email 2.23.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Synology-MCP-Status: no X-Synology-Spam-Flag: no X-Synology-Spam-Status: score=0, required 6, WHITELIST_FROM_ADDRESS 0 X-Synology-Virus-Status: no Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: BingJing Chang If uid or gid of mount options is larger than INT_MAX, udf_fill_super will return -EINVAL. The problem can be encountered by a domain user or reproduced via: mount -o loop,uid=2147483648 something-in-udf-format.iso /mnt This can be fixed as commit 233a01fa9c4c ("fuse: handle large user and group ID"). Reviewed-by: Robbie Ko Reviewed-by: Chung-Chiang Cheng Signed-off-by: BingJing Chang --- fs/udf/super.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/fs/udf/super.c b/fs/udf/super.c index d0df217..2f83c12 100644 --- a/fs/udf/super.c +++ b/fs/udf/super.c @@ -459,6 +459,7 @@ static int udf_parse_options(char *options, struct udf_options *uopt, { char *p; int option; + unsigned int uv; uopt->novrs = 0; uopt->session = 0xFFFFFFFF; @@ -508,17 +509,17 @@ static int udf_parse_options(char *options, struct udf_options *uopt, uopt->flags &= ~(1 << UDF_FLAG_USE_SHORT_AD); break; case Opt_gid: - if (match_int(args, &option)) + if (match_uint(args, &uv)) return 0; - uopt->gid = make_kgid(current_user_ns(), option); + uopt->gid = make_kgid(current_user_ns(), uv); if (!gid_valid(uopt->gid)) return 0; uopt->flags |= (1 << UDF_FLAG_GID_SET); break; case Opt_uid: - if (match_int(args, &option)) + if (match_uint(args, &uv)) return 0; - uopt->uid = make_kuid(current_user_ns(), option); + uopt->uid = make_kuid(current_user_ns(), uv); if (!uid_valid(uopt->uid)) return 0; uopt->flags |= (1 << UDF_FLAG_UID_SET); -- 2.7.4