]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
nvmem: layouts: onie-tlv: fix hang on unknown types
authorAndre Heider <a.heider@gmail.com>
Sat, 30 May 2026 20:43:39 +0000 (21:43 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 5 Jun 2026 15:18:58 +0000 (17:18 +0200)
The EEPROM on my board has a vendor specific entry of type 0x41. When
stumbling upon that, this driver hangs in an endless loop.

Fix it by keep incrementing the offset on unknown entries, so the loop
will eventually stop.

Fixes: d3c0d12f6474 ("nvmem: layouts: onie-tlv: Add new layout driver")
Cc: Stable@vger.kernel.org
Signed-off-by: Andre Heider <a.heider@gmail.com>
Reviewed-by: Miquel Raynal <miquel.raynal@bootlin.com>
Signed-off-by: Srinivas Kandagatla <srini@kernel.org>
Link: https://patch.msgid.link/20260530204340.116743-2-srini@kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/nvmem/layouts/onie-tlv.c

index 0967a32319a288d62acc54bf4b99ade42f6c5406..8b0f3c1b8a0e9cfdd7e4ac94af10cec3300b630c 100644 (file)
@@ -119,7 +119,7 @@ static int onie_tlv_add_cells(struct device *dev, struct nvmem_device *nvmem,
 
                cell.name = onie_tlv_cell_name(tlv.type);
                if (!cell.name)
-                       continue;
+                       goto next;
 
                cell.offset = hdr_len + offset + sizeof(tlv.type) + sizeof(tlv.len);
                cell.bytes = tlv.len;
@@ -132,6 +132,7 @@ static int onie_tlv_add_cells(struct device *dev, struct nvmem_device *nvmem,
                        return ret;
                }
 
+next:
                offset += sizeof(tlv) + tlv.len;
        }