VYPR
Unrated severityNVD Advisory· Published May 27, 2026· Updated May 27, 2026

CVE-2026-46001

CVE-2026-46001

Description

In the Linux kernel, the following vulnerability has been resolved:

hwmon: (pt5161l) Fix bugs in pt5161l_read_block_data()

Fix two bugs in pt5161l_read_block_data():

1. Buffer overrun: The local buffer rbuf is declared as u8 rbuf[24], but i2c_smbus_read_block_data() can return up to I2C_SMBUS_BLOCK_MAX (32) bytes. The i2c-core copies the data into the caller's buffer before the return value can be checked, so the post-read length validation does not prevent a stack overrun if a device returns more than 24 bytes. Resize the buffer to I2C_SMBUS_BLOCK_MAX.

2. Unexpected positive return on length mismatch: When all three retries are exhausted because the device returns data with an unexpected length, i2c_smbus_read_block_data() returns a positive byte count. The function returns this directly, and callers treat any non-negative return as success, processing stale or incomplete buffer contents. Return -EIO when retries are exhausted with a positive return value, preserving the negative error code on I2C failure.

Affected products

1

Patches

8
95d48e37a130

hwmon: (pt5161l) Fix bugs in pt5161l_read_block_data()

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.gitSanman PradhanApr 10, 2026Fixed in 6.18.27via kernel-cna
2 files changed · +4 6
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index 20e3cfa625f170..89d4da8aa4c093 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -121,7 +121,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -151,7 +151,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index 20e3cfa625f170..89d4da8aa4c093 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -121,7 +121,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -151,7 +151,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
24c73e93d6a7

hwmon: (pt5161l) Fix bugs in pt5161l_read_block_data()

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.gitSanman PradhanApr 10, 2026Fixed in 7.1-rc1via kernel-cna
2 files changed · +4 6
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index 20e3cfa625f170..89d4da8aa4c093 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -121,7 +121,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -151,7 +151,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index 20e3cfa625f170..89d4da8aa4c093 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -121,7 +121,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -151,7 +151,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
a11aa9c5fd9d

hwmon: (pt5161l) Fix bugs in pt5161l_read_block_data()

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.gitSanman PradhanApr 10, 2026Fixed in 7.0.4via kernel-cna
2 files changed · +4 6
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index 20e3cfa625f170..89d4da8aa4c093 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -121,7 +121,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -151,7 +151,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index 20e3cfa625f170..89d4da8aa4c093 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -121,7 +121,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -151,7 +151,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
7eccabff1c9e

hwmon: (pt5161l) Fix bugs in pt5161l_read_block_data()

https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.gitSanman PradhanApr 10, 2026Fixed in 6.12.86via kernel-cna
2 files changed · +4 6
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index a9f0b23f9e76e6..f95750522699db 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -124,7 +124,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -154,7 +154,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index a9f0b23f9e76e6..f95750522699db 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -124,7 +124,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -154,7 +154,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
95d48e37a130

hwmon: (pt5161l) Fix bugs in pt5161l_read_block_data()

2 files changed · +4 6
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index 20e3cfa625f170..89d4da8aa4c093 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -121,7 +121,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -151,7 +151,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index 20e3cfa625f170..89d4da8aa4c093 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -121,7 +121,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -151,7 +151,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
7eccabff1c9e

hwmon: (pt5161l) Fix bugs in pt5161l_read_block_data()

2 files changed · +4 6
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index a9f0b23f9e76e6..f95750522699db 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -124,7 +124,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -154,7 +154,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index a9f0b23f9e76e6..f95750522699db 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -124,7 +124,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -154,7 +154,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
a11aa9c5fd9d

hwmon: (pt5161l) Fix bugs in pt5161l_read_block_data()

2 files changed · +4 6
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index 20e3cfa625f170..89d4da8aa4c093 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -121,7 +121,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -151,7 +151,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index 20e3cfa625f170..89d4da8aa4c093 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -121,7 +121,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -151,7 +151,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
24c73e93d6a7

hwmon: (pt5161l) Fix bugs in pt5161l_read_block_data()

2 files changed · +4 6
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index 20e3cfa625f170..89d4da8aa4c093 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -121,7 +121,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -151,7 +151,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    
  • drivers/hwmon/pt5161l.c+2 3 modified
    diff --git a/drivers/hwmon/pt5161l.c b/drivers/hwmon/pt5161l.c
    index 20e3cfa625f170..89d4da8aa4c093 100644
    --- a/drivers/hwmon/pt5161l.c
    +++ b/drivers/hwmon/pt5161l.c
    @@ -121,7 +121,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     	int ret, tries;
     	u8 remain_len = len;
     	u8 curr_len;
    -	u8 wbuf[16], rbuf[24];
    +	u8 wbuf[16], rbuf[I2C_SMBUS_BLOCK_MAX];
     	u8 cmd = 0x08; /* [7]:pec_en, [4:2]:func, [1]:start, [0]:end */
     	u8 config = 0x00; /* [6]:cfg_type, [4:1]:burst_len, [0]:address bit16 */
     
    @@ -151,7 +151,7 @@ static int pt5161l_read_block_data(struct pt5161l_data *data, u32 address,
     				break;
     		}
     		if (tries >= 3)
    -			return ret;
    +			return ret < 0 ? ret : -EIO;
     
     		memcpy(val, rbuf, curr_len);
     		val += curr_len;
    -- 
    cgit 1.3-korg
    
    
    

Vulnerability mechanics

Root cause

"Stack buffer overrun due to undersized local buffer (24 bytes vs. up to 32 bytes from i2c_smbus_read_block_data), and missing error conversion when retries are exhausted with a positive return value."

Attack vector

An attacker with control over a malicious I2C device on the same bus as the PT5161L retimer can cause the driver to read more than 24 bytes via i2c_smbus_read_block_data(). Because the i2c-core copies data into the caller's buffer before the return value is checked, the post-read length validation does not prevent a stack buffer overrun [patch_id=2660545]. Additionally, if the device returns data with an unexpected length on all three retries, the function previously returned a positive byte count, which callers treat as success, causing them to process stale or incomplete buffer contents [patch_id=2660545].

Affected code

The vulnerable function is pt5161l_read_block_data() in drivers/hwmon/pt5161l.c [patch_id=2660545]. The local buffer rbuf was declared as u8 rbuf[24] but i2c_smbus_read_block_data() can write up to I2C_SMBUS_BLOCK_MAX (32) bytes. The retry-exhaustion path returned ret directly without converting a positive byte count to a negative error code.

What the fix does

The patch makes two changes in pt5161l_read_block_data() [patch_id=2660545]. First, the local receive buffer rbuf is resized from u8 rbuf[24] to u8 rbuf[I2C_SMBUS_BLOCK_MAX] (32 bytes), matching the maximum the I2C core can write. Second, when all three retries are exhausted, the return statement is changed from "return ret" to "return ret < 0 ? ret : -EIO", ensuring that a positive byte count from i2c_smbus_read_block_data() is converted to a negative error code so callers correctly recognize failure.

Preconditions

  • inputA malicious or faulty I2C device must be present on the same I2C bus as the PT5161L retimer, or the PT5161L device itself must be compromised to return unexpected data lengths.
  • configThe kernel must have the pt5161l driver loaded and actively communicating with the I2C device.

Generated on May 27, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

4

News mentions

0

No linked articles in our index yet.