lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 26 Jul 2013 10:05:21 -0700
From:	Stephen Boyd <sboyd@...eaurora.org>
To:	Bjorn Andersson <bjorn@...o.se>
Cc:	Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
	linux-kernel@...r.kernel.org, linux-arm-msm@...r.kernel.org,
	linux-arm-kernel@...ts.infradead.org,
	David Brown <davidb@...eaurora.org>,
	linux-serial@...r.kernel.org
Subject: Re: [PATCH 3/4] msm_serial: Make baud_code detection more dynamic

On 07/25, Bjorn Andersson wrote:
> On Wed, Jul 24, 2013 at 10:37 AM, Stephen Boyd <sboyd@...eaurora.org> wrote:
> > [snip]
> > +       unsigned int i, divisor;
> > +       const struct msm_baud_map *entry;
> > +       static const struct msm_baud_map table[] = {
> > +               { 1536, 0x00,  1 },
> > +               {  768, 0x11,  1 },
> > +               {  384, 0x22,  1 },
> > +               {  192, 0x33,  1 },
> > +               {   96, 0x44,  1 },
> > +               {   48, 0x55,  1 },
> > +               {   32, 0x66,  1 },
> > +               {   24, 0x77,  1 },
> > +               {   16, 0x88,  1 },
> > +               {   12, 0x99,  6 },
> > +               {    8, 0xaa,  6 },
> > +               {    6, 0xbb,  6 },
> > +               {    4, 0xcc,  6 },
> > +               {    3, 0xdd,  8 },
> > +               {    2, 0xee, 16 },
> > +               {    1, 0xff, 31 },
> > +       };
> > +
> > +       divisor = uart_get_divisor(port, baud);
> > +
> > +       for (i = 0, entry = table; i < ARRAY_SIZE(table); i++, entry++)
> > +               if (entry->divisor <= divisor)
> > +                       break;
> > +
> > +       return entry; /* Default to smallest divider */
> 
> Shouldn't matter, but you're not defaulting to the smallest divider.
> Your are defaulting to an undefined value, as `entry` will be off the
> array once i == ARRAY_SIZE().
> 

Yes because the if condition will always be true. Perhaps that's
too confusing? We could add a subtraction by 1 to make it more
obvious.

 for (i = 0; entry = table; i < ARRAY_SIZE(table) - 1; i++, entry++)
 	if (entry->divisor <= divisor)
		break;

 return entry; /* Default to smallest divider*/

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ