[bug report] soc: rockchip: grf: Support multiple grf to be handled
From: Dan Carpenter <hidden>
Date: 2026-02-06 13:41:26
Also in:
linux-rockchip, lkml
[ Smatch checking is paused while we raise funding. #SadFace https://lore.kernel.org/all/aTaiGSbWZ9DJaGo7@stanley.mountain/ (local) -dan ] Hello Shawn Lin, Commit 75fb63ae0312 ("soc: rockchip: grf: Support multiple grf to be handled") from Jan 16, 2026 (linux-next), leads to the following Smatch static checker warning: drivers/soc/rockchip/grf.c:249 rockchip_grf_init() warn: inconsistent refcounting 'np->kobj.kref.refcount.refs.counter': drivers/soc/rockchip/grf.c 212 static int __init rockchip_grf_init(void) 213 { 214 const struct rockchip_grf_info *grf_info; 215 const struct of_device_id *match; 216 struct device_node *np; 217 struct regmap *grf; 218 int ret, i; 219 220 for_each_matching_node_and_match(np, rockchip_grf_dt_match, &match) { 221 if (!of_device_is_available(np)) 222 continue; 223 if (!match || !match->data) { 224 pr_err("%s: missing grf data\n", __func__); 225 of_node_put(np); 226 return -EINVAL; 227 } 228 229 grf_info = match->data; 230 231 grf = syscon_node_to_regmap(np); 232 if (IS_ERR(grf)) { 233 pr_err("%s: could not get grf syscon\n", __func__); 234 return PTR_ERR(grf); Missing of_node_put(np) before returning. 235 } 236 237 for (i = 0; i < grf_info->num_values; i++) { 238 const struct rockchip_grf_value *val = &grf_info->values[i]; 239 240 pr_debug("%s: adjusting %s in %#6x to %#10x\n", __func__, 241 val->desc, val->reg, val->val); 242 ret = regmap_write(grf, val->reg, val->val); 243 if (ret < 0) 244 pr_err("%s: write to %#6x failed with %d\n", 245 __func__, val->reg, ret); 246 } 247 } 248 249 return 0; 250 } regards, dan carpenter