From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752431AbdLLKhZ (ORCPT ); Tue, 12 Dec 2017 05:37:25 -0500 Received: from mail-wr0-f193.google.com ([209.85.128.193]:37890 "EHLO mail-wr0-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752358AbdLLKhU (ORCPT ); Tue, 12 Dec 2017 05:37:20 -0500 X-Google-Smtp-Source: ACJfBouLOdoWMfw6vl/BU7yoa+O3Win1iJzK6rQCj+3YaIeoyEEwidIUzAdIY4u34MrZdueh+3FySg== From: Michele Dionisio To: Mark Brown Cc: linux-spi@vger.kernel.org, linux-kernel@vger.kernel.org, Michele Dionisio Subject: spi: davinci: Initialize dspi->done before any possible use of it Date: Tue, 12 Dec 2017 11:36:59 +0100 Message-Id: <20171212103659.23116-1-michele.dionisio@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171212101630.GB16323@sirena.org.uk> References: <20171212101630.GB16323@sirena.org.uk> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On SOC with multiple cpu (like omal l138) it is possible that spi periferic is already initialized when this module is loaded and so it is possible to recieve interrupt when the modules is not fully initialized. this patch initialize dspi->done before refister the interrupt handler that use it Signed-off-by: Michele Dionisio diff --git a/drivers/spi/spi-davinci.c b/drivers/spi/spi-davinci.c index 6ddb6ef1fda4..60d59b003aa4 100644 --- a/drivers/spi/spi-davinci.c +++ b/drivers/spi/spi-davinci.c @@ -945,6 +945,8 @@ static int davinci_spi_probe(struct platform_device *pdev) goto free_master; } + init_completion(&dspi->done); + ret = platform_get_irq(pdev, 0); if (ret == 0) ret = -EINVAL; @@ -1021,8 +1023,6 @@ static int davinci_spi_probe(struct platform_device *pdev) dspi->get_rx = davinci_spi_rx_buf_u8; dspi->get_tx = davinci_spi_tx_buf_u8; - init_completion(&dspi->done); - /* Reset In/OUT SPI module */ iowrite32(0, dspi->base + SPIGCR0); udelay(100);