From patchwork Sun Jan 12 03:42:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sam Protsenko X-Patchwork-Id: 856752 Delivered-To: patch@linaro.org Received: by 2002:a5d:525c:0:b0:385:e875:8a9e with SMTP id k28csp888653wrc; Sat, 11 Jan 2025 19:42:39 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXS1EKeHSEnlJLJmKy9mvfq9jKuxJzCt+m6sBihQ/6TzcQ5hWCsGBHbIWD1/Ti+wzCqS/uxPg==@linaro.org X-Google-Smtp-Source: AGHT+IGG4WA5V1GT4RFQyLokermrXXlniV4FK2qu0yCbVt0uxdTzdJsdw3Z7z7U19evzCjFIpZ8q X-Received: by 2002:a05:6000:1847:b0:385:f060:b7fc with SMTP id ffacd0b85a97d-38a8730a60cmr15167440f8f.25.1736653359443; Sat, 11 Jan 2025 19:42:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1736653359; cv=none; d=google.com; s=arc-20240605; b=NZntHCBO/Ss+TTm3aUorcHu04i0le1dX6/qgtg/pZL1C1jinw9wpmZg61WkBEK2aol SwxOwxyPXIIxITKXrjPakrs/seFWzkzYIebk9mbokTdXuxVXJGR+tAB+iWpJLtOlkLAn +Hdm9LPwuJFyyxE8VFS8DESA4mIgW6Oh5uW6Q8tmJ5YniU9/q8t6qo2nRb0BPLMgkCQQ xUlmdU7ExePnbBcJMDWqfG59dg8SrrN/3ZSxkscL5AdwMFeKtFQX629JbezLDRaNKzj0 e3JjJ/6BlPUusBACMiRB9fXGhpCLR/yJfZhtFqNFYUT8dJhmyZob+bEcLAVHLLztIKmu Ql7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=b5u5G11aunGI+aml/J793NesimzKzJxjlVD8EIiicUM=; fh=k6Bi/zktlcLW2mH/Nn4HYUPxicJGvzlLPh2gLrXis7w=; b=Ob1PV/Fk8MdD3/N45E8bqlWS/SoqRRG4WtjvE5tNHgziDRNJxS7qmEZRhJCImpCnOQ afissRQzG5eD21KTa2XbcIZR1PvT/DcDWeXwyHHed3Y+nq0pSwcZMrk1fe9Ioh2tOKyS HnZvDZWY3G/7FM4SX23ccvuCgwtzEyqmR2qncPLRU0akv02L+t13e6A0NWcmBH+ATng/ FKpZf1fEnvI5oci8Qj4a7hU/aSaeexTvwkga4leBo9+/hret3QW6RiWgoUXmHuAPvDPz zzuP6epYK2WqVR1aZUnCmn8g2iCMW5x8Sf4nar/Q0/qwYa4OVn9E2JBqSuM+t3fIFOO0 ujFg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=PpiTpjgu; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from phobos.denx.de (phobos.denx.de. [2a01:238:438b:c500:173d:9f52:ddab:ee01]) by mx.google.com with ESMTPS id ffacd0b85a97d-38a8e4d3b33si4947816f8f.599.2025.01.11.19.42.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jan 2025 19:42:39 -0800 (PST) Received-SPF: pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=PpiTpjgu; spf=pass (google.com: domain of u-boot-bounces@lists.denx.de designates 2a01:238:438b:c500:173d:9f52:ddab:ee01 as permitted sender) smtp.mailfrom=u-boot-bounces@lists.denx.de; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id CEE1B801F5; Sun, 12 Jan 2025 04:42:21 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=linaro.org header.i=@linaro.org header.b="PpiTpjgu"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 2E6EF80628; Sun, 12 Jan 2025 04:42:20 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2 Received: from mail-oa1-x2e.google.com (mail-oa1-x2e.google.com [IPv6:2001:4860:4864:20::2e]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id EB0F1805E9 for ; Sun, 12 Jan 2025 04:42:17 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=linaro.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=semen.protsenko@linaro.org Received: by mail-oa1-x2e.google.com with SMTP id 586e51a60fabf-2a88c7fabdeso1546745fac.1 for ; Sat, 11 Jan 2025 19:42:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1736653337; x=1737258137; darn=lists.denx.de; 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=b5u5G11aunGI+aml/J793NesimzKzJxjlVD8EIiicUM=; b=PpiTpjguuWJ+o2gdhfOYFVuNFx9YwIsZ1yc7kqL3dpzh+L2Chxs354G8TV1fwQZxhZ blTQFT7rQ34XymrJYkEiBwPdaj0ka79Wr2xKwUwwqQR+/jnfPR+nv13iP/1cdGQJ2/in dNxwuE5k+grioKIZE2mvpvw0pCLDmnfpR4ZGfz3f4SjRfzkIdPCG9M0j0R6sYr466Rd9 37SwRhPtGR01jxuh2U4OQ7LtpUjKszNZwRnge18jDKuOZ1xOomyHQmp6jsZLu8y0uVPt raPvSpv9YIVb3lR2Vn/hGVAATK7MLNHOWPSCkweEKbeU/8faaqvebJjAe4tI0ePZTTts rGnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736653337; x=1737258137; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=b5u5G11aunGI+aml/J793NesimzKzJxjlVD8EIiicUM=; b=lKF9Dbbbjses5bRmg60iMFTgo7UIwM1UywtmNtoNrZG/iFdIxTQSMS4bBVeNhzOa21 IJA04rDREebR6exi5fUrfUJS0xrgTGG+MUOQPNc0beFvQy435aLqZhbYr3GZ5U+fJjxC SzA+rmDJ9z9S3hKdV5sROXNV/VxdFoM/kSP0kXD+CePyZxel7hWxLYmdTajKR2DwqJ8P xYLsv5aCUkSrRhsdjOKgy5pFqRKYs4ACMHIwenfTx0m6iUhkvX/izCUh29Vmj+SpbsCB oXtlJ8gEPg2ahWpGIau6C3hqkRX5ukBXqpGLjr0GUTV1kkrr5M6jHXDucpvBJUjJekBE kH1w== X-Forwarded-Encrypted: i=1; AJvYcCVNASz4KWbmYAbKlJblSxgWNc/z21sNYSgt0MgGVuX6VTk3V2+Zl7lmmSilwTpRSoQfqc2m85I=@lists.denx.de X-Gm-Message-State: AOJu0YzyFCP8+TH+I09IQaKY4eLcbh0uW/iotp/qtCyP5ZBo8sKlYFZJ zWzCn7fNExMMCN/Z81WBXYYWLp6GahAAYWJjqGBcPx68ZzfDAiQL3sVZIoi4Yzk= X-Gm-Gg: ASbGnctNz4Elkkxdohao2omPKTJE7afMu9paXEEfUfovhBrCxxXLhRTxdG2yISUEvPW 8MywpBoHtV5oOSAIwv65sbzDaWycc3/b5+gDRjfIpiJmViMlm22/C8U4AIVUGbRtQ8kt/ubGAxp XlJ8C4zrlc3+n+Ptmwqfpc7umSEGNgTlZZEW5LouBmtKoC2r6T5H34ZF7GMdmGzigw5NnfPAlp2 wQsl/osER9jaIzZl2ALw47dkxV02nC9r/jc95tv+a3JmRBu7GHDye/vf3+U8+yNY0o= X-Received: by 2002:a05:6870:1712:b0:29e:6bcd:3ba7 with SMTP id 586e51a60fabf-2aa069191f6mr8474027fac.28.1736653336672; Sat, 11 Jan 2025 19:42:16 -0800 (PST) Received: from localhost ([2605:a601:a0f4:b000:264b:feff:fe59:d7f7]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-2ad809af70bsm2558462fac.36.2025.01.11.19.42.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Jan 2025 19:42:16 -0800 (PST) From: Sam Protsenko To: Simon Glass , Tom Rini Cc: Heinrich Schuchardt , Ilias Apalodimas , Martyn Welch , u-boot@lists.denx.de Subject: [PATCH 2/3] bootstd: Probe bootmeth devices for bootmeths env var Date: Sat, 11 Jan 2025 21:42:12 -0600 Message-Id: <20250112034213.13153-3-semen.protsenko@linaro.org> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20250112034213.13153-1-semen.protsenko@linaro.org> References: <20250112034213.13153-1-semen.protsenko@linaro.org> MIME-Version: 1.0 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean Specifying efi_mgr in 'bootmeths' environment variable leads to NULL pointer dereference when 'bootflow scan' is executed, with call trace like this: priv->fake_dev // NULL pointer dereference .read_bootflow = efi_mgr_read_bootflow() bootmeth_get_bootflow() bootflow_check() bootflow_scan_first() do_bootflow_scan() 'bootflow scan -l' That happens because in case when 'bootmeths' env var is defined the bootmeth_efi_mgr driver is not probed, and the memory for its private data isn't allocated by .priv_auto. In case when 'bootmeths' env var is not defined, the std->bootmeth_count is 0, and the execution flow in bootmeth_setup_iter_order() takes "no ordering" path, which in turn runs uclass_get_device_by_seq() -> ... -> device_probe(), so issue isn't present there. But when 'bootmeths' is defined and contains efi_mgr, the std->bootmeth_count > 0, so bootmeth_setup_iter_order() follows the "we have an ordering" path, where devices are not probed. In other words: 'bootmeths' defined 'bootmeths' not defined -------------------------------------------------------- priv == NULL priv != NULL ^ ^ | device_alloc_priv() no probe device_of_to_plat() ^ device_probe() | uclass_get_device_tail() dev = order[i] uclass_get_device_by_seq() ^ ^ | have an ordering | no ordering +----------------+---------------+ | bootmeth_setup_iter_order() bootflow_scan_first() do_bootflow_scan() Add an explicit device_probe() call in "we have an ordering" case to fix the issue. Fixes: c627cfc14c08 ("bootstd: Allow scanning for global bootmeths separately") Signed-off-by: Sam Protsenko --- boot/bootmeth-uclass.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/boot/bootmeth-uclass.c b/boot/bootmeth-uclass.c index ff36da78d5a1..049389403191 100644 --- a/boot/bootmeth-uclass.c +++ b/boot/bootmeth-uclass.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include #include @@ -146,6 +147,12 @@ int bootmeth_setup_iter_order(struct bootflow_iter *iter, bool include_global) struct bootmeth_uc_plat *ucp; bool is_global; + ret = device_probe(dev); + if (ret) { + ret = log_msg_ret("probe", ret); + goto err_order; + } + ucp = dev_get_uclass_plat(dev); is_global = ucp->flags & BOOTMETHF_GLOBAL;