{"id":3574,"date":"2023-02-01T16:51:03","date_gmt":"2023-02-01T08:51:03","guid":{"rendered":"https:\/\/learn-house.idv.tw\/?p=3574"},"modified":"2023-02-06T11:07:28","modified_gmt":"2023-02-06T03:07:28","slug":"%e6%89%93patch%e8%a3%9c%e4%b8%81%e6%99%82%e7%9a%84%e5%b8%b8%e8%a6%8b%e9%8c%af%e8%aa%a4","status":"publish","type":"post","link":"https:\/\/learn-house.idv.tw\/?p=3574","title":{"rendered":"[\u8f49]\u6253patch(\u88dc\u4e01)\u6642\u7684\u5e38\u898b\u932f\u8aa4"},"content":{"rendered":"\n<p>\u8cc7\u6599\u4f86\u6e90\uff1ahttps:\/\/onestraw.github.io\/linux\/apply-patch-to-linux-kernel\/<\/p>\n\n\n\n<p>\u7576patch\u547d\u4ee4\u61c9\u7528\u4e00\u500b\u88dc\u4e01\u6a94\u6848\u6642\uff0c\u5b83\u6703\u7528\u4e0d\u540c\u7684\u65b9\u6cd5\u9a57\u8b49\u88dc\u4e01\u6a94\u6848\u7684\u5b8c\u6574\u6027\u3002<br>patch\u547d\u4ee4\u505a\u7684\u5169\u500b\u5b8c\u6574\u6027\u6aa2\u67e5\uff1a<br>\u6aa2\u67e5\u6a94\u6848\u662f\u4e0d\u662f\u4e00\u500b\u6709\u6548\u7684\u88dc\u4e01\u6a94\u6848\uff1b<br>\u6aa2\u67e5\u4fee\u6539\u7684bits\u9644\u8fd1\u7684\u7a0b\u5f0f\u78bc\u662f\u5426\u5339\u914d\u88dc\u4e01\u6a94\u6848\u4e2d\u76f8\u61c9\u4f4d\u7f6e\u4e0a\u4e0b\u6587\uff1b<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>\u5982\u679cpatch\u547d\u4ee4\u57f7\u884c\u904e\u7a0b\u4e2d\u9047\u5230\u4e00\u4e9b\u4e0d\u592a\u6b63\u78ba\uff08not \u2018quite right\u2019\uff09\u7684\u554f\u984c\uff0c\u5b83\u6709\u5169\u500b\u9078\u64c7\uff0c\u4e00\u662f\u62d2\u7d55\u4fee\u88dc\u66f4\u65b0\u8b8a\u5316\uff0c\u9000\u51fa\uff1b\u4e8c\u662f\u5617\u8a66\u627e\u5230\u4e00\u500b\u65b9\u6cd5\u5c0d\u88dc\u4e01\u505a\u4e00\u4e9b\u5c0f\u7684\u6539\u52d5\u3002<\/p>\n\n\n\n<p>\u4e00\u500b\u4f8b\u5b50\uff08\u88dc\u4e01\u4e0d\u592a\u6b63\u78ba\uff0cpatch\u547d\u4ee4\u8a66\u5716\u4fee\u5fa9\uff09\uff1a\u4e0a\u4e0b\u6587\u5339\u914d\uff0c\u9700\u8981\u4fee\u6539\u7684\u884c\u5339\u914d\uff0c\u4f46\u662f\u884c\u865f\u4e0d\u5339\u914d\u3002\u9019\u662f\u53ef\u80fd\u767c\u751f\u7684\uff0c\u4f8b\u5982\uff0cpatch\u547d\u4ee4\u5c0d\u6a94\u6848\u505a\u4e00\u4e9b\u8b8a\u52d5\uff0c\u4f46\u662f\u7531\u65bc\u67d0\u4e9b\u539f\u56e0\uff0c\u5728\u6a94\u6848\u958b\u59cb\u8655\u6709\u5e7e\u884c\u9700\u8981\u88ab\u65b0\u589e\u6216\u8005\u522a\u9664\u3002\u5728\u9019\u7a2e\u60c5\u6cc1\u4e0b\uff0c\u4e00\u5207\u770b\u8d77\u4f86\u90fd\u6c92\u554f\u984c\uff0c\u5b83\u53ea\u662f\u5411\u4e0a\u6216\u5411\u4e0b\u79fb\u52d5\u4e00\u4e0b\uff0cpatch\u547d\u4ee4\u901a\u5e38\u6703\u8abf\u6574\u884c\u865f\uff0c\u7136\u5f8c\u4fee\u88dc\u88dc\u4e01\u3002<\/p>\n\n\n\n<p>\u6bcf\u7576patch\u547d\u4ee4\u4f7f\u7528\u5b83\u4e0d\u5f97\u4e0d\u9032\u884c\u7a0d\u5fae\u4fee\u6539\u7684\u88dc\u4e01\u6a94\u6848\u6642\uff0c\u5b83\u5c07\u63d0\u793a\u201d\u88dc\u4e01\u901a\u904e\u2019fuzz\u2019\u88ab\u4f7f\u7528\u201c\u4f86\u544a\u8a34\u4f60\u3002\u4f60\u61c9\u8a72\u8b66\u60d5\u9019\u7a2e\u8b8a\u5316\uff0c\u56e0\u70ba\u5373\u4f7fpatch\u547d\u4ee4\u53ef\u80fd\u8b93\u88dc\u4e01\u6a94\u6848\u6b63\u78ba\uff0c\u5b83\u4e0d\u53ef\u80fd\u7e3d\u4f7f\u88dc\u4e01\u6a94\u6848\u6b63\u78ba\uff0c\u7d50\u679c\u6709\u6642\u53ef\u80fd\u6703\u51fa\u932f\u3002<\/p>\n\n\n\n<p>\u7576patch\u547d\u4ee4\u9047\u5230\u5b83\u4e0d\u80fd\u901a\u904efuzz\u4fee\u88dc\u7684\u8b8a\u5316\u6642\uff0c\u5b83\u5b8c\u5168\u62d2\u7d55\u9019\u500b\u6a94\u6848\uff0c\u4e26\u4e14\u751f\u6210\u4e00\u500b\u64f4\u5c55\u540d\u70ba.rej\u7684\u6a94\u6848(\u4e00\u500breject file)\u3002\u4f60\u80fd\u5920\u5f9e\u9019\u500brej\u6a94\u6848\u627e\u51fa\u54ea\u500bchange\u4e0d\u80fd\u88ab\u4fee\u88dc\uff0c\u6240\u4ee5\u4f60\u80fd\u5920\u624b\u52d5\u4fee\u5fa9\u5b83\u3002<\/p>\n\n\n\n<p>\u5982\u679c\u4f60\u6c92\u6709\u7b2c\u4e09\u65b9\u88dc\u4e01\u4f86\u4fee\u88dc\u4f60\u7684\u6838\u5fc3\u539f\u59cb\u78bc\uff0c\u53ea\u6709\u5f9ekernel.org\u7372\u5f97\u7684\u88dc\u4e01\uff0c\u4ee5\u6b63\u78ba\u7684\u9806\u5e8f\u6253\u88dc\u4e01\uff0c\u4e0d\u5c0d\u539f\u59cb\u6a94\u4f5c\u51fa\u4fee\u6539(\u8b6f\u8005\u8a3b\uff1a\u61c9\u8a72\u662f\u6307\u88dc\u4e01\u539f\u59cb\u6a94\uff0c\u9019\u88e1\u8981\u8aaa\u660e\u7684\u610f\u601d\u662f\uff0c\u4f60\u4f7f\u7528\u5b8c\u6574\u7684kernel.org\u4e0a\u7684\u88dc\u4e01\u6a94\u6848\uff0c\u4f7f\u7528patch\u547d\u4ee4\u57f7\u884c\u57fa\u672c\u4e0d\u6703\u51fa\u554f\u984c)\uff0c\u90a3\u9ebc\u4f60\u61c9\u8a72\u770b\u4e0d\u5230\u4f86\u81eapatch\u547d\u4ee4\u7684fuzz\u6216\u8005reject\u6d88\u606f\u3002\u4f46\u662f\u5982\u679c\u4f60\u770b\u5230\u4e86fuzz\u6216\u8005reject\u6d88\u606f\uff0c\u90a3\u9ebc\u9019\u53ef\u80fd\u662f\u4e00\u500b\u9ad8\u98a8\u96aa\u72c0\u6cc1\uff1a\u4f60\u7684\u672c\u5730source tree\u6216\u8005\u88dc\u4e01\u6a94\u6848\u640d\u58de\u4e86\u3002\u5728\u9019\u7a2e\u60c5\u6cc1\u4e0b\uff0c\u4f60\u61c9\u8a72\u5617\u8a66\u91cd\u65b0\u4e0b\u8f09\u88dc\u4e01\uff0c\u5982\u679c\u554f\u984c\u9084\u6c92\u6709\u89e3\u6c7a\uff0c\u5efa\u8b70\u4f60\u5f9ekernel.org\u4e0b\u8f09\u4e00\u500b\u5168\u65b0\u7684source tree(\u8b6f\u8005\u8a3b\uff1a\u61c9\u8a72\u662f\u5b8c\u6574\u7684\u6838\u5fc3\u539f\u59cb\u78bc\uff0c\u56e0\u70ba\u9019\u500b\u554f\u984c\u53ef\u80fd\u8aaa\u660e\u4f60\u672c\u5730\u6838\u5fc3\u7a0b\u5f0f\u78bc\u88ab\u60e1\u610f\u7be1\u6539\u4e86).<\/p>\n\n\n\n<p>\u8b93\u6211\u5011\u770b\u4e00\u4e0bpatch\u547d\u4ee4\u53ef\u80fd\u7522\u751f\u7684\u5176\u5b83\u8cc7\u8a0a\u3002<\/p>\n\n\n\n<p>\u5982\u679cpatch\u547d\u4ee4\u505c\u6b62\uff0c\u51fa\u73fe\u201dFile to patch:\u201d\u63d0\u793a\uff0c\u8aaa\u660epatch\u547d\u4ee4\u6c92\u6709\u627e\u5230\u88dc\u4e01\u6a94\u6848\u3002\u4f60\u5f88\u53ef\u80fd\u5fd8\u8a18\u4e86\u6307\u5b9a -p1\u9078\u9805\uff0c\u6216\u8005\u4f60\u7684\u7576\u524d\u5de5\u4f5c\u76ee\u9304\u4e0d\u5c0d\u3002\u5176\u5b83\u60c5\u6cc1\uff0c\u88dc\u4e01\u6a94\u6848\u9700\u8981 -p0\u9078\u9805\u800c\u4e0d\u662f-p1\u9078\u9805(\u5982\u679c\u662f\u9019\u7a2e\u60c5\u6cc1\uff0c\u95b1\u8b80\u88dc\u4e01\u6a94\u6848\u5c31\u53ef\u4ee5\u767c\u73fe\uff0c\u5982\u679c\u662f\u7684\u8a71\uff0c\u9019\u662f\u7531\u5beb\u88dc\u4e01\u7684\u4eba\u72af\u7684\u932f\u8aa4\uff0c\u9019\u4e0d\u7b97\u56b4\u91cd)\u3002<\/p>\n\n\n\n<p>\u5982\u679c\u986f\u793a\u201dHunk #2 succeeded at 1887 with fuzz 2 (offset 7 lines).\u201d\u6216\u8005\u985e\u4f3c\u9019\u500b\u8cc7\u8a0a\u7684\uff0c\u9019\u8aaa\u660epatch\u547d\u4ee4\u4e0d\u5f97\u4e0d\u8abf\u6574change\u7684\u4f4d\u7f6e\uff08\u4e0a\u9762\u9019\u500b\u4f8b\u5b50\u4e2d\uff0c\u5b83\u9700\u8981\u79fb\u52d57\u884c\uff09\u3002\u7531\u65bc\u88dc\u4e01\u6a94\u6848\u548c\u671f\u671b\u7684\u6a94\u6848\u4e0d\u540c\uff0c\u7d50\u679c\u6a94\u6848\u53ef\u80fd\u662f\u4e5f\u53ef\u80fd\u4e0d\u662f\u6b63\u78ba\u7684\u3002\u5982\u679c\u8a66\u5716\u5c07\u4e00\u500b\u6838\u5fc3\u7248\u672c\u7684\u88dc\u4e01\u61c9\u7528\u5230\u53e6\u4e00\u500b\u4e0d\u540c\u7248\u672c\u7684\u6838\u5fc3\u4e0a\uff0c\u7d93\u5e38\u6703\u51fa\u73fe\u9019\u7a2e\u63d0\u793a\u6d88\u606f\u3002<\/p>\n\n\n\n<p>\u5982\u679c\u986f\u793a\u201dHunk #3 FAILED at 2387.\u201d\uff0c\u8aaa\u660e\u9019\u500b\u88dc\u4e01\u6a94\u6848\u4e0d\u80fd\u5920\u6b63\u78ba\u4fee\u88dc\uff0cpatch\u547d\u4ee4\u7528fuzz\u65b9\u6cd5\u4e5f\u4e0d\u80fd\u6b63\u78ba\u57f7\u884c\u3002\u9019\u5c07\u6703\u7522\u751f\u4e00\u500b.rej\u6a94\u6848\uff0c\u8a72\u6a94\u6848\u5305\u542b\u5c0e\u81f4patch\u547d\u4ee4\u5931\u6557\u7684change\uff0c\u9084\u6703\u7522\u751f\u4e00\u500b.orig\u6a94\u6848\uff0c\u8a72\u6a94\u6848\u5305\u542b\u4e0d\u80fd\u6539\u8b8a\u7684\u539f\u59cb\u5167\u5bb9\u3002<\/p>\n\n\n\n<p>\u5982\u679c\u986f\u793a\u201dReversed (or previously applied) patch detected! Assume -R? [n]\u201d\uff0c\u8aaa\u660epatch\u547d\u4ee4\u6aa2\u6e2c\u5230\u88dc\u4e01\u6a94\u6848\u4e2d\u7684change\u5df2\u7d93\u4fee\u88dc\u4e86\u6838\u5fc3\u3002 \u5982\u679c\u4f60\u4e4b\u524d\u78ba\u5be6\u6253\u904e\u8a72\u88dc\u4e01\uff0c\u4f60\u53ea\u662f\u8aa4\u64cd\u4f5c\uff0c\u90a3\u9ebc\u8f38\u5165[n]o\u4f86\u4e2d\u6b62patch\u547d\u4ee4\u3002\u5982\u679c\u4f60\u4e4b\u524d\u6253\u904e\u8a72\u88dc\u4e01\uff0c\u73fe\u5728\u60f3\u64a4\u92b7\u5b83\uff0c\u537b\u5fd8\u8a18\u4e86\u6307\u5b9a-R\u9078\u9805\uff0c\u90a3\u9ebc\u8f38\u51fa[y]es\u4f86\u64a4\u92b7\u88dc\u4e01\u3002 \u5982\u679c\u88dc\u4e01\u7684\u4f5c\u8005\u5728\u5efa\u7acb\u88dc\u4e01\u6642reversed the source \u548c\u76ee\u6a19\u76ee\u9304\uff0c\u9019\u4e5f\u6703\u767c\u751f\uff0c\u5728\u9019\u7a2e\u60c5\u6cc1\u4e0b\uff0c\u6062\u5fa9\/\u64a4\u92b7\u88dc\u4e01\u5c07\u5728\u5be6\u969b\u4e2d\u61c9\u7528\u5b83\u3002<\/p>\n\n\n\n<p>\u5982\u679c\u986f\u793a\u985e\u4f3c\u201dpatch:&nbsp;<em>**<\/em>&nbsp;unexpected end of file in patch\u201d \u6216\u8005 \u201cpatch unexpectedly ends in middle of line\u201d\u7684\u6d88\u606f\uff0c\u8868\u793apatch\u547d\u4ee4\u4e0d\u80fd\u6b63\u78ba\u89e3\u6790\u4f60\u8f38\u5165\u7684\u88dc\u4e01\u6a94\u6848\u3002\u6216\u8a31\u662f\u4f60\u4e0b\u8f09\u7684\u6a94\u6848\u640d\u58de\u4e86\uff0c\u4f60\u8a66\u5716\u8f38\u5165\u4e00\u500b\u58d3\u7e2e\u7684\u88dc\u4e01\u6a94\u6848\uff0c\u6216\u8a31\u662f\u4f60\u4f7f\u7528\u7684\u88dc\u4e01\u6a94\u6848\u7531\u65bc\u90f5\u4ef6\u5ba2\u6236\u7aef\/\u90f5\u4ef6\u50b3\u8f38\u4ee3\u7406\u5728\u50b3\u8f38\u904e\u7a0b\u4e2d\u640d\u58de\u4e86\uff0c\u4f8b\u5982\uff0c\u901a\u904e\u5206\u9694\u9577\u884c\u70ba\u5169\u884c\u3002\u5f80\u5f80\u9019\u4e9b\u8b66\u544a\u53ef\u4ee5\u5f88\u5bb9\u6613\u7684\u4fee\u5fa9\uff0c\u901a\u904e\u9023\u63a5\u88ab\u5206\u9694\u7684\u5169\u884c\u3002<\/p>\n\n\n\n<p>\u6b63\u5982\u6211\u4e0a\u9762\u5df2\u7d93\u63d0\u5230\u7684\uff0c\u5982\u679c\u5c07\u5f9ekernel.org\u7372\u53d6\u7684\u88dc\u4e01\u61c9\u7528\u5230\u6b63\u78ba\u7684\u672a\u7d93\u4fee\u6539\u7684\u539f\u59cb\u78bc\u6a39\u4e0a\uff0c\u5c07\u4e0d\u6703\u51fa\u73fe\u9019\u4e9b\u932f\u8aa4\u3002\u6240\u4ee5\uff0c\u5982\u679c\u4f60\u4f7f\u7528kernel.org\u4e0a\u7684\u88dc\u4e01\uff0c\u537b\u9084\u662f\u9047\u5230\u9019\u4e9b\u932f\u8aa4\uff0c\u90a3\u9ebc\u61c9\u8a72\u662f\u4f60\u7684\u88dc\u4e01\u6a94\u6848\u6216\u8005\u4f60\u7684\u6838\u5fc3\u539f\u59cb\u78bc\u6a39\u640d\u58de\u4e86\uff0c\u5efa\u8b70\u4f60\u91cd\u65b0\u4e0b\u8f09\u4e00\u500b\u5b8c\u6574\u7684\u6838\u5fc3\u6a39\u548c\u4f60\u60f3\u4f7f\u7528\u7684\u88dc\u4e01\u6a94\u6848\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u8cc7\u6599\u4f86\u6e90\uff1ahttps:\/\/onestraw.github.io\/linux\/apply-patch-to-li<span class=\"post-excerpt-end\">&hellip;<\/span><\/p>\n<p class=\"more-link\"><a href=\"https:\/\/learn-house.idv.tw\/?p=3574\" class=\"themebutton\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-3574","post","type-post","status-publish","format-standard","hentry","category-12"],"_links":{"self":[{"href":"https:\/\/learn-house.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/3574","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/learn-house.idv.tw\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/learn-house.idv.tw\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/learn-house.idv.tw\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/learn-house.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3574"}],"version-history":[{"count":0,"href":"https:\/\/learn-house.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/3574\/revisions"}],"wp:attachment":[{"href":"https:\/\/learn-house.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3574"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/learn-house.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3574"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/learn-house.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3574"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}