色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Linux開源社區宣布未來會把內核C語言版本升級到C11

Linux愛好者 ? 來源:量子位 ? 作者:量子位 ? 2022-03-24 14:59 ? 次閱讀

還在使用89年版C語言Linux內核,現在終于要做出改變了。

近日,Linux開源社區宣布,未來會把內核C語言版本升級到C11,預計5.18版之后生效,也就是今年5月。

這個決定很突然,從發起問題到官方聲明,不過才一個星期,要知道說服固執的Linux之父 Linus Torvalds可不是件容易的事。

事情的原因,說起來還有那么一點偶然的因素。

一個bug的連鎖反應

問題的起源是來自上周的一次Linux社區討論。

一位名叫Jakob Koschel的博士生,在研究阻止與內核鏈表primitive相關的預測執行漏洞時,發現了這樣一個問題。

Linux內核廣泛使用由struct list_head定義的雙向鏈表:

structlist_head{
structlist_head*next,*prev;
};

這種結構通常嵌入到其他結構中。通過這種方式,可以使用任何相關的結構類型制作鏈表。

除此之外,內核還提供大量可用于遍歷和操作鏈表的函數和宏。list_for_each_entry()就是其中之一,這是偽裝成一種控制結構的宏。

問題就出在這個宏上。

假設內核包含如下結構:

structfoo{
intfooness;
structlist_headlist;
};

list中的元素可用于創建foo結構的雙向鏈表。

假設有一個叫做 foo_list的結構聲明作為此類鏈表的頭,使用以下代碼可以遍歷此鏈表:

structfoo*iterator;

list_for_each_entry(iterator,&foo_list,list){
do_something_with(iterator);
}
/*Shouldnotuseiteratorhere*/

list參數告訴宏在foo結構中list_head結構的名稱。這個循環將為列表中的每個元素執行一次, 迭代器指向該元素。

由此導致了USB子系統中的一個bug:傳遞給該宏的迭代器在退出宏后還能被使用。

這是一件危險的事情,所以Koschel提交了一個修復補丁,在循環后停止使用迭代器搞定了bug。

說服Linus

但是Linus Torvalds本人并不太喜歡這個補丁,也沒有看到它與預測執行漏洞的關系。在Koschel詳細解釋后,Linus承認這只是一個普通的bug。

然而事情并沒有那么簡單,Linus不久后意識到了真正的根源:

傳遞給鏈表遍歷宏的迭代器,必須在循環本身之外的范圍內聲明。

這種非預測性bug發生的原因是,C89中沒有“在循環中聲明變量”。

像list_for_each_entry()這樣的宏,從根本上總是將最后一個HEAD入口泄漏到循環之外,僅僅是因為我們不能在循環本身中聲明迭代器變量。

如果可以編寫一個可以聲明自己的迭代器列表遍歷宏,那么迭代器在循環之外將不可見,并且不會出現此類問題。

但是,由于內核停留在C89標準上,因此無法在循環中聲明變量。

Linus決定,那咱們還是升級吧,也許是時候轉向C99標準了。

雖然它也有20多年的歷史,但至少比C89新,可以在循環中聲明變量。

既然C89如此陳舊,這么多年還沒做出改變呢?Linus說,那是因為我們在一些古老的gcc編譯器版本中遇到了一些奇怪的問題,不能隨便升級。

但是,現在Linux內核已將gcc的最低要求提升至5.1版,因此過去那些奇怪的bug應該不會有了。

而另一位核心開發者Arnd Bergmann認為,咱們完全可以升級到C11甚至更高版本。但如果升級到C17或C2x,會破壞對gcc-5/6/7的支持,因此升級到C11更容易實現。

最終,Torvalds贊成這個想法:“好的,請提醒我,讓我們在5.18合并窗口的早期嘗試一下。”

接下來遷移到C11可能會導致一些意想不到的bug,但如果一切順利,下一個Linus內核版本將正式轉向C11。

原文標題:Linux之父終于被勸動:用了30年的Linux內核C語言將升級至C11

文章出處:【微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 內核
    +關注

    關注

    3

    文章

    1382

    瀏覽量

    40380
  • Linux
    +關注

    關注

    87

    文章

    11342

    瀏覽量

    210180
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137464

原文標題:Linux之父終于被勸動:用了30年的Linux內核C語言將升級至C11

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    DSP算法大全C語言版本_

    本帖最后由 Stark揚 于 2018-10-19 16:25 編輯 DSP算法大全C語言版本_
    發表于 08-20 17:33

    FatFS升級到0.12c版本

    FatFS升級到0.12c版本
    發表于 03-31 11:03

    請問如何升級SDK的Linux內核RTLinux上呢?

    (t-firefly.com)),支持將SDK的Linux內核升級到RTLinux。(1)RTLinux的源碼是開源的嗎?(2)SDK的內核
    發表于 12-09 16:43

    DSP算法大全C語言版本

    DSP算法大全C語言版本
    發表于 11-01 16:57 ?0次下載

    LED燈閃爍程序【C語言版

    LED燈閃爍程序【C語言版】LED燈閃爍程序【C語言版】LED燈閃爍程序【C語言版
    發表于 12-28 17:40 ?0次下載

    跑馬燈程序【C語言版

    跑馬燈程序【C語言版】跑馬燈程序【C語言版】跑馬燈程序【C語言版】跑馬燈程序【
    發表于 12-29 10:59 ?0次下載

    按鍵移位程序【C語言版

    按鍵移位程序【C語言版】按鍵移位程序【C語言版】按鍵移位程序【C語言版】按鍵移位程序【
    發表于 12-29 11:04 ?0次下載

    LED流水燈程序【C語言版

    LED流水燈程序【C語言版】LED流水燈程序【C語言版】LED流水燈程序【C語言版】LED流水燈
    發表于 12-29 11:05 ?0次下載

    單片機制作繼電器 【C語言版

    單片機制作繼電器 【C語言版】單片機制作繼電器 【C語言版】單片機制作繼電器 【C語言版】單片機
    發表于 12-29 13:53 ?0次下載

    數碼管(靜態顯示)【C語言版

    數碼管(靜態顯示)【C語言版】數碼管(靜態顯示)【C語言版】數碼管(靜態顯示)【C語言版】數碼管
    發表于 12-29 15:27 ?0次下載

    LED點陣顯示數字【C語言版

    LED點陣顯示數字【C語言版】 LED點陣顯示數字【C語言版】 LED點陣顯示數字【C語言版
    發表于 12-29 15:54 ?0次下載

    linux內核C語言的編程風格

    linux 內核C語言的編程風格
    發表于 09-26 14:22 ?0次下載

    TI中DSP算法大全C語言版本

    TI中DSP算法大全C語言版本
    發表于 04-09 17:53 ?0次下載

    Linux內核中常用的C語言技巧有哪些

    Linux內核采用的是GCC編譯器,GCC編譯器除了支持ANSI C,還支持GNU C。在Linux內核
    的頭像 發表于 05-12 14:45 ?643次閱讀

    DSP算法大全C語言版本

    DSP算法大全C語言版本
    發表于 09-13 16:43 ?18次下載
    主站蜘蛛池模板: 久久综合中文字幕无码 | 亚洲aaaa级特黄毛片 | 九九热久久只有精品2 | 在线视频 国产精品 中文字幕 | 扒开美女下面粉嫩粉嫩冒白浆 | 粗壮挺进邻居人妻无码 | 十九禁啊啪射视频在线观看 | 午夜无码国产理论在线 | 99久久国语露脸精品国产 | 胸太大被男同桌吃好爽 | 国产精品亚洲欧美 | thermo脱色摇床安卓下载 | 久久日韩精品无码一区 | 美女诱点第6季 | 久久青草费线频观看国产 | 国产色情短视频在线网站 | 亚洲 视频 在线 国产 精品 | 成年人免费在线视频观看 | 国产精品嫩草影视在线观看 | 最新国产在线视频 | 蜜臀AV久久国产午夜福利软件 | 男人边吃奶边挵进去呻吟漫画 | 天美传媒 免费观看 | 高清不卡伦理电影在线观看 | 妙玉被肉干高H潮文 | 国产蜜臀AV在线一区视频 | 亚洲99精品A片久久久久久 | 中文字幕AV在线一二三区 | 老熟人老女人国产老太 | 777久久人妻少妇嫩草AV蜜桃 | TIMI1TV天美传媒在线观看 | 亚洲AV久久久噜噜噜久久 | 国产亚洲精品视频在线网 | 1973性农场未删减版 | 久久国产精品二区99 | 色老头色老太aaabbb | 全彩黄漫火影忍者纲手无遮挡 | 成人性生交大片免费看金瓶七仙女 | 国产对白精品刺激一区二区 | 午夜国产精品免费观看 | 国产人妻麻豆蜜桃色 |