From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f45.google.com (mail-pj1-f45.google.com [209.85.216.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1F25937DAAC for ; Wed, 1 Jul 2026 17:22:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.45 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782926535; cv=none; b=WuB+R0wFxU0R1Vkivbs1xMkq3eFCIRq4m80lyujWzBHWfms3p/7zLdXC0QAgYEJYQvL6R+JMwh65Lv5f7C5dRZ9zpdbzBul6sGRXxpT0t+Rd8fdNrD5Kz4HdLSoqHCL0fSZHXWTfAgHTGryOfLBGRo4/oQAhEhVbaN9PeR0f5bo= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782926535; c=relaxed/simple; bh=YYa0Afa7V06maFkkZSocGh58SX1X5xPjvVoUHSbQtng=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=MNt+1b/iQB+Ps65SbUXy2vrLjOPvEG272Bi6fmKLoo8knmySGa1Bl9J2SUxKMqCrFL8Pjlnk7gYnpBjFPJDh3B6Tt4ekAeFxj/Ro3uOR+43o2OOg1FdBUUt5oao/iSIHi5Zl47DpQGWuG17rA3E2uao8vp4uq//RKnMQ7zHB/1Y= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=aFAtAiEn; arc=none smtp.client-ip=209.85.216.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="aFAtAiEn" Received: by mail-pj1-f45.google.com with SMTP id 98e67ed59e1d1-37fad5eca09so1522222a91.1 for ; Wed, 01 Jul 2026 10:22:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782926533; x=1783531333; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9Ti3ZCjdmjhvLeQB5pNokTmQHpasACJ+pmTKes+VtiM=; b=aFAtAiEnt24qbpvFiYvO0B4s1I5xDqnWnJZVdQaetdKF9ppz6ZkIIfLNMOv6CeLdS8 1Q/6yhj97YLzQdwLfLJqD1JEoxtja+HuGlL661yyqaXRJnY+WkKh04VEmD71Jbxzoafi ZUah1NCUyXVgWpSWPxc8HYeeYm+/u2sxtSwSlQ4+6EnwRPVHmoIOl8MNPnKnnJNQpGgt wSjwydvuurrnZkyIBR4RfuqaThquNlB8uyWmaZWKdAHBf1ifoDgaftLkr2/na31yz0Or gO2CJs/WZLL+YH9W4VGYe5F9bzdOXaynnB9ODa4FTNvuhzcD7e0YxxQyDWB9419iQlmO eVlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782926533; x=1783531333; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=9Ti3ZCjdmjhvLeQB5pNokTmQHpasACJ+pmTKes+VtiM=; b=XnpNx66zWakeGYVYylc1p//ANZVNkKiuO/ilQyTwJqwomhSfYPECUDgWtsA/JQFS1D i5ciqEGCw1e8JZaKh+/JMwGt3t+ku7dYxSi+Agr459n9R4TVtIlOx8+9ZbX3Gv07fJQ/ jGT7zediU2/XzC8loKEmL3x4+DgWhX17yEsDX//ikP/B4llEjXWrzk0b6K10xs5skjhC f8BRqFgiMCkcghbGIWkZAr+ow101E8KGxTnsM18LpBMn2b3QosmgKifMV8vx9ESCUh9z 8fALVbWpECT3uhIa0H8UpNdoHD9xWqybE0l2zS7gEoslFnhzroOkU6SVHp1WE93xtD30 5zYQ== X-Forwarded-Encrypted: i=1; AFNElJ+3Go5+CYXo42iIVn5XJC55u3ibnah5jrTqZAcjhUQ2V2wh+aO/YPRJxiZ63Lz5FxhFc6qJQlGz164tEHs=@vger.kernel.org X-Gm-Message-State: AOJu0YxroY7olLfEmBaP9zhPm2qCvVNrkZHZhiWHw0ZL7NSTm5NqFYCf 4ki3F9wuXw+uOpG/J0m3WRvDFD9cLunGBONKdns4o0hOuBKmRQQkaU7l X-Gm-Gg: AfdE7ckVagQjYQQr2xHP5bfZa7XcGo9zp+r5582wpWP15lg009pHj7H9eTYtyhVbB5a tFQCRtGOAxyhalEVcUnLAAhI23IG5J4z9Dr/j7oXHUBgS8gtIKBpyH54DF1KV1VjvnEmW9E/szh YezWIrI6+rWaC/DfBDoB5mMjpT3kvlpD4LnIQJgMtvgBznUVEX493p8/US16U7zL94JFmLj/cm4 9amU9El9alP69FsfXo6TtHZuRIiThA7odfk2LbqLI60wNZ1sqR5+CFEzgtbSJdbovik/OvcrVnX 61SnDh+lv1Ft3sgNDhrX3zTPgUx07ncjFG6wqj8F24LF4R9Bts4dRqd2gklcYrfVjhBoiaM/E1Q aETANKUJG9N8bV3mLC5VczLeJUNbQiF/pVxfkqGyIlJvWNHRDBL9VwOOfKpzd42ROoLNWmBz2A0 D7N88llezQXjZ66llwrGi1 X-Received: by 2002:a05:6a21:4596:b0:3bf:990d:3fc7 with SMTP id adf61e73a8af0-3bfd2849358mr6505679637.20.1782926533285; Wed, 01 Jul 2026 10:22:13 -0700 (PDT) Received: from RodriguezRyzen.. ([181.229.23.179]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-30ee3205993sm23033963eec.24.2026.07.01.10.22.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Jul 2026 10:22:12 -0700 (PDT) From: =?UTF-8?q?Iv=C3=A1n=20Ezequiel=20Rodriguez?= To: kraxel@redhat.com, vivek.kasireddy@intel.com Cc: dri-devel@lists.freedesktop.org, linux-kselftest@lists.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Iv=C3=A1n=20Ezequiel=20Rodriguez?= Subject: [PATCH 1/1] udmabuf: reject unknown UDMABUF_CREATE flags Date: Wed, 1 Jul 2026 14:21:59 -0300 Message-ID: <20260701172159.270872-2-ivanrwcm25@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260701172159.270872-1-ivanrwcm25@gmail.com> References: <20260701172159.270872-1-ivanrwcm25@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit UDMABUF_CREATE and UDMABUF_CREATE_LIST only define UDMABUF_FLAGS_CLOEXEC. Unknown flag bits were silently masked before returning a dmabuf fd, so userspace could not detect unsupported flags. Reject them with -EINVAL, consistent with dma-heap flag validation. Document the flag semantics in udmabuf.h and add a selftest. Signed-off-by: Iván Ezequiel Rodriguez --- drivers/dma-buf/udmabuf.c | 3 +++ include/uapi/linux/udmabuf.h | 13 +++++++++++++ tools/testing/selftests/drivers/dma-buf/udmabuf.c | 14 +++++++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/drivers/dma-buf/udmabuf.c b/drivers/dma-buf/udmabuf.c index bced421c0d65..fb36c0d9ffe7 100644 --- a/drivers/dma-buf/udmabuf.c +++ b/drivers/dma-buf/udmabuf.c @@ -358,6 +358,9 @@ static long udmabuf_create(struct miscdevice *device, long ret = -EINVAL; u32 i, flags; + if (head->flags & ~UDMABUF_FLAGS_CLOEXEC) + return -EINVAL; + ubuf = kzalloc(sizeof(*ubuf), GFP_KERNEL); if (!ubuf) return -ENOMEM; diff --git a/include/uapi/linux/udmabuf.h b/include/uapi/linux/udmabuf.h index 46b6532ed855..e267856dd510 100644 --- a/include/uapi/linux/udmabuf.h +++ b/include/uapi/linux/udmabuf.h @@ -7,6 +7,13 @@ #define UDMABUF_FLAGS_CLOEXEC 0x01 +/** + * struct udmabuf_create - parameters for %UDMABUF_CREATE + * @memfd: memfd containing the memory to export + * @flags: %UDMABUF_FLAGS_CLOEXEC only; unknown bits are rejected + * @offset: byte offset into @memfd (page aligned) + * @size: number of bytes to export (page aligned, non-zero) + */ struct udmabuf_create { __u32 memfd; __u32 flags; @@ -21,6 +28,12 @@ struct udmabuf_create_item { __u64 size; }; +/** + * struct udmabuf_create_list - parameters for %UDMABUF_CREATE_LIST + * @flags: %UDMABUF_FLAGS_CLOEXEC only; unknown bits are rejected + * @count: number of entries in @list (non-zero, capped by driver) + * @list: flexible array of memfd regions to combine + */ struct udmabuf_create_list { __u32 flags; __u32 count; diff --git a/tools/testing/selftests/drivers/dma-buf/udmabuf.c b/tools/testing/selftests/drivers/dma-buf/udmabuf.c index d78aec662586..95c781855404 100644 --- a/tools/testing/selftests/drivers/dma-buf/udmabuf.c +++ b/tools/testing/selftests/drivers/dma-buf/udmabuf.c @@ -138,7 +138,7 @@ int main(int argc, char *argv[]) void *addr1, *addr2; ksft_print_header(); - ksft_set_plan(7); + ksft_set_plan(8); devfd = open("/dev/udmabuf", O_RDWR); if (devfd < 0) { @@ -189,6 +189,18 @@ int main(int argc, char *argv[]) else ksft_test_result_pass("%s: [PASS,test-2]\n", TEST_PREFIX); + /* should fail (unknown flags) */ + create.memfd = memfd; + create.offset = 0; + create.size = size; + create.flags = UDMABUF_FLAGS_CLOEXEC | 0x2; + buf = ioctl(devfd, UDMABUF_CREATE, &create); + if (buf >= 0) + ksft_test_result_fail("%s: [FAIL,test-unknown-flags]\n", TEST_PREFIX); + else + ksft_test_result_pass("%s: [PASS,test-unknown-flags]\n", TEST_PREFIX); + create.flags = 0; + /* should fail (not memfd) */ create.memfd = 0; /* stdin */ create.offset = 0; -- 2.43.0