From patchwork Tue Apr 23 15:03:08 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lee Jones X-Patchwork-Id: 16357 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-ee0-f71.google.com (mail-ee0-f71.google.com [74.125.83.71]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id F3E292391B for ; Tue, 23 Apr 2013 15:04:39 +0000 (UTC) Received: by mail-ee0-f71.google.com with SMTP id c1sf1060237eek.10 for ; Tue, 23 Apr 2013 08:03:50 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=x-received:mime-version:x-beenthere:x-received:received-spf :x-received:x-forwarded-to:x-forwarded-for:delivered-to:x-received :received-spf:x-received:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references:x-gm-message-state:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-google-group-id:list-post:list-help:list-archive:list-unsubscribe; bh=krLI2ZkGhW7ZcNgShKyUW8xO4yrzM2kGf1DA5PbB8bw=; b=PT5+MAFLoLsSKArXa1fuh/dyO/DShlFPcIT1/RiiM6ozqyGo+XAR0seEWMJEWz7f/W /GKJ/H44dGsMSgLJ4zI2pOvZr/oPGCvvjktzJnbiSuxw2Fptw90VwokxxYhW2YFf0kZT /Ub5MXjKbUkPIXJoXMa9uLFYo9ax6xUxRnxGKnSjrslP0xRRagqeFm850QuO9MAbVNFx Ofjc9Q89eQPipPU9/GHzDQwkgJmeCP9SbKaTIGpnmQBAEqUW4wMg9aoMj60+kGurYBFu FE/GuPkjrA9oIAG5e7JQ/mD3Yu6U+pkiV3GQOLCnrOrNdYm0iJoWa9TC+oHYb2Yji+hn MZvQ== X-Received: by 10.180.198.210 with SMTP id je18mr15452675wic.1.1366729430238; Tue, 23 Apr 2013 08:03:50 -0700 (PDT) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.180.103.132 with SMTP id fw4ls228703wib.50.gmail; Tue, 23 Apr 2013 08:03:50 -0700 (PDT) X-Received: by 10.180.11.238 with SMTP id t14mr26254469wib.3.1366729430029; Tue, 23 Apr 2013 08:03:50 -0700 (PDT) Received: from mail-ve0-x232.google.com (mail-ve0-x232.google.com [2607:f8b0:400c:c01::232]) by mx.google.com with ESMTPS id o4si10774656wjo.79.2013.04.23.08.03.49 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 23 Apr 2013 08:03:50 -0700 (PDT) Received-SPF: neutral (google.com: 2607:f8b0:400c:c01::232 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) client-ip=2607:f8b0:400c:c01::232; Received: by mail-ve0-f178.google.com with SMTP id c13so273679vea.23 for ; Tue, 23 Apr 2013 08:03:48 -0700 (PDT) X-Received: by 10.52.71.4 with SMTP id q4mr19210724vdu.8.1366729428860; Tue, 23 Apr 2013 08:03:48 -0700 (PDT) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patches@linaro.org Received: by 10.58.127.98 with SMTP id nf2csp129522veb; Tue, 23 Apr 2013 08:03:44 -0700 (PDT) X-Received: by 10.194.92.197 with SMTP id co5mr31883755wjb.41.1366729424243; Tue, 23 Apr 2013 08:03:44 -0700 (PDT) Received: from mail-wg0-x235.google.com (mail-wg0-x235.google.com [2a00:1450:400c:c00::235]) by mx.google.com with ESMTPS id md19si6366809wic.55.2013.04.23.08.03.43 (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 23 Apr 2013 08:03:44 -0700 (PDT) Received-SPF: neutral (google.com: 2a00:1450:400c:c00::235 is neither permitted nor denied by best guess record for domain of lee.jones@linaro.org) client-ip=2a00:1450:400c:c00::235; Received: by mail-wg0-f53.google.com with SMTP id z11so342356wgg.20 for ; Tue, 23 Apr 2013 08:03:43 -0700 (PDT) X-Received: by 10.180.88.33 with SMTP id bd1mr33491865wib.18.1366729423776; Tue, 23 Apr 2013 08:03:43 -0700 (PDT) Received: from localhost.localdomain (cpc34-aztw25-2-0-cust250.18-1.cable.virginmedia.com. [86.16.136.251]) by mx.google.com with ESMTPS id q20sm16491081wiv.7.2013.04.23.08.03.42 (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 23 Apr 2013 08:03:42 -0700 (PDT) From: Lee Jones To: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: arnd@arndb.de, linus.walleij@stericsson.com, mian.yousaf.kaukab@stericsson.com, Lee Jones , Felipe Balbi , linux-usb@vger.kernel.org Subject: [PATCH 04/10] usb: musb: ux500: harden checks for platform data Date: Tue, 23 Apr 2013 16:03:08 +0100 Message-Id: <1366729394-11406-5-git-send-email-lee.jones@linaro.org> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1366729394-11406-1-git-send-email-lee.jones@linaro.org> References: <1366729394-11406-1-git-send-email-lee.jones@linaro.org> X-Gm-Message-State: ALoCoQl51e69Wlgmw1K2R71baR9k4id9qOPl90T2PI5IFKEyKdx3+qsYv5qPnWHxQVTnji4qEyeP X-Original-Sender: lee.jones@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 2607:f8b0:400c:c01::232 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Precedence: list Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org List-ID: X-Google-Group-Id: 836684582541 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , In its current state, the ux500-musb driver uses platform data pointers blindly with no prior checking. If no platform data pointer is passed this will Oops the kernel. In this patch we ensure platform data and board data are present prior to using them. Cc: Felipe Balbi Cc: linux-usb@vger.kernel.org Signed-off-by: Lee Jones --- drivers/usb/musb/ux500_dma.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/usb/musb/ux500_dma.c b/drivers/usb/musb/ux500_dma.c index c75e07a..02b4a6e 100644 --- a/drivers/usb/musb/ux500_dma.c +++ b/drivers/usb/musb/ux500_dma.c @@ -287,7 +287,7 @@ static int ux500_dma_controller_start(struct dma_controller *c) struct musb *musb = controller->private_data; struct device *dev = musb->controller; struct musb_hdrc_platform_data *plat = dev->platform_data; - struct ux500_musb_board_data *data = plat->board_data; + struct ux500_musb_board_data *data; struct dma_channel *dma_channel = NULL; u32 ch_num; u8 dir; @@ -297,14 +297,19 @@ static int ux500_dma_controller_start(struct dma_controller *c) struct ux500_dma_channel *channel_array; dma_cap_mask_t mask; + if (!plat) { + dev_err(musb->controller, "No platform data\n"); + return -EINVAL; + } + data = plat->board_data; dma_cap_zero(mask); dma_cap_set(DMA_SLAVE, mask); /* Prepare the loop for RX channels */ channel_array = controller->rx_channel; - param_array = data->dma_rx_param_array; + param_array = (data) ? data->dma_rx_param_array : NULL; for (dir = 0; dir < 2; dir++) { for (ch_num = 0; @@ -337,7 +342,7 @@ static int ux500_dma_controller_start(struct dma_controller *c) /* Prepare the loop for TX channels */ channel_array = controller->tx_channel; - param_array = data->dma_tx_param_array; + param_array = (data) ? data->dma_tx_param_array : NULL; is_tx = 1; }