HD-HLAN $B%=!<%9(b CD


$B$h$&$d$/(B HD-HLAN $B$N%=!<%9(b CD $B$,FO$$$?!#(B
$B!V:FG[I[6X;_!W$C$F=q$$$F$"$k!#$J$s$@$+$J!<(b

$BF~$C$F$$$k$b$N(B

[yasunari@giga SourceCD]$ ls -lR
.:
$B9g7W(B 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$BG/(B12$B7n(B07$BF|(B.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:
$B9g7W(B 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

$B%+!<%m%k%=!<%9(b

linux-2.4.17_mvl21-sandpoint.tar.gz $B$rE83+$7!"(B $B8$B$N%+!<%m%k%=!<%9$hhf3s$7$f$_$k(b

$B$I$A$i$+$K$7$+%U%!%$%k$O$J$$$h$&$G$"$k!#(B
$B:9$N$"$k%U%!%$%k$O!"$3$l$@$1!#(B

$B%U%!%$%kL>(B $B$A$,$$(B
.hhl_target_lspname $B7?HV(B
Makefile $B7?HV(B
arch/ppc/boot/common/misc-simple.c $B2~9T(B
arch/ppc/boot/sandpoint/head.S $B2~9T(B
arch/ppc/kernel/melco_hwctl.c $B2~9T(B
arch/ppc/kernel/melco_rtc.c $B2~9T(B
arch/ppc/platforms/sandpoint_setup.c $B7?HV(B
drivers/block/flashdisk/flashdisk.c $B2~9T(B+$B:9J,(B
drivers/char/mel_rtc.c $B2~9T(B
firminfo.txt $B7?HV(B
fs/super.c $B:9J,(B
include/melco/bootinfo.h $B2~9T(B
include/melco/firminfo.h $B2~9T(B
include/melco/flashd.h $B2~9T(B
include/melco/melco_hwctl.h $B2~9T(B
include/melco/melco_rtc.h $B2~9T(B
include/melco/melco_serial.h $B2~9T(B
mm/mmap.c $B:9J,(B
mm/mremap.c $B:9J,(B
$B2~9T(B:$B2~9T%3!<%i$n0c$$(b
$B7?HV(B:$B%b%G%k(B($B7?HV(B)$B$N0c$$$KH<$&:9j,(b
$B:9J,(B:$B $Bdrivers/block/flashdisk/flashdisk.c $B8$B$O!"(B
! 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 $B$O(B
! 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 $B$G(B /dev/fl4 $B$,A}$($?$3$H$rN"IU$1$F$$$k!#(B
ROM_MINIPCI $B$C$F$J$s$@$m$&(B?

fs/super.c

$B0JA0!V%j%U%!%/%?%j%s%0$,B-$j$s$J!W$H$7$?(B$B$H$3$m!#(B
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$BG/(B03$B7n(B15$BF|(B 00:13:56.000000000 +0900
--- HLAN/source_CD/linux-2.4.17_mvl21-sandpoint/fs/super.c	2004$BG/(B02$B7n(B18$BF|(B 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 $B$NJ}$,$-$l$$$d$s!#(B
$B$7$+$7!"$3$s$J$H$3$m!"$J$s$G(B HLAN $B$H(B $B8 $B$H$G(B $B%=!<%9$,jq$o$c$f$k$s$@$m$&(b?

mm/mmap.c,mm/mremap.c

$BJQ$o$C$F$k$,!"$h$/$o$+$i$s!#(B
$B$3$s$J$H$3$m!"(BBUFFALO $B$, $B$R$g$C$H$9$k$H(B kernel $B$N%"%C%W%G!<%h$kdi=>$7$?$+(B???

$B$^$:!"(Bkernel 2.4.17 $B%*%j%8%J%k%=!<%9(b $B$N(B mremap.c $B$HHf3S$9$k!#(B HLAN $B$O!"(B

[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$BG/(B09$B7n(B21$BF|(B 12:31:26.000000000 +0900
--- firmware/HLAN/source_CD/linux-2.4.17_mvl21-sandpoint/mm/mremap.c 2004$BG/(B02$B7n(B18$BF|(B 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; } 
$B$H(B1$B9T$@$1%*%j%8%J%k$H0[$J$k!#(B
$B8$B$O!"(B
[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$BG/(B09$B7n(B21$BF|(B 12:31:26.000000000 +0900
--- firmware/kurobako/source_CD/linux-2.4.17_kuro-box/mm/mremap.c 2004$BG/(B03$B7n(B18$BF|(B 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;
 }
$B$H(B HLAN $B$G$NJQ99$K2C$($F!"$5$i$KJQ99$,2C$($i$l$F$$$k!#(B
mm/mmap.c $B$bF1MM$K!"(B
HLAN $B$G(B 2.4.17 $B$N%*%j%8%J%k$+$iJQ99$5$l$F$$$F!"(B
$B8 $B$G$O!"$5$i$KJQ99$,2C$($i$l$F$$$k(B

$B$3$l$,!"(BMonta Vista $B$K$h$k$b$N$J$N$+!"(B Buffallo $B$K$h$k$b$N$+$r8+$k$?$a$K!"(B $B%+!<%m%k$n:9j,$rdi$$$+$1$k$3$h$k$9$k!#(b

mm/mremap.c $B$O(B kernel-2.4.17 $B$N8e!"(B
kernel-2.4.22 $B$GJQ99$,2C$($i$l$F$$$k$,!"(B $B$3$l$O!"(BHLAN $B$H$b(B $B8 $B$H$b0c$&(B

kernel-2.4.24 $B$G!"(B

diff -urN linux-2.4.23/mm/mremap.c linux-2.4.24/mm/mremap.c
--- linux-2.4.23/mm/mremap.c 2003$BG/(B08$B7n(B25$BF|(B 04:44:44.000000000 -0700
+++ linux-2.4.24/mm/mremap.c 2004$BG/(B01$B7n(B05$BF|(B 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.
$B$H$J$C$F$$$F!"$3$l$O(B $B8$B$K$N$_ $B$3$N=$@5$O!"(B CAN-2003-0985 $B$N$h$&$G$"$k(B

kernel-2.4.25 $B$G!"(B

diff -urN linux-2.4.24/mm/mremap.c linux-2.4.25/mm/mremap.c
--- linux-2.4.24/mm/mremap.c 2004$BG/(B01$B7n(B05$BF|(B 05:53:56.000000000 -0800
+++ linux-2.4.25/mm/mremap.c 2004$BG/(B02$B7n(B18$BF|(B 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;
 }
$B$H$J$C$F$$$F!"$3$l$b(B $B8$B$K$N$_ $B$3$N=$@5$O!"(B CAN-2004-0077

kernel-2.4.26 $B$G$N=$@5$O!" $B$H$$$&$3$H$G!"(Bmm/mremap.c $B$@$1$r8+$k$H!"(B $B8 $B$N%+!<%m%k%=!<%9$o(b($b$"$/$^$g%=!<%9$o(b) $B%*%j%8%J%k$N%+!<%m%k$n=$@5$r $B$I$&$$$&4p=`$G $B$^$?!"$I$NHO0O$G $B%;%-%e%j%F%#%Q%C%A$rA4It &&
$B$3$N%=!<%9$r%3%s%q%$%k$7$?%+!<%m%k$,f0$$$f$/$l$f$$$k$h(b $B$$$$$N$@$1$l$I!"!"!"(B

$B$^$?!"(BMonta Vista $B$+(B Buffalo $B$+$, (zap_page_range() $B$N0z?t$NJQ99(B) $B$3$l$O!"(BMonta Vista Linux $B$N(B mm/mremap.c $B$r8+$l$PH=$k$s$@$m$&$,!"(B $B7k6I(B MVL $B$N%=!<%9$o $B8 1.01 $B$N%S%k%IF|$O(B2$B7n(B9$BF|!"(B
HLAN 1.40 $B$N%S%k%IF|$O(B3$B7n(B5$BF|!#(B
$B8e$K=P$?(B HLAN 1.40 $B$NJ}$,%*%/%l$F$$$k$H$O!"!"!"(B

$B$A$c$s$H$7$?9=@.4IM}!"$G$-$F$$$J$5$=$&!#(B



Copyright (C) 2004 Yasunari Yamashita. All Rights Reserved.
yasunari @ yamasita.jp
$B;32<9/@.(b@$B5~ETI\8~F|;T(B

AltStyle $B$K$h$C$FJQ49$5$l$?%Z!<%8(b (->$B%*%j%8%J%k(B) /