Hello Baolin Wang, The patch 4f1acd758b08: "hwspinlock: Add devm_xxx() APIs to request/free hwlock" from Jun 22, 2018, leads to the following static checker warning: drivers/hwspinlock/hwspinlock_core.c:883 devm_hwspin_lock_request() warn: 'hwlock' isn't an ERR_PTR drivers/hwspinlock/hwspinlock_core.c 860 /** 861 * devm_hwspin_lock_request() - request an hwspinlock for a managed device 862 * @dev: the device to request an hwspinlock 863 * 864 * This function should be called by users of the hwspinlock device, 865 * in order to dynamically assign them an unused hwspinlock. 866 * Usually the user of this lock will then have to communicate the lock's id 867 * to the remote core before it can be used for synchronization (to get the 868 * id of a given hwlock, use hwspin_lock_get_id()). 869 * 870 * Should be called from a process context (might sleep) 871 * 872 * Returns the address of the assigned hwspinlock, or NULL on error ^^^^^^^^^^^^^ This is supposed to return NULL on error. 873 */ 874 struct hwspinlock *devm_hwspin_lock_request(struct device *dev) 875 { 876 struct hwspinlock **ptr, *hwlock; 877 878 ptr = devres_alloc(devm_hwspin_lock_release, sizeof(*ptr), GFP_KERNEL); 879 if (!ptr) 880 return ERR_PTR(-ENOMEM); ^^^^^^^^^^^^^^^ But it returns error pointers 881 882 hwlock = hwspin_lock_request(); 883 if (!IS_ERR(hwlock)) { 884 *ptr = hwlock; 885 devres_add(dev, ptr); 886 } else { 887 devres_free(ptr); 888 } 889 890 return hwlock; The hwspin_lock_request() returns NULL on error or error pointer if it's defined away. Callers are supposed to check for NULL so that the error pointer is treated as success. (Which is sort of the opposite of how it normally works where error pointers are errors and NULL is a special type of success). But then we return "hwlock" which I guess can be either NULL or possibly and error pointer or a valid pointer? I didn't look at the defines to check how this works because either way the function needs to be cleaned up a bit. 891 } 892 EXPORT_SYMBOL_GPL(devm_hwspin_lock_request); regards, dan carpenter -- To unsubscribe from this list: send the line "unsubscribe linux-remoteproc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html