日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

0.11内核rd_load@ramdisk.c中memcpy函数好像有bug

發(fā)布時(shí)間:2025/7/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 0.11内核rd_load@ramdisk.c中memcpy函数好像有bug 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

0.11內(nèi)核rd_load@ramdisk.c中memcpy函數(shù)好像有bug,如:
#define memcpy(dst,src,n) \
?? ?__asm__("cld;rep;movsl"::"D"((long)(dst)),"S"((long)(src)), "c"((long)(n)/4))

//memcpy(cp, bh->b_data, BLOCK_SIZE);
?? ?for (j=0; j<BLOCK_SIZE; j++)
?? ??? ?cp[j] = bh->b_data[j];

?? ?if (block == 256+1) {
?? ??? ?struct d_super_block * s2 = (struct d_super_block *) cp;
?? ??? ?if (s2->s_magic != SUPER_MAGIC) {
?? ??? ??? ?/* No ram disk image present, assume normal floppy boot */
?? ??? ??? ?DBUG("ds=0x%x es=0x%x fs=0x%x pid=%d", get_ds(), get_es(), get_fs(), current->pid);
?? ??? ??? ?DBUG("TEST1 super block failed, s2->s_magic != SUPER_MAGIC");
?? ??? ?}
?? ??? ?s2 = (struct d_super_block *) bh->b_data;
?? ??? ?if (s2->s_magic != SUPER_MAGIC) {
?? ??? ??? ?/* No ram disk image present, assume normal floppy boot */
?? ??? ??? ?DBUG("TEST2 super block failed, s2->s_magic != SUPER_MAGIC");
?? ??? ?}? else {
?? ??? ??? ?DBUG("TEST2 OK");
?? ??? ?}
?? ?}
跟蹤發(fā)現(xiàn):使用memcpy函數(shù)復(fù)制,內(nèi)容沒有復(fù)制過來.
使用字節(jié)拷貝可以正常復(fù)制,是gcc-4.4.3 (ubuntu-8.04 server)bug?

objdump -d ramdisk.o
發(fā)現(xiàn):
?25b:?? ?0f 84 8f 01 00 00?? ??? ?je???? 3f0 <rd_load+0x330>
?261:?? ?8b 75 00??????????? ??? ?mov??? 0x0(%ebp),%esi
?264:?? ?b9 00 04 00 00????? ??? ?mov??? $0x400,%ecx
?269:?? ?fc????????????????? ??? ?cld?? ?
?26a:?? ?f3 a4?????????????? ??? ?rep movsb %ds:(%esi),%es:(%edi)
?
?對%edi未設(shè)置

轉(zhuǎn)載于:https://www.cnblogs.com/mull/p/7851854.html

總結(jié)

以上是生活随笔為你收集整理的0.11内核rd_load@ramdisk.c中memcpy函数好像有bug的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。