mbox series

[*-next,00/18] Remove weird and needless 'return' for void APIs

Message ID 20250221-rmv_return-v1-0-cc8dff275827@quicinc.com
Headers show
Series Remove weird and needless 'return' for void APIs | expand

Message

Zijun Hu Feb. 21, 2025, 1:02 p.m. UTC
This patch series is to remove weird and needless 'return' for
void APIs under include/ with the following pattern:

api_header.h:

void api_func_a(...);

static inline void api_func_b(...)
{
	return api_func_a(...);
}

Remove the needless 'return' in api_func_b().

Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
---
Zijun Hu (18):
      mm/mmu_gather: Remove needless return in void API tlb_remove_page()
      cpu: Remove needless return in void API suspend_enable_secondary_cpus()
      crypto: api - Remove needless return in void API crypto_free_tfm()
      crypto: scomp - Remove needless return in void API crypto_scomp_free_ctx()
      sysfs: Remove needless return in void API sysfs_enable_ns()
      skbuff: Remove needless return in void API consume_skb()
      wifi: mac80211: Remove needless return in void API _ieee80211_hw_set()
      net: sched: Remove needless return in void API qdisc_watchdog_schedule_ns()
      ipv4/igmp: Remove needless return in void API ip_mc_dec_group()
      IB/rdmavt: Remove needless return in void API rvt_mod_retry_timer()
      ratelimit: Remove needless return in void API ratelimit_default_init()
      siox: Remove needless return in void API siox_driver_unregister()
      gpiolib: Remove needless return in two void APIs
      PM: wakeup: Remove needless return in three void APIs
      mfd: db8500-prcmu: Remove needless return in three void APIs
      rhashtable: Remove needless return in three void APIs
      dma-mapping: Remove needless return in five void APIs
      mtd: nand: Do not return void function in void function

 include/asm-generic/tlb.h           |  2 +-
 include/crypto/internal/scompress.h |  2 +-
 include/linux/cpu.h                 |  2 +-
 include/linux/crypto.h              |  2 +-
 include/linux/dma-mapping.h         | 12 ++++++------
 include/linux/gpio.h                |  4 ++--
 include/linux/igmp.h                |  2 +-
 include/linux/mfd/dbx500-prcmu.h    |  6 +++---
 include/linux/mtd/nand.h            | 18 ++++++++++++------
 include/linux/pm_wakeup.h           |  6 +++---
 include/linux/ratelimit.h           |  4 ++--
 include/linux/rhashtable.h          |  6 +++---
 include/linux/siox.h                |  2 +-
 include/linux/skbuff.h              |  2 +-
 include/linux/sysfs.h               |  2 +-
 include/net/mac80211.h              |  2 +-
 include/net/pkt_sched.h             |  2 +-
 include/rdma/rdmavt_qp.h            |  2 +-
 18 files changed, 42 insertions(+), 36 deletions(-)
---
base-commit: 2014c95afecee3e76ca4a56956a936e23283f05b
change-id: 20250221-rmv_return-f1dc82d492f0

Best regards,

Comments

Bartosz Golaszewski Feb. 21, 2025, 1:06 p.m. UTC | #1
On Fri, Feb 21, 2025 at 2:02 PM Zijun Hu <quic_zijuhu@quicinc.com> wrote:
>
> Remove needless 'return' in the following void APIs:
>
> gpio_set_value_cansleep()
> gpio_set_value()
>
> Since both the API and callee involved are void functions.
>
> Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
> ---

That would normally make sense but we're getting that reworked[1] in
this very cycle so please drop this patch from your series.

Bart

[1] https://lore.kernel.org/linux-gpio/20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org/
Zijun Hu Feb. 21, 2025, 1:12 p.m. UTC | #2
On 2/21/2025 9:06 PM, Bartosz Golaszewski wrote:
> On Fri, Feb 21, 2025 at 2:02 PM Zijun Hu <quic_zijuhu@quicinc.com> wrote:
>>
>> Remove needless 'return' in the following void APIs:
>>
>> gpio_set_value_cansleep()
>> gpio_set_value()
>>
>> Since both the API and callee involved are void functions.
>>
>> Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
>> ---
> 
> That would normally make sense but we're getting that reworked[1] in
> this very cycle so please drop this patch from your series.
> 

sure, will drop it in next revision.

> Bart
> 
> [1] https://lore.kernel.org/linux-gpio/20250220-gpio-set-retval-v2-0-bc4cfd38dae3@linaro.org/
Stephen Hemminger Feb. 21, 2025, 7 p.m. UTC | #3
On Fri, 21 Feb 2025 05:02:05 -0800
Zijun Hu <quic_zijuhu@quicinc.com> wrote:

> This patch series is to remove weird and needless 'return' for
> void APIs under include/ with the following pattern:
> 
> api_header.h:
> 
> void api_func_a(...);
> 
> static inline void api_func_b(...)
> {
> 	return api_func_a(...);
> }
> 
> Remove the needless 'return' in api_func_b().
> 
> Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com>
> ---
> Zijun Hu (18):
>       mm/mmu_gather: Remove needless return in void API tlb_remove_page()
>       cpu: Remove needless return in void API suspend_enable_secondary_cpus()
>       crypto: api - Remove needless return in void API crypto_free_tfm()
>       crypto: scomp - Remove needless return in void API crypto_scomp_free_ctx()
>       sysfs: Remove needless return in void API sysfs_enable_ns()
>       skbuff: Remove needless return in void API consume_skb()
>       wifi: mac80211: Remove needless return in void API _ieee80211_hw_set()
>       net: sched: Remove needless return in void API qdisc_watchdog_schedule_ns()
>       ipv4/igmp: Remove needless return in void API ip_mc_dec_group()
>       IB/rdmavt: Remove needless return in void API rvt_mod_retry_timer()
>       ratelimit: Remove needless return in void API ratelimit_default_init()
>       siox: Remove needless return in void API siox_driver_unregister()
>       gpiolib: Remove needless return in two void APIs
>       PM: wakeup: Remove needless return in three void APIs
>       mfd: db8500-prcmu: Remove needless return in three void APIs
>       rhashtable: Remove needless return in three void APIs
>       dma-mapping: Remove needless return in five void APIs
>       mtd: nand: Do not return void function in void function
> 
>  include/asm-generic/tlb.h           |  2 +-
>  include/crypto/internal/scompress.h |  2 +-
>  include/linux/cpu.h                 |  2 +-
>  include/linux/crypto.h              |  2 +-
>  include/linux/dma-mapping.h         | 12 ++++++------
>  include/linux/gpio.h                |  4 ++--
>  include/linux/igmp.h                |  2 +-
>  include/linux/mfd/dbx500-prcmu.h    |  6 +++---
>  include/linux/mtd/nand.h            | 18 ++++++++++++------
>  include/linux/pm_wakeup.h           |  6 +++---
>  include/linux/ratelimit.h           |  4 ++--
>  include/linux/rhashtable.h          |  6 +++---
>  include/linux/siox.h                |  2 +-
>  include/linux/skbuff.h              |  2 +-
>  include/linux/sysfs.h               |  2 +-
>  include/net/mac80211.h              |  2 +-
>  include/net/pkt_sched.h             |  2 +-
>  include/rdma/rdmavt_qp.h            |  2 +-
>  18 files changed, 42 insertions(+), 36 deletions(-)
> ---
> base-commit: 2014c95afecee3e76ca4a56956a936e23283f05b
> change-id: 20250221-rmv_return-f1dc82d492f0
> 
> Best regards,

Is this something that could be done with a coccinelle script?
Zijun Hu Feb. 22, 2025, 10:51 a.m. UTC | #4
On 2025/2/22 03:36, Johannes Berg wrote:
> On Fri, 2025-02-21 at 11:00 -0800, Stephen Hemminger wrote:
>> Is this something that could be done with a coccinelle script?
>>
> Almost enough to do this:
> 
> @@
> identifier fn;
> expression E;
> @@
> void fn(...)
> {
> ...
> -return
> E;
> }
> 
> 
> It takes a long time to run though, and does some wrong things as well:
> if the return is in the middle of the function, it still matches and
> removes it erroneously.

if return is in the middle, we may need to convert the return statement
in to two statement as [PATCH 18/18] does:
https://lore.kernel.org/all/20250221-rmv_return-v1-18-cc8dff275827@quicinc.com/

namely, Convert  "return func(...);" to "func(...); return;"

C spec such as C17 have this description about return
statement:
6.8.6.4:
A return statement with an expression shall not appear in a function
whose return type is void. A return statement without an expression
shall only appear in a function whose return type is void.


so, do we need to treat "return void function in void function" as
bad code style and make coccinelle script check this bad usage?