Re: [PATCH] treewide: Convert del_timer*() to timer_shutdown*()

2022-12-23 Thread Steven Rostedt
On Tue, 20 Dec 2022 13:45:19 -0500
Steven Rostedt  wrote:

> [
>   Linus,
> 
> I ran the script against your latest master branch:
> commit b6bb9676f2165d518b35ba3bea5f1fcfc0d969bf
> 
> As the timer_shutdown*() code is now in your tree, I figured
> we can start doing the conversions. At least add the trivial ones
> now as Thomas suggested that this gets applied at the end of the
> merge window, to avoid conflicts with linux-next during the
> development cycle. I can wait to Friday to run it again, and
> resubmit.
> 
> What is the best way to handle this?
> ]

Note, I just did a git remote update, checked out the latest, re-ran the
script, and this patch hasn't changed.

-- Steve


Re: [PATCH] treewide: Convert del_timer*() to timer_shutdown*()

2022-12-22 Thread Paolo Abeni
On Tue, 2022-12-20 at 13:45 -0500, Steven Rostedt wrote:
> [
>   Linus,
> 
> I ran the script against your latest master branch:
> commit b6bb9676f2165d518b35ba3bea5f1fcfc0d969bf
> 
> As the timer_shutdown*() code is now in your tree, I figured
> we can start doing the conversions. At least add the trivial ones
> now as Thomas suggested that this gets applied at the end of the
> merge window, to avoid conflicts with linux-next during the
> development cycle. I can wait to Friday to run it again, and
> resubmit.
> 
> What is the best way to handle this?
> ]
> 
> From: "Steven Rostedt (Google)" 
> 
> Due to several bugs caused by timers being re-armed after they are
> shutdown and just before they are freed, a new state of timers was added
> called "shutdown". After a timer is set to this state, then it can no
> longer be re-armed.
> 
> The following script was run to find all the trivial locations where
> del_timer() or del_timer_sync() is called in the same function that the
> object holding the timer is freed. It also ignores any locations where the
> timer->function is modified between the del_timer*() and the free(), as
> that is not considered a "trivial" case.
> 
> This was created by using a coccinelle script and the following commands:
> 
>  $ cat timer.cocci
> @@
> expression ptr, slab;
> identifier timer, rfield;
> @@
> (
> -   del_timer(>timer);
> +   timer_shutdown(>timer);
> > 
> -   del_timer_sync(>timer);
> +   timer_shutdown_sync(>timer);
> )
>   ... when strict
>   when != ptr->timer
> (
> kfree_rcu(ptr, rfield);
> > 
> kmem_cache_free(slab, ptr);
> > 
> kfree(ptr);
> )
> 
>  $ spatch timer.cocci . > /tmp/t.patch
>  $ patch -p1 < /tmp/t.patch
> 
> Link: https://lore.kernel.org/lkml/20221123201306.823305...@linutronix.de/
> 
> Signed-off-by: Steven Rostedt (Google) 

For the networking bits:

>  drivers/net/ethernet/intel/i40e/i40e_main.c  |  6 +++---
>  drivers/net/ethernet/marvell/sky2.c  |  2 +-
>  drivers/net/ethernet/sun/sunvnet.c   |  2 +-
>  drivers/net/usb/sierra_net.c |  2 +-
>  net/802/garp.c   |  2 +-
>  net/802/mrp.c|  4 ++--
>  net/bridge/br_multicast.c|  8 
>  net/bridge/br_multicast_eht.c|  4 ++--
>  net/core/gen_estimator.c |  2 +-
>  net/ipv4/ipmr.c  |  2 +-
>  net/ipv6/ip6mr.c |  2 +-
>  net/mac80211/mesh_pathtbl.c  |  2 +-
>  net/netfilter/ipset/ip_set_list_set.c|  2 +-
>  net/netfilter/ipvs/ip_vs_lblc.c  |  2 +-
>  net/netfilter/ipvs/ip_vs_lblcr.c |  2 +-
>  net/netfilter/xt_IDLETIMER.c |  4 ++--
>  net/netfilter/xt_LED.c   |  2 +-
>  net/sched/cls_flow.c |  2 +-
>  net/sunrpc/svc.c |  2 +-
>  net/tipc/discover.c  |  2 +-
>  net/tipc/monitor.c   |  2 +-

Acked-by: Paolo Abeni 



Re: [PATCH] treewide: Convert del_timer*() to timer_shutdown*()

2022-12-21 Thread Kalle Valo
Steven Rostedt  writes:

> [
>   Linus,
>
> I ran the script against your latest master branch:
> commit b6bb9676f2165d518b35ba3bea5f1fcfc0d969bf
>
> As the timer_shutdown*() code is now in your tree, I figured
> we can start doing the conversions. At least add the trivial ones
> now as Thomas suggested that this gets applied at the end of the
> merge window, to avoid conflicts with linux-next during the
> development cycle. I can wait to Friday to run it again, and
> resubmit.
>
> What is the best way to handle this?
> ]
>
> From: "Steven Rostedt (Google)" 
>
> Due to several bugs caused by timers being re-armed after they are
> shutdown and just before they are freed, a new state of timers was added
> called "shutdown". After a timer is set to this state, then it can no
> longer be re-armed.
>
> The following script was run to find all the trivial locations where
> del_timer() or del_timer_sync() is called in the same function that the
> object holding the timer is freed. It also ignores any locations where the
> timer->function is modified between the del_timer*() and the free(), as
> that is not considered a "trivial" case.
>
> This was created by using a coccinelle script and the following commands:
>
>  $ cat timer.cocci
> @@
> expression ptr, slab;
> identifier timer, rfield;
> @@
> (
> -   del_timer(>timer);
> +   timer_shutdown(>timer);
> |
> -   del_timer_sync(>timer);
> +   timer_shutdown_sync(>timer);
> )
>   ... when strict
>   when != ptr->timer
> (
> kfree_rcu(ptr, rfield);
> |
> kmem_cache_free(slab, ptr);
> |
> kfree(ptr);
> )
>
>  $ spatch timer.cocci . > /tmp/t.patch
>  $ patch -p1 < /tmp/t.patch
>
> Link: https://lore.kernel.org/lkml/20221123201306.823305...@linutronix.de/
>
> Signed-off-by: Steven Rostedt (Google) 

For wireless:

>  .../broadcom/brcm80211/brcmfmac/btcoex.c |  2 +-
>  drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c |  2 +-
>  drivers/net/wireless/intel/iwlwifi/mvm/sta.c |  2 +-
>  drivers/net/wireless/intersil/hostap/hostap_ap.c |  2 +-
>  drivers/net/wireless/marvell/mwifiex/main.c  |  2 +-
>  drivers/net/wireless/microchip/wilc1000/hif.c|  6 +++---

Acked-by: Kalle Valo 

-- 
https://patchwork.kernel.org/project/linux-wireless/list/

https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches


Re: [PATCH] treewide: Convert del_timer*() to timer_shutdown*()

2022-12-20 Thread Pavel Machek
On Tue 2022-12-20 13:45:19, Steven Rostedt wrote:
> [
>   Linus,
> 
> I ran the script against your latest master branch:
> commit b6bb9676f2165d518b35ba3bea5f1fcfc0d969bf
> 
> As the timer_shutdown*() code is now in your tree, I figured
> we can start doing the conversions. At least add the trivial ones
> now as Thomas suggested that this gets applied at the end of the
> merge window, to avoid conflicts with linux-next during the
> development cycle. I can wait to Friday to run it again, and
> resubmit.
> 
> What is the best way to handle this?
> ]
> 
> From: "Steven Rostedt (Google)" 
> 
> Due to several bugs caused by timers being re-armed after they are
> shutdown and just before they are freed, a new state of timers was added
> called "shutdown". After a timer is set to this state, then it can no
> longer be re-armed.
> 
> The following script was run to find all the trivial locations where
> del_timer() or del_timer_sync() is called in the same function that the
> object holding the timer is freed. It also ignores any locations where the
> timer->function is modified between the del_timer*() and the free(), as
> that is not considered a "trivial" case.
> 
> This was created by using a coccinelle script and the following
commands:

LED parts looks good to me.

Getting it in just before -rc1 would be best solution for me.

Best regards,
Pavel
-- 
People of Russia, stop Putin before his war on Ukraine escalates.


signature.asc
Description: PGP signature


[PATCH] treewide: Convert del_timer*() to timer_shutdown*()

2022-12-20 Thread Steven Rostedt
[
  Linus,

I ran the script against your latest master branch:
commit b6bb9676f2165d518b35ba3bea5f1fcfc0d969bf

As the timer_shutdown*() code is now in your tree, I figured
we can start doing the conversions. At least add the trivial ones
now as Thomas suggested that this gets applied at the end of the
merge window, to avoid conflicts with linux-next during the
development cycle. I can wait to Friday to run it again, and
resubmit.

What is the best way to handle this?
]

From: "Steven Rostedt (Google)" 

Due to several bugs caused by timers being re-armed after they are
shutdown and just before they are freed, a new state of timers was added
called "shutdown". After a timer is set to this state, then it can no
longer be re-armed.

The following script was run to find all the trivial locations where
del_timer() or del_timer_sync() is called in the same function that the
object holding the timer is freed. It also ignores any locations where the
timer->function is modified between the del_timer*() and the free(), as
that is not considered a "trivial" case.

This was created by using a coccinelle script and the following commands:

 $ cat timer.cocci
@@
expression ptr, slab;
identifier timer, rfield;
@@
(
-   del_timer(>timer);
+   timer_shutdown(>timer);
|
-   del_timer_sync(>timer);
+   timer_shutdown_sync(>timer);
)
  ... when strict
  when != ptr->timer
(
kfree_rcu(ptr, rfield);
|
kmem_cache_free(slab, ptr);
|
kfree(ptr);
)

 $ spatch timer.cocci . > /tmp/t.patch
 $ patch -p1 < /tmp/t.patch

Link: https://lore.kernel.org/lkml/20221123201306.823305...@linutronix.de/

Signed-off-by: Steven Rostedt (Google) 
---
 arch/sh/drivers/push-switch.c|  2 +-
 block/blk-iocost.c   |  2 +-
 block/blk-iolatency.c|  2 +-
 block/kyber-iosched.c|  2 +-
 drivers/acpi/apei/ghes.c |  2 +-
 drivers/atm/idt77252.c   |  6 +++---
 drivers/block/drbd/drbd_main.c   |  2 +-
 drivers/block/loop.c |  2 +-
 drivers/bluetooth/hci_bcsp.c |  2 +-
 drivers/gpu/drm/i915/i915_sw_fence.c |  2 +-
 drivers/hid/hid-wiimote-core.c   |  2 +-
 drivers/input/keyboard/locomokbd.c   |  2 +-
 drivers/input/keyboard/omap-keypad.c |  2 +-
 drivers/input/mouse/alps.c   |  2 +-
 drivers/isdn/mISDN/l1oip_core.c  |  4 ++--
 drivers/isdn/mISDN/timerdev.c|  4 ++--
 drivers/leds/trigger/ledtrig-activity.c  |  2 +-
 drivers/leds/trigger/ledtrig-heartbeat.c |  2 +-
 drivers/leds/trigger/ledtrig-pattern.c   |  2 +-
 drivers/leds/trigger/ledtrig-transient.c |  2 +-
 drivers/media/pci/ivtv/ivtv-driver.c |  2 +-
 drivers/media/usb/pvrusb2/pvrusb2-hdw.c  | 16 
 drivers/media/usb/s2255/s2255drv.c   |  4 ++--
 drivers/net/ethernet/intel/i40e/i40e_main.c  |  6 +++---
 drivers/net/ethernet/marvell/sky2.c  |  2 +-
 drivers/net/ethernet/sun/sunvnet.c   |  2 +-
 drivers/net/usb/sierra_net.c |  2 +-
 .../broadcom/brcm80211/brcmfmac/btcoex.c |  2 +-
 drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c |  2 +-
 drivers/net/wireless/intel/iwlwifi/mvm/sta.c |  2 +-
 drivers/net/wireless/intersil/hostap/hostap_ap.c |  2 +-
 drivers/net/wireless/marvell/mwifiex/main.c  |  2 +-
 drivers/net/wireless/microchip/wilc1000/hif.c|  6 +++---
 drivers/nfc/pn533/pn533.c|  2 +-
 drivers/nfc/pn533/uart.c |  2 +-
 drivers/pcmcia/bcm63xx_pcmcia.c  |  2 +-
 drivers/pcmcia/electra_cf.c  |  2 +-
 drivers/pcmcia/omap_cf.c |  2 +-
 drivers/pcmcia/pd6729.c  |  4 ++--
 drivers/pcmcia/yenta_socket.c|  4 ++--
 drivers/scsi/qla2xxx/qla_edif.c  |  4 ++--
 .../staging/media/atomisp/i2c/atomisp-lm3554.c   |  2 +-
 drivers/staging/wlan-ng/prism2usb.c  |  6 +++---
 drivers/tty/n_gsm.c  |  2 +-
 drivers/tty/sysrq.c  |  2 +-
 drivers/usb/gadget/udc/m66592-udc.c  |  2 +-
 drivers/usb/serial/garmin_gps.c  |  2 +-
 drivers/usb/serial/mos7840.c |  4 ++--
 fs/ext4/super.c  |  2 +-
 fs/nilfs2/segment.c  |  2 +-
 net/802/garp.c   |  2 +-
 net/802/mrp.c|  4 ++--
 net/bridge/br_multicast.c|  8 
 net/bridge/br_multicast_eht.c|  4 ++--
 net/core/gen_estimator.c |  2 +-
 net/ipv4/ipmr.c