Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp8068693rdb; Thu, 4 Jan 2024 18:36:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IHhp1dMBYec3L5cAXAckr39kLot4J0Sk6PRaXehifK61SXBbk3z3aZkH7fkNORhAu5Wcih1 X-Received: by 2002:a17:906:53:b0:a29:2c66:cf2e with SMTP id 19-20020a170906005300b00a292c66cf2emr99556ejg.142.1704422161944; Thu, 04 Jan 2024 18:36:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1704422161; cv=none; d=google.com; s=arc-20160816; b=LWNIYup3y0i95iFAG+bu5kxRd87M2PkukNbtrGuRl6mhUoCqEQ+O26CnpsM4CB09vn VTgnE2rkzyBR9bEC7ewso9Qcqse7idy32InfN/K1xXme1TjNrEi96OtSdZbpI4LXaOI9 ztb8YlDxYlzyvbmBQQp0dUTiKC5tZ2DJU0EyUkVn9QUXl2YhDbT840lyl8SGqGaXeKA9 Q48otRpJ8L1z/EdBMuTRh/4D5+EnUSBcMWJrUuDvnZn0UNTZi7jEijmMfhGWlNs1T96T WjvpExQoR2PjKpW+yLIYr7s4kiul9yJ615Gx0z+F28G6PGA1Yt6kDvVlfDv3HTof4muZ HR5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:to:from:dkim-signature:dkim-signature; bh=frgVRPdp70OVgJksCxSW6XCCaTKoGsaFs4KP1Eow2jE=; fh=oFdJy8ofH0dpbBwpPJWhHphSjxNUmKzt4nt2sEDFdO8=; b=Zq8PM/YnKvQqNFGVCl3hArni+3rxX45VjfawWTKA/ENBD/VRXC2djB9KuJaUJdWXjf uEVzveXQb84rldKL5RbOOYiPDU9G4Nin+YQI/vTAtCtJyaxgtXONQ7tWTPWFrIN2/iWo 7h1EOighQZiXYd+nLWpr5tsQ/ukAkfEWYwSMDLsYSVnuh9E01fACOYgEmHqVR6jICP7o 9JRgs0Qj1B29EAhIVL8kerxsKe1dEe253tualJbAouVAAoNAsgs/oFL0sIK3YZltIjb0 amykalxzxgt0GMm1xFmwVnw1ucU+PZAjE/ERkBPW64gJWbh07NvqktKy8bfADJwARes1 i3Tg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b=pKvBXzRC; dkim=pass header.i=@suse.com header.s=susede1 header.b=pKvBXzRC; spf=pass (google.com: domain of linux-kernel+bounces-17421-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-17421-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id j15-20020a1709062a0f00b00a28dc17add2si225813eje.675.2024.01.04.18.36.01 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jan 2024 18:36:01 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-17421-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.com header.s=susede1 header.b=pKvBXzRC; dkim=pass header.i=@suse.com header.s=susede1 header.b=pKvBXzRC; spf=pass (google.com: domain of linux-kernel+bounces-17421-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-17421-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=suse.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 8B4111F21A8B for ; Fri, 5 Jan 2024 02:36:01 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id BDDF95396; Fri, 5 Jan 2024 02:35:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="pKvBXzRC"; dkim=pass (1024-bit key) header.d=suse.com header.i=@suse.com header.b="pKvBXzRC" X-Original-To: linux-kernel@vger.kernel.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) (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 15528522C; Fri, 5 Jan 2024 02:35:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.com Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id C71731F84E; Fri, 5 Jan 2024 02:35:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1704422135; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=frgVRPdp70OVgJksCxSW6XCCaTKoGsaFs4KP1Eow2jE=; b=pKvBXzRCK8epXdHUSwwaakPJHhkWpHCKOaTvi5b9fhO5GiKwRZcIJ51+XwSF2zYtXFR4io eB6EL74ADrf3WjqSlvAS9JaMDowRh0mBY/w6g3RF0gPMaKe1e9V5DINn/P6/l94iKYDDjV cOGmbRc9wR1sCtYUfYeM0iCyvAyIVk8= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1704422135; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=frgVRPdp70OVgJksCxSW6XCCaTKoGsaFs4KP1Eow2jE=; b=pKvBXzRCK8epXdHUSwwaakPJHhkWpHCKOaTvi5b9fhO5GiKwRZcIJ51+XwSF2zYtXFR4io eB6EL74ADrf3WjqSlvAS9JaMDowRh0mBY/w6g3RF0gPMaKe1e9V5DINn/P6/l94iKYDDjV cOGmbRc9wR1sCtYUfYeM0iCyvAyIVk8= Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 4DF5A137E8; Fri, 5 Jan 2024 02:35:30 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap1.dmz-prg2.suse.org with ESMTPSA id +E+bNfJql2XhbAAAD6G6ig (envelope-from ); Fri, 05 Jan 2024 02:35:30 +0000 From: Qu Wenruo To: linux-btrfs@vger.kernel.org, linux-kernel@vger.kernel.org, akpm@linux-foundation.org, christophe.jaillet@wanadoo.fr, andriy.shevchenko@linux.intel.com, David.Laight@ACULAB.COM, ddiss@suse.de, geert@linux-m68k.org, rdunlap@infradead.org Subject: [PATCH v4 1/4] kstrtox: always skip the leading "0x" even if no more valid chars Date: Fri, 5 Jan 2024 13:04:59 +1030 Message-ID: <9076fa9d3d2d3b2574386f4850a45f7902f6503c.1704422015.git.wqu@suse.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Authentication-Results: smtp-out2.suse.de; none X-Spam-Score: 1.70 X-Spam-Level: * X-Spam-Flag: NO X-Spamd-Result: default: False [1.70 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; URIBL_BLOCKED(0.00)[suse.com:email,suse.de:email]; FROM_HAS_DN(0.00)[]; FREEMAIL_ENVRCPT(0.00)[wanadoo.fr]; R_MISSING_CHARSET(2.50)[]; MIME_GOOD(-0.10)[text/plain]; TO_DN_NONE(0.00)[]; BROKEN_CONTENT_TYPE(1.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.com:s=susede1]; NEURAL_HAM_SHORT(-0.20)[-1.000]; RCPT_COUNT_SEVEN(0.00)[9]; MID_CONTAINS_FROM(1.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.com:email,suse.de:email]; FREEMAIL_TO(0.00)[vger.kernel.org,linux-foundation.org,wanadoo.fr,linux.intel.com,ACULAB.COM,suse.de,linux-m68k.org,infradead.org]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] Currently the invalid string "0x" (only hex prefix, no valid chars followed) would make _parse_integer_fixup_radix() to treat it as octal. This is due to the fact that the function would only auto-detect hex if and only if there is any valid hex char after "0x". Or it would only go octal instead. Thankfully this won't affect our unit test, as "0x" would still be treated as failure (-EINVAL) anyway: - Old code treats "0x" as '0' with tailing 'x' Thus return -EINVAL due to the tailing 'x'. - New code treats "0x" as "0x" suffix with nothing following up Thus return -EINVAL due to no valid string. But for the incoming memparse_safe(), the remaining string would still be consumed by the caller, and we need to properly treat "0x" as an invalid string. So this patch would make _parse_integer_fixup_radix() to forcefully go hex no matter if there is any valid char following. And there is a also copy of _parse_integer_fixup_radix() inside arch/x86/boot/string.c, to keep the code consistent this patch would also modify that copy. Thankfully for that copy in arch/x86/boot/string.c, it's only doing kstrtoll(), thus there would be no behavior change, just as explained above. Signed-off-by: Qu Wenruo Reviewed-by: David Disseldorp --- arch/x86/boot/string.c | 2 +- lib/kstrtox.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/boot/string.c b/arch/x86/boot/string.c index 1c8541ae3b3a..49750ef697bb 100644 --- a/arch/x86/boot/string.c +++ b/arch/x86/boot/string.c @@ -233,7 +233,7 @@ static const char *_parse_integer_fixup_radix(const char *s, unsigned int *base) { if (*base == 0) { if (s[0] == '0') { - if (_tolower(s[1]) == 'x' && isxdigit(s[2])) + if (_tolower(s[1]) == 'x') *base = 16; else *base = 8; diff --git a/lib/kstrtox.c b/lib/kstrtox.c index d586e6af5e5a..41c9a499bbf3 100644 --- a/lib/kstrtox.c +++ b/lib/kstrtox.c @@ -27,7 +27,7 @@ const char *_parse_integer_fixup_radix(const char *s, unsigned int *base) { if (*base == 0) { if (s[0] == '0') { - if (_tolower(s[1]) == 'x' && isxdigit(s[2])) + if (_tolower(s[1]) == 'x') *base = 16; else *base = 8; -- 2.43.0