All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: "Jérôme Pouiller" <jerome.pouiller@silabs.com>
Cc: "Kalle Valo" <kvalo@codeaurora.org>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	devel@driverdev.osuosl.org, devicetree@vger.kernel.org,
	"Ulf Hansson" <ulf.hansson@linaro.org>,
	netdev@vger.kernel.org, linux-wireless@vger.kernel.org,
	linux-kernel@vger.kernel.org, "Rob Herring" <robh+dt@kernel.org>,
	linux-mmc@vger.kernel.org, "Pali Rohár" <pali@kernel.org>,
	"David S . Miller" <davem@davemloft.net>
Subject: Re: [PATCH v3 09/24] wfx: add hwio.c/hwio.h
Date: Mon, 4 Jan 2021 15:34:10 +0300	[thread overview]
Message-ID: <20210104123410.GN2809@kadam> (raw)
In-Reply-To: <4279510.LvFx2qVVIh@pc-42>

On Tue, Dec 22, 2020 at 10:02:09PM +0100, Jérôme Pouiller wrote:
> On Tuesday 22 December 2020 16:27:01 CET Greg Kroah-Hartman wrote:
> > 
> > On Tue, Dec 22, 2020 at 05:10:11PM +0200, Kalle Valo wrote:
> > > Jerome Pouiller <Jerome.Pouiller@silabs.com> writes:
> > >
> > > > +/*
> > > > + * Internal helpers.
> > > > + *
> > > > + * About CONFIG_VMAP_STACK:
> > > > + * When CONFIG_VMAP_STACK is enabled, it is not possible to run DMA on stack
> > > > + * allocated data. Functions below that work with registers (aka functions
> > > > + * ending with "32") automatically reallocate buffers with kmalloc. However,
> > > > + * functions that work with arbitrary length buffers let's caller to handle
> > > > + * memory location. In doubt, enable CONFIG_DEBUG_SG to detect badly located
> > > > + * buffer.
> > > > + */
> > >
> > > This sounds very hacky to me, I have understood that you should never
> > > use stack with DMA.
> > 
> > You should never do that because some platforms do not support it, so no
> > driver should ever try to do that as they do not know what platform they
> > are running on.
> 
> Yes, I have learned this rule the hard way.
> 
> There is no better way than a comment to warn the user that the argument
> will be used with a DMA? A Sparse annotation, for example?
> 

There is a Smatch warning for this, but I hadn't looked at the results
in a while. :/  I'm not sure how many are valid.  Some kind of
annotation would be nice.

regards,
dan carpenter

drivers/staging/gdm724x/gdm_usb.c:69 request_mac_address() error: doing dma on the stack (buf)
drivers/staging/rtl8192u/r8192U_core.c:1553 rtl8192_tx() error: doing dma on the stack (&zero)
drivers/staging/comedi/drivers/dt9812.c:249 dt9812_read_info() error: doing dma on the stack (&cmd)
drivers/staging/comedi/drivers/dt9812.c:273 dt9812_read_multiple_registers() error: doing dma on the stack (&cmd)
drivers/staging/comedi/drivers/dt9812.c:299 dt9812_write_multiple_registers() error: doing dma on the stack (&cmd)
drivers/staging/comedi/drivers/dt9812.c:318 dt9812_rmw_multiple_registers() error: doing dma on the stack (&cmd)
drivers/staging/comedi/drivers/dt9812.c:330 dt9812_digital_in() error: doing dma on the stack (value)
drivers/staging/comedi/drivers/dt9812.c:456 dt9812_analog_in() error: doing dma on the stack (val)
drivers/staging/comedi/drivers/dt9812.c:692 dt9812_reset_device() error: doing dma on the stack (&tmp8)
drivers/staging/comedi/drivers/dt9812.c:700 dt9812_reset_device() error: doing dma on the stack (&tmp8)
drivers/staging/comedi/drivers/dt9812.c:711 dt9812_reset_device() error: doing dma on the stack (&tmp16)
drivers/staging/comedi/drivers/dt9812.c:718 dt9812_reset_device() error: doing dma on the stack (&tmp16)
drivers/staging/comedi/drivers/dt9812.c:725 dt9812_reset_device() error: doing dma on the stack (&tmp16)
drivers/staging/comedi/drivers/dt9812.c:732 dt9812_reset_device() error: doing dma on the stack (&tmp32)
drivers/usb/storage/alauda.c:498 alauda_check_status2() error: doing dma on the stack (command)
drivers/usb/storage/alauda.c:503 alauda_check_status2() error: doing dma on the stack (data)
drivers/usb/storage/alauda.c:527 alauda_get_redu_data() error: doing dma on the stack (command)
drivers/usb/storage/alauda.c:702 alauda_erase_block() error: doing dma on the stack (command)
drivers/usb/storage/alauda.c:707 alauda_erase_block() error: doing dma on the stack (buf)
drivers/usb/storage/alauda.c:731 alauda_read_block_raw() error: doing dma on the stack (command)
drivers/usb/storage/alauda.c:782 alauda_write_block() error: doing dma on the stack (command)
drivers/usb/class/usblp.c:593 usblp_ioctl() error: doing dma on the stack (&newChannel)
drivers/usb/serial/iuu_phoenix.c:542 iuu_uart_flush() error: doing dma on the stack (&rxcmd)
drivers/firewire/core-device.c:565 read_config_rom() error: doing dma on the stack (&dummy)
drivers/firewire/core-device.c:1111 reread_config_rom() error: doing dma on the stack (&q)
drivers/media/usb/uvc/uvc_v4l2.c:910 uvc_ioctl_g_input() error: doing dma on the stack (&i)
drivers/media/usb/uvc/uvc_v4l2.c:942 uvc_ioctl_s_input() error: doing dma on the stack (&i)
drivers/media/usb/cx231xx/cx231xx-pcb-cfg.c:662 initialize_cx231xx() error: doing dma on the stack (data)
drivers/media/usb/cx231xx/cx231xx-avcore.c:90 uninitGPIO() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:1297 cx231xx_enable_i2c_port_3() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:1313 cx231xx_enable_i2c_port_3() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:1546 cx231xx_set_Colibri_For_LowIF() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2261 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2278 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2288 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2297 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2311 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2321 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2332 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2342 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2353 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2376 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2386 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2396 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2407 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2417 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2446 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2457 cx231xx_set_power_mode() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2469 cx231xx_power_suspend() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2481 cx231xx_power_suspend() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2497 cx231xx_start_stream() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2509 cx231xx_start_stream() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2523 cx231xx_stop_stream() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2534 cx231xx_stop_stream() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2591 cx231xx_initialize_stream_xfer() error: doing dma on the stack (val)
drivers/media/usb/cx231xx/cx231xx-avcore.c:2599 cx231xx_initialize_stream_xfer() error: doing dma on the stack (val)
drivers/media/usb/cx231xx/cx231xx-core.c:635 cx231xx_demod_reset() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-core.c:644 cx231xx_demod_reset() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-core.c:649 cx231xx_demod_reset() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-core.c:654 cx231xx_demod_reset() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-core.c:658 cx231xx_demod_reset() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-core.c:1253 cx231xx_stop_TS1() error: doing dma on the stack (val)
drivers/media/usb/cx231xx/cx231xx-core.c:1260 cx231xx_stop_TS1() error: doing dma on the stack (val)
drivers/media/usb/cx231xx/cx231xx-core.c:1272 cx231xx_start_TS1() error: doing dma on the stack (val)
drivers/media/usb/cx231xx/cx231xx-core.c:1279 cx231xx_start_TS1() error: doing dma on the stack (val)
drivers/media/usb/cx231xx/cx231xx-core.c:1533 cx231xx_mode_register() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-core.c:1546 cx231xx_mode_register() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-video.c:1236 cx231xx_g_register() error: doing dma on the stack (value)
drivers/media/usb/cx231xx/cx231xx-video.c:1297 cx231xx_s_register() error: doing dma on the stack (data)
drivers/media/usb/gspca/kinect.c:209 write_register() error: doing dma on the stack (reply)
drivers/net/usb/rndis_host.c:129 rndis_command() error: doing dma on the stack (&notification)


  parent reply	other threads:[~2021-01-04 12:35 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-04 15:51 [PATCH v3 00/24] wfx: get out from the staging area Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 01/24] mmc: sdio: add SDIO IDs for Silabs WF200 chip Jerome Pouiller
2020-12-22 15:04   ` Kalle Valo
2020-11-04 15:51 ` [PATCH v3 02/24] dt-bindings: introduce silabs,wfx.yaml Jerome Pouiller
2020-11-04 19:15   ` Rob Herring
2020-11-05  8:36     ` Jérôme Pouiller
2020-11-04 15:51 ` [PATCH v3 03/24] wfx: add Makefile/Kconfig Jerome Pouiller
2020-12-22 15:02   ` Kalle Valo
2020-12-22 21:19     ` Jérôme Pouiller
2020-12-23  5:16       ` Kalle Valo
2020-12-22 15:05   ` Kalle Valo
2020-11-04 15:51 ` [PATCH v3 04/24] wfx: add wfx.h Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 05/24] wfx: add main.c/main.h Jerome Pouiller
2020-12-22 15:07   ` Kalle Valo
2020-12-22 15:44   ` Kalle Valo
2020-12-23 12:09     ` Jérôme Pouiller
2020-11-04 15:51 ` [PATCH v3 06/24] wfx: add bus.h Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 07/24] wfx: add bus_spi.c Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 08/24] wfx: add bus_sdio.c Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 09/24] wfx: add hwio.c/hwio.h Jerome Pouiller
2020-12-22 15:10   ` Kalle Valo
2020-12-22 15:27     ` Greg Kroah-Hartman
2020-12-22 21:02       ` Jérôme Pouiller
2020-12-23  5:28         ` Kalle Valo
2021-01-04 12:34         ` Dan Carpenter [this message]
2021-01-04 12:38           ` Dan Carpenter
2021-01-04 14:48           ` Johan Hovold
2020-12-23  8:01       ` Jérôme Pouiller
2020-12-23  8:09         ` Greg Kroah-Hartman
2020-11-04 15:51 ` [PATCH v3 10/24] wfx: add fwio.c/fwio.h Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 11/24] wfx: add bh.c/bh.h Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 12/24] wfx: add hif_api_*.h Jerome Pouiller
2020-12-22 15:20   ` Kalle Valo
2020-12-22 21:05     ` Jérôme Pouiller
2020-11-04 15:51 ` [PATCH v3 13/24] wfx: add hif_tx*.c/hif_tx*.h Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 14/24] wfx: add key.c/key.h Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 15/24] wfx: add hif_rx.c/hif_rx.h Jerome Pouiller
2020-11-04 15:51 ` [PATCH v3 16/24] wfx: add data_rx.c/data_rx.h Jerome Pouiller
2020-11-04 15:52 ` [PATCH v3 17/24] wfx: add queue.c/queue.h Jerome Pouiller
2020-11-04 15:52 ` [PATCH v3 18/24] wfx: add data_tx.c/data_tx.h Jerome Pouiller
2020-12-22 15:27   ` Kalle Valo
2020-12-22 15:31   ` Kalle Valo
2020-11-04 15:52 ` [PATCH v3 19/24] wfx: add sta.c/sta.h Jerome Pouiller
2020-11-04 15:52 ` [PATCH v3 20/24] wfx: add scan.c/scan.h Jerome Pouiller
2020-11-04 15:52 ` [PATCH v3 21/24] wfx: add debug.c/debug.h Jerome Pouiller
2020-11-04 15:52 ` [PATCH v3 22/24] wfx: add traces.h Jerome Pouiller
2020-11-04 15:52 ` [PATCH v3 23/24] wfx: remove from the staging area Jerome Pouiller
2020-11-04 15:52 ` [PATCH v3 24/24] wfx: get out " Jerome Pouiller
2020-12-22 15:23 ` [PATCH v3 00/24] " Kalle Valo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210104123410.GN2809@kadam \
    --to=dan.carpenter@oracle.com \
    --cc=davem@davemloft.net \
    --cc=devel@driverdev.osuosl.org \
    --cc=devicetree@vger.kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jerome.pouiller@silabs.com \
    --cc=kvalo@codeaurora.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pali@kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=ulf.hansson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.