> -----Original Message----- > From: Wood Scott-B07421 > Sent: Thursday, March 21, 2013 5:49 AM > To: Wang Dongsheng-B40534 > Cc: Wood Scott-B07421; Gala Kumar-B11780; linuxppc-dev@lists.ozlabs.org; > Zhao Chenhui-B35336; Li Yang-R58472 > Subject: Re: [PATCH 3/3] powerpc/fsl: add MPIC timer wakeup support > > On 03/19/2013 10:48:53 PM, Wang Dongsheng-B40534 wrote: > > > > > > > -----Original Message----- > > > From: Wood Scott-B07421 > > > Sent: Wednesday, March 20, 2013 6:55 AM > > > To: Wang Dongsheng-B40534 > > > Cc: Wood Scott-B07421; Gala Kumar-B11780; > > linuxppc-dev@lists.ozlabs.org; > > > Zhao Chenhui-B35336; Li Yang-R58472 > > > Subject: Re: [PATCH 3/3] powerpc/fsl: add MPIC timer wakeup support > > > > > > On 03/19/2013 01:25:42 AM, Wang Dongsheng-B40534 wrote: > > > > > -----Original Message----- > > > > > From: Wood Scott-B07421 > > > > > Sent: Tuesday, March 19, 2013 8:31 AM > > > > > To: Wang Dongsheng-B40534 > > > > > Cc: Gala Kumar-B11780; linuxppc-dev@lists.ozlabs.org; Wang > > > > Dongsheng- > > > > > B40534; Zhao Chenhui-B35336; Li Yang-R58472 > > > > > Subject: Re: [PATCH 3/3] powerpc/fsl: add MPIC timer wakeup > > support > > > > > > > > > > On 03/08/2013 01:38:47 AM, Wang Dongsheng wrote: > > > > > > +static ssize_t fsl_timer_wakeup_store(struct device *dev, > > > > > > + struct device_attribute *attr, > > > > > > + const char *buf, > > > > > > + size_t count) > > > > > > +{ > > > > > > + struct timeval interval; > > > > > > + int ret; > > > > > > + > > > > > > + interval.tv_usec = 0; > > > > > > + if (kstrtol(buf, 0, &interval.tv_sec)) > > > > > > + return -EINVAL; > > > > > > > > > > I don't think the buffer will NUL-terminated... Ordinarily > > > > there'll be > > > > > an LF terminator, but you can't rely on that (many other sysfs > > > > attributes > > > > > seem to, though...). > > > > > > > > > I think we don't need to care about LF terminator. > > > > The kstrtol--> _kstrtoull has been done. > > > > > > My point is, what happens if userspace passes in a buffer that has > > no > > > terminator of any sort? kstrtol will continue reading beyond the > > end of > > > the buffer. > > > > > Do not care about terminator. > > kstrtol() obviously *does* because it doesn't take the buffer length as > a parameter. > > > kstrtol--> _kstrtoull--> _parse_integer > > > > _kstrtoull(...) { > > ... > > rv = _parse_integer(s, base, &_res); > > if (rv & KSTRTOX_OVERFLOW) > > return -ERANGE; > > rv &= ~KSTRTOX_OVERFLOW; > > if (rv == 0) > > return -EINVAL; > > s += rv; > > > > if (*s == '\n') > > s++; > > if (*s) > > return -EINVAL; > > ... > > } > > > > _parse_integer(...) { > > ... > > while (*s) { > > if ('0' <= *s && *s <= '9') > > val = *s - '0'; > > else if ('a' <= _tolower(*s) && _tolower(*s) <= 'f') > > val = _tolower(*s) - 'a' + 10; > > else > > break; //this will break out to convert. > > Really? How do you know that the next byte after the buffer isn't a > valid hex digit? How do you even know that we won't take a fault > accessing it? > Under what case is unsafe, please make sense.
"kstrtol" is used in almost of sysfs interface, I think it should be accepted in defaule :). _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev