mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: Sascha Hauer <s.hauer@pengutronix.de>
To: Andrey Smirnov <andrew.smirnov@gmail.com>
Cc: Barebox List <barebox@lists.infradead.org>
Subject: Re: [PATCH] serial: lpuart: Avoid division by zero when requested baudrate is
Date: Tue, 15 May 2018 08:07:27 +0200	[thread overview]
Message-ID: <20180515060727.j6zcpqcu7vwbd3bn@pengutronix.de> (raw)
In-Reply-To: <CAHQ1cqH0K04JFKYxhf_udU2dFA0dj9HLkYhtLpYJ+XUhv7H3Pw@mail.gmail.com>

On Mon, May 14, 2018 at 05:20:56PM -0700, Andrey Smirnov wrote:
> On Mon, May 14, 2018 at 12:14 AM, Sascha Hauer <s.hauer@pengutronix.de> wrote:
> > On Tue, May 08, 2018 at 02:15:02PM -0700, Andrey Smirnov wrote:
> >> With serdev device support added there's now a corner case where:
> >>
> >>  1. There is a DT node for a serdev device on one of the UARTs
> >>  2. There is no driver that binds against serdev device's compatibility
> >>     string
> >>
> >> with 1 and 2 being true it is possible to end up in a situation where
> >> a particualr UART has not been initalized to any baudrate when
> >> clock_notifier_call_chain() gets called. This effectively translates
> >> to
> >>
> >>       set_baudrate(uart, 0);
> >>
> >> which for LPUART driver result in a division by zero.
> >
> > This probably leads to a division by zero for most drivers since
> > dividing by the baudrate is a common pattern. Wouldn't it be better to
> > catch this is console_set_baudrate()?
> >
> 
> It would, but none of the drivers that register a callback with
> clock_register_client() (serial_imx.c, serial_auart.c, stm-serial.c,
> serial_lpuart.c and serial_cadence.c) use console_set_badrate() and
> instead call ->setbrg() directly. Probably because
> console_set_baudrate() also handles interactive baudrate switch for
> f_active console devices. Serial_imx.c doesn't preform any division,
> so it is safe and I can go through the rest of them to add appropriate
> checks? Another option is probably to try to come up with common
> clock_register_client() infrastructure(since all of the handlers are
> the same) and keep that check there.
> 
> Let me know if you want me to do either.

I see. For the sake of simplicity I think we can go with your original
patch. In the auart and cadence driver the clock notify stuff is unused,
only copy paste leftover from copying the i.MX driver. That leaves the
lpuart driver which really has this problem.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

  reply	other threads:[~2018-05-15  6:07 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-08 21:15 Andrey Smirnov
2018-05-14  7:14 ` Sascha Hauer
2018-05-15  0:20   ` Andrey Smirnov
2018-05-15  6:07     ` Sascha Hauer [this message]
2018-08-11 19:35       ` Andrey Smirnov
2018-08-13  7:14         ` Sascha Hauer

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=20180515060727.j6zcpqcu7vwbd3bn@pengutronix.de \
    --to=s.hauer@pengutronix.de \
    --cc=andrew.smirnov@gmail.com \
    --cc=barebox@lists.infradead.org \
    /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