wifi: iwlwifi: pcie: allocate dummy net_device dynamically
authorBreno Leitao <leitao@debian.org>
Wed, 1 May 2024 16:54:04 +0000 (09:54 -0700)
committerJohannes Berg <johannes.berg@intel.com>
Fri, 3 May 2024 08:01:52 +0000 (10:01 +0200)
commitb73c138a879fd7f8d75ad90f5b453615171c2acc
tree7f0350e5e845cb851d791466da928d8d614d7de0
parent8886b6d681f28d838cb30ace8ce73f8b96bc927d
wifi: iwlwifi: pcie: allocate dummy net_device dynamically

struct net_device shouldn't be embedded into any structure, instead,
the owner should use the priv space to embed their state into net_device.

Embedding net_device into structures prohibits the usage of flexible
arrays in the net_device structure. For more details, see the discussion
at [1].

Un-embed the net_device from struct iwl_trans_pcie by converting it
into a pointer. Then use the leverage alloc_netdev() to allocate the
net_device object at iwl_trans_pcie_alloc.

The private data of net_device becomes a pointer for the struct
iwl_trans_pcie, so, it is easy to get back to the iwl_trans_pcie parent
given the net_device object.

[1] https://lore.kernel.org/all/20240229225910.79e224cf@kernel.org/

Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Breno Leitao <leitao@debian.org>
Link: https://msgid.link/20240501165417.3406039-1-leitao@debian.org
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/pcie/internal.h
drivers/net/wireless/intel/iwlwifi/pcie/rx.c
drivers/net/wireless/intel/iwlwifi/pcie/trans.c