日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

释放skb buffer指针引出的指针传递问题

發布時間:2025/4/5 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 释放skb buffer指针引出的指针传递问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內核一個轉發模塊,在做IPv4轉IPv6的時候,對原來的IPv4報文指針進行了釋放操作,然后新建一個skb buffer存儲IPv6報文,使用

kfree_skb釋放掉舊的IPv4?skb后直接將新的IPv6 SKB指針傳遞給了指向舊的指針(如下),結果引起了內核奔潰。

struct sk_buff *skb, skb_cp;/* 創建一個新的skb buffer */ skb_cp = skb_copy_expand(skb, head, tail, GFP_ATOMIC);if (skb_cp) {/* 創建成功后,釋放skb所指向的舊的buffer,然后將新的skb指針賦值給它 */dev_kfree_skb_any(skb);skb = skb_cp; }

上述操作是在一個函數體內進行的,導致跳出函數體后,skb仍然指向被釋放的skb?buffer,引起系統異常。以前以為指針傳遞可以改變原有的內容,原來是對指針沒理解透徹,將指針傳遞給函數后,可以在該函數體內修改該指針指向的數據內容,但是如果更改該指針所存儲的對象位置,對函數外部而言是無效的,相當于指針傳遞是傳遞了一個指針副本,這個指針副本和原有的指針指向同一個內容,可以對該內容進行修改,但是如果修改了該指針副本所指向的位置,并不會修改原有指針的內容。

=============================================================================================

Linux應用程序、內核、驅動、后臺開發交流討論群(745510310),感興趣的同學可以加群討論、交流、資料查找等,前進的道路上,你不是一個人奧^_^。
?

總結

以上是生活随笔為你收集整理的释放skb buffer指针引出的指针传递问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。