[yasunari@giga SourceCD]$ ls -lR .: 合計 103572 drwxrwsr-x 2 yasunari root 4096 Apr 15 22:57 License/ -rw-rw-r-- 1 yasunari root 2307 Nov 3 2002 connect-dos.patch -rw-rw-r-- 1 yasunari root 92160 Nov 3 2002 cron-3.0pl1.tar.gz -rw-rw-r-- 1 yasunari root 112640 Nov 3 2002 dhcpcd-1.3.19-pl5.tar.gz -rw-rw-r-- 1 yasunari root 1208320 Nov 3 2002 e2fsprogs-1.22-2.tar.gz -rw-rw-r-- 1 yasunari root 10675 Nov 3 2002 eucsjis1531.patch -rw-rw-r-- 1 yasunari root 4375426 Nov 3 2002 ghostscript-6.51.tar.gz -rw-rw-r-- 1 yasunari root 259380 Nov 3 2002 hhl-target-ash-0.3.8-mvl2.1.0.6.src.rpm -rw-rw-r-- 1 yasunari root 4694 Nov 3 2002 hhl-target-base-files-2.1.PRO-mvl2.1.0.1.src.rpm -rw-rw-r-- 1 yasunari root 1878261 Nov 3 2002 hhl-target-bash-2.05a-mvl2.1.0.1.src.rpm -rw-rw-r-- 1 yasunari root 9570551 Nov 3 2002 hhl-target-binutils-2.11.2-mvl2.1.0.5.src.rpm -rw-rw-r-- 1 yasunari root 847405 Nov 3 2002 hhl-target-busybox-0.60.2-mvl2.1.0.2.src.rpm -rw-rw-r-- 1 yasunari root 647320 Nov 3 2002 hhl-target-findutils-4.1.7-mvl2.1.0.1.src.rpm -rw-rw-r-- 1 yasunari root 1625478 Nov 3 2002 hhl-target-gawk-3.1.0-mvl2.1.0.2.src.rpm -rw-rw-r-- 1 yasunari root 19198309 Nov 3 2002 hhl-target-glibc-2.2.3-mvl2.1.0.21.src.rpm -rw-rw-r-- 1 yasunari root 469285 Nov 3 2002 hhl-target-grep-2.4.2-mvl2.1.0.1.src.rpm -rw-rw-r-- 1 yasunari root 235868 Nov 3 2002 hhl-target-gzip-1.2.4-mvl2.1.0.2.src.rpm -rw-rw-r-- 1 yasunari root 42033 Nov 3 2002 hhl-target-hdparm-3.9a-mvl2.1.0.2.src.rpm -rw-rw-r-- 1 yasunari root 16546 Nov 3 2002 hhl-target-hostname-2.09-mvl2.1.0.1.src.rpm -rw-rw-r-- 1 yasunari root 76828 Nov 3 2002 hhl-target-ifupdown-0.6.4-mvl2.1.0.2.src.rpm -rw-rw-r-- 1 yasunari root 18107 Nov 3 2002 hhl-target-kernel-headers-2.4.17_mvl21-mvl2.1.0.9.src.rpm -rw-rw-r-- 1 yasunari root 248219 Nov 3 2002 hhl-target-less-358-mvl2.1.0.1.src.rpm -rw-rw-r-- 1 yasunari root 498320 Nov 3 2002 hhl-target-libpng-1.0.8-mvl2.1.0.2.src.rpm -rw-rw-r-- 1 yasunari root 37472 Nov 3 2002 hhl-target-logrotate-3.5.7-mvl2.1.0.1.src.rpm -rw-rw-r-- 1 yasunari root 95079 Nov 3 2002 hhl-target-lpr-0.50-mvl2.1.0.2.src.rpm -rw-rw-r-- 1 yasunari root 2582276 Nov 3 2002 hhl-target-lprng-3.7.4-mvl2.1.0.3.src.rpm -rw-rw-r-- 1 yasunari root 242988 Nov 3 2002 hhl-target-modutils-2.4.13-mvl2.1.0.2.src.rpm -rw-rw-r-- 1 yasunari root 279712 Nov 3 2002 hhl-target-net-tools-1.60-mvl2.1.0.1.src.rpm -rw-rw-r-- 1 yasunari root 51288 Nov 3 2002 hhl-target-netbase-4.06-mvl2.1.0.1.src.rpm -rw-rw-r-- 1 yasunari root 373648 Nov 3 2002 hhl-target-netkit-base-0.10-mvl2.1.0.3.src.rpm -rw-rw-r-- 1 yasunari root 1310506 Nov 3 2002 hhl-target-nvi-1.79-mvl2.1.0.3.src.rpm -rw-rw-r-- 1 yasunari root 2201567 Nov 3 2002 hhl-target-openssl-0.9.6e-mvl2.1.0.5.src.rpm -rw-rw-r-- 1 yasunari root 479886 Nov 3 2002 hhl-target-pam-0.72-mvl2.1.0.4.src.rpm -rw-rw-r-- 1 yasunari root 154013 Nov 3 2002 hhl-target-pciutils-2.1.8-mvl2.1.0.2.src.rpm -rw-rw-r-- 1 yasunari root 6067471 Nov 3 2002 hhl-target-perl-5.6.1-mvl2.1.0.3.src.rpm -rw-rw-r-- 1 yasunari root 236437 Nov 3 2002 hhl-target-procps-2.0.7-mvl2.1.0.3.src.rpm -rw-rw-r-- 1 yasunari root 288371 Nov 3 2002 hhl-target-sed-3.02-mvl2.1.0.2.src.rpm -rw-rw-r-- 1 yasunari root 1706068 Nov 3 2002 hhl-target-shellutils-2.0.11-mvl2.1.0.2.src.rpm -rw-rw-r-- 1 yasunari root 107471 Nov 3 2002 hhl-target-sysklogd-1.3.31-mvl2.1.0.2.src.rpm -rw-rw-r-- 1 yasunari root 141623 Nov 3 2002 hhl-target-sysutils-1.3.8.1-mvl2.1.0.1.src.rpm -rw-rw-r-- 1 yasunari root 1171908 Nov 3 2002 hhl-target-tar-1.13.19-mvl2.1.0.3.src.rpm -rw-rw-r-- 1 yasunari root 119193 Nov 3 2002 hhl-target-tcp-wrappers-7.6-mvl2.1.0.2.src.rpm -rw-rw-r-- 1 yasunari root 118037 Nov 3 2002 hhl-target-time-1.7-mvl2.1.0.1.src.rpm -rw-rw-r-- 1 yasunari root 109361 Nov 3 2002 hhl-target-which-2.12-mvl2.1.0.2.src.rpm -rw-rw-r-- 1 yasunari root 27238400 Mar 12 08:10 linux-2.4.17_mvl21-sandpoint.tar.gz -rw-rw-r-- 1 yasunari root 31664 Nov 3 2002 murasaki-0.6.11.tar.gz -rw-rw-r-- 1 yasunari root 835649 Nov 3 2002 netatalk-1.5.5.tar.gz -rw-rw-r-- 1 yasunari root 471040 Nov 3 2002 nkf201-2002.12.07.tar.gz -rw-rw-r-- 1 yasunari root 533 Nov 3 2002 realpath.patch -rw-rw-r-- 1 yasunari root 14929920 Nov 3 2002 samba-2.2.8a-ja-1.1-beta5.tar.gz -rw-rw-r-- 1 yasunari root 819200 Nov 3 2002 shadow-20000902.tar.gz -rw-rw-r-- 1 yasunari root 540 Nov 3 2002 skeychallenge.patch -rw-rw-r-- 1 yasunari root 112640 Nov 3 2002 sysvinit-2.78.tar.gz -rw-rw-r-- 1 yasunari root 128696 Nov 3 2002 thttpd-2.23beta1.tar.gz -rw-rw-r-- 1 yasunari root 1423360 Nov 3 2002 util-linux-2.11h.tar.gz -rw-rw-r-- 1 yasunari root 354784 Nov 3 2002 wu-ftpd-2.6.2.tar.gz ./License: 合計 100 -rw-rw-r-- 1 yasunari root 3406 May 29 2003 COPYRIGHT.txt -rw-rw-r-- 1 yasunari root 47786 May 24 2003 GNU_LICENSE.pdf -rw-rw-r-- 1 yasunari root 18347 May 20 2003 gpl.txt -rw-rw-r-- 1 yasunari root 26934 May 20 2003 lgpl.txt
どちらかにしかファイルはないようである。
差のあるファイルは、これだけ。
ファイル名 | ちがい |
.hhl_target_lspname | 型番 |
Makefile | 型番 |
arch/ppc/boot/common/misc-simple.c | 改行 |
arch/ppc/boot/sandpoint/head.S | 改行 |
arch/ppc/kernel/melco_hwctl.c | 改行 |
arch/ppc/kernel/melco_rtc.c | 改行 |
arch/ppc/platforms/sandpoint_setup.c | 型番 |
drivers/block/flashdisk/flashdisk.c | 改行+差分 |
drivers/char/mel_rtc.c | 改行 |
firminfo.txt | 型番 |
fs/super.c | 差分 |
include/melco/bootinfo.h | 改行 |
include/melco/firminfo.h | 改行 |
include/melco/flashd.h | 改行 |
include/melco/melco_hwctl.h | 改行 |
include/melco/melco_rtc.h | 改行 |
include/melco/melco_serial.h | 改行 |
mm/mmap.c | 差分 |
mm/mremap.c | 差分 |
! struct flashd_list area_list[] = { ! { 0xFFF80000, 0x80000 , ROM_ON_BORD }, ! { 0xFFC00000, 0x300000 , ROM_ON_BORD }, ! { 0xFFF00000, 0x70000 , ROM_ON_BORD }, ! { 0xFFF70000, 0x10000 , ROM_ON_BORD }, ! { 0xFFF80000, 0x80000 , ROM_MINIPCI }, ! { 0xFF800000, 0x600000 , ROM_MINIPCI }, ! { 0xFFF00000, 0x80000 , ROM_MINIPCI }, ! { 0 , 0 , 0 } ! };HLAN は
! struct flashd_list area_list[] = { ! { 0xFFF80000, 0x80000 , ROM_ON_BORD }, ! { 0xFFC00000, 0x300000 , ROM_ON_BORD }, ! { 0xFFF00000, 0x70000 , ROM_ON_BORD }, ! { 0xFFF70000, 0x10000 , ROM_ON_BORD }, ! { 0xFFC00000, 0x400000 , ROM_ON_BORD }, ! { 0xFFF80000, 0x80000 , ROM_MINIPCI }, ! { 0xFF800000, 0x600000 , ROM_MINIPCI }, ! { 0xFFF00000, 0x80000 , ROM_MINIPCI }, ! { 0 , 0 , 0 } ! };HLAN 1.40 で /dev/fl4 が増えたことを裏付けている。
diff -arc kurobako/source_CD/linux-2.4.17_kuro-box/fs/super.c HLAN/source_CD/linux-2.4.17_mvl21-sandpoint/fs/super.c *** kurobako/source_CD/linux-2.4.17_kuro-box/fs/super.c 2004-03-15 00:13:56.000000000 +0900 --- HLAN/source_CD/linux-2.4.17_mvl21-sandpoint/fs/super.c 2004-02-18 16:43:00.000000000 +0900 *************** *** 1035,1054 **** { unsigned long *flag_addr; unsigned long ng_word; - int boot_hdd = 1; flag_addr = (unsigned long *)(0xFFF70000); ng_word = 0x4e474e47; ! if (*flag_addr == ng_word) ! boot_hdd = 0; ! ! if (boot_hdd == 0) { strcpy(root_device_name, "rd/0"); ROOT_DEV = MKDEV (1, 0); ! printk("Boot from initrd.\n"); ! } else ! printk("Boot from /dev/hda1.\n"); } #endif /* CONFIG_CMDLINE */ --- 1035,1050 ---- { unsigned long *flag_addr; unsigned long ng_word; flag_addr = (unsigned long *)(0xFFF70000); ng_word = 0x4e474e47; + printk("%8x:%4x\n", flag_addr, *flag_addr); ! if (*flag_addr == ng_word) { strcpy(root_device_name, "rd/0"); ROOT_DEV = MKDEV (1, 0); ! printk("changed boot device.\n"); ! } } #endif /* CONFIG_CMDLINE */HLAN の方がきれいやん。
まず、kernel 2.4.17 オリジナルソース の mremap.c と比較する。 HLAN は、
[yasunari@giga linkstation]$ diff -rc kernel/linux-2.4.17/mm/mremap.c firmware/HLAN/source_CD/linux-2.4.17_mvl21-sandpoint/mm/mremap.c *** kernel/linux-2.4.17/mm/mremap.c 2001-09-21 12:31:26.000000000 +0900 --- firmware/HLAN/source_CD/linux-2.4.17_mvl21-sandpoint/mm/mremap.c 2004-02-18 16:43:00.000000000 +0900 *************** *** 118,124 **** flush_cache_range(mm, new_addr, new_addr + len); while ((offset += PAGE_SIZE) < len) move_one_page(mm, new_addr + offset, old_addr + offset); ! zap_page_range(mm, new_addr, len); return -1; } --- 118,124 ---- flush_cache_range(mm, new_addr, new_addr + len); while ((offset += PAGE_SIZE) < len) move_one_page(mm, new_addr + offset, old_addr + offset); ! zap_page_range(mm, new_addr, len, ZPR_NORMAL); return -1; }と1行だけオリジナルと異なる。
[yasunari@giga linkstation]$ diff -rc kernel/linux-2.4.17/mm/mremap.c firmware/kurobako/source_CD/linux-2.4.17_kuro-box/mm/m remap.c *** kernel/linux-2.4.17/mm/mremap.c 2001-09-21 12:31:26.000000000 +0900 --- firmware/kurobako/source_CD/linux-2.4.17_kuro-box/mm/mremap.c 2004-03-18 10:53:56.000000000 +0900 *************** *** 118,124 **** flush_cache_range(mm, new_addr, new_addr + len); while ((offset += PAGE_SIZE) < len) move_one_page(mm, new_addr + offset, old_addr + offset); ! zap_page_range(mm, new_addr, len); return -1; } --- 118,124 ---- flush_cache_range(mm, new_addr, new_addr + len); while ((offset += PAGE_SIZE) < len) move_one_page(mm, new_addr + offset, old_addr + offset); ! zap_page_range(mm, new_addr, len, ZPR_NORMAL); return -1; } *************** *** 237,242 **** --- 237,250 ---- if (new_len > TASK_SIZE || new_addr > TASK_SIZE - new_len) goto out; + /* + * Allow new_len == 0 only if new_addr == addr + * to preserve truncation in place (that was working + * safe and some app may depend on it). + */ + if (unlikely(!new_len && new_addr != addr)) + goto out; + /* Check if the location we're moving into overlaps the * old location at all, and fail if it does. */ *************** *** 246,261 **** if ((addr <= new_addr) && (addr+old_len) > new_addr) goto out; ! do_munmap(current->mm, new_addr, new_len); } /* * Always allow a shrinking remap: that just unmaps * the unnecessary pages.. */ - ret = addr; if (old_len >= new_len) { ! do_munmap(current->mm, addr+new_len, old_len - new_len); if (!(flags & MREMAP_FIXED) || (new_addr == addr)) goto out; } --- 254,273 ---- if ((addr <= new_addr) && (addr+old_len) > new_addr) goto out; ! ret = do_munmap(current->mm, new_addr, new_len); ! if (ret && new_len) ! goto out; } /* * Always allow a shrinking remap: that just unmaps * the unnecessary pages.. */ if (old_len >= new_len) { ! ret = do_munmap(current->mm, addr+new_len, old_len - new_len); ! if (ret && old_len != new_len) ! goto out; ! ret = addr; if (!(flags & MREMAP_FIXED) || (new_addr == addr)) goto out; }と HLAN での変更に加えて、さらに変更が加えられている。
これが、Monta Vista によるものなのか、 Buffallo によるものかを見るために、 カーネルの差分を追いかけることにする。
mm/mremap.c は kernel-2.4.17 の後、
kernel-2.4.22 で変更が加えられているが、
これは、HLAN とも 玄箱 とも違う
kernel-2.4.24 で、
diff -urN linux-2.4.23/mm/mremap.c linux-2.4.24/mm/mremap.c --- linux-2.4.23/mm/mremap.c 2003-08-25 04:44:44.000000000 -0700 +++ linux-2.4.24/mm/mremap.c 2004-01-05 05:53:56.000000000 -0800 @@ -241,6 +241,13 @@ if (new_len > TASK_SIZE || new_addr > TASK_SIZE - new_len) goto out; + /* + * Allow new_len == 0 only if new_addr == addr + * to preserve truncation in place (that was working + * safe and some app may depend on it). + */ + if (unlikely(!new_len && new_addr != addr)) + goto out; /* Check if the location we're moving into overlaps the * old location at all, and fail if it does.となっていて、これは 玄箱にのみ取り込まれている
kernel-2.4.25 で、
diff -urN linux-2.4.24/mm/mremap.c linux-2.4.25/mm/mremap.c --- linux-2.4.24/mm/mremap.c 2004-01-05 05:53:56.000000000 -0800 +++ linux-2.4.25/mm/mremap.c 2004-02-18 05:36:32.000000000 -0800 @@ -258,16 +258,20 @@ if ((addr <= new_addr) && (addr+old_len) > new_addr) goto out; - do_munmap(current->mm, new_addr, new_len); + ret = do_munmap(current->mm, new_addr, new_len); + if (ret && new_len) + goto out; } /* * Always allow a shrinking remap: that just unmaps * the unnecessary pages.. */ - ret = addr; if (old_len >= new_len) { - do_munmap(current->mm, addr+new_len, old_len - new_len); + ret = do_munmap(current->mm, addr+new_len, old_len - new_len); + if (ret && old_len != new_len) + goto out; + ret = addr; if (!(flags & MREMAP_FIXED) || (new_addr == addr)) goto out; }となっていて、これも 玄箱にのみ取り込まれている。
kernel-2.4.26 での修正は、取り込まれていない。
ということで、mm/mremap.c だけを見ると、
玄箱 のカーネルソースは(あくまでソースは)
オリジナルのカーネルの修正を取り込んでいる部分もある。
どういう基準で取り込んでいるかは不明。
また、どの範囲で取り込んでいるのかも不明(調べれば判るけど)
セキュリティパッチを全部取り込んでくれていればいいのだけれど、、、
&&
このソースをコンパイルしたカーネルが動いてくれていると
いいのだけれど、、、
また、Monta Vista か Buffalo かが手を入れた部分もある。
(zap_page_range() の引数の変更)
これは、Monta Vista Linux の mm/mremap.c を見れば判るんだろうが、
結局 MVL のソースは手に入れてないし、、、
玄箱 1.01 のビルド日は2月9日、
HLAN 1.40 のビルド日は3月5日。
後に出た HLAN 1.40 の方がオクレているとは、、、
ちゃんとした構成管理、できていなさそう。
← | LinkStation/玄箱 をハックしよう | → write_ok,write_ng(2) |