On Wed, Feb 18, 2015 at 1:14 PM, Alexey Dobriyan <adobri...@gmail.com> wrote: > 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
I think this patch won't break any existing module using this function. because this function sets KSTRTOX_OVERFLOW as error status. which is checked by calling function to determine whether value is correct or not. If this flag is set we can simply discard the parsed value. -- 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/