net: caif: clear client service pointer on teardown
Subsystems (2)
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 net: caif: clear client service pointer on teardown
From: Zhengchuan Liang <[email protected]>
caif_connect() can tear down an existing client after remote shutdown by calling caif_disconnect_client() followed by caif_free_client(). caif_free_client() releases the service layer referenced by adap_layer->dn, but leaves that pointer stale.
When the socket is later destroyed, caif_sock_destructor() calls caif_free_client() again and dereferences the freed service pointer.
Clear the client/service links before releasing the service object so repeated teardown becomes harmless.
--- net/caif/cfsrvl.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)
net/caif/cfsrvl.c +12 -2
@@ -191,10 +191,20 @@ bool cfsrvl_phyid_match(struct cflayer *layer, int phyid)void caif_free_client (struct cflayer *adap_layer) { +struct cflayer *serv_layer;struct cfsrvl *servl; -if (adap_layer ==NULL || adap_layer->dn ==NULL ) + +if (!adap_layer) +return ; + + serv_layer = adap_layer->dn; +if (!serv_layer)return ; - servl =container_obj (adap_layer->dn); + +layer_set_dn (adap_layer,NULL ); +layer_set_up (serv_layer,NULL ); + + servl =container_obj (serv_layer); servl->release (&servl->layer); }EXPORT_SYMBOL (caif_free_client);
Signature · 1 line
2.43.0
This patch was applied to netdev/net.git (main) by Paolo Abeni <[email protected]>:
Hello:
This patch was applied to netdev/net.git (main)
by Paolo Abeni <[email protected]>:
Quoted 8 lines · On Sat, 11 Apr 2026 23:10:26 +0800 you wrote:
From: Zhengchuan Liang <[email protected]>
caif_connect()can tear down an existing client after remote shutdown by callingcaif_disconnect_client()followed bycaif_free_client().caif_free_client()releases the service layer referenced byadap_layer->dn, but leaves that pointer stale.[...]
Here is the summary with links:
- [net,1/1] net: caif: clear client service pointer on teardown
https://git.kernel.org/netdev/net/c/f7cf8ece8cee
You are awesome, thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html