From patchwork Thu Jan 11 12:47:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Nuno_Gon=C3=A7alves?= X-Patchwork-Id: 124191 Delivered-To: patch@linaro.org Received: by 10.140.22.227 with SMTP id 90csp629759qgn; Thu, 11 Jan 2018 04:47:56 -0800 (PST) X-Google-Smtp-Source: ACJfBos5MLEE/ll7ksCE8RNyIVBuXqB9An0RkFp05dqXdQRBNP95ctfIMwVNYLN8XC4gmVS2FydX X-Received: by 10.101.99.129 with SMTP id h1mr4090440pgv.101.1515674876282; Thu, 11 Jan 2018 04:47:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515674876; cv=none; d=google.com; s=arc-20160816; b=gD/illArHIDIO0VnsdUXqNN3xEiSP5tENWdAMU2k0r0CwwYTm7p4Vs3bmIm5BLyx0G TjPSskY5y4ajCQynopblqqueYgKnezMzzprBKj+F8oEC/ZJe9lDCdIKyRHpSDJvVIJYL Wz8yxKYoQKnlKdbds7RlzMlAdxYnfW1sUFMcYsQ1VNCgHOV6hV60501WXqVgmQI/bb/e ZwxA9I2vVh8v3ApPhW+n2TEIJ4+LgUhBQw77F/jYViOhlceuXy2+PyZ0jSEoyVbjWyec olGmxJoB96PSYfYHQxIOoKK1F7SnJaA1qjnCpVQOmjZXb4BgnPwALt9KkBHb/w/DWQVG vmBw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:subject:message-id:date:from :mime-version:dkim-signature:arc-authentication-results; bh=SXW3H/N1TG1tzdtaaSTfHvDj99/LT2wkyhjN0puV0zE=; b=poYBw8CiTmZyU9Z8IqieyxqUlh/qJ0IaaL+agLu57DwWrDyNhfFkZpRLgv8PrMuf5O uz78dc/sRYA87D2v/rJfVXG2yaMXeA3AJVJuRfU5dlEd6O+KUjtjhGEre0oOWOnAwCW9 pHMpu7GBdEQYhwwZFZ7X4gBULlqDSY3cnWIDmR4fORK6x+OKj0EhRWSZZVlqlnm/82F4 9flNONYVCnesje+rWLzs0+oEEizjs11CUlVkHay5Oy+CbwOEIB462X2qGBg2r3HOsVpG rkIjeU+5hw2AUeVBqpmFFMM8PBFAp+ZwBEJBqeGmsxmoiiTBf3HFqgO3/G1+57ZY5jCG tqLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=nTIrP6Br; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g12si9029939plm.282.2018.01.11.04.47.55; Thu, 11 Jan 2018 04:47:56 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=nTIrP6Br; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934286AbeAKMry (ORCPT + 28 others); Thu, 11 Jan 2018 07:47:54 -0500 Received: from mail-wm0-f44.google.com ([74.125.82.44]:44920 "EHLO mail-wm0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932531AbeAKMrw (ORCPT ); Thu, 11 Jan 2018 07:47:52 -0500 Received: by mail-wm0-f44.google.com with SMTP id t8so5265107wmc.3 for ; Thu, 11 Jan 2018 04:47:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=SXW3H/N1TG1tzdtaaSTfHvDj99/LT2wkyhjN0puV0zE=; b=nTIrP6Brhfd+7oTCk2ZNrJMuBZwDNYk0zIPMTg2bGLtMjpksd8BGqapjFOYa/Qv/Xn zDJK4s/natXmH4D1wl+I6BsMdjEqErk9IrfJzwwDLYWl6ty6QTfCz+NxEiZZBjlbkfm8 kzueUL6nWfAC0dhLO0BXTeoTlQyPCT2SaOupEMh3ShsZECO6V66wf7lwTKwgQD/IHH8h ZRAiVvePDB1WA8Fqm8biLSZe6olJBdlT976L/OfawDx4SV65lux91L/VF5wNxeLEJVkq iY/V/3CsZBqsy7QoVrJWkyJbC3FrpZafEOtHsyEjhhkTSmjdzWCObVXGcCajSWdA3p4o mKoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=SXW3H/N1TG1tzdtaaSTfHvDj99/LT2wkyhjN0puV0zE=; b=Dy5A8+gx9SUGrPjJmX6SW9b1SymgcqFdH4lCU/D6dmmoOJmkf9J/WRPPMIcqLfgGqv IfaczVIxZSnuFCKio+aV8Xzv12Bq1D4TcZBqj5HN3cjAEcsR7RnU0eVwyik6CwHQAB/T UThQB07cxGBt858mka+GhK5s5NmAg/YjLbIc/jmKU3h4lU3HyKkekY/VHjysP14yyac8 MnjZlmuj101lDhZGG9XJwGP4c09ZtG1QPwoRuQM3LblVbLaaHx+9M3nCBfNMR60tHcpm w7nF2jxwFzVt51uw/mWb4QZ4jfl+2WA4z5wQbqrA1niaPb6WAaVxxuVZzjxBWh5UtxAU X98Q== X-Gm-Message-State: AKwxytc3wGjv91BxszR8MvpRVynq7DgE4RvNVi0jF3yHuyTd49EUfPmY FXn5xnvvdPorW3C9ieg6+VgM/CujqoEWluTEyEIg7Fyo X-Received: by 10.28.191.17 with SMTP id p17mr1041747wmf.91.1515674871671; Thu, 11 Jan 2018 04:47:51 -0800 (PST) MIME-Version: 1.0 Received: by 10.28.17.211 with HTTP; Thu, 11 Jan 2018 04:47:31 -0800 (PST) From: =?utf-8?q?Nuno_Gon=C3=A7alves?= Date: Thu, 11 Jan 2018 13:47:31 +0100 Message-ID: Subject: 8250_dw bug To: ed.blake@sondrel.com, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Dear Ed and Greg, There is a small bug on de9e33bdfa22e607a88494ff21e9196d00bf4550, at least on 32bit devices. Line 274 if (rate >= i * min_rate && rate <= i * max_rate) This will overflow when min_rate/max_rate is large and can not be achieved in the hardware. Eg. stty -F /dev/ttyS2 raw 3500000 (not achievable on my board). target_rate=56000000 (for 3500000baud) min_rate=55125000 max_rate=56875000 rate=24000000 (clk_round_rate for my board) Since my board can only do 1500000baud, this loop will keep incrementing i until i=77*56875000 will overflow, and there are unexpected results. I suggest this patch: if (i <= UART_DIV_MAX) { Let me know if you want me to submit the formal patch. Thanks, Nuno --- a/drivers/tty/serial/8250/8250_dw.c +++ b/drivers/tty/serial/8250/8250_dw.c @@ -267,7 +267,13 @@ static void dw8250_set_termios(struct uart_port *p, struct ktermios *termios, for (i = 1; i <= UART_DIV_MAX; i++) { rate = clk_round_rate(d->clk, i * target_rate); - if (rate >= i * min_rate && rate <= i * max_rate) + + if (rate < i * min_rate) { + i = UART_DIV_MAX; + break; + } + + if (rate <= i * max_rate) break; }