From: Dan Carpenter <dan.carpenter@oracle.com>
To: Jingoo Han <jg1.han@samsung.com>,
Michael Hennerich <michael.hennerich@analog.com>
Cc: "'Greg Kroah-Hartman'" <gregkh@linuxfoundation.org>,
devel@driverdev.osuosl.org, linux-iio@vger.kernel.org,
Jonathan Cameron <jic23@cam.ac.uk>
Subject: Re: [PATCH 2/2] staging: iio: replace strict_strto*() with kstrto*()
Date: Tue, 23 Jul 2013 14:26:55 +0300 [thread overview]
Message-ID: <20130723112655.GR5585@mwanda> (raw)
In-Reply-To: <001d01ce878e$0e76b710$2b642530$@samsung.com>
On Tue, Jul 23, 2013 at 07:19:03PM +0900, Jingoo Han wrote:
> diff --git a/drivers/staging/iio/trigger/iio-trig-bfin-timer.c b/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
> index 38a158b..03766bb 100644
> --- a/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
> +++ b/drivers/staging/iio/trigger/iio-trig-bfin-timer.c
> @@ -87,7 +87,7 @@ static ssize_t iio_bfin_tmr_frequency_store(struct device *dev,
> bool enabled;
> int ret;
>
> - ret = strict_strtoul(buf, 10, &val);
> + ret = kstrtoul(buf, 10, &val);
> if (ret)
> goto error_ret;
>
Btw, this function is not beautiful.
drivers/staging/iio/trigger/iio-trig-bfin-timer.c
81 static ssize_t iio_bfin_tmr_frequency_store(struct device *dev,
82 struct device_attribute *attr, const char *buf, size_t count)
83 {
84 struct iio_trigger *trig = to_iio_trigger(dev);
85 struct bfin_tmr_state *st = iio_trigger_get_drvdata(trig);
86 unsigned long val;
87 bool enabled;
88 int ret;
89
90 ret = strict_strtoul(buf, 10, &val);
91 if (ret)
92 goto error_ret;
I have updated CodingStyle to reflect that we are encouraged to
return directly here instead of doing bogus gotos which imply
error handly but in fact do nothing at all.
93
94 if (val > 100000) {
95 ret = -EINVAL;
96 goto error_ret;
97 }
98
99 enabled = get_enabled_gptimers() & st->t->bit;
100
101 if (enabled)
102 disable_gptimers(st->t->bit);
103
104 if (!val)
105 goto error_ret;
So at this point we have disabled disable_gptimers(). The goto is
called "error_ret" which says "error" but actually we are returning
success. It's easy to imagine that "val == 0" is invalid because
that would cause a divide by zero. But on the other hand maybe zero
has a special meaning which is that we should disable gptimers and
return success?
If the code said:
if (enabled)
disable_gptimers(st->t->bit);
if (val == 0)
return count;
[---blank line---]
val = get_sclk() / val;
That would be totally clear what was intended.
106
107 val = get_sclk() / val;
108 if (val <= 4 || val <= st->duty) {
109 ret = -EINVAL;
110 goto error_ret;
I'm pretty sure this is a bug. We want to enable gptimers if "val"
is totally invalid.
111 }
112
113 set_gptimer_period(st->t->id, val);
114 set_gptimer_pwidth(st->t->id, val - st->duty);
115
116 if (enabled)
117 enable_gptimers(st->t->bit);
118
119 error_ret:
120 return ret ? ret : count;
121 }
regards,
dan carpenter
next prev parent reply other threads:[~2013-07-23 11:26 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-23 10:19 [PATCH 2/2] staging: iio: replace strict_strto*() with kstrto*() Jingoo Han
2013-07-23 10:52 ` Dan Carpenter
2013-07-23 11:26 ` Dan Carpenter [this message]
2013-07-23 11:33 ` Lars-Peter Clausen
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=20130723112655.GR5585@mwanda \
--to=dan.carpenter@oracle.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=jg1.han@samsung.com \
--cc=jic23@cam.ac.uk \
--cc=linux-iio@vger.kernel.org \
--cc=michael.hennerich@analog.com \
/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).