แƒ›แƒ˜แƒœแƒ”แƒกแƒแƒขแƒแƒก แƒฃแƒœแƒ˜แƒ•แƒ”แƒ แƒกแƒ˜แƒขแƒ”แƒขแƒ˜แƒก แƒ’แƒฃแƒœแƒ“แƒ›แƒ แƒ’แƒแƒ›แƒแƒแƒ•แƒšแƒ˜แƒœแƒ แƒ“แƒ”แƒขแƒแƒšแƒ”แƒ‘แƒ˜ แƒ˜แƒ› แƒ›แƒแƒ•แƒœแƒ” แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ”แƒก.

แƒ‘แƒแƒ“แƒ˜แƒจแƒ˜แƒก แƒ›แƒแƒฎแƒ“แƒ˜แƒก แƒฆแƒ˜แƒ แƒฌแƒ”แƒ แƒ˜แƒšแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ›แƒ˜แƒœแƒ”แƒกแƒแƒขแƒแƒก แƒฃแƒœแƒ˜แƒ•แƒ”แƒ แƒกแƒ˜แƒขแƒ”แƒขแƒ˜แƒก แƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒแƒ แƒ—แƒ แƒฏแƒ’แƒฃแƒคแƒ›แƒ, แƒ แƒแƒ›แƒšแƒ˜แƒก แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒ Linux-แƒ˜แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒจแƒ˜ แƒ“แƒแƒ‘แƒšแƒแƒ™แƒ˜แƒšแƒ˜ แƒ˜แƒงแƒ แƒ’แƒ แƒ”แƒ’ แƒ™แƒ แƒแƒฐ-แƒฐแƒแƒ แƒขแƒ›แƒ”แƒœแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ , แƒ’แƒแƒ›แƒแƒแƒ•แƒšแƒ˜แƒœแƒ”แƒก แƒ“แƒ”แƒขแƒแƒšแƒฃแƒ แƒ˜ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒšแƒ˜ แƒžแƒแƒฉแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ“แƒ แƒ›แƒ˜แƒ›แƒแƒฌแƒ”แƒ แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘. แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ› แƒžแƒแƒขแƒฉแƒ”แƒ‘แƒ—แƒแƒœ.

แƒแƒฆแƒกแƒแƒœแƒ˜แƒจแƒœแƒแƒ•แƒ˜แƒ, แƒ แƒแƒ› แƒงแƒ•แƒ”แƒšแƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒฃแƒ แƒ˜ แƒžแƒแƒขแƒฉแƒ˜ แƒฃแƒแƒ แƒงแƒแƒคแƒ˜แƒšแƒ˜ แƒ˜แƒฅแƒœแƒ แƒจแƒ”แƒ›แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒก แƒ˜แƒœแƒ˜แƒชแƒ˜แƒแƒขแƒ˜แƒ•แƒ˜แƒ—, แƒแƒ แƒช แƒ”แƒ แƒ—แƒ˜ แƒžแƒแƒฉแƒ˜ แƒแƒ  แƒ“แƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ”แƒ‘แƒฃแƒšแƒ. แƒ”แƒก แƒคแƒแƒฅแƒขแƒ˜ แƒชแƒฎแƒแƒ“แƒงแƒแƒคแƒก, แƒ—แƒฃ แƒ แƒแƒขแƒแƒ› แƒ›แƒแƒ˜แƒฅแƒชแƒ แƒ’แƒ แƒ”แƒ’ แƒ™แƒ แƒแƒ-แƒฐแƒแƒ แƒขแƒ›แƒแƒœแƒ˜ แƒแƒกแƒ” แƒ›แƒ™แƒแƒชแƒ แƒแƒ“, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ’แƒแƒฃแƒ แƒ™แƒ•แƒ”แƒ•แƒ”แƒšแƒ˜แƒ, แƒ แƒแƒก แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ“แƒœแƒ”แƒœ แƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒแƒ แƒ”แƒ‘แƒ˜, แƒ—แƒฃ แƒžแƒแƒขแƒฉแƒ”แƒ‘แƒ˜ แƒ“แƒแƒ›แƒขแƒ™แƒ˜แƒชแƒ“แƒ แƒจแƒ”แƒ›แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒšแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ˜แƒ”แƒ . แƒฃแƒ™แƒแƒœแƒ“แƒแƒฎแƒ”แƒ“แƒ•แƒ˜แƒ—, แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒแƒชแƒฎแƒแƒ“แƒ”แƒ‘แƒ“แƒœแƒ”แƒœ, แƒ แƒแƒ› แƒแƒžแƒ˜แƒ แƒ”แƒ‘แƒ“แƒœแƒ”แƒœ แƒจแƒ”แƒแƒขแƒงแƒแƒ‘แƒ˜แƒœแƒแƒœ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒกแƒแƒฎแƒ”แƒ‘ แƒ“แƒ แƒแƒ  แƒ“แƒแƒฃแƒจแƒ•แƒ”แƒ‘แƒ“แƒœแƒ”แƒœ แƒžแƒแƒขแƒฉแƒ”แƒ‘แƒก Git-แƒจแƒ˜ แƒฌแƒแƒกแƒ•แƒšแƒแƒก, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ’แƒแƒฃแƒ แƒ™แƒ•แƒ”แƒ•แƒ”แƒšแƒ˜แƒ แƒ แƒแƒก แƒ’แƒแƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ“แƒœแƒ”แƒœ แƒ˜แƒกแƒ˜แƒœแƒ˜ แƒ แƒ”แƒแƒšแƒฃแƒ แƒแƒ“ แƒ“แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒแƒ“ แƒจแƒแƒ แƒก แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒฌแƒแƒกแƒฃแƒšแƒ˜แƒงแƒ•แƒœแƒ”แƒœ.

แƒกแƒฃแƒš 2020 แƒฌแƒšแƒ˜แƒก แƒแƒ’แƒ•แƒ˜แƒกแƒขแƒแƒจแƒ˜ แƒแƒœแƒแƒœแƒ˜แƒ›แƒฃแƒ แƒ˜ แƒ›แƒ˜แƒกแƒแƒ›แƒแƒ แƒ—แƒ”แƒ‘แƒ˜แƒ“แƒแƒœ [แƒ”แƒš.แƒคแƒแƒกแƒขแƒ˜แƒ— แƒ“แƒแƒชแƒฃแƒšแƒ˜แƒ] ะธ [แƒ”แƒš.แƒคแƒแƒกแƒขแƒ˜แƒ— แƒ“แƒแƒชแƒฃแƒšแƒ˜แƒ] (แƒฌแƒ”แƒ แƒ˜แƒšแƒ˜ แƒฏแƒ”แƒ˜แƒ›แƒก แƒ‘แƒแƒœแƒ“แƒ˜แƒกแƒ’แƒแƒœ) แƒ’แƒแƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ แƒฎแƒฃแƒ—แƒ˜ แƒžแƒแƒขแƒฉแƒ˜: แƒแƒ แƒ˜ แƒกแƒฌแƒแƒ แƒ˜ (1, 2) แƒ“แƒ แƒกแƒแƒ›แƒ˜ แƒคแƒแƒ แƒฃแƒšแƒ˜ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒชแƒ•แƒ”แƒšแƒ˜ (1, 2, 3), แƒ แƒแƒช แƒฅแƒ›แƒœแƒ˜แƒก แƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒก แƒ›แƒแƒฌแƒงแƒ•แƒšแƒแƒ“แƒแƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒžแƒแƒฉแƒ˜ แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒ“แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ 1-4 แƒฎแƒแƒ–แƒก แƒ™แƒแƒ“แƒก. แƒ›แƒชแƒ“แƒแƒ แƒ˜ แƒžแƒแƒฉแƒ”แƒ‘แƒ˜แƒก แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ˜แƒ“แƒ”แƒ แƒ˜แƒงแƒ แƒ˜แƒก, แƒ แƒแƒ› แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒŸแƒแƒœแƒ•แƒ˜แƒก แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒแƒ› แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒจแƒ”แƒฅแƒ›แƒœแƒแƒก แƒแƒ แƒ›แƒแƒ’แƒ˜ แƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒแƒšแƒ˜ แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒ›แƒ“แƒ’แƒแƒ›แƒแƒ แƒ”แƒแƒ‘แƒ. แƒ”แƒ แƒ—แƒ˜ แƒ™แƒ•แƒ˜แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’, แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒ’แƒแƒ”แƒ’แƒ–แƒแƒ•แƒœแƒ แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒก แƒ“แƒ”แƒ•แƒ”แƒšแƒแƒžแƒ”แƒ แƒ”แƒ‘แƒก แƒฌแƒ˜แƒœแƒแƒ“แƒแƒ“แƒ”แƒ‘แƒ˜แƒ—, แƒ’แƒแƒœแƒ”แƒฎแƒ˜แƒšแƒแƒ— แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒฎแƒ”แƒšแƒจแƒ”แƒฌแƒงแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒŸแƒแƒœแƒ•แƒ˜แƒก แƒขแƒ แƒ˜แƒ•แƒ˜แƒแƒšแƒฃแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒกแƒแƒคแƒแƒ แƒฅแƒ•แƒ”แƒจ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒแƒ แƒแƒคแƒ”แƒ แƒ˜ แƒ˜แƒงแƒ แƒœแƒแƒ—แƒฅแƒ•แƒแƒ›แƒ˜ แƒ›แƒแƒ•แƒœแƒ” แƒžแƒแƒขแƒฉแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก แƒฌแƒ˜แƒœแƒ แƒ›แƒชแƒ“แƒ”แƒšแƒแƒ‘แƒ”แƒ‘แƒ–แƒ”.

แƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒ›แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒฃแƒ แƒ›แƒ แƒžแƒแƒขแƒฉแƒ›แƒ แƒ“แƒแƒแƒคแƒ˜แƒฅแƒกแƒ˜แƒ แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒŸแƒแƒœแƒ•แƒ kfree()-แƒ–แƒ” แƒ–แƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ˜แƒ—, แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ™แƒแƒœแƒขแƒ แƒแƒšแƒ˜แƒก แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒแƒ›แƒ“แƒ”, แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒฅแƒ›แƒœแƒ แƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ–แƒแƒœแƒแƒจแƒ˜ แƒฌแƒ•แƒ“แƒแƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ›แƒ˜แƒกแƒ˜ แƒ’แƒแƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ (แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒแƒšแƒ˜). แƒ”แƒก แƒžแƒแƒขแƒฉแƒ˜ แƒฃแƒแƒ แƒงแƒ แƒ“แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ› (Jiri Slaby), แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช แƒ“แƒแƒแƒ“แƒ’แƒ˜แƒœแƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒ“แƒ แƒแƒฆแƒœแƒ˜แƒจแƒœแƒ, แƒ แƒแƒ› แƒ”แƒ แƒ—แƒ˜ แƒฌแƒšแƒ˜แƒก แƒฌแƒ˜แƒœ แƒ•แƒ˜แƒฆแƒแƒชแƒแƒ› แƒฃแƒ™แƒ•แƒ” แƒกแƒชแƒแƒ“แƒ แƒ›แƒกแƒ’แƒแƒ•แƒกแƒ˜ แƒชแƒ•แƒšแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒ แƒ“แƒ แƒ˜แƒก แƒ—แƒแƒ•แƒ“แƒแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒ˜แƒฅแƒœแƒ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒฃแƒฅแƒ›แƒ“แƒ แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ“แƒ’แƒ”แƒœแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’. > p2 = p1[n] = kmalloc_array(64, sizeof(u16), GFP_KERNEL); > - แƒ—แƒฃ (!p2) แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ“แƒ”แƒ‘แƒ -ENOMEM; > + แƒ—แƒฃ (!p2) { > + kfree(p1); > + แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ -ENOMEM; > + }

แƒ›แƒ”แƒแƒ แƒ” แƒžแƒแƒฉแƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒจแƒ”แƒ˜แƒชแƒแƒ•แƒ“แƒ แƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒแƒšแƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก. แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒแƒขแƒฉแƒ˜ แƒแƒ  แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒก แƒ“แƒแƒ›แƒฎแƒ›แƒแƒ แƒ”แƒ› (แƒ“แƒ”แƒœ แƒ™แƒแƒ แƒžแƒ”แƒœแƒขแƒ”แƒ แƒ›แƒ), แƒ แƒแƒ›แƒ”แƒšแƒ›แƒแƒช แƒฃแƒแƒ แƒงแƒ แƒžแƒแƒขแƒฉแƒ˜ list_add_tail-แƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒฎแƒ•แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ•แƒ”แƒ  แƒจแƒ”แƒแƒ›แƒฉแƒœแƒ˜แƒ, แƒ แƒแƒ› "chdev" แƒ›แƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ แƒ’แƒแƒœแƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒšแƒ“แƒ”แƒก put_device แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒแƒจแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒฅแƒ•แƒ”แƒ›แƒแƒ— แƒ–แƒแƒ แƒจแƒ˜. dev_err (&chdev -> dev..). แƒ—แƒฃแƒ›แƒชแƒ, แƒžแƒแƒขแƒฉแƒ˜ แƒแƒ  แƒ˜แƒฅแƒœแƒ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜, แƒ—แƒฃแƒ›แƒชแƒ แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒแƒ‘แƒแƒกแƒ—แƒแƒœ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ˜แƒ–แƒ”แƒ–แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒ. if (ret < 0) { + put_device(&chdev->dev); dev_err(&chdev->dev, DRV_NAME ": kfifo_alloc แƒฉแƒแƒ˜แƒจแƒแƒšแƒ\n"); ret = -ENOMEM; goto err_fifo;

แƒ›แƒ”แƒกแƒแƒ›แƒ” แƒžแƒแƒขแƒฉแƒ˜ แƒแƒกแƒ”แƒ•แƒ” แƒแƒ  แƒ˜แƒฅแƒœแƒ แƒ›แƒ˜แƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒจแƒ”แƒ›แƒœแƒแƒฎแƒ•แƒ”แƒšแƒ˜แƒก แƒ›แƒ˜แƒ”แƒ  (Miquel Raynal) แƒกแƒฎแƒ•แƒ แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒแƒ  แƒ˜แƒงแƒ แƒ“แƒแƒ™แƒแƒ•แƒจแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ“แƒแƒฃแƒชแƒ•แƒ”แƒšแƒแƒ‘แƒแƒกแƒ—แƒแƒœ (แƒแƒ แƒ›แƒแƒ’แƒ˜ แƒ–แƒแƒ แƒ˜ pdev-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒแƒกแƒแƒงแƒ”แƒœแƒ”แƒ‘แƒšแƒแƒ“). if (!window->virt) { printk(KERN_ERR MOD_NAME ": ioremap(%08lx, %08lx) แƒฉแƒแƒ˜แƒจแƒแƒšแƒ\n", window->phys, window->size); + pci_dev_put(pdev); แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒ“แƒ; } ... if (!map) { printk(KERN_ERR MOD_NAME ": kmalloc แƒฉแƒแƒ˜แƒจแƒแƒšแƒ"); + pci_dev_put(pdev); แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒ“แƒ; } memset(map, 0, sizeof(*map)); ... if (mtd_device_register(map->mtd, NULL, 0)) { map_destroy(map->mtd); แƒ แƒฃแƒ™แƒ->แƒ›แƒขแƒ“ = NULL; + pci_dev_put(pdev); แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒ“แƒ; }

แƒกแƒแƒ˜แƒœแƒขแƒ”แƒ แƒ”แƒกแƒแƒ, แƒ แƒแƒ› แƒ—แƒแƒ•แƒ“แƒแƒžแƒ˜แƒ แƒ•แƒ”แƒšแƒแƒ“ แƒ•แƒแƒ แƒแƒฃแƒ“แƒแƒ‘แƒ“แƒœแƒ”แƒœ, แƒ แƒแƒ› 4-แƒ“แƒแƒœ 5-แƒก แƒฐแƒฅแƒแƒœแƒ“แƒ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ›แƒ™แƒ•แƒšแƒ”แƒ•แƒแƒ แƒ”แƒ‘แƒ›แƒ แƒ—แƒแƒ•แƒแƒ“ แƒ“แƒแƒฃแƒจแƒ•แƒ”แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ แƒ“แƒ แƒ”แƒ แƒ—-แƒ”แƒ แƒ— แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒฃแƒ  แƒžแƒแƒฉแƒจแƒ˜, แƒ›แƒแƒ—แƒ˜ แƒแƒ–แƒ แƒ˜แƒ—, แƒกแƒฌแƒแƒ แƒ˜ แƒ’แƒแƒ›แƒแƒกแƒฌแƒแƒ แƒ”แƒ‘แƒ แƒจแƒ”แƒกแƒ—แƒแƒ•แƒแƒ–แƒ”แƒก, แƒ—แƒแƒ•แƒ˜แƒกแƒฃแƒคแƒแƒšแƒ˜ แƒฌแƒแƒ แƒ›แƒแƒฅแƒ›แƒœแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒกแƒแƒšแƒแƒ“แƒœแƒ”แƒšแƒ˜ แƒžแƒ˜แƒ แƒแƒ‘แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”. err = pci_request_mem_regions (pdev, nitrox_driver_name); if (er) { pci_disable_device(pdev); + dev_err(&pdev->dev, โ€žแƒ•แƒ”แƒ  แƒ›แƒแƒฎแƒ”แƒ แƒฎแƒ“แƒ แƒ›แƒ”แƒ› แƒ แƒ”แƒ’แƒ˜แƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ›แƒแƒ—แƒฎแƒแƒ•แƒœแƒ!\nโ€œ); แƒ“แƒแƒ‘แƒ แƒฃแƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ; }

แƒฌแƒงแƒแƒ แƒ: opennet.ru

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ