aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorJeff LaBundy <jeff@labundy.com>2022-04-17 16:05:07 -0700
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2022-04-17 16:08:58 -0700
commit66ab05c75642712f382a17a887eb558caa6646e1 (patch)
treea87902e8d682274d0f87c47174858beb8490ca9b /drivers/input
parentInput: iqs7222 - propagate some error codes correctly (diff)
downloadlinux-dev-66ab05c75642712f382a17a887eb558caa6646e1.tar.xz
linux-dev-66ab05c75642712f382a17a887eb558caa6646e1.zip
Input: iqs7222 - avoid dereferencing a NULL pointer
Select callers of iqs7222_parse_props() do not expect a child node to be derived and returned via pointer. As such, these callers set **child_node to NULL. However, this pointer is dereferenced in all cases. To solve this problem, dereference the pointer only for cases that expect a child node in the first place. In these cases, the caller provides a valid pointer. Fixes: e505edaedcb9 ("Input: add support for Azoteq IQS7222A/B/C") Reported-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Jeff LaBundy <jeff@labundy.com> Link: https://lore.kernel.org/r/20220417214132.497487-1-jeff@labundy.com Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/misc/iqs7222.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/input/misc/iqs7222.c b/drivers/input/misc/iqs7222.c
index c0b273222092..6b4138771a3f 100644
--- a/drivers/input/misc/iqs7222.c
+++ b/drivers/input/misc/iqs7222.c
@@ -1534,8 +1534,8 @@ static int iqs7222_parse_props(struct iqs7222_private *iqs7222,
enum iqs7222_reg_key_id reg_key)
{
u16 *setup = iqs7222_setup(iqs7222, reg_grp, child_index);
- struct fwnode_handle *reg_grp_node = *child_node;
struct i2c_client *client = iqs7222->client;
+ struct fwnode_handle *reg_grp_node;
char reg_grp_name[16];
int i;
@@ -1550,7 +1550,8 @@ static int iqs7222_parse_props(struct iqs7222_private *iqs7222,
* for additional group-specific processing. In some cases, the
* child node may have already been derived.
*/
- if (*child_node)
+ reg_grp_node = *child_node;
+ if (reg_grp_node)
break;
snprintf(reg_grp_name, sizeof(reg_grp_name), "%s-%d",