[PATCH] thunderbolt: nhi: Don't act on random stack values

Konrad Dybcio posted 1 patch 1 month ago
drivers/thunderbolt/nhi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] thunderbolt: nhi: Don't act on random stack values
Posted by Konrad Dybcio 1 month ago
From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>

device_property_read_foo() returns 0 on success and only then modifies
'val'. Currently, val is left uninitialized if the aforementioned
function returns non-zero, making nhi_wake_supported() return true
almost always (random != 0) if the property is not present in device
firmware.

Invert the check to make it make sense.

Note device_property_read_bool() would not be fitting here, as both
0 and (presumably) 1 seem to be acceptable values if the property is
present at all.

Fixes: 3cdb9446a117 ("thunderbolt: Add support for Intel Ice Lake")
Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
---
 drivers/thunderbolt/nhi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/thunderbolt/nhi.c b/drivers/thunderbolt/nhi.c
index ccce020a2432..2bb2e79ca3cb 100644
--- a/drivers/thunderbolt/nhi.c
+++ b/drivers/thunderbolt/nhi.c
@@ -1020,7 +1020,7 @@ static bool nhi_wake_supported(struct pci_dev *pdev)
 	 * If power rails are sustainable for wakeup from S4 this
 	 * property is set by the BIOS.
 	 */
-	if (device_property_read_u8(&pdev->dev, "WAKE_SUPPORTED", &val))
+	if (!device_property_read_u8(&pdev->dev, "WAKE_SUPPORTED", &val))
 		return !!val;
 
 	return true;

---
base-commit: fc7b1a72c6cd5cbbd989c6c32a6486e3e4e3594d
change-id: 20260309-topic-tbt_fixup-407e9a7814f6

Best regards,
-- 
Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Re: [PATCH] thunderbolt: nhi: Don't act on random stack values
Posted by Mika Westerberg 1 month ago
On Mon, Mar 09, 2026 at 10:39:49AM +0100, Konrad Dybcio wrote:
> From: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
> 
> device_property_read_foo() returns 0 on success and only then modifies
> 'val'. Currently, val is left uninitialized if the aforementioned
> function returns non-zero, making nhi_wake_supported() return true
> almost always (random != 0) if the property is not present in device
> firmware.
> 
> Invert the check to make it make sense.

Good catch!

> Note device_property_read_bool() would not be fitting here, as both
> 0 and (presumably) 1 seem to be acceptable values if the property is
> present at all.

I think all the systems out there just have this 1 which is why it has been
"working" so far.

> Fixes: 3cdb9446a117 ("thunderbolt: Add support for Intel Ice Lake")
> Signed-off-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>

Marked for stable and applied to thunderbolt.git/fixes, thanks!