From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-lj1-f170.google.com (mail-lj1-f170.google.com [209.85.208.170]) (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 33AB73C65E0 for ; Thu, 12 Mar 2026 18:41:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.170 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773340877; cv=none; b=KJeAoUN/0Oe1eD5CP8yRccjPKadRTEQ7ZDBHZ2gYyffOqkUdHBMn69KEOMFYOGvLshDq+jkP1S1MKNuTGxLpuBEhfcwrxWXgFHaKrB+1KCqobWf0s+lKyyyV3YDCzeIUIG6iW2dlj0AbCxQJV+bMGa1RrKHzm4s/PTOuOTqhwgw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773340877; c=relaxed/simple; bh=eDk7JH/6/TW/FCkVVPcVRecTqovd4SUsvjXXK4z5EWQ=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=oGeT5l/QHtU3o4dF8WCWcJpCgeATLBT3oza/+PXTo30g3kvEt7JrtDwdW/4vVTpx6Nk+6kooynXoJFC70pFF6HYQcx+msU11N+/gq75yeObkw2qzONgYRQSnTeCKYG1SfmT+u90ku1+GRI3kO8+3a6QdmFMIJHi/F3CNFq0Qau0= 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=ac4/Ycjh; arc=none smtp.client-ip=209.85.208.170 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="ac4/Ycjh" Received: by mail-lj1-f170.google.com with SMTP id 38308e7fff4ca-38a23dd61c1so11690451fa.1 for ; Thu, 12 Mar 2026 11:41:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773340874; x=1773945674; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=6WMPz4hLvx3+IXmOEByTJ0YLNIGR0zMXYlRbGgtmnb0=; b=ac4/YcjhU44WyNbHsgEChAxoyGQF6voeEdhcRXfrDnEj0lK1HOYUJbC8KbLwJb1HaH jHZwAqAYnPw8NTw7hwlioK9dFsOqZV4ymUkfNdHVNQ4QGoL3IwwMjREXYqLXYTwwykUg u3oeFA41yBlhI1h1LyfNZt91JyJyMlSwATq2O6UXgzp3DDcIV2DAcyThWZzOoGX/h/QT MTWtIut3/of6MgpPW7C59Zr0wHAzPVuluhNLhy/sbomtjgAl141WKXKAZlNIvJ1l5xdR GcF9tZs01xtm+ITe4rZfrqwxLhvd0uwGhFM6BZ/oAVEbX03dlqp+b6HvsgVQUpqmBipA Ix1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773340874; x=1773945674; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=6WMPz4hLvx3+IXmOEByTJ0YLNIGR0zMXYlRbGgtmnb0=; b=AodLuI5hszYVEMbljuDiRKUEVvzjEzxlu+WYKt5DGVWsK/PtkPoXZS4Nv6qzYk4f3Z cmBaIUDF0Kvwx8yELnQBzogGfYU3wz/lE8ymB/1gcJP2XCpqoLyFvxmXnJ/xrGmJkodU 3Lsb8DL1KkaFoL7HX+o567Lxe2yXlfGQkcgtQvZDOkuocwdZKAtpAL32s/IRXV6bGSj0 x3Vkr9l1JaPQX46+J4cZQxR7mvR/LysecCZoWWUQHuMP2ELCZ9t9bFTX3p+WM1RzX8A2 qWjj4MSB0kO9C0RY/bx3DAzr9N3Ss5PclJ8l/VpgzdZtYQj73zxlk/TKbl26dgV9GBts B3CQ== X-Forwarded-Encrypted: i=1; AJvYcCUUmRMyRGSmP7s+DIdxFLO/A7lK+ZJUX9nBktrQ8L9n8U7b+KW+7WpoKMFhoaLIKx+RyoO7pozJVo2bh9c=@vger.kernel.org X-Gm-Message-State: AOJu0Yyj9m/hFbjcbV30dK7kyf8u+b313YScAIXhsDkauVXg99vbLWIG wkS4tNAyG0JpuBtxLe5V/XtnMZA87mK2UXnaWw7KGIcI2vjploewwRApYtEdMard X-Gm-Gg: ATEYQzwrnqKMDSwBt/5Q2hCmQ199hTPMrlRA/+hGiXLCDNRFIpUJK0MCdXtVdyBDLLK MMRALm1qesUvAci8L304gS4MJW3zJLED6sR0lWQ5V0n7NBjQhYLQGqE2p5q7SaeXtvHKPj5tvN4 rtba+0ZjsA1vthsUowxSMNBuCPxpZeZHcm43Qge5e+K8Kyu/Cm9UXFLnHvvIJFGKo9w5awo1hjm kHyplbmL7WgFmKLHRbt/m5HpGzC+tURLTb/AHi+VAhoDSG4yPoSdOaSTPWEZ3tHTdUG+u+yled+ s5qq4Ttk4aXBhVyN5DsiqaxaVPy6wzwzbUty03nuYeTvQqypRPYiwzqO0kUty0ZkocZnOY6Cflf IHvSrq7qrh19+HuyWAeETC3P8kWIR963PzjasvxAtR4dQIN4WpaEraQSfEyhh6z4rjq3amRCFQf eRRDpkPbbU6Y5kfn9FqlkFEierfS1d9kuGHiQo5c11eVEluXstWK0W/eUQsaBu1Q8cPB0iJJA= X-Received: by 2002:a05:651c:b24:b0:38a:4f2e:eea1 with SMTP id 38308e7fff4ca-38a8966b8d6mr1187231fa.2.1773340874032; Thu, 12 Mar 2026 11:41:14 -0700 (PDT) Received: from ubuntu.. (static.159.107.27.37.clients.your-server.de. [37.27.107.159]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-38a67d5fa80sm10476651fa.5.2026.03.12.11.41.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Mar 2026 11:41:13 -0700 (PDT) From: Josh Law X-Google-Original-From: Josh Law To: Andrew Morton , Andy Shevchenko Cc: Josh Law , linux-kernel@vger.kernel.org Subject: [PATCH 3/3] lib/uuid: avoid double traversal in __uuid_parse() Date: Thu, 12 Mar 2026 18:41:13 +0000 Message-Id: <20260312184113.23564-1-objecting@objecting.org> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit __uuid_parse() calls uuid_is_valid() to walk all 36 characters for format validation, then walks the string a second time to parse the hex bytes. Combine both passes into one: validate each hex digit inline via hex_to_bin() return value and check the four dash positions after the loop. uuid_is_valid() remains exported unchanged for callers that only need validation without parsing. Signed-off-by: Josh Law --- lib/uuid.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/lib/uuid.c b/lib/uuid.c index 128a51f1879b..89608f82ca6b 100644 --- a/lib/uuid.c +++ b/lib/uuid.c @@ -108,16 +108,20 @@ static int __uuid_parse(const char *uuid, __u8 b[16], const u8 ei[16]) static const u8 si[16] = {0,2,4,6,9,11,14,16,19,21,24,26,28,30,32,34}; unsigned int i; - if (!uuid_is_valid(uuid)) - return -EINVAL; - for (i = 0; i < 16; i++) { int hi = hex_to_bin(uuid[si[i] + 0]); int lo = hex_to_bin(uuid[si[i] + 1]); + if (hi < 0 || lo < 0) + return -EINVAL; + b[ei[i]] = (hi << 4) | lo; } + if (uuid[8] != '-' || uuid[13] != '-' || + uuid[18] != '-' || uuid[23] != '-') + return -EINVAL; + return 0; } -- 2.34.1