Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp855100yba; Wed, 24 Apr 2019 10:40:59 -0700 (PDT) X-Google-Smtp-Source: APXvYqzdLFSOis6RDIC4baJ7Dum4cviu59nZvObate6v16VmU1DnU3plZQz6Ey+Vyw05e7vA8h5b X-Received: by 2002:a63:188:: with SMTP id 130mr29941398pgb.391.1556127659625; Wed, 24 Apr 2019 10:40:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556127659; cv=none; d=google.com; s=arc-20160816; b=zbE5EbYyvS7oWS7Y0bNhyQzR8n1IrO0QoxJTInra6QEXABx0+jl5ovdH6Brf/Xbv8t OSuiZ77p4ylxhfbs9QesT/AwZC8DHyzT574w89YtM1Uj8bLJYNYlRG7tAYl0DfkcG5W7 nLGsDOGGZi4LCOTZR8271MXmjguTacpEMRDlnp5AHQXSXZR8Cd+VcM1A2S6KPJkDwEmU qvpxLimEBev2UUX2Uy2g9Hg5VcaFmroVRtTVh2x7wULKKNPg4qfOfDLcbHBaLsj6QFO/ QuZHnhxZYHL+yRgrL6+e9uQ4Mnsqk545Ut7tK1JTLloqBhVJQHf4tYJyp3JDjgy84cIV TEOg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=IZoKIFJtDFpLBsEDLII1QJEMD/mt9tR9qgGOK4q/gTw=; b=u/0lox5rG31hMXUDSZaS8PqCbKtY1uMwVE4Qz5iv2s4kjbrZldF5a1/nmZuJt6DIDF 6TGAKzS+mU8Yw/DrmB3npq3Kaap7j2zL7D3mXVpyX3pRYTahu8B1PzVRPTwBJnuwJpN8 qURVaUjPe5/TTeUA+gP18NwrgYtp0yO3mOR7HYFMI5Ehjux7wYMwcJAeC2tc8ZeZg/rP PKQQfqKslJzOanu9JRKVX6cIb5x8LcLfFF+g4dGddtJU3/ZwiLGwLyTXzalVCZ/B3rLo mywmntqWiq2cLuReFvMRchalO5vdr5TP0we4BWZt8yEzQgmPyEiVeKxvCwJxvL5uQOpg Tnzw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=1DXWWbFH; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a11si17713538pgw.384.2019.04.24.10.40.44; Wed, 24 Apr 2019 10:40:59 -0700 (PDT) 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=@kernel.org header.s=default header.b=1DXWWbFH; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2392419AbfDXRia (ORCPT + 99 others); Wed, 24 Apr 2019 13:38:30 -0400 Received: from mail.kernel.org ([198.145.29.99]:37674 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390861AbfDXRi3 (ORCPT ); Wed, 24 Apr 2019 13:38:29 -0400 Received: from localhost (62-193-50-229.as16211.net [62.193.50.229]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id C98752054F; Wed, 24 Apr 2019 17:38:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1556127508; bh=JXrIYMk1HEm5HgsJ5WYaBiGjp44leD+iI1UzFa86uAk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=1DXWWbFH81a48NLc6pzLsFi+KHzTGBiO8IMQ4jhM7bsIUOL9KJb4PpC7IcPM9oliI mGcqveM1YGBF87EzSKU68XY6f8YpKSl7nrMiqvC0972GM+kREb3AAeCH70b4zHSW9w RpaZPQ0JKke/nSwIL1KfYXlSFYT0UCOa8iMuKV6k= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Geert Uytterhoeven , Mukesh Ojha , Ulrich Hecht Subject: [PATCH 5.0 074/115] serial: sh-sci: Fix HSCIF RX sampling point calculation Date: Wed, 24 Apr 2019 19:10:10 +0200 Message-Id: <20190424170929.367078332@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190424170924.797924502@linuxfoundation.org> References: <20190424170924.797924502@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Geert Uytterhoeven commit ace965696da2611af759f0284e26342b7b6cec89 upstream. There are several issues with the formula used for calculating the deviation from the intended rate: 1. While min_err and last_stop are signed, srr and baud are unsigned. Hence the signed values are promoted to unsigned, which will lead to a bogus value of deviation if min_err is negative, 2. Srr is the register field value, which is one less than the actual sampling rate factor, 3. The divisions do not use rounding. Fix this by casting unsigned variables to int, adding one to srr, and using a single DIV_ROUND_CLOSEST(). Fixes: 63ba1e00f178a448 ("serial: sh-sci: Support for HSCIF RX sampling point adjustment") Signed-off-by: Geert Uytterhoeven Reviewed-by: Mukesh Ojha Cc: stable Reviewed-by: Ulrich Hecht Signed-off-by: Greg Kroah-Hartman --- drivers/tty/serial/sh-sci.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --- a/drivers/tty/serial/sh-sci.c +++ b/drivers/tty/serial/sh-sci.c @@ -2497,7 +2497,9 @@ done: * center of the last stop bit in sampling clocks. */ int last_stop = bits * 2 - 1; - int deviation = min_err * srr * last_stop / 2 / baud; + int deviation = DIV_ROUND_CLOSEST(min_err * last_stop * + (int)(srr + 1), + 2 * (int)baud); if (abs(deviation) >= 2) { /* At least two sampling clocks off at the