Received: by 2002:a05:6a10:6d10:0:0:0:0 with SMTP id gq16csp877453pxb; Fri, 22 Apr 2022 13:14:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzab90aGH/AKKUPolGbA3s6oYvE0jAXCfeuWrVTD6VWwk9b06Y1VWdaQRsvP0SpY5pLFL4n X-Received: by 2002:a63:2cc3:0:b0:39d:a9af:bc5b with SMTP id s186-20020a632cc3000000b0039da9afbc5bmr5402377pgs.3.1650658480366; Fri, 22 Apr 2022 13:14:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1650658480; cv=none; d=google.com; s=arc-20160816; b=z/RBB2T1z4uWr9k15+3O4mU/DP1FGI/uFqTcVYsRx/4wAJKtdGBckj0WBd+BbpIUfH ZDfwFd9UwaUJCCnZD9sX1nAMLakurZHtsugl8dKTZgUeidvOMYaOwJ3NFpMZK48iD4qn d3tpfolOjOxJjzRdKf9AUUggMcgqLnL4xW0GvlkJ+0N532dUstDG549a+6hHcpwh6l9f /eJNKqM4QvkHECsfrxtK4kH6qpiTuovDZ5NQIkiy1QLwTrJdNhOEG2O19gfZCM4M/mYV GNT8NXtSmr8dWCvkRHSE0Cs3K0J10qd1gNfMbUuce339XXjWGh7/FmOCswfRv+18tSFF wuog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=WQz1NXqH44zqQrsGYhOZZwpDPw6pIXS8bNm5c+6Gswg=; b=szxTuds7Yqsl3b1qoY8S3VUEWVIpUdR3TDicbGRXpQFmmk3CbT2esRru59RHZ2E2fx vveKmP85Ab8hT5B0eYjZbPjxeKQfxzvAi+MZ/QMiM6V2vrWVcd50KM9HuE0MA0TdnZkq RMLaRB9+Vr+XpL5z2Wpvm8HZW5GuZHDrdP/iqD35hwh83PWDLPqwzBPx8x+GWd3TUJwB 7u3nkjy+0sYuk0K5ujVQmXKgaqnaQpEvdFVCilgGzEUCGJIG0FOxD2pKmNXqOmlaHJhg clOeQzv7E//hJ3KMoIkg1raZwWKbg3lCRT3SSE9uXK8nFJhQl7rkT5BEqG97V7sH/vBQ 1VWw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=ERHtbJyp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id i11-20020a170902c94b00b0015a16b86c56si10284365pla.81.2022.04.22.13.14.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Apr 2022 13:14:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=ERHtbJyp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id CD1B524DC18; Fri, 22 Apr 2022 12:16:00 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1377590AbiDTKXX (ORCPT + 99 others); Wed, 20 Apr 2022 06:23:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54122 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1377530AbiDTKXV (ORCPT ); Wed, 20 Apr 2022 06:23:21 -0400 Received: from fllv0015.ext.ti.com (fllv0015.ext.ti.com [198.47.19.141]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 05C3A1D0F3; Wed, 20 Apr 2022 03:20:33 -0700 (PDT) Received: from lelv0265.itg.ti.com ([10.180.67.224]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id 23KAKPWT008426; Wed, 20 Apr 2022 05:20:25 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1650450025; bh=WQz1NXqH44zqQrsGYhOZZwpDPw6pIXS8bNm5c+6Gswg=; h=From:To:CC:Subject:Date; b=ERHtbJypMGZGDVRQh/XWzhjbTclYMIQU4Gpyidl6lY+v8OvjiySyT3+HXHXujtThY X/EIknPBxFig8l9xqh2Aw9NV6sva2+fu3in+OaXa4+Dyy4Ak3CoNoIkyMVwEwagzeL lU4JJ/Q1V91SkEhUXalp5sMldQhtblH9muVeY2lM= Received: from DLEE100.ent.ti.com (dlee100.ent.ti.com [157.170.170.30]) by lelv0265.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 23KAKP10018050 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 20 Apr 2022 05:20:25 -0500 Received: from DLEE106.ent.ti.com (157.170.170.36) by DLEE100.ent.ti.com (157.170.170.30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2308.14; Wed, 20 Apr 2022 05:20:25 -0500 Received: from fllv0040.itg.ti.com (10.64.41.20) by DLEE106.ent.ti.com (157.170.170.36) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2308.14 via Frontend Transport; Wed, 20 Apr 2022 05:20:25 -0500 Received: from pratyush-4F-325.dhcp.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by fllv0040.itg.ti.com (8.15.2/8.15.2) with ESMTP id 23KAKMq7033245; Wed, 20 Apr 2022 05:20:23 -0500 From: Pratyush Yadav To: Mark Brown CC: Pratyush Yadav , Tudor Ambarus , Michael Walle , Miquel Raynal , Takahiro Kuwano , , Subject: [PATCH v2] spi: spi-mem: check if data buffers are on stack Date: Wed, 20 Apr 2022 15:50:22 +0530 Message-ID: <20220420102022.3310970-1-p.yadav@ti.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The buffers passed in the data phase must be DMA-able. Programmers often don't realise this requirement and pass in buffers that reside on the stack. This can be hard to spot when reviewing code. Reject ops if their data buffer is on the stack to avoid this. Signed-off-by: Pratyush Yadav Acked-by: Mark Brown --- Changes in v2: - Include task_stack.h. It might not get included indirectly on some platforms and can cause build failures. - Add a WARN_ON_ONCE() for debuggability. - Add Mark's Ack. drivers/spi/spi-mem.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/spi/spi-mem.c b/drivers/spi/spi-mem.c index 7d7091aa0c22..e8de4f5017cd 100644 --- a/drivers/spi/spi-mem.c +++ b/drivers/spi/spi-mem.c @@ -10,6 +10,7 @@ #include #include #include +#include #include "internals.h" @@ -211,6 +212,15 @@ static int spi_mem_check_op(const struct spi_mem_op *op) !spi_mem_buswidth_is_valid(op->data.buswidth)) return -EINVAL; + /* Buffers must be DMA-able. */ + if (WARN_ON_ONCE(op->data.dir == SPI_MEM_DATA_IN && + object_is_on_stack(op->data.buf.in))) + return -EINVAL; + + if (WARN_ON_ONCE(op->data.dir == SPI_MEM_DATA_OUT && + object_is_on_stack(op->data.buf.out))) + return -EINVAL; + return 0; } -- 2.34.1