public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/44] hrtimers: Switch to new hrtimer interface functions (4/5)
@ 2024-10-28  7:34 Nam Cao
  2024-10-28  7:34 ` [PATCH 01/44] USB: chipidea: Switch to use hrtimer_setup() Nam Cao
                   ` (47 more replies)
  0 siblings, 48 replies; 55+ messages in thread
From: Nam Cao @ 2024-10-28  7:34 UTC (permalink / raw)
  To: Anna-Maria Behnsen, Frederic Weisbecker, Thomas Gleixner,
	Andreas Hindborg, Alice Ryhl, Miguel Ojeda, Kees Cook,
	linux-kernel
  Cc: Nam Cao, Greg Kroah-Hartman, Martin K. Petersen,
	Alexandre Belloni, Rafael J. Wysocki, Linus Walleij,
	Sebastian Reichel, Will Deacon, Jon Mason, Jaehoon Chung,
	Hans Verkuil, Jassi Brar, Pavel Machek, Dmitry Torokhov,
	Jonathan Cameron, Andi Shyti, Alexander Shishkin, Alex Deucher,
	Jani Nikula, Rob Clark, Lucas De Marchi, Zack Rusin,
	Michael S. Tsirkin, Jason Gunthorpe, Uwe Kleine-König,
	Takashi Iwai

This is the forth part of a 5-part series (split for convenience). All 5
parts are:

Part 1: https://lore.kernel.org/lkml/cover.1729864615.git.namcao@linutronix.de
Part 2: https://lore.kernel.org/lkml/cover.1729864823.git.namcao@linutronix.de
Part 3: https://lore.kernel.org/lkml/cover.1729865232.git.namcao@linutronix.de
Part 4: https://lore.kernel.org/lkml/cover.1729865485.git.namcao@linutronix.de
Part 5: https://lore.kernel.org/lkml/cover.1729865740.git.namcao@linutronix.de

To use hrtimer, hrtimer_init() (or one of its variant) must be called, and
also the timer's callfack function must be setup separately.

That can cause misuse of hrtimer. For example, because:
  - The callback function is not setup
  - The callback function is setup while it is not safe to do so

To prevent misuse of hrtimer, this series:
  - Introduce new functions hrtimer_setup*(). These new functions are
    similar to hrtimer_init*(), except that they also sanity-check and
    initialize the callback function.
  - Introduce hrtimer_update_function() which checks that it is safe to
    change the callback function. The 'function' field of hrtimer is then
    made private.
  - Convert all users to use the new functions.
  - Some minor cleanups on the way.

Most conversion patches were created using Coccinelle with the sematic
patch below; except for tricky cases that Coccinelle cannot handle, or for
some cases where a Coccinelle's bug regarding 100 column limit is
triggered. Any patches not mentioning Coccinelle were done manually.

virtual patch
@@ expression timer, clock, mode, func; @@
- hrtimer_init(timer, clock, mode);
  ...
- timer->function = func;
+ hrtimer_setup(timer, func, clock, mode);

@@ expression timer, clock, mode, func; @@
- hrtimer_init(&timer, clock, mode);
  ...
- timer.function = func;
+ hrtimer_setup(&timer, func, clock, mode);

@@ expression timer, clock, mode, func; @@
- hrtimer_init_on_stack(&timer, clock, mode);
  ...
- timer.function = func;
+ hrtimer_setup_on_stack(&timer, func, clock, mode);

@@ expression timer, clock, mode; @@
- hrtimer_init_sleeper_on_stack(timer, clock, mode);
+ hrtimer_setup_sleeper_on_stack(timer, clock, mode);

Signed-off-by: Nam Cao <namcao@linutronix.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: "Martin K. Petersen" <martin.petersen@oracle.com>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
Cc: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: Linus Walleij <linus.walleij@linaro.org>
Cc: Sebastian Reichel <sre@kernel.org>
Cc: Will Deacon <will@kernel.org>
Cc: Jon Mason <jdmason@kudzu.us>
Cc: Jaehoon Chung <jh80.chung@samsung.com>
Cc: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Cc: Jassi Brar <jassisinghbrar@gmail.com>
Cc: Pavel Machek <pavel@ucw.cz>
Cc: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Cc: Jonathan Cameron <jic23@kernel.org>
Cc: Andi Shyti <andi.shyti@kernel.org>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Jani Nikula <jani.nikula@linux.intel.com>
Cc: Rob Clark <robdclark@gmail.com>
Cc: Lucas De Marchi <lucas.demarchi@intel.com>
Cc: Zack Rusin <zack.rusin@broadcom.com>
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Jason Gunthorpe <jgg@ziepe.ca>
Cc: "Uwe Kleine-König" <ukleinek@kernel.org>
Cc: Takashi Iwai <tiwai@suse.com>

Nam Cao (44):
  USB: chipidea: Switch to use hrtimer_setup()
  usb: dwc2: Switch to use hrtimer_setup()
  usb: fotg210-hcd: Switch to use hrtimer_setup()
  usb: gadget: Switch to use hrtimer_setup()
  usb: ehci: Switch to use hrtimer_setup()
  usb: musb: cppi41: Switch to use hrtimer_setup()
  usb: typec: tcpm: Switch to use hrtimer_setup()
  serial: 8250: Switch to use hrtimer_setup()
  serial: imx: Switch to use hrtimer_setup()
  serial: sh-sci: Switch to use hrtimer_setup()
  serial: xilinx_uartps: Switch to use hrtimer_setup()
  scsi: Switch to use hrtimer_setup()
  rtc: class: Switch to use hrtimer_setup()
  pps: generators: pps_gen_parport: Switch to use hrtimer_setup()
  powercap: Switch to use hrtimer_setup()
  power: supply: ab8500_chargalg: Switch to use hrtimer_setup()
  power: reset: ltc2952-poweroff: Switch to use hrtimer_setup()
  drivers: perf: Switch to use hrtimer_setup()
  ntb: ntb_pingpong: Switch to use hrtimer_setup()
  mmc: dw_mmc: Switch to use hrtimer_setup()
  misc: vcpu_stall_detector: Switch to use hrtimer_setup()
  media: Switch to use hrtimer_setup()
  mailbox: Switch to use hrtimer_setup()
  leds: trigger: pattern: Switch to use hrtimer_setup()
  Input: Switch to use hrtimer_setup()
  iio: Switch to use hrtimer_setup()
  i2c: Switch to use hrtimer_setup()
  stm class: heartbeat: Switch to use hrtimer_setup()
  drm/amdgpu: Switch to use hrtimer_setup()
  drm/i915/huc: Switch to use hrtimer_setup()
  drm/i915/gvt: Switch to use hrtimer_setup()
  drm/i915/perf: Switch to use hrtimer_setup()
  drm/i915/pmu: Switch to use hrtimer_setup()
  drm/i915/uncore: Switch to use hrtimer_setup()
  drm/i915/request: Switch to use hrtimer_setup()
  drm/msm: Switch to use hrtimer_setup()
  drm/vkms: Switch to use hrtimer_setup()
  drm/xe/oa: Switch to use hrtimer_setup()
  drm/vmwgfx: Switch to use hrtimer_setup()
  virtio: mem: Switch to use hrtimer_setup()
  RDMA: Switch to use hrtimer_setup()
  pwm: gpio: Switch to use hrtimer_setup()
  ASoC: fsl: imx-pcm-fiq: Switch to use hrtimer_setup()
  ALSA: Switch to use hrtimer_setup()

 drivers/gpu/drm/amd/amdgpu/amdgpu_vkms.c         |  4 ++--
 drivers/gpu/drm/i915/gt/uc/intel_huc.c           |  4 ++--
 drivers/gpu/drm/i915/gvt/display.c               |  3 +--
 drivers/gpu/drm/i915/gvt/sched_policy.c          |  3 +--
 drivers/gpu/drm/i915/i915_perf.c                 |  5 ++---
 drivers/gpu/drm/i915/i915_pmu.c                  |  3 +--
 drivers/gpu/drm/i915/i915_request.c              |  3 +--
 drivers/gpu/drm/i915/intel_uncore.c              |  3 +--
 drivers/gpu/drm/msm/msm_fence.c                  |  3 +--
 drivers/gpu/drm/msm/msm_io_utils.c               |  3 +--
 drivers/gpu/drm/vkms/vkms_crtc.c                 |  4 ++--
 drivers/gpu/drm/vmwgfx/vmwgfx_vkms.c             |  4 ++--
 drivers/gpu/drm/xe/xe_oa.c                       |  4 ++--
 drivers/hwtracing/stm/heartbeat.c                |  6 ++----
 drivers/i2c/busses/i2c-imx.c                     |  4 ++--
 drivers/iio/adc/ti-tsc2046.c                     |  4 +---
 drivers/iio/trigger/iio-trig-hrtimer.c           |  4 ++--
 drivers/infiniband/hw/hfi1/init.c                |  5 ++---
 drivers/infiniband/sw/rdmavt/qp.c                |  5 ++---
 drivers/input/joystick/walkera0701.c             |  3 +--
 drivers/input/keyboard/gpio_keys.c               | 10 ++++------
 drivers/leds/trigger/ledtrig-pattern.c           |  4 ++--
 drivers/mailbox/mailbox.c                        |  4 +---
 drivers/media/cec/core/cec-pin.c                 |  3 +--
 drivers/media/pci/cx88/cx88-input.c              |  3 +--
 .../media/platform/chips-media/wave5/wave5-vpu.c |  4 ++--
 drivers/media/rc/pwm-ir-tx.c                     |  3 +--
 drivers/misc/vcpu_stall_detector.c               |  3 +--
 drivers/mmc/host/dw_mmc.c                        |  3 +--
 drivers/ntb/test/ntb_pingpong.c                  |  3 +--
 drivers/perf/arm-ccn.c                           |  5 ++---
 drivers/perf/marvell_cn10k_ddr_pmu.c             |  4 ++--
 drivers/perf/thunderx2_pmu.c                     |  5 ++---
 drivers/power/reset/ltc2952-poweroff.c           |  8 ++++----
 drivers/power/supply/ab8500_chargalg.c           |  9 ++++-----
 drivers/powercap/idle_inject.c                   |  3 +--
 drivers/powercap/intel_rapl_common.c             |  3 +--
 drivers/pps/generators/pps_gen_parport.c         |  3 +--
 drivers/pwm/pwm-gpio.c                           |  5 ++---
 drivers/rtc/class.c                              |  3 +--
 drivers/scsi/ibmvscsi_tgt/ibmvscsi_tgt.c         |  4 +---
 drivers/scsi/lpfc/lpfc_init.c                    |  7 +++----
 drivers/scsi/scsi_debug.c                        |  4 ++--
 drivers/tty/serial/8250/8250_bcm7271.c           |  3 +--
 drivers/tty/serial/8250/8250_port.c              | 10 ++++------
 drivers/tty/serial/imx.c                         |  8 ++++----
 drivers/tty/serial/sh-sci.c                      |  3 +--
 drivers/tty/serial/xilinx_uartps.c               |  4 ++--
 drivers/usb/chipidea/otg_fsm.c                   |  3 +--
 drivers/usb/dwc2/hcd_queue.c                     |  3 +--
 drivers/usb/fotg210/fotg210-hcd.c                |  3 +--
 drivers/usb/gadget/function/f_ncm.c              |  3 +--
 drivers/usb/gadget/udc/dummy_hcd.c               |  6 ++----
 drivers/usb/host/ehci-hcd.c                      |  3 +--
 drivers/usb/musb/musb_cppi41.c                   |  4 ++--
 drivers/usb/typec/tcpm/tcpm.c                    | 16 ++++++++--------
 drivers/virtio/virtio_mem.c                      |  4 ++--
 sound/core/hrtimer.c                             |  3 +--
 sound/drivers/dummy.c                            |  3 +--
 sound/drivers/pcsp/pcsp.c                        |  3 +--
 sound/sh/sh_dac_audio.c                          |  3 +--
 sound/soc/fsl/imx-pcm-fiq.c                      |  3 +--
 62 files changed, 108 insertions(+), 160 deletions(-)

-- 
2.39.5


^ permalink raw reply	[flat|nested] 55+ messages in thread

end of thread, other threads:[~2024-11-02 16:00 UTC | newest]

Thread overview: 55+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-28  7:34 [PATCH 00/44] hrtimers: Switch to new hrtimer interface functions (4/5) Nam Cao
2024-10-28  7:34 ` [PATCH 01/44] USB: chipidea: Switch to use hrtimer_setup() Nam Cao
2024-10-28  7:34 ` [PATCH 02/44] usb: dwc2: " Nam Cao
2024-10-28  7:34 ` [PATCH 03/44] usb: fotg210-hcd: " Nam Cao
2024-10-28  7:34 ` [PATCH 04/44] usb: gadget: " Nam Cao
2024-10-28  7:34 ` [PATCH 05/44] usb: ehci: " Nam Cao
2024-10-28  7:34 ` [PATCH 06/44] usb: musb: cppi41: " Nam Cao
2024-10-28  7:34 ` [PATCH 07/44] usb: typec: tcpm: " Nam Cao
2024-10-28  7:34 ` [PATCH 08/44] serial: 8250: " Nam Cao
2024-10-28  7:34 ` [PATCH 09/44] serial: imx: " Nam Cao
2024-10-28  7:34 ` [PATCH 10/44] serial: sh-sci: " Nam Cao
2024-10-28  7:34 ` [PATCH 11/44] serial: xilinx_uartps: " Nam Cao
2024-10-28  7:34 ` [PATCH 12/44] scsi: " Nam Cao
2024-10-28  7:34 ` [PATCH 13/44] rtc: class: " Nam Cao
2024-10-28  7:34 ` [PATCH 14/44] pps: generators: pps_gen_parport: " Nam Cao
2024-10-28  7:34 ` [PATCH 15/44] powercap: " Nam Cao
2024-10-28 11:44   ` Rafael J. Wysocki
2024-10-28  7:34 ` [PATCH 16/44] power: supply: ab8500_chargalg: " Nam Cao
2024-10-28 12:48   ` Linus Walleij
2024-10-28  7:34 ` [PATCH 17/44] power: reset: ltc2952-poweroff: " Nam Cao
2024-10-28  7:34 ` [PATCH 18/44] drivers: perf: " Nam Cao
2024-10-28  7:34 ` [PATCH 19/44] ntb: ntb_pingpong: " Nam Cao
2024-10-28  7:34 ` [PATCH 20/44] mmc: dw_mmc: " Nam Cao
2024-10-28  7:34 ` [PATCH 21/44] misc: vcpu_stall_detector: " Nam Cao
2024-10-28  7:34 ` [PATCH 22/44] media: " Nam Cao
2024-10-28  8:00   ` Hans Verkuil
2024-10-28  7:34 ` [PATCH 23/44] mailbox: " Nam Cao
2024-10-28  7:35 ` [PATCH 24/44] leds: trigger: pattern: " Nam Cao
2024-10-28  7:35 ` [PATCH 25/44] Input: " Nam Cao
2024-10-28  7:35 ` [PATCH 26/44] iio: " Nam Cao
2024-11-02 16:00   ` Jonathan Cameron
2024-10-28  7:35 ` [PATCH 27/44] i2c: " Nam Cao
2024-10-28  7:35 ` [PATCH 28/44] stm class: heartbeat: " Nam Cao
2024-10-28  7:35 ` [PATCH 29/44] drm/amdgpu: " Nam Cao
2024-10-28  7:35 ` [PATCH 30/44] drm/i915/huc: " Nam Cao
2024-10-28  7:35 ` [PATCH 31/44] drm/i915/gvt: " Nam Cao
2024-10-28  7:35 ` [PATCH 32/44] drm/i915/perf: " Nam Cao
2024-10-28  7:35 ` [PATCH 33/44] drm/i915/pmu: " Nam Cao
2024-10-28  7:35 ` [PATCH 34/44] drm/i915/uncore: " Nam Cao
2024-10-28  7:35 ` [PATCH 35/44] drm/i915/request: " Nam Cao
2024-10-28  7:35 ` [PATCH 36/44] drm/msm: " Nam Cao
2024-10-28  7:35 ` [PATCH 37/44] drm/vkms: " Nam Cao
2024-10-28  7:35 ` [PATCH 38/44] drm/xe/oa: " Nam Cao
2024-10-31 13:12   ` Lucas De Marchi
2024-10-28  7:35 ` [PATCH 39/44] drm/vmwgfx: " Nam Cao
2024-10-28  7:35 ` [PATCH 40/44] virtio: mem: " Nam Cao
2024-10-28  7:35 ` [PATCH 41/44] RDMA: " Nam Cao
2024-10-28  7:35 ` [PATCH 42/44] pwm: gpio: " Nam Cao
2024-10-28  7:35 ` [PATCH 43/44] ASoC: fsl: imx-pcm-fiq: " Nam Cao
2024-10-28  7:35 ` [PATCH 44/44] ALSA: " Nam Cao
2024-10-28  8:58 ` [PATCH 00/44] hrtimers: Switch to new hrtimer interface functions (4/5) Alexander Shishkin
2024-10-28 11:06   ` Thomas Gleixner
2024-10-31 12:21 ` Jani Nikula
2024-10-31 15:59 ` Zack Rusin
2024-10-31 21:42 ` Deucher, Alexander

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox