From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (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 6EC0D2D8DB5 for ; Thu, 12 Mar 2026 20:51:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773348693; cv=none; b=LgzOOi9MPdZJZBMUm7zUbSMsZ6ZajrexPJ9ZXUH9GZRUfCqRwtsBJjfVcfmlIebfKVAAAlHVdLkIEXlkxUCUJrcYgOWgEjes3BZqKPjbWaXCAZADsVqcKdOK0FkAP/LzU+TxBJ8vR4YNus16G/XweoWUPpgJpS5YlP7LMkc+oK8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773348693; c=relaxed/simple; bh=9QWPEzk3W73ENRyA/V77S3OkAvWUEDbZ2luEaxgxxuk=; h=Date:From:To:Cc:Message-ID:In-Reply-To:References:Subject: MIME-Version:Content-Type; b=Id40tB1G1mipi8BxPIpUcTlUAzzruymMi5pkAmNAWR7Fq191cOevLH3iJpox2V/YN+Lg/q4XX4yr/bNo8eSEwoHNOqXA7uzRFaSNwQvg+upi8IkuxlTKFtUuSZYtDLfkkduTV4v96ufp0vwET9ISYRV2294/zPyECeQMMU1pizI= 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=NdluSfB7; arc=none smtp.client-ip=209.85.128.48 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="NdluSfB7" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-48538c5956bso14421095e9.0 for ; Thu, 12 Mar 2026 13:51:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773348691; x=1773953491; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:subject:references :in-reply-to:message-id:cc:to:from:date:from:to:cc:subject:date :message-id:reply-to; bh=9QWPEzk3W73ENRyA/V77S3OkAvWUEDbZ2luEaxgxxuk=; b=NdluSfB7uK6KLFgok48o8kpoxl05XeIivIvsIURKFdfsbK+YNccOZoyC1Jxf0eaapx pxNirtNXXOqKLdeuk7QTKLeyUfoDnODx+h2zIIwl1WKrAMr3Fq0QSNat3+/fmHZyGFEZ dOVqhuu7h/gvXsfyxWeQfiAf1q7ez1i7WBC0+zFjRKusyhisJxCi6H+Cv9hdZGoLmn9h PnfuTRYWXU/zWsDBi4UXwXzwNp0SrStMtU4g+b3xURAvw64fyS8R2sHvv17RktrL1Qtt 9ApQ0cXODavjRtN2lI3gWwquPus4EWffjxv62VTSrxm6bhpZGhs5O75AVIogSmTuExd8 kmNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773348691; x=1773953491; h=content-transfer-encoding:mime-version:subject:references :in-reply-to:message-id:cc:to:from:date:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=9QWPEzk3W73ENRyA/V77S3OkAvWUEDbZ2luEaxgxxuk=; b=vsA4W00e6nWUuoVoMve7FicGiExIpGueoxh+vlm8zwWCFys1m6/1ObMxjwJYTsu0/p 5F2NGc6IkaoodLaIpO2em+gci+AnO8CcRxrDgmpwTachSu7RkkhhDg9uXYJSYSFwsX64 xl2Q3pMjlMIbcN8qby5zNDrNZk0ShUXqRQJWWNMyc+4wS4ZSn2lHgbYdnoaCpEF3mtcM DyFITUwFHVfBpCe/UyJr0frjpU6aDenPYqujmVYOz1GejkG5pDdYLRCd9xsqvsw88WGb RbCk8BSR2mbaK0KOZSc8ddAAF1dyQe0p6tFkOJoyMNW6H4qd4BaK9BIpKqkXtmttbHE2 3dMA== X-Forwarded-Encrypted: i=1; AJvYcCVc9cxZ8Kc7yzSr7d4iwlxYatTv2/b6fh04GKH+R6gs0QAqPa0h9KoZ5Bu1qurYEFoXr5xdRjnDANvtiOk=@vger.kernel.org X-Gm-Message-State: AOJu0YxlHvFNQzN4UVcUnlCd04TdFOPMNX2E0eBhyeTcqEhEHdfEgQ1M RcOEkXt0veKpkeA13rk2UntK7sNaIH5zboJeNKZv5iXaaRPSyjE+ooAN X-Gm-Gg: ATEYQzwGa3qSsBZnnFUkJd8pPDYBh0lwMEUDP9qrtab4vjbyt0wgkAUNPefvvybbhPS 9HYo2uAS+DaYY1hce4prT7Gte75U8CXCj2TWoFwvGM+GCfjC5U8y/NAaIorGjpdd6BOR1TDafaf z3X1to2XWhBulGx5N+9eZddqMf5SOmVcqnJfnMIN5X1LPv/JXmdjfIchIwR1dPTUaAU8ibsbfps KUEp1/DLXPIuiyu4VVgnj60LONQb/+rVTZB1UVZhDOo+RVu+s99yxfHHJfTGtOAsZjeC84HmrPq y6Tp9Xl7RVmdy9ZNb646pErnCcsfOGj0+9GjSF+wanaz4wVtNaAn4i6YBR9Us8nUlnLkVoafec7 ob+Lz35HfnQAO7mGG2MP8IOzrN3xLMv2eVLg3IPWn6ec1A/t7pr5GTqG9rpkF1XGvPJ9nJcxSAo ypk3C7Ap6SFj8JwJHhwBqxkKCdMA== X-Received: by 2002:a05:600c:c8f:b0:485:3294:fff0 with SMTP id 5b1f17b1804b1-48555b65120mr17318125e9.17.1773348690532; Thu, 12 Mar 2026 13:51:30 -0700 (PDT) Received: from ?IPv6:::1? ([2a00:23ee:2968:90cb:1c6d:1979:bcad:501a]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4854b66dedfsm154816395e9.12.2026.03.12.13.51.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 12 Mar 2026 13:51:30 -0700 (PDT) Date: Thu, 12 Mar 2026 20:51:29 +0000 From: Josh Law To: Andrew Morton Cc: Andy Shevchenko , Josh Law , linux-kernel@vger.kernel.org Message-ID: <30eaf3e4-df62-4bf7-9672-ce123d2cf1f1@gmail.com> In-Reply-To: <20260312134858.672c3a6b63bfdbb3962eccec@linux-foundation.org> References: <20260312184113.23564-1-objecting@objecting.org> <20260312134858.672c3a6b63bfdbb3962eccec@linux-foundation.org> Subject: Re: [PATCH 3/3] lib/uuid: avoid double traversal in __uuid_parse() 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: quoted-printable X-Correlation-ID: <30eaf3e4-df62-4bf7-9672-ce123d2cf1f1@gmail.com> 12 Mar 2026 20:48:59 Andrew Morton : > On Thu, 12 Mar 2026 18:41:13 +0000 Josh Law wrote= : > >> __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.=C2=A0 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. >> >> --- a/lib/uuid.c >> +++ b/lib/uuid.c >> @@ -108,16 +108,20 @@ static int __uuid_parse(const char *uuid, __u8 b[1= 6], const u8 ei[16]) >> =C2=A0=C2=A0=C2=A0 static const u8 si[16] =3D {0,2,4,6,9,11,14,16,19,21,= 24,26,28,30,32,34}; >> =C2=A0=C2=A0=C2=A0 unsigned int i; >> >> -=C2=A0=C2=A0 if (!uuid_is_valid(uuid)) >> -=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return -EINVAL; >> - >> =C2=A0=C2=A0=C2=A0 for (i =3D 0; i < 16; i++) { >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 int hi =3D hex_to_bin(uuid[si= [i] + 0]); >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 int lo =3D hex_to_bin(uuid[si= [i] + 1]); >> >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 if (hi < 0 || lo < 0) >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return -EI= NVAL; >> + >> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 b[ei[i]] =3D (hi << 4) | lo; >> =C2=A0=C2=A0=C2=A0 } >> >> +=C2=A0=C2=A0 if (uuid[8] !=3D '-' || uuid[13] !=3D '-' || >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 uuid[18] !=3D '-' || uuid[23] !=3D= '-') >> +=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 return -EINVAL; >> + >> =C2=A0=C2=A0=C2=A0 return 0; > > This rather messifies the code, and for what?=C2=A0 Is this in any way a = hot > path? ehhhh. If I had to say, yes it is a hot path, it runs quite a lot perf increases ever so slightly, so that's your call Andrew.