From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) (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 EE1031A5B8A for ; Sat, 11 Apr 2026 08:00:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775894435; cv=none; b=dAO6l+9uKXqUireDrSvBxYJDYWJfndSOtY0Azcbp0OaVSJX/FiT+blYDW98O9SNOrjDzMpTSFyAg+253pbPGhqfPhId1WRGdwbypuDdkBR/koITVYFhpAC+ksXdJV9kGGmRyJJNyxajOKCjscdqye+d6+68uc6WIfqTavc0Q81w= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775894435; c=relaxed/simple; bh=18rof0FAOg8SSH7UeT/G6ZJ2QtS1VJqgI+A1f2HZscg=; h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type: Content-Disposition; b=UulJ3f38Eg4p46r9xhyjyc+/C8E4WmRoLXcbj5K/2JGHkNZa1ATPZSh6FhCswFErwB4FPJ6E4stZFgSD9t8uHw17qTKxB7cCeXUiC69cCJkJuxgWxACp9aE1ZVqnDXg+JJgDKeP7CuDqFOdFse9UjHiVKzBS0aOdV35t50vrLrU= 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=gIJLTxI1; arc=none smtp.client-ip=209.85.221.42 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="gIJLTxI1" Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-43d6d947fe4so149707f8f.1 for ; Sat, 11 Apr 2026 01:00:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775894432; x=1776499232; darn=vger.kernel.org; h=content-disposition:mime-version:message-id:subject:cc:to:from:date :from:to:cc:subject:date:message-id:reply-to; bh=HvDTNEGFLs6IzigTifHNQ2dGKAT9ic7dygGRAnZnhxA=; b=gIJLTxI1DJz7oBZRxqIIvk7WLTFBlHPyrZ6LVF/ELO7BBe8Z/AGyWzQz01J1eCn31C 3d+UoSJ+kZtcGZ8UA6Zfxjifld4JbBAJCjRVpXTwtYb201TuHTkYidu00u04I63wgmra nH1mvt2oUh5lW5uc8RQNa69QG9V3ddcCtPkHWYI4WC7L20AQr9vFirxCNbENdQQc2jLd CphFf3saFTP3Khxgy+RypcCG4aBGohgJqH39554Jks8UKGh1O2Q+ghT98Aq2q1aJWkyE krLqbaFYfsdwTV4alIs1g4mMI27qSKYl1m/mHtrEAoqh+kbMEr2BSYuL1wkvlDau/AZn 9eEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775894432; x=1776499232; h=content-disposition:mime-version:message-id:subject:cc:to:from:date :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=HvDTNEGFLs6IzigTifHNQ2dGKAT9ic7dygGRAnZnhxA=; b=d8fRcKp4dQ1eu6AaO2rid7DlCb53r72ou10WMCzXN1Pdwi0bTrqJkC7PdrVhLd3i89 ne9+ClOmcM2nv+5QxwBpnhV84BltLpkTlWq3euiU3tSBYu1cr0Jf9xRFmAJvZiYG0eA3 IAfqUNhmuO2ldZYAb1jgPkawow4d0jlhyeAsLTBeXJFCRNJlNd9nK/57MfbiUOnlvuel N7MB719CnL3CCS6ql0DcsZXWCdnzd4RAthoZliJUSQs1zAQuskYCu5MS/MQWwLIAwSnf ed9TfM1Vp9vTKwAtK/N5yfsp6wNnxDrWJ/rGMEUd3opEUO/ByZpQN//7HubqUz26sAAz EYRA== X-Forwarded-Encrypted: i=1; AJvYcCUmWraQQ4ksvi/d2UXqvCizcdIHOs2b3iIKaoh1InWeHxVjP1BH5IP1xdtXGNVKpO7F4qfgZyWsxUmpwzQ=@vger.kernel.org X-Gm-Message-State: AOJu0YzQ2jkBocfJRYtxmGmEURxXrzXg0UCR7Ci13Sy82oUObFaG3M46 U4apph8lmVWJUF7MNo6RX7zOOhegF1MTjmlJxK17eO4SpsNhoVvVmICL X-Gm-Gg: AeBDieuzqDY56BRLIk1sPKnCDCFEUNHX3qfkUUR+I/TmHMucJsvL8COBuY6KTkygGeh 5nFrLIWvETOBfUJHUD/+AzHzXDG6QXeL/+qE4YB0lWE2xs04bn9YBKNGF4Mx0d7CBEU9BAxdug2 lqF3tz00SY4Awcc5pXBxhAlIW6L5RxAoa0gzVNOpmUgsdiqdQ8RR4rrvjOG0Z0mkA4YiFg/JU0u z9PKxk1gp6Gp2unRhcqxuvDQsA0YqmeBMaPSGWC9+9PYhQ2uo+QKhBOdeHbh2fkFdtItgXQFJtb 9F6jFDj3NLlbqbSiP8dgN+EsB8/NS0MXBL1VwfY32Vnn2DkCE8safU6LuwLYoCSZ02QbvHeChLA XcriwVqhNhAd3xm9lsm9D7Yw/5aBd14Qd9shLKHCE0qDhgl4zCQzazebP/mKX73sxA6/H3dFgb3 T8SQZEK6WDvkZgaN/2GGM= X-Received: by 2002:a05:6000:615:b0:43d:1bf6:927 with SMTP id ffacd0b85a97d-43d64292737mr8730734f8f.14.1775894432095; Sat, 11 Apr 2026 01:00:32 -0700 (PDT) Received: from localhost ([196.207.164.177]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43d63deb904sm14993252f8f.9.2026.04.11.01.00.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Apr 2026 01:00:31 -0700 (PDT) Date: Sat, 11 Apr 2026 11:00:27 +0300 From: Dan Carpenter To: oe-kbuild@lists.linux.dev, Bartosz Golaszewski Cc: lkp@intel.com, oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org, Linus Walleij Subject: drivers/gpio/gpiolib.c:4732 gpiod_find_and_request() warn: 'desc' can also be NULL Message-ID: <202604110938.6uIVnQtT-lkp@intel.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=us-ascii Content-Disposition: inline tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 7c6c4ed80b874f721bc7c2c937e098c56e37d2f0 commit: 1e4f6db614a310cc34d07ffbf031c76ea9581bcf gpiolib: support shared GPIOs in core subsystem code config: x86_64-randconfig-161-20260410 (https://download.01.org/0day-ci/archive/20260411/202604110938.6uIVnQtT-lkp@intel.com/config) compiler: gcc-12 (Debian 12.4.0-5) 12.4.0 smatch: v0.5.0-9004-gb810ac53 If you fix the issue in a separate patch/commit (i.e. not just a new version of the same patch/commit), kindly add following tags | Fixes: 1e4f6db614a3 ("gpiolib: support shared GPIOs in core subsystem code") | Reported-by: kernel test robot | Reported-by: Dan Carpenter | Closes: https://lore.kernel.org/r/202604110938.6uIVnQtT-lkp@intel.com/ smatch warnings: drivers/gpio/gpiolib.c:4732 gpiod_find_and_request() warn: 'desc' can also be NULL vim +/desc +4732 drivers/gpio/gpiolib.c c6ccc4dde17676 Hans de Goede 2025-09-20 4643 0d776cfd5e5b55 Stephen Boyd 2024-02-22 4644 struct gpio_desc *gpiod_find_and_request(struct device *consumer, 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4645 struct fwnode_handle *fwnode, 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4646 const char *con_id, 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4647 unsigned int idx, 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4648 enum gpiod_flags flags, 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4649 const char *label, 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4650 bool platform_lookup_allowed) 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4651 { ba2dc1cb549171 Hans de Goede 2022-12-29 4652 unsigned long lookupflags = GPIO_LOOKUP_FLAGS_DEFAULT; 5c887b65bbd1a3 Andy Shevchenko 2024-03-25 4653 const char *name = function_name_or_default(con_id); e348544f7994d2 Bartosz Golaszewski 2024-01-19 4654 /* e348544f7994d2 Bartosz Golaszewski 2024-01-19 4655 * scoped_guard() is implemented as a for loop, meaning static e348544f7994d2 Bartosz Golaszewski 2024-01-19 4656 * analyzers will complain about these two not being initialized. e348544f7994d2 Bartosz Golaszewski 2024-01-19 4657 */ e348544f7994d2 Bartosz Golaszewski 2024-01-19 4658 struct gpio_desc *desc = NULL; e348544f7994d2 Bartosz Golaszewski 2024-01-19 4659 int ret = 0; 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4660 e348544f7994d2 Bartosz Golaszewski 2024-01-19 4661 scoped_guard(srcu, &gpio_devices_srcu) { c6ccc4dde17676 Hans de Goede 2025-09-20 4662 desc = gpiod_fwnode_lookup(fwnode, consumer, con_id, idx, e348544f7994d2 Bartosz Golaszewski 2024-01-19 4663 &flags, &lookupflags); 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4664 if (!IS_ERR_OR_NULL(desc) && Imagine desc is NULL 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4665 test_bit(GPIOD_FLAG_SHARED, &desc->flags)) { 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4666 /* 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4667 * We're dealing with a GPIO shared by multiple 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4668 * consumers. This is the moment to add the machine 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4669 * lookup table for the proxy device as previously 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4670 * we only knew the consumer's fwnode. 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4671 */ 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4672 ret = gpio_shared_add_proxy_lookup(consumer, lookupflags); 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4673 if (ret) 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4674 return ERR_PTR(ret); 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4675 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4676 /* Trigger platform lookup for shared GPIO proxy. */ 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4677 desc = ERR_PTR(-ENOENT); 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4678 /* Trigger it even for fwnode-only gpiod_get(). */ 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4679 platform_lookup_allowed = true; 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4680 } 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4681 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4682 if (gpiod_not_found(desc) && platform_lookup_allowed) { 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4683 /* e348544f7994d2 Bartosz Golaszewski 2024-01-19 4684 * Either we are not using DT or ACPI, or their lookup 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4685 * did not return a result or this is a shared GPIO. In 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4686 * that case, use platform lookup as a fallback. 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4687 */ e348544f7994d2 Bartosz Golaszewski 2024-01-19 4688 dev_dbg(consumer, e348544f7994d2 Bartosz Golaszewski 2024-01-19 4689 "using lookup tables for GPIO lookup\n"); 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4690 desc = gpiod_find(consumer, con_id, idx, &lookupflags); 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4691 } 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4692 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4693 if (IS_ERR(desc)) { 5c887b65bbd1a3 Andy Shevchenko 2024-03-25 4694 dev_dbg(consumer, "No GPIO consumer %s found\n", name); 0eadd36d912374 Dmitry Torokhov 2022-09-03 4695 return desc; 0eadd36d912374 Dmitry Torokhov 2022-09-03 4696 } 0eadd36d912374 Dmitry Torokhov 2022-09-03 4697 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4698 /* 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4699 * If a connection label was passed use that, else attempt to use 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4700 * the device name as label 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4701 */ 0eadd36d912374 Dmitry Torokhov 2022-09-03 4702 ret = gpiod_request(desc, label); ^^^^ This would crash. The zero day bot doesn't do cross function analysis so it can't detect it. e348544f7994d2 Bartosz Golaszewski 2024-01-19 4703 } 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4704 if (ret) { 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4705 if (!(ret == -EBUSY && flags & GPIOD_FLAGS_BIT_NONEXCLUSIVE)) 0eadd36d912374 Dmitry Torokhov 2022-09-03 4706 return ERR_PTR(ret); 0eadd36d912374 Dmitry Torokhov 2022-09-03 4707 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4708 /* 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4709 * This happens when there are several consumers for the same 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4710 * GPIO line: we just return here without further 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4711 * initialization. It's a hack introduced long ago to support 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4712 * fixed regulators. We now have a better solution with 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4713 * automated scanning where affected platforms just need to 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4714 * select the provided Kconfig option. 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4715 * 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4716 * FIXME: Remove the GPIOD_FLAGS_BIT_NONEXCLUSIVE flag after 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4717 * making sure all platforms use the new mechanism. 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4718 */ 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4719 dev_info(consumer, 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4720 "nonexclusive access to GPIO for %s, consider updating your code to using gpio-shared-proxy\n", 1e4f6db614a310 Bartosz Golaszewski 2025-11-12 4721 name); 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4722 return desc; 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4723 } 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4724 8eb1f71e7acca4 Dmitry Torokhov 2022-11-11 4725 ret = gpiod_configure_flags(desc, con_id, lookupflags, flags); 0eadd36d912374 Dmitry Torokhov 2022-09-03 4726 if (ret < 0) { 0eadd36d912374 Dmitry Torokhov 2022-09-03 4727 gpiod_put(desc); 39c9049770f8b5 Peng Fan 2024-03-25 4728 dev_err(consumer, "setup of GPIO %s failed: %d\n", name, ret); 0eadd36d912374 Dmitry Torokhov 2022-09-03 4729 return ERR_PTR(ret); 0eadd36d912374 Dmitry Torokhov 2022-09-03 4730 } 0eadd36d912374 Dmitry Torokhov 2022-09-03 4731 ee194b12bf9a2f Bartosz Golaszewski 2024-10-04 @4732 gpiod_line_state_notify(desc, GPIO_V2_LINE_CHANGED_REQUESTED); 0eadd36d912374 Dmitry Torokhov 2022-09-03 4733 0eadd36d912374 Dmitry Torokhov 2022-09-03 4734 return desc; 0eadd36d912374 Dmitry Torokhov 2022-09-03 4735 } -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki