• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    面向硬件瞬時(shí)故障的Linux設(shè)備驅(qū)動(dòng)敏感代碼的自動(dòng)分析與檢測(cè)

    2016-01-24 07:44:30馬培翟高壽
    軟件 2015年12期

    馬培++翟高壽

    摘要:操作系統(tǒng)是整個(gè)計(jì)算機(jī)系統(tǒng)的核心,而設(shè)備驅(qū)動(dòng)程序則占據(jù)操作系統(tǒng)內(nèi)核的相當(dāng)份額并對(duì)系統(tǒng)安全產(chǎn)生舉足輕重的作用。作為主機(jī)與外圍設(shè)備之間通信控制的橋梁,設(shè)備驅(qū)動(dòng)無疑會(huì)受到硬件設(shè)備故障的直接影響。在Linux系統(tǒng)中,驅(qū)動(dòng)程序問題是造成系統(tǒng)安全的主要根源之一。特別地,由于設(shè)備驅(qū)動(dòng)代碼的編寫往往沒有考慮到硬件設(shè)備的瞬時(shí)故障,所以當(dāng)硬件設(shè)備發(fā)生瞬時(shí)差錯(cuò)的時(shí)候,就有可能導(dǎo)致相應(yīng)驅(qū)動(dòng)程序甚至整個(gè)系統(tǒng)出現(xiàn)不可預(yù)料的后果。本文主要討論了面向硬件瞬時(shí)故障的驅(qū)動(dòng)程序敏感代碼的自動(dòng)分析方法,并設(shè)計(jì)和實(shí)現(xiàn)了對(duì)應(yīng)的代碼分析工具原型。運(yùn)用該工具原型對(duì)Linux內(nèi)核設(shè)備驅(qū)動(dòng)源碼的實(shí)驗(yàn)分析結(jié)果表明,該方法和原型可以發(fā)現(xiàn)設(shè)備驅(qū)動(dòng)中潛在的受到硬件設(shè)備瞬時(shí)故障影響的敏感代碼。據(jù)此,采用適當(dāng)方法對(duì)敏感代碼進(jìn)行修復(fù)完善,將可以實(shí)現(xiàn)設(shè)備驅(qū)動(dòng)程序的安全加固。

    關(guān)鍵詞:設(shè)備驅(qū)動(dòng)程序;硬件瞬時(shí)故障;敏感代碼;Linux;自動(dòng)分析

    中圖分類號(hào):TP311

    文獻(xiàn)標(biāo)識(shí)碼:A

    DOI:10.3969/j.issn.1003-6970.2015.12.003

    本文著錄格式:馬培,翟高壽.面向硬件瞬時(shí)故障的Linux設(shè)備驅(qū)動(dòng)敏感代碼的自動(dòng)分析與檢測(cè)[J].軟件,2015,36(12):09-15

    0 引言

    可靠性對(duì)于操作系統(tǒng)來說一直是最重要的問題,由于計(jì)算機(jī)已經(jīng)深深嵌入到我們的生活中,并且故障一旦發(fā)生我們很難有機(jī)會(huì)能彌補(bǔ),因而我們需要計(jì)算機(jī)更高的可靠性來保證系統(tǒng)運(yùn)行的正確性。

    應(yīng)用程序是通過設(shè)備驅(qū)動(dòng)程序喚起設(shè)備,而設(shè)備和驅(qū)動(dòng)程序的交互是通過硬件指定的一個(gè)特定的協(xié)議,如果硬件設(shè)備遵從這些特定的協(xié)議,那么驅(qū)動(dòng)程序就會(huì)完全的信任它并接受來自它的任何輸入。不幸的是設(shè)備常常不能按照這樣的規(guī)章行事,某些故障是由于磨損或者電磁干擾引起的,導(dǎo)致往驅(qū)動(dòng)輸入的數(shù)據(jù)發(fā)生改變,由于驅(qū)動(dòng)在Linux內(nèi)核中,就可能導(dǎo)致不可預(yù)料的系統(tǒng)故障。我們將驅(qū)動(dòng)程序中由于硬件的瞬時(shí)故障而可能導(dǎo)致驅(qū)動(dòng)出現(xiàn)問題的代碼稱為敏感代碼。微軟windows服務(wù)器的研究證明:(l)設(shè)備故障是引起系統(tǒng)崩潰的主要原因;(2)短暫性的硬件設(shè)備故障是正常的現(xiàn)象;(3)驅(qū)動(dòng)程序容忍硬件設(shè)備故障能提高系統(tǒng)的可靠性。沒有解決這些問題,操作系統(tǒng)的可靠性就會(huì)由于設(shè)備及驅(qū)動(dòng)的可靠性而被限制。

    針對(duì)設(shè)備瞬時(shí)故障如何自動(dòng)分析和檢測(cè)驅(qū)動(dòng)程序的敏感代碼,我們主要是通過驗(yàn)證來自設(shè)備的所有輸入,并且報(bào)告所有存在的故障以使得管理員能夠主動(dòng)管理硬件錯(cuò)誤。本文提出通過代碼分析工具分析設(shè)備驅(qū)動(dòng)程序代碼,找到驅(qū)動(dòng)中使用來自設(shè)備輸入的位置,即敏感代碼在驅(qū)動(dòng)程序中的位置。如果驅(qū)動(dòng)程序使用了沒有通過正確檢查的設(shè)備輸入數(shù)據(jù)并且該數(shù)據(jù)不正確,我們就通過修改驅(qū)動(dòng)程序以插入驗(yàn)證代碼,實(shí)現(xiàn)驅(qū)動(dòng)容忍硬件瞬時(shí)故障的目的。我們實(shí)現(xiàn)了當(dāng)瞬時(shí)故障發(fā)生并導(dǎo)致驅(qū)動(dòng)出現(xiàn)問題的時(shí)候,使用系統(tǒng)日志的方式報(bào)告相關(guān)的硬件故障。為了修復(fù)相應(yīng)的硬件故障所造成的驅(qū)動(dòng)甚至內(nèi)核錯(cuò)誤,我們引入了一個(gè)通用的恢復(fù)服務(wù),這個(gè)服務(wù)可以重置設(shè)備。我們依賴于使用隱匿驅(qū)動(dòng)程序來提供這種修復(fù)的服務(wù),從而能夠針對(duì)設(shè)備故障實(shí)現(xiàn)驅(qū)動(dòng)的恢復(fù)機(jī)制。

    本文提出面向硬件瞬時(shí)故障的驅(qū)動(dòng)程序敏感代碼的自動(dòng)分析方法,實(shí)現(xiàn)了自動(dòng)分析工具原型。通過執(zhí)行自動(dòng)分析工具表明,該方法可以準(zhǔn)確檢測(cè)到驅(qū)動(dòng)程序中的敏感代碼,并實(shí)現(xiàn)驅(qū)動(dòng)程序的加固,提高驅(qū)動(dòng)及系統(tǒng)的可靠性。

    1 硬件瞬時(shí)故障及敏感代碼

    1.1 硬件瞬時(shí)故障

    現(xiàn)代的CMOS設(shè)備傾向于發(fā)生內(nèi)部錯(cuò)誤,并且在當(dāng)晶體管萎縮的情況下這種錯(cuò)誤會(huì)更加嚴(yán)重。以前的研究表明某些設(shè)備會(huì)發(fā)生短暫的比特位反轉(zhuǎn)錯(cuò)誤,即單個(gè)比特位從1變?yōu)?或從0變成1;永久性的門級(jí)故障,即在一段較長(zhǎng)的時(shí)間內(nèi)某一比特保持固定值;橋接故障,即相鄰比特對(duì)發(fā)生電力干擾從而在比特間產(chǎn)生邏輯與門、邏輯或門。環(huán)境條件的改變?nèi)珉姶鸥蓴_或者輻射都能導(dǎo)致產(chǎn)生短暫性故障。設(shè)備的磨損和老化也可能導(dǎo)致門級(jí)故障或者橋接性的錯(cuò)誤。

    設(shè)備驅(qū)動(dòng)程序訪問來自設(shè)備的輸入的時(shí)候會(huì)偵查故障,如PCI驅(qū)動(dòng),通過內(nèi)存或I/O端口執(zhí)行I/O操作,設(shè)備驅(qū)動(dòng)可能會(huì)在I/O中讀取到設(shè)備中的錯(cuò)誤的值;如USB驅(qū)動(dòng),使用請(qǐng)求/響應(yīng)協(xié)議,設(shè)備故障可能導(dǎo)致響應(yīng)包中包含錯(cuò)誤的數(shù)據(jù)。很多硬件故障表現(xiàn)為在設(shè)備寄存器中存放了被篡改的值,如設(shè)備控制器內(nèi)部的單比特反轉(zhuǎn)可能傳播到某些內(nèi)部寄存器,而設(shè)備驅(qū)動(dòng)程序讀取到這個(gè)內(nèi)部寄存器中被篡改的值的時(shí)候就可能會(huì)發(fā)生故障。門級(jí)故障也可能存在上述同樣的問題。當(dāng)硬件設(shè)備不能在規(guī)定的時(shí)間內(nèi)響應(yīng),在設(shè)備固件中的錯(cuò)誤表現(xiàn)就可能會(huì)是不正確的輸出數(shù)據(jù)或超時(shí)故障。

    1.2 敏感代碼

    敏感代碼即驅(qū)動(dòng)程序中由于硬件的瞬時(shí)故障導(dǎo)致驅(qū)動(dòng)出現(xiàn)問題的代碼。各類硬件紛繁復(fù)雜質(zhì)量層次不齊,驅(qū)動(dòng)可能由于物理設(shè)備出現(xiàn)偶發(fā)性的瞬時(shí)故障而影響驅(qū)動(dòng)及系統(tǒng)的安全可靠性。驅(qū)動(dòng)對(duì)外設(shè)的訪問主要是通過I/O端口,I/O端口即外設(shè)寄存器,是接口電路中能被CPU直接訪問的寄存器地址。幾乎每一種外設(shè)都是通過讀寫設(shè)備上的寄存器來進(jìn)行工作的。Linux下訪問I/O端口的方式主要有兩種I/O映射方式和內(nèi)存映射方式。I/O映射方式是直接使用I/O端口操作函數(shù),即使用inb(),outb()等函數(shù)進(jìn)行端口訪問,內(nèi)存訪問方式是將I/O端口映射為內(nèi)存進(jìn)行訪問,即使用I/O內(nèi)存的函數(shù)進(jìn)行端口訪問。當(dāng)發(fā)生硬件瞬時(shí)故障的時(shí)候可能會(huì)篡改I/O端口操作函數(shù)、I/O內(nèi)存函數(shù)的返回值,導(dǎo)致驅(qū)動(dòng)從I/O端口讀取到的數(shù)據(jù)是不正確的值。當(dāng)該數(shù)據(jù)被應(yīng)用到驅(qū)動(dòng)代碼中不恰當(dāng)?shù)奈恢萌缱鳛檠h(huán)條件或數(shù)組下標(biāo)時(shí),就可能導(dǎo)致驅(qū)動(dòng)出現(xiàn)無限輪詢或數(shù)組越界錯(cuò)誤,從而影響驅(qū)動(dòng)運(yùn)行的正確性,降低驅(qū)動(dòng)及系統(tǒng)的可靠性。因此,我們將驅(qū)動(dòng)代碼中使用I/O端口操作函數(shù),并將這些I/O端口函數(shù)直接或間接應(yīng)用在循環(huán)條件或數(shù)組下標(biāo)中的代碼稱之為敏感代碼。

    2 設(shè)備驅(qū)動(dòng)敏感代碼自動(dòng)分析方法的設(shè)計(jì)

    大部分操作系統(tǒng)供應(yīng)商向設(shè)備驅(qū)動(dòng)程序編寫者提出建議:如何固化驅(qū)動(dòng)程序能夠容忍硬件故障,(1)驗(yàn)證:我們認(rèn)為從設(shè)備中獲取的所有的輸入都是可疑的,都需要進(jìn)行驗(yàn)證才能確保數(shù)據(jù)在正確的范圍內(nèi);(2)超時(shí):當(dāng)設(shè)備一直沒有響應(yīng)的時(shí)候,對(duì)于所有與設(shè)備的交互都應(yīng)當(dāng)有響應(yīng)的措施來應(yīng)對(duì)超時(shí)從而防止永久性的等待;(3)報(bào)告:所有可疑的行為或者操作都需要報(bào)告給操作系統(tǒng)服務(wù)器,從而方便對(duì)硬件故障的集中偵查和管理;(4)恢復(fù):設(shè)備驅(qū)動(dòng)程序應(yīng)當(dāng)能從任何的設(shè)備故障中恢復(fù),如果需要可以通過重置設(shè)備來達(dá)到恢復(fù)的目的。

    我們的目標(biāo)主要就是能自動(dòng)完成上述建議??傮w設(shè)計(jì)方案如圖1所示,首先,我們?cè)噲D使得驅(qū)動(dòng)程序能夠容忍設(shè)備故障并能夠從設(shè)備故障中恢復(fù),從而防止了設(shè)備故障導(dǎo)致系統(tǒng)崩潰。我們主要針對(duì)的是短暫性的故障,即當(dāng)重置設(shè)備后這樣的故障不會(huì)再重復(fù)發(fā)生。其次,我們讓設(shè)備驅(qū)動(dòng)程序報(bào)告設(shè)備故障,使得系統(tǒng)管理員能夠知道存在的短暫性故障并及時(shí)的處理故障設(shè)備。自動(dòng)分析方法設(shè)計(jì)的過程主要是(l)分析驅(qū)動(dòng)與設(shè)備交互的原理從而確定I/O端口及I/O內(nèi)存操作函數(shù),(2)分析驅(qū)動(dòng)程序中直接或間接使用I/O端口操作函數(shù)的位置即找到所有受I/O影響的變量,(3)標(biāo)注敏感代碼即被修改的變量被使用在循環(huán)條件或數(shù)組下表的位置。由于短暫性的硬件故障是偶發(fā)性的,我們需要用到簡(jiǎn)單的故障注入工具進(jìn)行模擬硬件故障,從而達(dá)到驗(yàn)證實(shí)驗(yàn)的目的。

    2.1 110端口及I/O內(nèi)存操作函數(shù)

    Linux操作系統(tǒng)內(nèi)核主要有主內(nèi)核、內(nèi)存管理、網(wǎng)絡(luò)、文件系統(tǒng)及其設(shè)備驅(qū)動(dòng)等目錄。其中驅(qū)動(dòng)設(shè)備通常不會(huì)完全集成到內(nèi)核代碼中,且對(duì)應(yīng)于設(shè)備的驅(qū)動(dòng)程序也通常是由第三方編寫實(shí)現(xiàn),因此容易在與內(nèi)核模塊通信、系統(tǒng)調(diào)用等方面產(chǎn)生錯(cuò)誤,從而波及到系統(tǒng)的其他內(nèi)核模塊導(dǎo)致系統(tǒng)崩潰。實(shí)踐證明,在導(dǎo)致系統(tǒng)故障的代碼中,有50%以上的錯(cuò)誤是由設(shè)備驅(qū)動(dòng)程序引起的。

    在Linux系統(tǒng)中,主機(jī)與外界交換信息是通過輸入輸出設(shè)備進(jìn)行的,輸入輸出設(shè)備與系統(tǒng)的交互式是使用驅(qū)動(dòng)這個(gè)中間媒介,驅(qū)動(dòng)通過訪問I/O端口實(shí)現(xiàn)與硬件設(shè)備的通信。由于CPU對(duì)外設(shè)端口物理地址的編址有兩種方式:I/O映射方式和內(nèi)存映射方式,所以驅(qū)動(dòng)訪問I/O端口也有兩種途徑:其一為I/O映射方式即是直接使用I/O端口操作函數(shù);其二是內(nèi)存映射方式即將I/O端口映射為內(nèi)存進(jìn)行訪問。這兩種方式都要使用相應(yīng)的I/O端口及I/O內(nèi)存操作函數(shù)對(duì)數(shù)據(jù)進(jìn)行讀寫。I/O端口操作函數(shù)主要包括inb(),inb_p(),insb(),outb(),outb_p()等。I/O內(nèi)存操作函數(shù)主要有ioread8(),ioport_map(),readb(),readl()等。當(dāng)硬件發(fā)生瞬時(shí)故障,可能影響這些函數(shù)的返回值,使得驅(qū)動(dòng)讀取到錯(cuò)誤的值而使驅(qū)動(dòng)出現(xiàn)運(yùn)行錯(cuò)誤,影響驅(qū)動(dòng)甚至系統(tǒng)的可靠性。

    2.2 自動(dòng)分析方法

    設(shè)備驅(qū)動(dòng)程序依賴于硬件的正確性以確保自身的正確性,我們通過對(duì)驅(qū)動(dòng)程序代碼進(jìn)行靜態(tài)分析找到驅(qū)動(dòng)程序中使用源于設(shè)備的數(shù)據(jù)的位置,并且驗(yàn)證數(shù)據(jù)的有效性,防止在執(zhí)行代碼之前讀取到非有效的數(shù)據(jù)而導(dǎo)致不可預(yù)料的系統(tǒng)錯(cuò)誤。靜態(tài)分析過程的輸入主要是整個(gè)Linux源碼中的驅(qū)動(dòng)代碼,即/Linux/drivers和/Linux/sound下的所有文件,輸出是驅(qū)動(dòng)程序源碼中直接或間接使用I/O和內(nèi)存操作函數(shù)的位置和敏感代碼,即可能潛在的故障源列表。

    自動(dòng)分析方法主要是對(duì)系統(tǒng)驅(qū)動(dòng)代碼進(jìn)行掃描,首先針對(duì)驅(qū)動(dòng)的每一個(gè)文件進(jìn)行詞法分析,分析出所有變量、常量、函數(shù)、界符等。然后對(duì)驅(qū)動(dòng)文件進(jìn)行語(yǔ)法分析,找出所有的使用I/O端口操作函數(shù)和I/O內(nèi)存函數(shù)的位置,并標(biāo)注被I/O操作函數(shù)直接或間接修改的變量。最后找出被修改的變量被應(yīng)用在循環(huán)條件或數(shù)組下標(biāo)的位置,即找到驅(qū)動(dòng)中與硬件瞬時(shí)故障相關(guān)的敏感代碼。

    針對(duì)自動(dòng)分析結(jié)果所找到的敏感代碼,我們的處理機(jī)制是在敏感代碼處插入超時(shí)、越界檢查和引入自動(dòng)修復(fù)機(jī)制。當(dāng)發(fā)生設(shè)備瞬時(shí)故障并引起驅(qū)動(dòng)程序發(fā)生無限輪詢或數(shù)組越界錯(cuò)誤時(shí),則會(huì)喚起通用的恢復(fù)服務(wù),即隱匿驅(qū)動(dòng)程序,對(duì)設(shè)備進(jìn)行重置,從而達(dá)到恢復(fù)的目的。

    3 原型實(shí)現(xiàn)及驗(yàn)證

    該原型實(shí)現(xiàn)的開發(fā)平臺(tái)是Ubuntu12.04,在Sourceinsight和Gedit下實(shí)現(xiàn)代碼的編寫,開發(fā)語(yǔ)言為C語(yǔ)言,使用Makefile和gcc4.8.1實(shí)現(xiàn)編譯功能,使用gdb代碼調(diào)試工具對(duì)自動(dòng)分析工具進(jìn)行調(diào)試運(yùn)行。

    3.1 原型實(shí)現(xiàn)

    本文提出的加固驅(qū)動(dòng)程序主要是排除硬件依賴性故障,固化驅(qū)動(dòng)程序的工作流程如圖2可分為三個(gè)部分,分別為分析驅(qū)動(dòng)源碼找到驅(qū)動(dòng)程序使用源于設(shè)備的數(shù)據(jù)的位置、驗(yàn)證驅(qū)動(dòng)程序獲取硬件數(shù)據(jù)的有效性、插入代碼對(duì)潛在的故障進(jìn)行修復(fù)。找到驅(qū)動(dòng)程序中使用1/0操作函數(shù)的位置主要是對(duì)驅(qū)動(dòng)程序代碼進(jìn)行詞法分析和語(yǔ)法分析用以識(shí)別各種類型的語(yǔ)句,檢測(cè)出與硬件通信相關(guān)的I/0操作函數(shù)的使用位置并進(jìn)行標(biāo)注。驗(yàn)證相關(guān)硬件數(shù)據(jù)的有效性是對(duì)從硬件獲取的數(shù)據(jù)進(jìn)行有效性檢查,如:添加計(jì)時(shí)器,檢查數(shù)據(jù)范圍等。插入代碼進(jìn)行修復(fù)是當(dāng)硬件依賴故障偶然性的發(fā)生時(shí)我們插入代碼,引入通用的自動(dòng)修復(fù)機(jī)制,對(duì)硬件進(jìn)行重置從而達(dá)到容忍硬件故障的目的。為實(shí)現(xiàn)對(duì)Linux內(nèi)核源碼中的所有文件應(yīng)用自動(dòng)分析工具,我們通過編寫shell腳本,實(shí)現(xiàn)對(duì)所有驅(qū)動(dòng)文件進(jìn)行遍歷,在遍歷過程中執(zhí)行我們的分析過程。

    敏感代碼檢測(cè)分析流程如圖3所示。主要有四個(gè)部分組成:驅(qū)動(dòng)程序代碼的預(yù)處理、詞法分析、語(yǔ)法分析、靜態(tài)分析輸出敏感代碼。

    3.1.1 設(shè)備驅(qū)動(dòng)源程序的預(yù)處理

    預(yù)處理驅(qū)動(dòng)程序是分析代碼的第一步,它主要處理C語(yǔ)言中的各種預(yù)處理語(yǔ)句和注釋。處理的預(yù)處理語(yǔ)句主要包括#define、#error、#include、#if、#else、#ifdef、#line等。同時(shí)在預(yù)處理階段刪除“//”和以“/*”開頭以“*/”結(jié)尾的注釋,以方便后續(xù)代碼分析。

    預(yù)處理后生成與分析驅(qū)動(dòng)文件所對(duì)應(yīng)的*.tmp文件。處理后的文件中沒有注釋行,并且完成了宏定義的替換,被include包含的文件也被插入到相應(yīng)的位置。

    3.1.2 詞法分析

    詞法分析主要是對(duì)經(jīng)過預(yù)處理的程序代碼進(jìn)行分析,得出相關(guān)單詞符號(hào)如關(guān)鍵字(int、struct)、變量、常量(十進(jìn)制、十六進(jìn)制等)、運(yùn)算符(+、-、*、/等)、界符(,、;、(等)等,將這些單詞符號(hào)放入到相應(yīng)的符號(hào)表中。該詞法分析主要檢測(cè)的是變量,以方便后續(xù)靜態(tài)分析找到被I/0操作函數(shù)影響的變量。

    經(jīng)過詞法分析將相關(guān)的單詞符號(hào)填入到符號(hào)表中,用于記錄源程序中各種單詞符號(hào)的屬性和特征。本文變量和函數(shù)的符號(hào)表的定義如下:

    (l)變量標(biāo)識(shí)符的符號(hào)表否為I/O操作函數(shù)*/

    }FuncTable:

    3.1.3 語(yǔ)法分析

    語(yǔ)法分析主要是在完成詞法分析的基礎(chǔ)上對(duì)代碼進(jìn)行語(yǔ)法結(jié)構(gòu)的分析。該分析過程用于獲取與變量和函數(shù)相關(guān)的信息存入到符號(hào)表中,為后續(xù)的靜態(tài)分析做準(zhǔn)備。

    (l)提取變量相關(guān)信息,將驅(qū)動(dòng)代碼中出現(xiàn)的每一個(gè)變量的行號(hào)都記錄下來,存放在變量符號(hào)表的定義變量和使用變量的字段中。

    (2)提取函數(shù)相關(guān)信息,標(biāo)識(shí)每個(gè)函數(shù)所定義和使用的變量,并記錄下函數(shù)體內(nèi)所引用的函數(shù)名等。

    3.1.4 敏感代碼的檢測(cè)

    通過上述的分析過程,我們能準(zhǔn)確的標(biāo)識(shí)出驅(qū)動(dòng)源碼中所有的標(biāo)識(shí)符及其引用流程,我們靜態(tài)分析的過程包括兩步,第一步是標(biāo)識(shí)出驅(qū)動(dòng)程序中直接或間接使用I/0端口函數(shù)和I/0內(nèi)存函數(shù)的位置,并找到被這些函數(shù)修改的變量標(biāo)注在變量符號(hào)表的tainted字段中。第二步是找出被修改的變量或I/0操作函數(shù)應(yīng)用在循環(huán)條件和數(shù)組下標(biāo)的行號(hào),將其標(biāo)注為敏感代碼輸出到Taintedfor.txt中。

    當(dāng)被修改的變量被應(yīng)用在驅(qū)動(dòng)程序的循環(huán)條件中,而由于偶發(fā)性的硬件故障而導(dǎo)致該變量從硬件讀取來的數(shù)據(jù)不是預(yù)期的值,那就可能導(dǎo)致驅(qū)動(dòng)進(jìn)去死循環(huán)永遠(yuǎn)都不能跳出來。由于驅(qū)動(dòng)和系統(tǒng)內(nèi)核有著千絲萬縷的聯(lián)系,驅(qū)動(dòng)的無限輪詢就可能導(dǎo)致不可預(yù)料的系統(tǒng)故障。當(dāng)被修改的變量被應(yīng)用在全局或局部數(shù)組變量的下標(biāo)中,由于數(shù)組下標(biāo)有范圍界限,若因?yàn)榕及l(fā)性的硬件故障而導(dǎo)致從硬件獲取的數(shù)據(jù)值不在該數(shù)組的合法范圍內(nèi),驅(qū)動(dòng)就會(huì)因?yàn)榇嬖谠浇珏e(cuò)誤而導(dǎo)致系統(tǒng)問題。

    3.1.5 敏感代碼的修復(fù)與報(bào)告

    針對(duì)上述分析出的潛在的故障因素,我們需要對(duì)其進(jìn)行修復(fù)。對(duì)于無限輪詢故障,主要是在驅(qū)動(dòng)中插入代碼打破無限輪詢的條件?;诙啻螌?duì)驅(qū)動(dòng)代碼的延時(shí)測(cè)試和其他設(shè)備所使用的延時(shí),我們使用最大的延時(shí)。我們?cè)谘h(huán)內(nèi)添加計(jì)時(shí)器,并設(shè)置最大延時(shí)時(shí)間。當(dāng)在循環(huán)體內(nèi)循環(huán)的時(shí)間超過我們?cè)O(shè)置的最大延時(shí)時(shí)間時(shí),我們就認(rèn)為該循環(huán)陷入了無限輪詢,此時(shí)我們引入通用的恢復(fù)服務(wù)隱匿驅(qū)動(dòng)程序?qū)τ布M(jìn)行重置,重新獲取硬件相關(guān)的信息。對(duì)于數(shù)組越界問題,我們主要是根據(jù)驅(qū)動(dòng)代碼上下文,在被修改變量用在數(shù)組下標(biāo)之前的位置處對(duì)該變量進(jìn)行條件判斷,若變量值在數(shù)組范圍外,則引入通用的恢復(fù)服務(wù),對(duì)故障進(jìn)行恢復(fù)。

    在對(duì)無限輪詢和數(shù)組越界的驅(qū)動(dòng)錯(cuò)誤進(jìn)行修復(fù)后,當(dāng)確實(shí)出現(xiàn)硬件故障的時(shí)候我們使用printk函數(shù)實(shí)現(xiàn)系統(tǒng)日志通知系統(tǒng)管理員發(fā)生了硬件故障,以便于系統(tǒng)管理員對(duì)故障進(jìn)行管理和維護(hù)。

    3.2 實(shí)驗(yàn)驗(yàn)證

    3.2.1 敏感代碼自動(dòng)檢測(cè)結(jié)果分析

    我們靜態(tài)分析的對(duì)象主要是整個(gè)Linux內(nèi)核驅(qū)動(dòng),內(nèi)核版本為L(zhǎng)inux2.6.18。通過分析drivers和sound目錄下的6000多個(gè)源程序文件,這些文件包括的驅(qū)動(dòng)類主要有網(wǎng)卡驅(qū)動(dòng)、聲卡驅(qū)動(dòng)、視頻驅(qū)動(dòng)、SCSI驅(qū)動(dòng)和其它類驅(qū)動(dòng),從靜態(tài)分析的輸出文件中發(fā)現(xiàn)了大量的潛在的無限輪詢和數(shù)組越界錯(cuò)誤。分析結(jié)果表明驅(qū)動(dòng)的硬件依賴性故障是普遍存在的,只有盡量避免這些潛在的錯(cuò)誤才能提高操作系統(tǒng)的可靠性。

    使用隨機(jī)抽樣方法檢查驅(qū)動(dòng)代碼分析結(jié)果表明:誤報(bào)率低于9%。對(duì)于無限輪詢錯(cuò)誤,我們檢查了100個(gè)例子,只是發(fā)現(xiàn)了10個(gè)誤報(bào),誤報(bào)原因主要是該驅(qū)動(dòng)自身已經(jīng)實(shí)現(xiàn)了檢查和修復(fù)方法,但這種誤報(bào)并不會(huì)對(duì)驅(qū)動(dòng)造成損害,唯一可能的損害就是增加了少量的不必要的開銷。

    3.2.2 敏感代碼修復(fù)與故障報(bào)告

    通過使用自動(dòng)分析工具對(duì)驅(qū)動(dòng)源碼進(jìn)行分析,我們能得到所有驅(qū)動(dòng)類中潛在的硬件依賴性故障。由于對(duì)驅(qū)動(dòng)進(jìn)行測(cè)試依賴于硬件,我們不可能擁有內(nèi)核驅(qū)動(dòng)所對(duì)應(yīng)的所有的硬件,所以我們主要對(duì)已經(jīng)存在的硬件進(jìn)行驗(yàn)證,如電腦本機(jī)的網(wǎng)卡和聲卡。由于短暫性的硬件故障是偶發(fā)性的,我們無法預(yù)期什么時(shí)候會(huì)發(fā)生,所以我們引入了故障注入工具,模擬硬件故障的發(fā)生。通過故障注入工具模擬硬件故障,我們測(cè)試了固化前的驅(qū)動(dòng)和固化后的本機(jī)網(wǎng)卡驅(qū)動(dòng)。在測(cè)試過程中,我們發(fā)現(xiàn)對(duì)于固化后的驅(qū)動(dòng)代碼示例如下圖4所示,當(dāng)發(fā)生了硬件瞬時(shí)故障的時(shí)候能夠喚起通用的恢復(fù)機(jī)制對(duì)硬件進(jìn)行重置,驅(qū)動(dòng)程序再次讀取相關(guān)信息可以正常運(yùn)行,而對(duì)于固化前的驅(qū)動(dòng),由于發(fā)生了短暫性的硬件故障,導(dǎo)致了驅(qū)動(dòng)不能正常運(yùn)行下去。正是由于我們插入的修復(fù)代碼和引入驅(qū)動(dòng)的恢復(fù)機(jī)制,當(dāng)發(fā)生硬件故障時(shí)候,我們的驅(qū)動(dòng)程序能夠容忍硬件瞬時(shí)故障,從而實(shí)現(xiàn)在軟件中容忍硬件故障的目的。

    對(duì)于故障的報(bào)告分析,我們主要是報(bào)告設(shè)備超時(shí)(驅(qū)動(dòng)代碼發(fā)生無限輪洵)和報(bào)告驅(qū)動(dòng)代碼數(shù)組越界。由于Linux沒有故障管理服務(wù),我們使用printk來實(shí)現(xiàn)系統(tǒng)日志。系統(tǒng)管理員可以通過在終端輸入命令dmesg或者進(jìn)入Linux系統(tǒng)日志目錄進(jìn)行查看。對(duì)于設(shè)備超時(shí)的故障報(bào)告主要是當(dāng)由于硬件瞬時(shí)故障而導(dǎo)致驅(qū)動(dòng)程序發(fā)生無限輪詢錯(cuò)誤的時(shí)候通過printk函數(shù)以infinite loop為標(biāo)識(shí)寫系統(tǒng)日志。系統(tǒng)管理員通過infinite loop為標(biāo)識(shí)查看是否發(fā)生該類故障。對(duì)于數(shù)組越界的錯(cuò)誤報(bào)告主要是當(dāng)驅(qū)動(dòng)代碼由于硬件故障而發(fā)生數(shù)組越界錯(cuò)誤的時(shí)候通過printk函數(shù)以Array out of range為標(biāo)識(shí)寫系統(tǒng)日志。系統(tǒng)管理員通過Arrav out of range查看是否發(fā)生數(shù)組越界故障。通過dmesg查看系統(tǒng)日志發(fā)現(xiàn),我們能正確的報(bào)告發(fā)生的相關(guān)驅(qū)動(dòng)故障,從而方便管理員對(duì)故障進(jìn)行管理和維護(hù)。

    4 測(cè)試評(píng)估

    4.1 功能測(cè)試評(píng)估

    為了評(píng)估自動(dòng)分析工具的功能準(zhǔn)確性,我們定義誤檢率和漏檢率。誤檢率即某處不是受硬件瞬時(shí)故障影響的敏感代碼,而自動(dòng)分析工具卻標(biāo)注其為敏感代碼,在整個(gè)掃描過程中出現(xiàn)這種誤報(bào)的概率。某處是受硬件瞬時(shí)故障影響的敏感代碼,但自動(dòng)分析工具卻沒有標(biāo)注其為敏感代碼,這種漏報(bào)的概率稱為漏報(bào)率。

    本文主要是對(duì)2.6.18的內(nèi)核版本應(yīng)用我們的自動(dòng)分析工具,驗(yàn)證了這種分析方法能夠正確的查找到所有驅(qū)動(dòng)模塊的敏感代碼,按照驅(qū)動(dòng)類劃分查詢到的敏感代碼數(shù)量如下表1所示。

    通過靜態(tài)分析和有效性檢查,我們對(duì)整個(gè)Linux內(nèi)核驅(qū)動(dòng)代碼進(jìn)行全盤分析掃描,主要是查找兩類硬件依賴故障即無限輪詢和數(shù)組越界錯(cuò)誤。對(duì)于短暫性硬件故障導(dǎo)致驅(qū)動(dòng)程序的無限輪詢,在網(wǎng)卡驅(qū)動(dòng)類中查找到110個(gè)潛在的錯(cuò)誤,在scsi驅(qū)動(dòng)類290個(gè)潛在的錯(cuò)誤,在整個(gè)Linux驅(qū)動(dòng)中總體查找到740個(gè)錯(cuò)誤。對(duì)于靜態(tài)數(shù)組越界的敏感代碼,我們?cè)贚inux驅(qū)動(dòng)中共查找到43個(gè)潛在的錯(cuò)誤。上述錯(cuò)誤充分說明潛在的硬件依賴性錯(cuò)誤在內(nèi)核驅(qū)動(dòng)代碼中是普遍存在的且是亟待的問題。

    通過對(duì)2.6.18和3.2.1內(nèi)核版本的驅(qū)動(dòng)源碼使用自動(dòng)分析工具進(jìn)行比較,內(nèi)核版本為3.2.1的內(nèi)核源碼所檢測(cè)到的敏感代碼比2.6.18少,并通過抽樣檢查其誤報(bào)率和漏報(bào)率均較小且差別不大。由于內(nèi)核版本為3.2.1是2.6.18的升級(jí),所以檢測(cè)到的敏感代碼少是合理的。比較結(jié)果證明,我們的自動(dòng)分析工具能夠?qū)Σ煌瑑?nèi)核版本的驅(qū)動(dòng)的敏感代碼進(jìn)行準(zhǔn)確的分析。

    我們針對(duì)本機(jī)的網(wǎng)卡驅(qū)動(dòng)通過引用故障注入工具模擬短暫性的硬件故障,對(duì)修改前和修改后的驅(qū)動(dòng)進(jìn)行測(cè)試,修改前的網(wǎng)卡驅(qū)動(dòng)會(huì)產(chǎn)生無限輪詢錯(cuò)誤導(dǎo)致本機(jī)網(wǎng)卡驅(qū)動(dòng)出現(xiàn)無法修復(fù)的問題,而修改后的驅(qū)動(dòng)能正確的容忍硬件依賴性故障,喚起通用的驅(qū)動(dòng)恢復(fù)服務(wù)并告知系統(tǒng)管理員發(fā)生了短暫性的硬件故障,達(dá)到我們預(yù)期的效果。

    4.2 性能評(píng)估測(cè)試

    性能評(píng)估主要是評(píng)估檢測(cè)敏感代碼系統(tǒng)能力及故障恢復(fù)性能,識(shí)別出系統(tǒng)存在的弱點(diǎn)并驗(yàn)證該系統(tǒng)的穩(wěn)定性。本文采用系統(tǒng)性能測(cè)試,對(duì)系統(tǒng)性能進(jìn)行全面的評(píng)估,主要包括宏觀性能測(cè)試和微觀性能測(cè)試。宏觀性能測(cè)試主要是對(duì)檢測(cè)敏感代碼系統(tǒng)的耗時(shí)和準(zhǔn)確性進(jìn)行評(píng)估。微觀性能分析主要是對(duì)自動(dòng)分析工具進(jìn)行CPU利用率評(píng)估。

    本文所采用的測(cè)試是在Ubuntu 12.04系統(tǒng)下完成,該系統(tǒng)中Linux內(nèi)核版為3.11.0-26,GCC編譯器版本4.8.1,計(jì)算機(jī)硬件配置為CPU Pentium Dual-Core,內(nèi)存2G,硬盤200G。

    本文宏觀性能測(cè)試主要測(cè)試檢測(cè)敏感代碼系統(tǒng)的耗時(shí)及其準(zhǔn)確性。檢測(cè)耗時(shí)主要方法是使用UNIXdate命令。在對(duì)Linux驅(qū)動(dòng)源碼進(jìn)行遍歷掃描的腳本中,增加驅(qū)動(dòng)分析開始時(shí)間及結(jié)束時(shí)間,通過計(jì)算得出分析檢測(cè)驅(qū)動(dòng)代碼所消耗的時(shí)間為4700s。對(duì)檢測(cè)到的敏感代碼的準(zhǔn)確性我們主要是采用加權(quán)隨機(jī)抽樣的方式,通過對(duì)自動(dòng)檢測(cè)敏感代碼的結(jié)果和手動(dòng)抽樣檢查進(jìn)行比較,其檢測(cè)到的敏感代碼的準(zhǔn)確率較高。

    微觀性能評(píng)估主要是對(duì)自動(dòng)分析工具進(jìn)行CPU利用率評(píng)估,檢測(cè)方法主要是利用Linux操作系統(tǒng)的ps命令獲取該分析工具的CPU利用率。在對(duì)內(nèi)核驅(qū)動(dòng)代碼進(jìn)行自動(dòng)分析的過程中,我們使用ps命令獲取其CPU利用率為2.2%,結(jié)果表明,該工具性能開銷較小,符合我們的設(shè)計(jì)要求。

    5 結(jié)論

    系統(tǒng)的可靠性由于設(shè)備及對(duì)應(yīng)驅(qū)動(dòng)的可靠性而受到限制,Linux系統(tǒng)出現(xiàn)的很多故障都是由于硬件瞬時(shí)故障導(dǎo)致的。為解決該問題,本文提出一種在驅(qū)動(dòng)軟件中容忍硬件瞬時(shí)故障的機(jī)制,討論了面向硬件瞬時(shí)故障的驅(qū)動(dòng)程序敏感代碼的自動(dòng)分析方法,通過對(duì)Linux驅(qū)動(dòng)源碼進(jìn)行預(yù)處理、詞法分析、語(yǔ)法分析和靜態(tài)分析,查找出可能產(chǎn)生無限輪詢和靜態(tài)數(shù)組越界的敏感代碼并進(jìn)行標(biāo)注。為修復(fù)該類敏感代碼可能引起的驅(qū)動(dòng)問題,我們通過插入時(shí)間檢查和范圍檢查,并引入了一個(gè)通用的恢復(fù)服務(wù)隱匿驅(qū)動(dòng)程序?qū)Πl(fā)生短暫性硬件故障的設(shè)備進(jìn)行重置,驅(qū)動(dòng)重新讀取寄存器中的硬件數(shù)據(jù)以達(dá)到修復(fù)的目的。同時(shí),當(dāng)發(fā)生短暫的硬件依賴性故障的時(shí)候,我們通過系統(tǒng)日志的方式通知管理員硬件發(fā)生問題,方便系統(tǒng)管理員對(duì)系統(tǒng)進(jìn)行管理和維護(hù)。由于偶發(fā)性的硬件故障比較罕見的發(fā)生,為測(cè)試實(shí)驗(yàn)結(jié)果,我們使用了故障注入工具來模擬我們期望的硬件故障,通過測(cè)試,經(jīng)加固后的驅(qū)動(dòng)程序能夠很好的容忍硬件瞬時(shí)故障,從而很好的實(shí)現(xiàn)了在軟件中容忍硬件故障的目的。

    久久午夜福利片| 男人舔奶头视频| 午夜福利在线在线| 亚洲欧美成人综合另类久久久| 久久人人爽人人爽人人片va| 婷婷色综合www| 国产一级毛片在线| 亚洲,欧美,日韩| 我的老师免费观看完整版| 少妇人妻 视频| 一边亲一边摸免费视频| 一区二区三区乱码不卡18| 久久精品久久久久久久性| 男人添女人高潮全过程视频| 久久久久久久久久久免费av| 国产精品福利在线免费观看| 亚洲美女视频黄频| 午夜福利视频精品| 内地一区二区视频在线| 女性生殖器流出的白浆| 深夜a级毛片| 高清av免费在线| 性色avwww在线观看| 久久久久久久大尺度免费视频| 国产一区有黄有色的免费视频| 欧美激情极品国产一区二区三区 | 毛片一级片免费看久久久久| 纯流量卡能插随身wifi吗| 色5月婷婷丁香| 欧美精品人与动牲交sv欧美| 国产精品免费大片| 中文乱码字字幕精品一区二区三区| 国产大屁股一区二区在线视频| 少妇高潮的动态图| 99热国产这里只有精品6| 久久久精品94久久精品| 97精品久久久久久久久久精品| 欧美一级a爱片免费观看看| 国产男女超爽视频在线观看| 国产成人91sexporn| 一区二区三区四区激情视频| 在线亚洲精品国产二区图片欧美 | 人妻 亚洲 视频| 午夜福利在线观看免费完整高清在| 草草在线视频免费看| 91在线精品国自产拍蜜月| 久久精品夜色国产| 亚洲人成网站在线观看播放| 中文字幕av成人在线电影| 日韩三级伦理在线观看| 老司机影院成人| 精品亚洲成国产av| 夜夜看夜夜爽夜夜摸| 99久久精品热视频| 插阴视频在线观看视频| 99热这里只有是精品50| 亚洲欧美精品自产自拍| 国产亚洲欧美精品永久| 国产 精品1| 精品一区二区三卡| 国产乱人视频| 欧美性感艳星| 纯流量卡能插随身wifi吗| 成人高潮视频无遮挡免费网站| 黄片无遮挡物在线观看| 91在线精品国自产拍蜜月| 麻豆乱淫一区二区| 精品少妇黑人巨大在线播放| 成人二区视频| 午夜免费男女啪啪视频观看| 国产精品福利在线免费观看| 高清不卡的av网站| 亚洲国产精品国产精品| 高清午夜精品一区二区三区| 国产精品免费大片| 日本黄色片子视频| 岛国毛片在线播放| 久久久成人免费电影| 天天躁日日操中文字幕| 在线观看人妻少妇| 午夜福利网站1000一区二区三区| 777米奇影视久久| av卡一久久| 熟妇人妻不卡中文字幕| 亚洲电影在线观看av| 亚洲怡红院男人天堂| 啦啦啦视频在线资源免费观看| 国产91av在线免费观看| 99视频精品全部免费 在线| 久久久成人免费电影| av国产久精品久网站免费入址| 蜜桃久久精品国产亚洲av| 精品酒店卫生间| 少妇丰满av| 天堂8中文在线网| 干丝袜人妻中文字幕| 亚洲性久久影院| 亚洲欧美精品专区久久| 一二三四中文在线观看免费高清| av在线app专区| 插逼视频在线观看| 免费久久久久久久精品成人欧美视频 | 久久97久久精品| 如何舔出高潮| 久久人妻熟女aⅴ| 精品午夜福利在线看| 色婷婷久久久亚洲欧美| 色5月婷婷丁香| av免费观看日本| 啦啦啦中文免费视频观看日本| 欧美 日韩 精品 国产| 国产白丝娇喘喷水9色精品| www.色视频.com| 一级毛片我不卡| 观看免费一级毛片| 亚洲激情五月婷婷啪啪| 在线观看免费高清a一片| 熟妇人妻不卡中文字幕| 国产女主播在线喷水免费视频网站| 欧美国产精品一级二级三级 | 久久亚洲国产成人精品v| 国产一区二区三区av在线| 国产免费视频播放在线视频| 欧美一级a爱片免费观看看| 男女边摸边吃奶| 舔av片在线| 免费看日本二区| .国产精品久久| 18禁裸乳无遮挡动漫免费视频| 国产精品久久久久久精品电影小说 | 日韩制服骚丝袜av| 国产精品一区www在线观看| 人人妻人人看人人澡| 国产精品成人在线| 一级毛片我不卡| 成人一区二区视频在线观看| 哪个播放器可以免费观看大片| 欧美zozozo另类| 尤物成人国产欧美一区二区三区| 国产高潮美女av| 亚洲精品国产色婷婷电影| 妹子高潮喷水视频| 亚洲经典国产精华液单| 精品午夜福利在线看| 亚洲人与动物交配视频| 人妻制服诱惑在线中文字幕| 亚洲av福利一区| 最近的中文字幕免费完整| 久久av网站| 3wmmmm亚洲av在线观看| 亚洲成人手机| 国产高清三级在线| 免费人妻精品一区二区三区视频| 中文字幕精品免费在线观看视频 | 91在线精品国自产拍蜜月| 涩涩av久久男人的天堂| 亚洲精品视频女| 国产高清有码在线观看视频| 夜夜爽夜夜爽视频| 又大又黄又爽视频免费| 国产 精品1| 日韩,欧美,国产一区二区三区| 久久久成人免费电影| a 毛片基地| 人人妻人人爽人人添夜夜欢视频 | 有码 亚洲区| 国产精品一二三区在线看| www.av在线官网国产| 亚洲自偷自拍三级| 久久99热6这里只有精品| 国产在线男女| 国内揄拍国产精品人妻在线| 狂野欧美激情性bbbbbb| 国产精品一区二区在线观看99| 国产精品人妻久久久影院| 最近的中文字幕免费完整| 国产精品一区二区三区四区免费观看| 国产精品免费大片| 久久精品国产鲁丝片午夜精品| av在线蜜桃| 色视频在线一区二区三区| 老师上课跳d突然被开到最大视频| 夫妻性生交免费视频一级片| 五月伊人婷婷丁香| 老司机影院成人| 精品少妇黑人巨大在线播放| 夫妻午夜视频| 欧美 日韩 精品 国产| 制服丝袜香蕉在线| 天美传媒精品一区二区| 精品一区二区三卡| 菩萨蛮人人尽说江南好唐韦庄| 欧美精品亚洲一区二区| 国产成人精品福利久久| 一本色道久久久久久精品综合| 最近的中文字幕免费完整| 国产白丝娇喘喷水9色精品| 有码 亚洲区| 国产91av在线免费观看| 国产精品偷伦视频观看了| 亚洲综合精品二区| 十八禁网站网址无遮挡 | 大香蕉97超碰在线| 午夜激情久久久久久久| 99热这里只有精品一区| 国产黄频视频在线观看| 国产精品久久久久成人av| 欧美xxxx黑人xx丫x性爽| 精品久久久噜噜| 亚洲av国产av综合av卡| 最后的刺客免费高清国语| 人妻 亚洲 视频| 国产精品av视频在线免费观看| 亚洲欧美中文字幕日韩二区| 日日摸夜夜添夜夜添av毛片| 国产亚洲91精品色在线| 欧美成人午夜免费资源| 亚洲精品,欧美精品| 日韩欧美精品免费久久| 免费看光身美女| 日韩中文字幕视频在线看片 | 草草在线视频免费看| 少妇人妻精品综合一区二区| 人人妻人人澡人人爽人人夜夜| 日韩av免费高清视频| 成年av动漫网址| 午夜福利网站1000一区二区三区| av在线播放精品| 中文字幕久久专区| 久久久成人免费电影| 麻豆乱淫一区二区| av网站免费在线观看视频| 欧美zozozo另类| a级一级毛片免费在线观看| 99久久精品热视频| 18禁动态无遮挡网站| 国产爱豆传媒在线观看| 亚洲精品国产av成人精品| 中文资源天堂在线| 国产男女内射视频| av在线老鸭窝| 日本vs欧美在线观看视频 | 人妻一区二区av| 精品久久久久久电影网| 亚洲精品中文字幕在线视频 | 日韩欧美 国产精品| 国产精品久久久久久av不卡| 十八禁网站网址无遮挡 | 简卡轻食公司| 亚洲第一区二区三区不卡| 午夜免费鲁丝| 免费看不卡的av| 亚洲av.av天堂| 久久99热6这里只有精品| 制服丝袜香蕉在线| 精品久久久久久久末码| av在线老鸭窝| 天天躁夜夜躁狠狠久久av| 日韩av免费高清视频| 中文字幕av成人在线电影| 岛国毛片在线播放| 最近最新中文字幕免费大全7| 精品人妻熟女av久视频| 国产淫语在线视频| 黄片wwwwww| 亚洲精品国产av成人精品| 观看免费一级毛片| 精品国产露脸久久av麻豆| 噜噜噜噜噜久久久久久91| 国产视频内射| 五月开心婷婷网| 久久久久久伊人网av| 在线免费十八禁| 国产成人一区二区在线| 最近最新中文字幕免费大全7| 国内精品宾馆在线| 国产成人午夜福利电影在线观看| 亚洲精品自拍成人| 91久久精品国产一区二区成人| 久久久精品免费免费高清| 3wmmmm亚洲av在线观看| 91精品伊人久久大香线蕉| videos熟女内射| 国产av码专区亚洲av| 日韩大片免费观看网站| 99久国产av精品国产电影| 精品一区二区三卡| 在线观看免费日韩欧美大片 | 十八禁网站网址无遮挡 | 国产精品欧美亚洲77777| 国产69精品久久久久777片| 女性生殖器流出的白浆| 亚州av有码| 日韩一区二区三区影片| 女性生殖器流出的白浆| 各种免费的搞黄视频| 狂野欧美白嫩少妇大欣赏| 尾随美女入室| 亚洲精品国产色婷婷电影| 国产免费又黄又爽又色| 国产精品国产三级国产av玫瑰| 99热这里只有精品一区| 久久精品久久久久久噜噜老黄| 热re99久久精品国产66热6| 亚洲av日韩在线播放| 18禁裸乳无遮挡免费网站照片| 国产精品.久久久| 久久久久人妻精品一区果冻| av视频免费观看在线观看| 一本色道久久久久久精品综合| 欧美成人午夜免费资源| 国产精品秋霞免费鲁丝片| 欧美 日韩 精品 国产| 国产精品偷伦视频观看了| 亚洲人与动物交配视频| 久久精品人妻少妇| 国产中年淑女户外野战色| 成人毛片a级毛片在线播放| 精品久久久精品久久久| 在线天堂最新版资源| 欧美zozozo另类| 亚洲,欧美,日韩| 狂野欧美激情性xxxx在线观看| 久久婷婷青草| 一本色道久久久久久精品综合| 亚洲精品一区蜜桃| 国产伦精品一区二区三区视频9| 特大巨黑吊av在线直播| 少妇丰满av| 欧美成人精品欧美一级黄| 国产精品国产三级专区第一集| 久久久色成人| 成人毛片a级毛片在线播放| 一本一本综合久久| 制服丝袜香蕉在线| 日本一二三区视频观看| 国产有黄有色有爽视频| 一本久久精品| 亚洲欧美精品自产自拍| 男人爽女人下面视频在线观看| 亚洲第一区二区三区不卡| 一本久久精品| 日本黄大片高清| 大香蕉97超碰在线| 两个人的视频大全免费| 亚洲四区av| 熟女电影av网| 18禁在线无遮挡免费观看视频| 成人高潮视频无遮挡免费网站| 亚洲精品久久午夜乱码| 国产精品.久久久| 啦啦啦视频在线资源免费观看| 不卡视频在线观看欧美| 舔av片在线| 亚洲欧美成人精品一区二区| 日韩av免费高清视频| 青春草视频在线免费观看| 自拍欧美九色日韩亚洲蝌蚪91 | 伊人久久精品亚洲午夜| 色视频在线一区二区三区| 欧美人与善性xxx| 国产视频首页在线观看| 久久毛片免费看一区二区三区| 国产精品免费大片| 亚洲人成网站在线观看播放| 18禁在线播放成人免费| 人妻制服诱惑在线中文字幕| 天天躁日日操中文字幕| 国产熟女欧美一区二区| 亚洲综合精品二区| 国产免费一级a男人的天堂| 中文字幕精品免费在线观看视频 | 国产精品国产三级国产专区5o| 2022亚洲国产成人精品| 国产亚洲一区二区精品| 日本av免费视频播放| 国产精品国产三级国产专区5o| 国产极品天堂在线| 国产精品99久久99久久久不卡 | av天堂中文字幕网| 18禁裸乳无遮挡免费网站照片| 插逼视频在线观看| 男人爽女人下面视频在线观看| 中文天堂在线官网| 国产视频内射| 看非洲黑人一级黄片| 国产一级毛片在线| 国产精品av视频在线免费观看| 亚洲图色成人| 日韩中文字幕视频在线看片 | 久久人人爽av亚洲精品天堂 | 18禁裸乳无遮挡免费网站照片| 精品国产一区二区三区久久久樱花 | 麻豆精品久久久久久蜜桃| 汤姆久久久久久久影院中文字幕| 亚洲精品中文字幕在线视频 | 777米奇影视久久| 男人添女人高潮全过程视频| 成人影院久久| h视频一区二区三区| 高清av免费在线| 国产伦精品一区二区三区四那| 亚洲精品国产色婷婷电影| 中国美白少妇内射xxxbb| 人人妻人人添人人爽欧美一区卜 | 伦理电影免费视频| 国产伦理片在线播放av一区| 日本av手机在线免费观看| 久久久久久久久久成人| 亚洲色图综合在线观看| 国产av精品麻豆| 欧美日韩国产mv在线观看视频 | 国产乱来视频区| 交换朋友夫妻互换小说| 日韩欧美精品免费久久| 美女脱内裤让男人舔精品视频| 亚洲精品国产av成人精品| 亚洲最大成人中文| 天堂8中文在线网| 欧美+日韩+精品| 嫩草影院新地址| 一个人看的www免费观看视频| 六月丁香七月| 亚洲第一区二区三区不卡| 简卡轻食公司| 国产精品福利在线免费观看| 极品教师在线视频| 久久久成人免费电影| 精品亚洲成国产av| 精品久久国产蜜桃| 色5月婷婷丁香| 久久精品久久精品一区二区三区| 亚洲成色77777| 夜夜骑夜夜射夜夜干| 国产av精品麻豆| 久久久久网色| 婷婷色麻豆天堂久久| 国产视频内射| 国产伦精品一区二区三区视频9| 精品亚洲成a人片在线观看 | 精品少妇黑人巨大在线播放| 毛片一级片免费看久久久久| 亚洲av日韩在线播放| 欧美精品亚洲一区二区| 成人黄色视频免费在线看| 国产91av在线免费观看| 最近最新中文字幕免费大全7| 成年女人在线观看亚洲视频| 国产亚洲最大av| 成年人午夜在线观看视频| 中文天堂在线官网| 男人狂女人下面高潮的视频| 国内揄拍国产精品人妻在线| 亚洲第一av免费看| 久久ye,这里只有精品| 国产精品不卡视频一区二区| 91在线精品国自产拍蜜月| 国产男女超爽视频在线观看| 久久久久网色| 国产一区二区三区av在线| 狠狠精品人妻久久久久久综合| 日日撸夜夜添| 午夜免费男女啪啪视频观看| 国产黄片视频在线免费观看| 大陆偷拍与自拍| 亚洲精品日本国产第一区| 日韩av不卡免费在线播放| 性色av一级| 免费观看a级毛片全部| 少妇的逼好多水| 国产乱来视频区| 国产爱豆传媒在线观看| 啦啦啦啦在线视频资源| 少妇被粗大猛烈的视频| 精品人妻一区二区三区麻豆| 精品午夜福利在线看| 国产av一区二区精品久久 | h视频一区二区三区| 国产精品女同一区二区软件| 看十八女毛片水多多多| 日韩免费高清中文字幕av| 亚洲精品aⅴ在线观看| 韩国高清视频一区二区三区| 99热国产这里只有精品6| 97在线人人人人妻| 在线观看三级黄色| 久热这里只有精品99| 免费大片18禁| 看十八女毛片水多多多| 亚洲欧美清纯卡通| 1000部很黄的大片| 成年人午夜在线观看视频| 街头女战士在线观看网站| 熟妇人妻不卡中文字幕| 久久人人爽人人爽人人片va| 日韩成人伦理影院| 亚洲,一卡二卡三卡| 人体艺术视频欧美日本| 麻豆成人午夜福利视频| 亚洲欧美日韩无卡精品| 丝袜喷水一区| 噜噜噜噜噜久久久久久91| 成人亚洲精品一区在线观看 | 亚洲av二区三区四区| 高清欧美精品videossex| 日韩欧美 国产精品| 亚洲成人一二三区av| 成人国产av品久久久| 成年免费大片在线观看| 九九久久精品国产亚洲av麻豆| 精品视频人人做人人爽| 91在线精品国自产拍蜜月| 肉色欧美久久久久久久蜜桃| 日韩一区二区三区影片| 一区二区av电影网| 国产日韩欧美亚洲二区| av一本久久久久| 亚洲av二区三区四区| a 毛片基地| 精品国产乱码久久久久久小说| 久久久久久伊人网av| 午夜免费男女啪啪视频观看| 好男人视频免费观看在线| 中文字幕av成人在线电影| 国产爽快片一区二区三区| 一级片'在线观看视频| 欧美激情国产日韩精品一区| 亚洲va在线va天堂va国产| 久久99精品国语久久久| 亚洲精品乱码久久久v下载方式| 一边亲一边摸免费视频| 黄色一级大片看看| 久久国内精品自在自线图片| 少妇人妻一区二区三区视频| 久久久a久久爽久久v久久| 美女xxoo啪啪120秒动态图| 99视频精品全部免费 在线| 99热6这里只有精品| 国产成人91sexporn| 亚洲人成网站在线观看播放| 亚洲婷婷狠狠爱综合网| 男人舔奶头视频| 精品人妻一区二区三区麻豆| 激情 狠狠 欧美| 免费av不卡在线播放| 国产人妻一区二区三区在| 精品人妻视频免费看| 日本欧美视频一区| 中国国产av一级| 免费av不卡在线播放| 韩国av在线不卡| 七月丁香在线播放| 久久亚洲国产成人精品v| 亚洲婷婷狠狠爱综合网| 日产精品乱码卡一卡2卡三| 国产日韩欧美亚洲二区| 亚洲国产精品一区三区| 免费观看在线日韩| 国产精品伦人一区二区| 国产亚洲欧美精品永久| 欧美日本视频| 久久6这里有精品| 91久久精品电影网| 纯流量卡能插随身wifi吗| 麻豆国产97在线/欧美| 伊人久久精品亚洲午夜| 熟女人妻精品中文字幕| 免费播放大片免费观看视频在线观看| 国产精品国产av在线观看| 久久午夜福利片| av播播在线观看一区| 亚洲av成人精品一区久久| 一级毛片久久久久久久久女| 日本黄大片高清| 晚上一个人看的免费电影| 夫妻午夜视频| av福利片在线观看| 久久精品久久久久久久性| 97超视频在线观看视频| 国产精品99久久久久久久久| 插阴视频在线观看视频| 日本午夜av视频| 伊人久久国产一区二区| 在线观看国产h片| 大话2 男鬼变身卡| 在线亚洲精品国产二区图片欧美 | 亚洲国产av新网站| 久久毛片免费看一区二区三区| 一级毛片我不卡| 国产亚洲5aaaaa淫片| 又黄又爽又刺激的免费视频.| 校园人妻丝袜中文字幕| 亚洲精品aⅴ在线观看| 国产91av在线免费观看| 在线观看国产h片| 精品熟女少妇av免费看| 亚洲精品国产av蜜桃| 国产精品欧美亚洲77777| 国产高清不卡午夜福利| 亚洲成人一二三区av| 九色成人免费人妻av| 网址你懂的国产日韩在线| 狂野欧美激情性bbbbbb| 亚洲一级一片aⅴ在线观看| 久久鲁丝午夜福利片| 少妇熟女欧美另类| 久久久久视频综合| 性高湖久久久久久久久免费观看| 国产成人aa在线观看| 久久久久久久久大av| 中国美白少妇内射xxxbb| 中文乱码字字幕精品一区二区三区| 亚洲怡红院男人天堂| 国产伦在线观看视频一区| 亚洲精品日本国产第一区|