From patchwork Wed Mar 23 15:11:24 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corentin Labbe X-Patchwork-Id: 8650841 X-Patchwork-Delegate: herbert@gondor.apana.org.au Return-Path: X-Original-To: patchwork-linux-crypto@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 6AAACC0553 for ; Wed, 23 Mar 2016 15:11:57 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 80C7B2025A for ; Wed, 23 Mar 2016 15:11:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 52CB420259 for ; Wed, 23 Mar 2016 15:11:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754277AbcCWPLu (ORCPT ); Wed, 23 Mar 2016 11:11:50 -0400 Received: from mail-wm0-f68.google.com ([74.125.82.68]:34205 "EHLO mail-wm0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753113AbcCWPLu (ORCPT ); Wed, 23 Mar 2016 11:11:50 -0400 Received: by mail-wm0-f68.google.com with SMTP id p65so5149585wmp.1; Wed, 23 Mar 2016 08:11:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id; bh=FXZ6b3mutyJcT+9MvA0ad2IFC/sERzZNv3mW4UGPL6c=; b=NvsrlnvNesjb7iXEJ88ejAOs45dBNQCeRmrr3qWuoxpX+FgF5+NGA2k7YnGXvoQC+H ZeFIA0ZREcyeWrMWGTZv4QLcQaF3YjYha2L9CpFUUUhOgOZY09AtawA+UBkaSkv7Ljvl ZpQ0gRzMuP26BUse+K6Kz3ZCOyXvvKncoNE/2OKUTT6nLV7Fgye0jtFmfYMKj60YgIWi aPeIkezSIcAHmBwIHi8pq5w0CO8VVle5AfdRbxEcYk/rJpOQ/vZDNFNLqbGitoE56bT0 KtcA0QcddvlimNH3cJdfT0t9TLxy+Naqcfaktqn6M//c3hGoHDAbJbQFthejCBJZFU4I wodA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=FXZ6b3mutyJcT+9MvA0ad2IFC/sERzZNv3mW4UGPL6c=; b=Fs7SjCQu/cwQdZaY1o5OuKtOBFE5ge4m2YltnMHqUVXRHL3G5Em5ctfuq9hIPsAKci Y9az7tNVKDpyZRrbMB7160JZduvqyB5Ck8Y/HlNDcs7xVtsLhIJ5QM5O3cTQ/vZroTye ira8qcYLxO3MLXC5T0mIwLIM6/Rbj4O4QhHlVa4TPXyEoBPk8nHDwT+4SLCZHJq0z04m bDSQQPkD//iofPkC3jDRdqEq5qOYj3Zl9Eomg8kVYZlMuhcONWohakBdwrZfRmDT4/uG SpfmGrLIPWUFxRqFoAkxF6WeDhhgiqA9kVWuQCFQMBrmmJMWgL0+ROd4DHI1+fe/nn04 tY1A== X-Gm-Message-State: AD7BkJIi0OaLlCvt4mx8az0tLhT+ZchnAghD8/tjSoEn7NNEvhgR/h20BtcfveJfY3QC2A== X-Received: by 10.28.224.212 with SMTP id x203mr27908043wmg.75.1458745908249; Wed, 23 Mar 2016 08:11:48 -0700 (PDT) Received: from Red.local (ANice-651-1-347-184.w86-205.abo.wanadoo.fr. [86.205.131.184]) by smtp.googlemail.com with ESMTPSA id 82sm22629126wmd.4.2016.03.23.08.11.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 23 Mar 2016 08:11:47 -0700 (PDT) From: LABBE Corentin To: herbert@gondor.apana.org.au, davem@davemloft.net, maxime.ripard@free-electrons.com, wens@csie.org Cc: linux-crypto@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, LABBE Corentin , stable Subject: [PATCH RESEND] crypto: sun4i-ss: Replace spinlock_bh by spin_lock_irq{save|restore} Date: Wed, 23 Mar 2016 16:11:24 +0100 Message-Id: <1458745884-27798-1-git-send-email-clabbe.montjoie@gmail.com> X-Mailer: git-send-email 2.7.3 Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org X-Spam-Status: No, score=-6.8 required=5.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, RCVD_IN_DNSWL_HI, T_DKIM_INVALID, T_RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP The current sun4i-ss driver could generate data corruption when ciphering/deciphering. It occurs randomly on end of handled data. No root cause have been found and the only way to remove it is to replace all spin_lock_bh by their irq counterparts. Fixes: 6298e948215f ("crypto: sunxi-ss - Add Allwinner Security System crypto accelerator") Signed-off-by: LABBE Corentin Cc: stable --- drivers/crypto/sunxi-ss/sun4i-ss-cipher.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c b/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c index 7be3fbc..3830d7c 100644 --- a/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c +++ b/drivers/crypto/sunxi-ss/sun4i-ss-cipher.c @@ -35,6 +35,7 @@ static int sun4i_ss_opti_poll(struct ablkcipher_request *areq) unsigned int todo; struct sg_mapping_iter mi, mo; unsigned int oi, oo; /* offset for in and out */ + unsigned long flags; if (areq->nbytes == 0) return 0; @@ -49,7 +50,7 @@ static int sun4i_ss_opti_poll(struct ablkcipher_request *areq) return -EINVAL; } - spin_lock_bh(&ss->slock); + spin_lock_irqsave(&ss->slock, flags); for (i = 0; i < op->keylen; i += 4) writel(*(op->key + i / 4), ss->base + SS_KEY0 + i); @@ -117,7 +118,7 @@ release_ss: sg_miter_stop(&mi); sg_miter_stop(&mo); writel(0, ss->base + SS_CTL); - spin_unlock_bh(&ss->slock); + spin_unlock_irqrestore(&ss->slock, flags); return err; } @@ -149,6 +150,7 @@ static int sun4i_ss_cipher_poll(struct ablkcipher_request *areq) unsigned int ob = 0; /* offset in buf */ unsigned int obo = 0; /* offset in bufo*/ unsigned int obl = 0; /* length of data in bufo */ + unsigned long flags; if (areq->nbytes == 0) return 0; @@ -181,7 +183,7 @@ static int sun4i_ss_cipher_poll(struct ablkcipher_request *areq) if (no_chunk == 1) return sun4i_ss_opti_poll(areq); - spin_lock_bh(&ss->slock); + spin_lock_irqsave(&ss->slock, flags); for (i = 0; i < op->keylen; i += 4) writel(*(op->key + i / 4), ss->base + SS_KEY0 + i); @@ -307,7 +309,7 @@ release_ss: sg_miter_stop(&mi); sg_miter_stop(&mo); writel(0, ss->base + SS_CTL); - spin_unlock_bh(&ss->slock); + spin_unlock_irqrestore(&ss->slock, flags); return err; }