From: lee.jones@linaro.org (Lee Jones)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 06/11] mfd: htc-i2cpld: Rectify pointer offset error
Date: Thu, 28 Aug 2014 14:14:12 +0100 [thread overview]
Message-ID: <1409231657-18294-6-git-send-email-lee.jones@linaro.org> (raw)
In-Reply-To: <1409231657-18294-1-git-send-email-lee.jones@linaro.org>
Checking the result of container_of() against NULL will always result to
false. Using the offset of member 'chip_out' to find the start of 'struct
htcpld_chip' will result in an offset error when .get_chip() is attempting
to obtain 'htcpld-in'. Instead, we'll use the correct member based on a
previously the set chip label.
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/mfd/htc-i2cpld.c | 33 ++++++++++-----------------------
1 file changed, 10 insertions(+), 23 deletions(-)
diff --git a/drivers/mfd/htc-i2cpld.c b/drivers/mfd/htc-i2cpld.c
index 073e180..99b362e 100644
--- a/drivers/mfd/htc-i2cpld.c
+++ b/drivers/mfd/htc-i2cpld.c
@@ -258,31 +258,18 @@ static void htcpld_chip_set_ni(struct work_struct *work)
static int htcpld_chip_get(struct gpio_chip *chip, unsigned offset)
{
struct htcpld_chip *chip_data;
- int val = 0;
- int is_input = 0;
-
- /* Try out first */
- chip_data = container_of(chip, struct htcpld_chip, chip_out);
- if (!chip_data) {
- /* Try in */
- is_input = 1;
- chip_data = container_of(chip, struct htcpld_chip, chip_in);
- if (!chip_data)
- return -EINVAL;
- }
+ u8 cache;
- /* Determine if this is an input or output GPIO */
- if (!is_input)
- /* Use the output cache */
- val = (chip_data->cache_out >> offset) & 1;
- else
- /* Use the input cache */
- val = (chip_data->cache_in >> offset) & 1;
+ if (!strncmp(chip->label, "htcpld-out", 10)) {
+ chip_data = container_of(chip, struct htcpld_chip, chip_out);
+ cache = chip_data->cache_out;
+ } else if (!strncmp(chip->label, "htcpld-in", 9)) {
+ chip_data = container_of(chip, struct htcpld_chip, chip_in);
+ cache = chip_data->cache_in;
+ } else
+ return -EINVAL;
- if (val)
- return 1;
- else
- return 0;
+ return (cache >> offset) & 1;
}
static int htcpld_direction_output(struct gpio_chip *chip,
--
1.9.1
next prev parent reply other threads:[~2014-08-28 13:14 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-28 13:14 [PATCH 01/11] iio: sensors-core: st: Check st_sensors_set_drdy_int_pin()'s return value Lee Jones
2014-08-28 13:14 ` [PATCH 02/11] misc: st_core: Protect unsigned value against becoming negative Lee Jones
2014-08-28 13:14 ` [PATCH 03/11] misc: st_kim: Increase size of dev_name buffer to incorporate termination Lee Jones
2014-08-28 13:14 ` [PATCH 04/11] mfd: htc-i2cpld: container_of() cannot return NULL Lee Jones
2014-08-28 13:14 ` [PATCH 05/11] mfd: htc-i2cpld: Use '!variable' instead of 'variable == NULL' Lee Jones
2014-08-28 13:14 ` Lee Jones [this message]
2014-08-28 13:14 ` [PATCH 07/11] mfd: wm5102: Insert missing break in case statement Lee Jones
2014-08-28 13:14 ` [PATCH 08/11] mfd: max77686: Remove check which is always true Lee Jones
2014-08-28 13:14 ` [PATCH 09/11] mfd: pcf50633: Check return value of platform_device_add() Lee Jones
2014-08-28 13:14 ` [PATCH 10/11] mfd: twl4030-irq: Check return value from twl_i2c_write() - warn() on failure Lee Jones
2014-08-28 13:14 ` [PATCH 11/11] mfd: sm501: Avoid implicit sign extension Lee Jones
2014-08-30 9:49 ` [PATCH 01/11] iio: sensors-core: st: Check st_sensors_set_drdy_int_pin()'s return value Jonathan Cameron
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1409231657-18294-6-git-send-email-lee.jones@linaro.org \
--to=lee.jones@linaro.org \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).