On Tue, Feb 17, 2015 at 04:17:24PM -0800, Andrew Morton wrote: > ? > > Begin forwarded message: > > Date: Mon, 16 Feb 2015 10:48:50 -0800 > From: Anshul Garg <aksgarg1...@gmail.com> > To: linux-kernel@vger.kernel.org > Cc: aksgarg1...@gmail.com, anshu...@samsung.com, torva...@linux-foundation.org > Subject: [PATCH] lib/kstrtox.c Stop parsing integer on overflow > > > From: Anshul Garg <aksgarg1...@gmail.com> > > While converting string representation to integer > break the loop if overflow is detected. > > Signed-off-by: Anshul Garg <aksgarg1...@gmail.com> > --- > lib/kstrtox.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/lib/kstrtox.c b/lib/kstrtox.c > index ec8da78..6f30209 100644 > --- a/lib/kstrtox.c > +++ b/lib/kstrtox.c > @@ -70,8 +70,10 @@ unsigned int _parse_integer(const char *s, unsigned int > base, unsigned long long > * it in the max base we support (16) > */ > if (unlikely(res & (~0ull << 60))) { > - if (res > div_u64(ULLONG_MAX - val, base)) > + if (res > div_u64(ULLONG_MAX - val, base)) { > overflow = 1; > + break; > + } > } > res = res * base + val; > rv++;
The _notion_ of a patch is OK if you want EVERY simple_strtoull() call to stop parsing past overflow right now. It SHOULD have done so from day 1, but it doesn't do that. When I wrote kstrto*() code I deliberatedly didn't break this bug because of the sheer number of call sites. If you are OK with changing bug-for-bug compatibility, then patch simply need to delete overflow detection code. Alexey -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/