From patchwork Thu Nov 24 16:26:22 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Bergmann X-Patchwork-Id: 101459 Delivered-To: patch@linaro.org Received: by 10.140.20.101 with SMTP id 92csp171800qgi; Thu, 24 Nov 2016 08:27:05 -0800 (PST) X-Received: by 10.84.196.164 with SMTP id l33mr7181595pld.150.1480004825735; Thu, 24 Nov 2016 08:27:05 -0800 (PST) Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a17si20822251pgg.89.2016.11.24.08.27.04; Thu, 24 Nov 2016 08:27:05 -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; 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 S1757278AbcKXQ1B (ORCPT + 25 others); Thu, 24 Nov 2016 11:27:01 -0500 Received: from mout.kundenserver.de ([212.227.126.135]:59477 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756487AbcKXQ07 (ORCPT ); Thu, 24 Nov 2016 11:26:59 -0500 Received: from wuerfel.lan ([78.43.21.235]) by mrelayeu.kundenserver.de (mreue004 [212.227.15.129]) with ESMTPA (Nemesis) id 0M5cCK-1cyk5I2L6W-00xcMg; Thu, 24 Nov 2016 17:26:32 +0100 From: Arnd Bergmann To: Samuel Ortiz Cc: Arnd Bergmann , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH] irda: fix overly long udelay() Date: Thu, 24 Nov 2016 17:26:22 +0100 Message-Id: <20161124162630.3802535-1-arnd@arndb.de> X-Mailer: git-send-email 2.9.0 X-Provags-ID: V03:K0:64hWRnR+oUZ1tm/xiKNtb10c7ue09WqpXRcjyiQ5xWZjhvV1w7x 3DsSa+yQf/rYJSRFX74zjhynNW8KrgNWU0cGlQT3/o2lb9VrVwQdF/aUNs/9W4z2Q/elFH8 4OWFWncfZT9ppmJ3SvGROaK3hOrM8PCq7Y54dqazWmWCCPalbakRwmubRR4pH3DPMVVIuB5 x4r3kAkrNw+H4oTGwryNg== X-UI-Out-Filterresults: notjunk:1; V01:K0:4fEYquy1zK0=:C5FkpI+PnYgzX80bfM5DY/ WvFX+y9ifzR0mqBq0ypj8hpjCZb06TUdaf5QKHxF0kRXt4hXKBeTKqp1KJj21fB1JaPpJpeqC GKqLLoDuIurGslXwCXR9failAbvFD0cGDICG7dbexhpFbIWT7m6L2VGqMQ3zbGjDHEsEUAznC yW/pKtUfnTz7G5dcY0TcNQxqRt7oJ0v8juUrHi9suj83fTebZe7zRL1pkQ0Dk06iBtneRWc8x rW0LmrCmYPZiwIW8hPYK/HAqcPXWS0aN9pkc3L5QxEHEQJtp3WoJnRjN+G/cUuKiYXwr5+vY0 msp/QJk/2bbzlLQLW6JYvMlAVYpT+zGYZVf9s5X/pGLAJWcYoXQFM4lqPaH+ibtvBP1cty+km 3Bfo0l6FZmRQUqomcZT8cKs+1maO1DJMgfSnlJU6DiuXF1k8t+2fEIHSLJwmDf3yscvTqiNbi vB9xRGVq9dAhsn4/FhMVp0BKFS9+N+BQRwEVPKpdZj3jebV1J83vwfsMeguaEFomSh4KSjlZ7 9VO7WX1cxy8CrlJBeCflzrrWv+guzCvHECGXGiqVBTbioqBStpfltcvVbC2OrcaM9MaJx9Ujm 0HDDS7mb0EU9Jj+txJ7KvZBmmtUvLOHfVPfHA2PNvAPxSjW/fqJ/PxeFNNy+QGHDlCxH2nzdp P5BtX9/DCJpNlqi1tD+VJhuJag/nJVTt6gJ2ze+w6Zht2eTPg3HVOJKC40QoylEvaj8A= Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org irda_get_mtt() returns a hardcoded '10000' in some cases, and with gcc-7, we get a build error because this triggers a compile-time check in udelay(): drivers/net/irda/w83977af_ir.o: In function `w83977af_hard_xmit': w83977af_ir.c:(.text.w83977af_hard_xmit+0x14c): undefined reference to `__bad_udelay' Older compilers did not run into this because they either did not completely inline the irda_get_mtt() or did not consider the 10000 value a constant expression. The code has been wrong since the start of git history. Signed-off-by: Arnd Bergmann --- drivers/net/irda/w83977af_ir.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) -- 2.9.0 diff --git a/drivers/net/irda/w83977af_ir.c b/drivers/net/irda/w83977af_ir.c index 4e3d2e7c697c..e8c3a8c32534 100644 --- a/drivers/net/irda/w83977af_ir.c +++ b/drivers/net/irda/w83977af_ir.c @@ -518,7 +518,9 @@ static netdev_tx_t w83977af_hard_xmit(struct sk_buff *skb, mtt = irda_get_mtt(skb); pr_debug("%s(%ld), mtt=%d\n", __func__ , jiffies, mtt); - if (mtt) + if (mtt > 1000) + mdelay(mtt/1000); + else if (mtt) udelay(mtt); /* Enable DMA interrupt */