इस पेज पर android-mainline
पर मिली अहम समस्याओं और गड़बड़ियों को ठीक करने के बारे में बताया गया है. ये पार्टनर के लिए अहम हो सकती हैं.
1 नवंबर, 2024
- Linux 6.12-rc4 के लिए लॉन्चिंग
- खास जानकारी:
CONFIG_OF_DYNAMIC
की वजह से, गड़बड़ी वाले ड्राइवर के लिए परफ़ॉर्मेंस में काफ़ी गिरावट आ सकती है. - जानकारी: Linux
6.12-rc1
कोandroid-mainline
में मर्ज करते समय, हमें पता चला कि ट्री के बाहर के ड्राइवर लोड नहीं हो पा रहे हैं. ड्राइवर की गड़बड़ियों की जानकारी देने वाले बदलाव की पहचान, कमिट274aff8711b2 ("clk: Add KUnit tests for clks registered with struct clk_parent_data")
के तौर पर की गई है. हमने aosp/3287735 में इसे कुछ समय के लिए पहले जैसा कर दिया है. बदलाव करने पर,CONFIG_OF_OVERLAY
को चुना जाता है, जोCONFIG_OF_DYNAMIC
को चुनता है.!OF_DYNAMIC
के साथ,of_node_get()
औरof_node_put()
पर रेफ़रंस की गिनती करने की सुविधा बंद हो जाती है, क्योंकि इन्हेंnoops
के तौर पर लागू किया जाता है.OF_DYNAMIC
को फिर से चालू करने पर,struct device_node
के लिए रेफ़रंस की गिनती गलत तरीके से लागू करने वाले ड्राइवर में समस्याएं दिखती हैं. इससे कई तरह की गड़बड़ियां होती हैं. जैसे, मेमोरी में गड़बड़ी, फ़्री होने के बाद इस्तेमाल करना, और मेमोरी लीक. - OF पार्सिंग से जुड़े एपीआई के सभी इस्तेमाल की जांच की जानी चाहिए. यह सूची आंशिक है, लेकिन इसमें ऐसे मामले शामिल हैं जिन पर हम नज़र रख रहे हैं:
- मुफ़्त में आज़माने की अवधि खत्म होने के बाद इस्तेमाल करें (यूएएफ़):
- एक ही
device_node
आर्ग्युमेंट का फिर से इस्तेमाल करना: ये फ़ंक्शन, दिए गए नोड परof_node_put()
को कॉल करते हैं. इन्हें कॉल करने से पहले,of_node_get()
जोड़ना पड़ सकता है. उदाहरण के लिए, एक ही नोड को आर्ग्युमेंट के तौर पर बार-बार कॉल करते समय:of_find_compatible_node()
of_find_node_by_name()
of_find_node_by_path()
of_find_node_by_type()
of_get_next_cpu_node()
of_get_next_parent()
of_get_next_child()
of_get_next_available_child()
of_get_next_reserved_child()
of_find_node_with_property()
of_find_matching_node_and_match()
- कुछ लूप से किसी भी तरह से बाहर निकलने के बाद
device_node
का इस्तेमाल करना:for_each_available_child_of_node_scoped()
for_each_available_child_of_node()
for_each_child_of_node_scoped()
for_each_child_of_node()
device_node
के आस-पासchar *
प्रॉपर्टी के लिए सीधे पॉइंटर रखना. उदाहरण के लिए, इनका इस्तेमाल करना:const char *foo = struct device_node::name
of_property_read_string()
of_property_read_string_array()
of_property_read_string_index()
of_get_property()
- एक ही
- मेमोरी लीक:
device_node
पाएं और उसे रद्द न करें (of_node_put()
). इन से मिले नोड को कुछ समय के लिए खाली करना ज़रूरी है:of_find_compatible_node()
of_find_node_by_name()
of_find_node_by_path()
of_find_node_by_type()
of_find_node_by_phandle()
of_parse_phandle()
of_find_node_opts_by_path()
of_get_next_cpu_node()
of_get_compatible_child()
of_get_child_by_name()
of_get_parent()
of_get_next_parent()
of_get_next_child()
of_get_next_available_child()
of_get_next_reserved_child()
of_find_node_with_property()
of_find_matching_node_and_match()
- लूप के किसी Iteration से
device_node
को सेव करना. अगर आप वापस लौट रहे हैं या इसे यहां से उल्लंघन कर रहे हैं, तो आपको कुछ हिस्से में बाकी फ़ाइलों को छोड़ना होगा:for_each_available_child_of_node()
for_each_child_of_node()
for_each_node_by_type()
for_each_compatible_node()
of_for_each_phandle()
- मुफ़्त में आज़माने की अवधि खत्म होने के बाद इस्तेमाल करें (यूएएफ़):
- Linux
6.12-rc4
को लैंडिंग के समय, बताए गए बदलाव पहले जैसे कर दिए गए थे (aosp/3315251 देखें)CONFIG_OF_DYNAMIC
फिर से चालू हो रहा है और संभावित रूप से खराब ड्राइवर सामने आ सकते हैं.
- खास जानकारी: