• <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)了在軟件中容忍硬件故障的目的。

    国产1区2区3区精品| 国产成人午夜福利电影在线观看| 成人亚洲精品一区在线观看| 欧美日韩精品成人综合77777| 色哟哟·www| 亚洲欧美清纯卡通| 欧美av亚洲av综合av国产av | 日本-黄色视频高清免费观看| 亚洲熟女精品中文字幕| 综合色丁香网| 三上悠亚av全集在线观看| 午夜福利,免费看| 亚洲av国产av综合av卡| 制服人妻中文乱码| 热re99久久精品国产66热6| 午夜免费观看性视频| 中文字幕人妻丝袜制服| 各种免费的搞黄视频| 亚洲国产最新在线播放| 999久久久国产精品视频| 伦精品一区二区三区| 这个男人来自地球电影免费观看 | 久久久久网色| 精品视频人人做人人爽| 婷婷色麻豆天堂久久| 亚洲内射少妇av| 女性被躁到高潮视频| 在线观看人妻少妇| 亚洲欧美一区二区三区黑人 | 亚洲欧美色中文字幕在线| 国产精品av久久久久免费| 亚洲色图 男人天堂 中文字幕| 久久久精品国产亚洲av高清涩受| 日韩人妻精品一区2区三区| 成人毛片a级毛片在线播放| 亚洲欧美一区二区三区黑人 | 久久青草综合色| 卡戴珊不雅视频在线播放| 午夜91福利影院| 不卡av一区二区三区| 最近2019中文字幕mv第一页| 麻豆精品久久久久久蜜桃| 男人舔女人的私密视频| 高清在线视频一区二区三区| av在线老鸭窝| 国产午夜精品一二区理论片| 寂寞人妻少妇视频99o| 可以免费在线观看a视频的电影网站 | 免费高清在线观看视频在线观看| 2018国产大陆天天弄谢| 国产精品国产三级国产专区5o| 国产午夜精品一二区理论片| 男人操女人黄网站| 青青草视频在线视频观看| 麻豆乱淫一区二区| 日本黄色日本黄色录像| 日本vs欧美在线观看视频| 中文字幕av电影在线播放| 女的被弄到高潮叫床怎么办| 久久国产精品大桥未久av| 免费在线观看黄色视频的| 中文字幕av电影在线播放| 在线亚洲精品国产二区图片欧美| 成人亚洲欧美一区二区av| 一区二区av电影网| 欧美 亚洲 国产 日韩一| 精品亚洲成国产av| 中文天堂在线官网| 人人妻人人添人人爽欧美一区卜| 老汉色∧v一级毛片| 亚洲在久久综合| 一区在线观看完整版| xxxhd国产人妻xxx| 亚洲国产精品国产精品| 成人毛片a级毛片在线播放| 26uuu在线亚洲综合色| 一级毛片电影观看| 如何舔出高潮| 一级毛片黄色毛片免费观看视频| 日韩中文字幕视频在线看片| 欧美成人午夜精品| 国产白丝娇喘喷水9色精品| 亚洲av成人精品一二三区| 国产精品久久久久久av不卡| 国产免费又黄又爽又色| 久久久久久久久久久久大奶| 久久午夜综合久久蜜桃| 久久精品国产亚洲av天美| 久久国产精品大桥未久av| 99久久中文字幕三级久久日本| 午夜老司机福利剧场| 老女人水多毛片| 免费女性裸体啪啪无遮挡网站| 久久久久视频综合| 侵犯人妻中文字幕一二三四区| 午夜福利一区二区在线看| 午夜福利网站1000一区二区三区| 免费播放大片免费观看视频在线观看| 欧美日韩国产mv在线观看视频| 欧美精品亚洲一区二区| 赤兔流量卡办理| 汤姆久久久久久久影院中文字幕| 久久 成人 亚洲| 国产日韩欧美亚洲二区| 亚洲精品视频女| 亚洲国产精品一区三区| 亚洲国产精品国产精品| 精品福利永久在线观看| 久久久久久久精品精品| 午夜福利视频在线观看免费| freevideosex欧美| 人人妻人人添人人爽欧美一区卜| 亚洲精品国产av蜜桃| 大陆偷拍与自拍| 少妇的丰满在线观看| a 毛片基地| 国产又色又爽无遮挡免| 精品国产一区二区久久| 丝袜脚勾引网站| 午夜免费男女啪啪视频观看| 欧美日韩精品成人综合77777| 毛片一级片免费看久久久久| 欧美在线黄色| 国产精品无大码| 少妇猛男粗大的猛烈进出视频| 久久精品国产鲁丝片午夜精品| 丝袜美腿诱惑在线| 久久久精品94久久精品| 久热久热在线精品观看| 亚洲国产精品999| 成年人免费黄色播放视频| 久久久久国产精品人妻一区二区| 少妇 在线观看| 久久久国产欧美日韩av| 亚洲精品美女久久av网站| 久久99一区二区三区| 日韩制服骚丝袜av| 黄色怎么调成土黄色| 韩国高清视频一区二区三区| 亚洲国产看品久久| 中文字幕人妻丝袜制服| 久久99精品国语久久久| 色视频在线一区二区三区| 丝瓜视频免费看黄片| 久久人妻熟女aⅴ| 伦理电影免费视频| 亚洲图色成人| freevideosex欧美| 91精品国产国语对白视频| 涩涩av久久男人的天堂| 只有这里有精品99| 2021少妇久久久久久久久久久| h视频一区二区三区| 大香蕉久久成人网| 天天躁日日躁夜夜躁夜夜| 精品视频人人做人人爽| 又大又黄又爽视频免费| 五月天丁香电影| 18禁国产床啪视频网站| 女人精品久久久久毛片| 天堂俺去俺来也www色官网| av有码第一页| 97在线视频观看| 晚上一个人看的免费电影| 久久精品人人爽人人爽视色| 伦理电影免费视频| 精品人妻一区二区三区麻豆| 91aial.com中文字幕在线观看| 91精品国产国语对白视频| 99精国产麻豆久久婷婷| 久久综合国产亚洲精品| 一级爰片在线观看| 久久精品国产自在天天线| 不卡av一区二区三区| 黄片小视频在线播放| 精品一区二区三区四区五区乱码 | 国产极品天堂在线| 欧美人与性动交α欧美软件| 亚洲,欧美精品.| 菩萨蛮人人尽说江南好唐韦庄| 免费日韩欧美在线观看| 九草在线视频观看| 男女高潮啪啪啪动态图| 男女午夜视频在线观看| 亚洲人成电影观看| 亚洲欧美清纯卡通| 黄色一级大片看看| 精品一区在线观看国产| 亚洲国产毛片av蜜桃av| 免费在线观看黄色视频的| 五月天丁香电影| 国产探花极品一区二区| 午夜久久久在线观看| 丝袜在线中文字幕| 午夜日本视频在线| 亚洲国产最新在线播放| 国产一区二区三区综合在线观看| 午夜久久久在线观看| 国产精品蜜桃在线观看| 久久免费观看电影| 高清欧美精品videossex| 午夜福利,免费看| 中国三级夫妇交换| 建设人人有责人人尽责人人享有的| 久久精品人人爽人人爽视色| 久久午夜综合久久蜜桃| 少妇精品久久久久久久| 日韩精品有码人妻一区| 丝袜脚勾引网站| 女人久久www免费人成看片| 亚洲欧洲日产国产| 亚洲精品一区蜜桃| 日韩中字成人| 人妻少妇偷人精品九色| 中文字幕另类日韩欧美亚洲嫩草| 人人澡人人妻人| 国产又爽黄色视频| 久久这里只有精品19| 777久久人妻少妇嫩草av网站| 观看美女的网站| 久久精品国产a三级三级三级| 欧美xxⅹ黑人| 精品卡一卡二卡四卡免费| 成人午夜精彩视频在线观看| 国产精品亚洲av一区麻豆 | 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 啦啦啦中文免费视频观看日本| 国产亚洲av片在线观看秒播厂| 亚洲第一区二区三区不卡| 国产精品女同一区二区软件| 两个人免费观看高清视频| 国产精品秋霞免费鲁丝片| 日韩 亚洲 欧美在线| 国产精品.久久久| 有码 亚洲区| 飞空精品影院首页| 欧美精品人与动牲交sv欧美| 高清欧美精品videossex| 久久精品国产亚洲av涩爱| 99久久中文字幕三级久久日本| 亚洲三区欧美一区| 国产女主播在线喷水免费视频网站| 国精品久久久久久国模美| 在线观看免费视频网站a站| 亚洲av成人精品一二三区| 秋霞在线观看毛片| av.在线天堂| 久久97久久精品| 精品视频人人做人人爽| 爱豆传媒免费全集在线观看| 日日啪夜夜爽| 国产熟女午夜一区二区三区| 丰满饥渴人妻一区二区三| 免费女性裸体啪啪无遮挡网站| 日韩成人av中文字幕在线观看| 精品国产一区二区三区四区第35| 菩萨蛮人人尽说江南好唐韦庄| 黄网站色视频无遮挡免费观看| 久久人妻熟女aⅴ| 高清不卡的av网站| 欧美+日韩+精品| 亚洲综合色网址| 韩国精品一区二区三区| 看非洲黑人一级黄片| 97精品久久久久久久久久精品| 叶爱在线成人免费视频播放| 久久 成人 亚洲| 亚洲精华国产精华液的使用体验| av网站在线播放免费| 自线自在国产av| 欧美日韩成人在线一区二区| 国产精品免费视频内射| 国产女主播在线喷水免费视频网站| 少妇猛男粗大的猛烈进出视频| 亚洲欧美成人精品一区二区| 欧美中文综合在线视频| 一个人免费看片子| 99热网站在线观看| 亚洲精品一区蜜桃| 美女主播在线视频| 成人二区视频| 2022亚洲国产成人精品| 侵犯人妻中文字幕一二三四区| 欧美日韩一区二区视频在线观看视频在线| 久久99热这里只频精品6学生| 久久这里有精品视频免费| av片东京热男人的天堂| 日韩制服丝袜自拍偷拍| 精品国产乱码久久久久久小说| 欧美成人午夜精品| 亚洲精品aⅴ在线观看| 天天躁日日躁夜夜躁夜夜| 久久鲁丝午夜福利片| 男女国产视频网站| 美女午夜性视频免费| 女人精品久久久久毛片| 久久国产亚洲av麻豆专区| 97人妻天天添夜夜摸| 天堂8中文在线网| 亚洲精品成人av观看孕妇| 国产探花极品一区二区| 精品一区二区三区四区五区乱码 | 国产精品麻豆人妻色哟哟久久| 久久久国产精品麻豆| 日本wwww免费看| 久久精品国产综合久久久| 国产免费又黄又爽又色| 18在线观看网站| 一二三四中文在线观看免费高清| 伊人久久国产一区二区| 狠狠婷婷综合久久久久久88av| √禁漫天堂资源中文www| 热re99久久精品国产66热6| 欧美最新免费一区二区三区| 欧美精品国产亚洲| 一区二区三区激情视频| 人人妻人人澡人人爽人人夜夜| 国产精品亚洲av一区麻豆 | 晚上一个人看的免费电影| 婷婷色麻豆天堂久久| av女优亚洲男人天堂| 久久人妻熟女aⅴ| 久久精品国产综合久久久| 国产成人精品福利久久| av在线播放精品| 中文字幕人妻丝袜一区二区 | 秋霞在线观看毛片| 国产极品天堂在线| 建设人人有责人人尽责人人享有的| 美女大奶头黄色视频| 99久国产av精品国产电影| 欧美日韩综合久久久久久| 男男h啪啪无遮挡| 十八禁网站网址无遮挡| 久久久久久久久免费视频了| 91精品三级在线观看| 丰满迷人的少妇在线观看| 另类亚洲欧美激情| 亚洲精品国产色婷婷电影| 精品国产一区二区三区四区第35| 大片电影免费在线观看免费| 日韩电影二区| 97在线视频观看| 精品视频人人做人人爽| √禁漫天堂资源中文www| 亚洲国产看品久久| 多毛熟女@视频| 午夜福利乱码中文字幕| 男女国产视频网站| 亚洲第一青青草原| 午夜免费鲁丝| www.av在线官网国产| 国产综合精华液| 亚洲视频免费观看视频| 国产精品女同一区二区软件| 国产探花极品一区二区| 免费观看无遮挡的男女| 亚洲av电影在线进入| 国产成人a∨麻豆精品| 亚洲中文av在线| 啦啦啦视频在线资源免费观看| 捣出白浆h1v1| 国产成人免费无遮挡视频| 老汉色av国产亚洲站长工具| 免费观看无遮挡的男女| 波野结衣二区三区在线| 人妻人人澡人人爽人人| 国产成人精品久久久久久| 99久国产av精品国产电影| 亚洲第一区二区三区不卡| 超碰成人久久| av网站免费在线观看视频| 下体分泌物呈黄色| 丝袜人妻中文字幕| 亚洲成人一二三区av| 香蕉国产在线看| 亚洲av综合色区一区| 欧美精品一区二区免费开放| 如何舔出高潮| 亚洲国产av影院在线观看| 久久精品国产鲁丝片午夜精品| 亚洲美女视频黄频| 涩涩av久久男人的天堂| 中文精品一卡2卡3卡4更新| 天天影视国产精品| 日韩av免费高清视频| www.熟女人妻精品国产| 国产成人午夜福利电影在线观看| 中文字幕最新亚洲高清| 亚洲久久久国产精品| 日韩成人av中文字幕在线观看| 亚洲,欧美,日韩| 日本av手机在线免费观看| 在线天堂中文资源库| av国产精品久久久久影院| 国产成人精品福利久久| 精品久久久精品久久久| 国产福利在线免费观看视频| 侵犯人妻中文字幕一二三四区| 国产黄色免费在线视频| 美女视频免费永久观看网站| 精品一区二区三区四区五区乱码 | 好男人视频免费观看在线| 欧美激情极品国产一区二区三区| 国产成人a∨麻豆精品| 成人亚洲欧美一区二区av| 国产在视频线精品| 国产成人精品久久二区二区91 | 777久久人妻少妇嫩草av网站| 日韩人妻精品一区2区三区| 亚洲五月色婷婷综合| 国产精品成人在线| 天天躁夜夜躁狠狠躁躁| 亚洲一级一片aⅴ在线观看| 巨乳人妻的诱惑在线观看| 亚洲精品国产一区二区精华液| 久久婷婷青草| 亚洲情色 制服丝袜| 亚洲精品美女久久av网站| 男男h啪啪无遮挡| 叶爱在线成人免费视频播放| 免费日韩欧美在线观看| 亚洲精品日韩在线中文字幕| 如何舔出高潮| 日日撸夜夜添| 欧美97在线视频| 欧美中文综合在线视频| 久久久精品免费免费高清| 国产日韩一区二区三区精品不卡| 国产欧美亚洲国产| 国产在视频线精品| 日韩av不卡免费在线播放| 国产日韩欧美视频二区| 日韩伦理黄色片| 十八禁高潮呻吟视频| 大码成人一级视频| 在线观看人妻少妇| 亚洲国产av影院在线观看| 国产乱人偷精品视频| 十分钟在线观看高清视频www| 亚洲国产欧美日韩在线播放| 免费高清在线观看视频在线观看| 如何舔出高潮| 亚洲一级一片aⅴ在线观看| 成年女人在线观看亚洲视频| 99国产精品免费福利视频| 校园人妻丝袜中文字幕| 国产高清不卡午夜福利| a级毛片黄视频| 亚洲精品自拍成人| 久久久久久久大尺度免费视频| 久久这里只有精品19| 国产日韩欧美在线精品| 欧美精品av麻豆av| 性高湖久久久久久久久免费观看| 咕卡用的链子| 精品福利永久在线观看| 成人二区视频| 女人精品久久久久毛片| 午夜福利一区二区在线看| 日韩成人av中文字幕在线观看| 看十八女毛片水多多多| 在线 av 中文字幕| 只有这里有精品99| 国产在线一区二区三区精| 啦啦啦在线观看免费高清www| 国产成人午夜福利电影在线观看| 一区二区三区四区激情视频| 亚洲第一区二区三区不卡| 一级a爱视频在线免费观看| 欧美精品一区二区免费开放| 日日啪夜夜爽| 国产精品欧美亚洲77777| 亚洲,欧美,日韩| 精品国产国语对白av| 亚洲国产精品一区二区三区在线| 一级黄片播放器| 欧美日韩精品成人综合77777| 十八禁高潮呻吟视频| 有码 亚洲区| 精品少妇黑人巨大在线播放| 丰满少妇做爰视频| 亚洲精品自拍成人| 欧美成人午夜免费资源| 亚洲精品国产一区二区精华液| 尾随美女入室| 日韩欧美精品免费久久| 日韩av在线免费看完整版不卡| 久久久久久免费高清国产稀缺| 国产麻豆69| 成年女人在线观看亚洲视频| 最近中文字幕高清免费大全6| 久久久久久久久久人人人人人人| 午夜激情av网站| 欧美人与性动交α欧美精品济南到 | 日本欧美视频一区| 久久久久久久久免费视频了| 精品国产一区二区三区久久久樱花| 久久久久精品性色| 欧美人与性动交α欧美精品济南到 | 亚洲精品一二三| 国产成人免费无遮挡视频| 国产免费福利视频在线观看| 在线观看www视频免费| 99热网站在线观看| 热99久久久久精品小说推荐| 精品少妇内射三级| 一级,二级,三级黄色视频| 久久久久久久国产电影| 亚洲精品国产一区二区精华液| 欧美人与善性xxx| 精品久久久精品久久久| 国产极品天堂在线| 亚洲少妇的诱惑av| 搡老乐熟女国产| 亚洲经典国产精华液单| 人妻少妇偷人精品九色| 精品国产乱码久久久久久小说| 巨乳人妻的诱惑在线观看| 在线观看美女被高潮喷水网站| 色网站视频免费| 亚洲精品成人av观看孕妇| 久久久精品国产亚洲av高清涩受| 精品视频人人做人人爽| 中文字幕av电影在线播放| 午夜福利网站1000一区二区三区| 久热久热在线精品观看| 欧美精品国产亚洲| 九草在线视频观看| 9热在线视频观看99| 久久精品国产自在天天线| 精品一区二区三卡| xxxhd国产人妻xxx| 国产成人精品久久二区二区91 | 亚洲少妇的诱惑av| 中国国产av一级| 国产av码专区亚洲av| 青春草国产在线视频| 国产97色在线日韩免费| 亚洲国产精品999| 春色校园在线视频观看| 国产精品无大码| 国产日韩欧美在线精品| av国产精品久久久久影院| 国产福利在线免费观看视频| 久久久久久人人人人人| √禁漫天堂资源中文www| 久久精品人人爽人人爽视色| 亚洲精品第二区| av片东京热男人的天堂| 亚洲男人天堂网一区| 欧美 亚洲 国产 日韩一| 亚洲色图 男人天堂 中文字幕| 一级爰片在线观看| 亚洲 欧美一区二区三区| 精品福利永久在线观看| 国产深夜福利视频在线观看| 久久久久人妻精品一区果冻| 最近中文字幕2019免费版| 日韩中文字幕欧美一区二区 | 中文字幕人妻熟女乱码| 午夜免费观看性视频| 精品卡一卡二卡四卡免费| 国产极品天堂在线| 亚洲欧美色中文字幕在线| 日本爱情动作片www.在线观看| 免费观看av网站的网址| 美女视频免费永久观看网站| 日本猛色少妇xxxxx猛交久久| 看十八女毛片水多多多| 韩国av在线不卡| 色吧在线观看| 国产在线视频一区二区| 黄色视频在线播放观看不卡| 极品人妻少妇av视频| 日韩在线高清观看一区二区三区| 人妻人人澡人人爽人人| 波多野结衣一区麻豆| 亚洲精品久久成人aⅴ小说| 好男人视频免费观看在线| av在线观看视频网站免费| 丁香六月天网| 天美传媒精品一区二区| 伊人亚洲综合成人网| 久久精品国产a三级三级三级| av天堂久久9| 黄频高清免费视频| 三上悠亚av全集在线观看| 伦理电影免费视频| 免费观看在线日韩| 天天躁夜夜躁狠狠躁躁| 制服人妻中文乱码| 亚洲欧美精品自产自拍| 狠狠精品人妻久久久久久综合| 国产亚洲午夜精品一区二区久久| 国产免费现黄频在线看| 久久久精品区二区三区| 一边亲一边摸免费视频| 欧美最新免费一区二区三区| 久久久久久免费高清国产稀缺| 国产成人精品婷婷| 亚洲av电影在线进入| 国产无遮挡羞羞视频在线观看| 又粗又硬又长又爽又黄的视频| 国产精品.久久久| 建设人人有责人人尽责人人享有的| 国产一区亚洲一区在线观看| 成人免费观看视频高清| 建设人人有责人人尽责人人享有的| 777米奇影视久久| 90打野战视频偷拍视频| 亚洲成人手机| 欧美亚洲 丝袜 人妻 在线| 亚洲三级黄色毛片| 久久精品国产综合久久久|