mirror of
https://github.com/raspberrypi/linux.git
synced 2025-12-06 01:49:46 +00:00
Input: iqs7222 - protect against undefined slider size
[ Upstream commit2f6fd23297] Select variants of silicon do not define a default slider size, in which case the size must be specified in the device tree. If it is not, the axis's maximum value is reported as 65535 due to unsigned integer overflow. To solve this problem, move the existing zero-check outside of the conditional block that checks whether the property is present. Fixes:e505edaedc("Input: add support for Azoteq IQS7222A/B/C") Signed-off-by: Jeff LaBundy <jeff@labundy.com> Link: https://lore.kernel.org/r/Y1SRXEi7XMlncDWk@nixie71 Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
172d4d6407
commit
a7e8439e29
@@ -2066,7 +2066,7 @@ static int iqs7222_parse_sldr(struct iqs7222_private *iqs7222, int sldr_index)
|
||||
sldr_setup[4 + reg_offset] -= 2;
|
||||
|
||||
if (!fwnode_property_read_u32(sldr_node, "azoteq,slider-size", &val)) {
|
||||
if (!val || val > dev_desc->sldr_res) {
|
||||
if (val > dev_desc->sldr_res) {
|
||||
dev_err(&client->dev, "Invalid %s size: %u\n",
|
||||
fwnode_get_name(sldr_node), val);
|
||||
return -EINVAL;
|
||||
@@ -2081,6 +2081,13 @@ static int iqs7222_parse_sldr(struct iqs7222_private *iqs7222, int sldr_index)
|
||||
}
|
||||
}
|
||||
|
||||
if (!(reg_offset ? sldr_setup[3]
|
||||
: sldr_setup[2] & IQS7222_SLDR_SETUP_2_RES_MASK)) {
|
||||
dev_err(&client->dev, "Undefined %s size\n",
|
||||
fwnode_get_name(sldr_node));
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (!fwnode_property_read_u32(sldr_node, "azoteq,top-speed", &val)) {
|
||||
if (val > (reg_offset ? U16_MAX : U8_MAX * 4)) {
|
||||
dev_err(&client->dev, "Invalid %s top speed: %u\n",
|
||||
|
||||
Reference in New Issue
Block a user