public inbox for linux-staging@lists.linux.dev
 help / color / mirror / Atom feed
* Re: [PATCH 0/5] rtw_sdio_if1_init cleanup and small logic tweak
@ 2026-04-01 10:17 Luka Gejak
  2026-04-01 10:29 ` Greg KH
  2026-04-01 10:33 ` Dan Carpenter
  0 siblings, 2 replies; 14+ messages in thread
From: Luka Gejak @ 2026-04-01 10:17 UTC (permalink / raw)
  To: omer.e.idrissi; +Cc: gregkh, linux-kernel, linux-staging, luka.gejak

Hi Omer,
Thank you for submitting this patch series. I like the idea, however
during my review I have found that there are several issues.

Patch 1:
While the patch makes it visually cleaner, this patch introduces a 
significant risk of a kernel panic. struct net_device *pnetdev; is 
declared on the stack but not initialized to NULL. If the function 
fails early, the execution jumps to the free_adapter label. The logic 
then evaluates if (pnetdev). Since pnetdev contains uninitialized 
stack garbage, this check will likely evaluate to true, causing the 
kernel to attempt rtw_free_netdev() on a random memory address.

Patch 2:
This patch is technically correct in its removal of the redundant 
padapter assignment. However, the diff shows that it also performs 
whitespace cleanup by removing an empty line. You should stick to the 
atomic patch per logical change rule. So either keep the whitespace 
as is or move it into dedicated patch.

Patch 3 and 4:
I have checked in drivers/staging/rtl8723bs/include/osdep_service.h 
that this driver defines _SUCCESS as 1 and _FAIL as 0. This is the 
inverse of the standard Linux kernel convention. By changing the check
to if (func()), your new logic triggers the goto error path when the 
function returns 1 (Success). This would result in a driver that fails
to probe entirely. You cannot simplify these checks until the 
functions themselves are refactored to return standard kernel error 
codes.

Patch 5:
This patch has the same issue mentioned above regarding return values.
It also introduces a trailing whitespace on the empty line added 
before the rtw_wdev_alloc check. Please run scripts/checkpatch.pl 
--strict on your patches before submission.

First you should submit a patch that properly initializes pointers to 
NULL to make the cleanup paths safe from crash. Although initializing 
pnetdev to NULL prevents the immediate crash, the cleanup logic remains 
fragile. So please consider refactoring the error path to use a proper
LIFO (Last-In, First-Out) label stack. Each goto should jump only to 
the cleanup steps for resources that have actually been allocated up 
to that point.

Secondly, if you wish to proceed with the macro removal, provide a 
series that refactors the internal return values of 
rtw_init_io_priv, rtw_init_drv_sw, and rtw_hal_data_init to standard 0
(Success) / -ERR (Failure) conventions. Once the functions follow 
standard conventions, the cleanup in patches 3-5 will be correct.

Best regards,
Luka Gejak

^ permalink raw reply	[flat|nested] 14+ messages in thread
* Re: [PATCH 0/5] rtw_sdio_if1_init cleanup and small logic tweak
@ 2026-04-01 10:19 Luka Gejak
  0 siblings, 0 replies; 14+ messages in thread
From: Luka Gejak @ 2026-04-01 10:19 UTC (permalink / raw)
  To: omer.e.idrissi; +Cc: gregkh, linux-kernel, linux-staging, luka.gejak

Hi Omer,
Thank you for submitting this patch series. I like the idea, however
during my review I have found that there are several issues.

Patch 1:
While the patch makes it visually cleaner, this patch introduces a 
significant risk of a kernel panic. struct net_device *pnetdev; is 
declared on the stack but not initialized to NULL. If the function 
fails early, the execution jumps to the free_adapter label. The logic 
then evaluates if (pnetdev). Since pnetdev contains uninitialized 
stack garbage, this check will likely evaluate to true, causing the 
kernel to attempt rtw_free_netdev() on a random memory address.

Patch 2:
This patch is technically correct in its removal of the redundant 
padapter assignment. However, the diff shows that it also performs 
whitespace cleanup by removing an empty line. You should stick to the 
atomic patch per logical change rule. So either keep the whitespace 
as is or move it into dedicated patch.

Patch 3 and 4:
I have checked in drivers/staging/rtl8723bs/include/osdep_service.h 
that this driver defines _SUCCESS as 1 and _FAIL as 0. This is the 
inverse of the standard Linux kernel convention. By changing the check
to if (func()), your new logic triggers the goto error path when the 
function returns 1 (Success). This would result in a driver that fails
to probe entirely. You cannot simplify these checks until the 
functions themselves are refactored to return standard kernel error 
codes.

Patch 5:
This patch has the same issue mentioned above regarding return values.
It also introduces a trailing whitespace on the empty line added 
before the rtw_wdev_alloc check. Please run scripts/checkpatch.pl 
--strict on your patches before submission.

First you should submit a patch that properly initializes pointers to 
NULL to make the cleanup paths safe from crash. Although initializing 
pnetdev to NULL prevents the immediate crash, the cleanup logic remains 
fragile. So please consider refactoring the error path to use a proper
LIFO (Last-In, First-Out) label stack. Each goto should jump only to 
the cleanup steps for resources that have actually been allocated up 
to that point.

Secondly, if you wish to proceed with the macro removal, provide a 
series that refactors the internal return values of 
rtw_init_io_priv, rtw_init_drv_sw, and rtw_hal_data_init to standard 0
(Success) / -ERR (Failure) conventions. Once the functions follow 
standard conventions, the cleanup in patches 3-5 will be correct.

Best regards,
Luka Gejak

^ permalink raw reply	[flat|nested] 14+ messages in thread
* Re: [PATCH 0/5] rtw_sdio_if1_init cleanup and small logic tweak
@ 2026-03-31 20:25 Luka Gejak
  2026-04-01  8:29 ` Greg KH
  2026-04-01  8:40 ` Krzysztof Kozlowski
  0 siblings, 2 replies; 14+ messages in thread
From: Luka Gejak @ 2026-03-31 20:25 UTC (permalink / raw)
  To: omer.e.idrissi; +Cc: gregkh, linux-kernel, linux-staging, luka.gejak

Hi Omer,
Thank you for submitting this patch series. Efforts to clean up the 
initialization paths in these legacy Realtek staging drivers are 
always welcome, as they are a necessary step toward aligning the code 
with upstream kernel standards and eventually moving the driver out of
staging.
I have performed a detailed technical audit of the series. While the 
high-level goal of improving readability is correct, there are several
critical regressions and architectural issues that prevent patch 
series from being accepted in its current form. 
Please see the detailed breakdown below:
Patch 1/5: Use direct returns in rtw_sdio_if1_init
While the move toward direct returns is visually cleaner, this patch 
introduces a significant risk of a kernel panic. In the original code,
the status variable guarded the cleanup labels. By removing it, you 
have exposed an uninitialized variable bug:
struct net_device *pnetdev; is declared on the stack but not 
initialized to NULL. If the function fails early (e.g., if vzalloc for
padapter fails or an early hardware check triggers a goto), the 
execution jumps to the free_adapter label. The logic then evaluates 
if (pnetdev). Since pnetdev contains uninitialized stack garbage, this
check will likely evaluate to true, causing the kernel to attempt to 
call rtw_free_netdev() on a random memory address.
Requirement: For v2, you must initialize pnetdev = NULL; at the top of
the function to ensure the cleanup path is safe. Check below for more 
information about next steps for patch 2.
Patch 2/5: Remove useless line in rtw_sdio_if1_init
This patch is technically correct in its removal of the redundant 
padapter assignment. However, the diff shows that it also performs 
whitespace cleanup by removing an empty line (the "two minuses" in the
diff). To maintain a clean git history, we follow the "one change per 
patch" rule. Mixing dead code removal with whitespace adjustments 
makes the history harder to parse. Please either keep the whitespace 
as is or move all stylistic cleanups into a dedicated "Cleanup 
whitespace" patch within the series. 
Patch 3/5 & 4/5: Logic simplified for rtw_init_io_priv/rtw_init_drv_sw
I have verified in drivers/staging/rtl8723bs/include/osdep_service.h 
that this driver defines _SUCCESS as 1 and _FAIL as 0. This is the 
inverse of the standard Linux kernel convention (where 0 is success 
and -ERRNO is failure). By changing the check to if (func()), your new
logic triggers the goto error path when the function returns 1 
(Success). This would result in a driver that fails to probe entirely,
as every successful initialization step would be treated as a failure.
Requirement: We cannot simplify these call-site checks until the 
underlying functions themselves are refactored to return standard 
kernel error codes.
Patch 5/5: Logic tweak for rtw_wdev_alloc
Logic: This suffers from the same inversion issue mentioned above 
regarding rtw_wdev_alloc return values. This patch also introduces a 
trailing whitespace on the empty line added before the rtw_wdev_alloc 
check. Please ensure you run scripts/checkpatch.pl --strict on your 
patches before submission to catch these formatting errors.

I recommend the following path for v2:
Step 1: Submit a patch that properly initializes pointers to NULL to 
make the cleanup paths safe from crash. Although initializing pnetdev 
to NULL prevents the immediate crash, the cleanup logic remains 
fragile. In v2, please consider refactoring the error path to use a 
proper LIFO (Last-In, First-Out) label stack. Each goto should jump 
only to the cleanup steps for resources that have actually been 
allocated up to that point. This avoids redundant checks and potential
double-frees or leaks.
Step 2: If you wish to proceed with the macro removal, provide a 
preparatory series that refactors the internal return values of 
rtw_init_io_priv, rtw_init_drv_sw, and rtw_hal_data_init to standard 0
(Success) / -ERR (Failure) conventions.
Step 3: Once the functions follow standard conventions, the cleanup in
Patches 3-5 will be correct.
Thank you again for your contribution. I look forward to reviewing the
revised series.
Best regards,
Luka Gejak

^ permalink raw reply	[flat|nested] 14+ messages in thread
* [PATCH 0/5] rtw_sdio_if1_init cleanup and small logic tweak
@ 2026-03-31 15:32 Omer El Idrissi
  2026-04-01  1:39 ` Ethan Tidmore
  0 siblings, 1 reply; 14+ messages in thread
From: Omer El Idrissi @ 2026-03-31 15:32 UTC (permalink / raw)
  To: gregkh; +Cc: linux-staging, linux-kernel, Omer El Idrissi

This patch series does some general cleanup for rtw_sdio_if1_init. Among
the changes are: using direct returns, removing the use of
vendor-defined macros, adding a separate label for freeing and
unregistering padapter->rtw_wdev.

Signed-off-by: Omer El Idrissi <omer.e.idrissi@gmail.com>

Omer El Idrissi (5):
  staging: rtl8723bs: use direct returns in rtw_sdio_if1_init
  staging: rtl8723bs: remove useless line in rtw_sdio_if1_init
  staging: rtl8723bs: remove use of vendor-defined status macros
  staging: rtl8723bs: replace function with error handling alternative
  staging: rtl8723bs: add separate label for freeing rtw_wdev

 drivers/staging/rtl8723bs/include/sdio_hal.h |  1 -
 drivers/staging/rtl8723bs/os_dep/sdio_intf.c | 56 ++++++++------------
 2 files changed, 22 insertions(+), 35 deletions(-)

-- 
2.51.0


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

end of thread, other threads:[~2026-04-01 14:35 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-01 10:17 [PATCH 0/5] rtw_sdio_if1_init cleanup and small logic tweak Luka Gejak
2026-04-01 10:29 ` Greg KH
2026-04-01 10:50   ` Greg KH
2026-04-01 10:58     ` Luka Gejak
2026-04-01 10:56   ` Luka Gejak
2026-04-01 10:33 ` Dan Carpenter
  -- strict thread matches above, loose matches on Subject: below --
2026-04-01 10:19 Luka Gejak
2026-03-31 20:25 Luka Gejak
2026-04-01  8:29 ` Greg KH
2026-04-01  9:46   ` Luka Gejak
2026-04-01 14:35     ` Konstantin Ryabitsev
2026-04-01  8:40 ` Krzysztof Kozlowski
2026-03-31 15:32 Omer El Idrissi
2026-04-01  1:39 ` Ethan Tidmore

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