From: Pengpeng Hou Date: Fri, 3 Apr 2026 06:55:12 +0000 (+0800) Subject: soundwire: validate DT compatible before parsing it X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=45c7bda7b7440183850012153988e40b300f40d0;p=thirdparty%2Flinux.git soundwire: validate DT compatible before parsing it `sdw_of_find_slaves()` fetches raw `"compatible"` bytes with `of_get_property()` and then immediately parses them with `sscanf("sdw%01x%04hx%04hx%02hhx", ...)`. Live-tree OF properties are stored as raw bytes plus a separate length; they are not globally guaranteed to be NUL-terminated. Validate the first compatible string before parsing it. Signed-off-by: Pengpeng Hou Link: https://patch.msgid.link/20260403183504.4-soundwire-compatible-pengpeng@iscas.ac.cn Signed-off-by: Vinod Koul --- diff --git a/drivers/soundwire/slave.c b/drivers/soundwire/slave.c index ff763b692078d..e0c49cbcb1bab 100644 --- a/drivers/soundwire/slave.c +++ b/drivers/soundwire/slave.c @@ -244,8 +244,8 @@ int sdw_of_find_slaves(struct sdw_bus *bus) struct sdw_slave_id id; const __be32 *addr; - compat = of_get_property(node, "compatible", NULL); - if (!compat) + ret = of_property_read_string(node, "compatible", &compat); + if (ret) continue; ret = sscanf(compat, "sdw%01x%04hx%04hx%02hhx", &sdw_version,