1)NTTのGPL著作権表示義務違反
2010年3月22日の時点で、
さて、NTTによれば、「公開準備中」という回答なのだが、時間稼ぎをしてうやむやにするつもりなのかな。もう一ヶ月も待たされているのだけどね。
という説明が、担当者からあったけれども、結局3年経った現時点においても公開の正式アナウンスはない(個別には対応していると思うが、当初説明の「正式公開」とは違うと思う)。
すくなくとも、最新バージョンのダウンロードのページの周辺にわかりやすい位置にその旨を表示することをGPLは要請していたと思うが、見つからないと思う。
2) バイナリファイルの形式
配布されている バイナリファイルは単純に tar+gz でまとめただけのものなので、それを4つのファイル(CALLTBL.DEF,FILEINFO.TXT,KERNEL.BIN,ROOTIMG.BIN)に戻すのは容易い。
このうち、KERNEL.BINはlinuxのkernelで、これを黙って配布している点ですでに 完全に黒のGPL違反。
BOOTIMG.BINは、jffs2形式のファイルシステムイメージなので、これを読むには、(debianの場合)
a. apt-get install mtd-utils
b. bigendian形式なので、littleendian 形式に変換する。
jffs2dump -b --endianconvert=ROOTIMG.BIN.LE ROOTIMG.BIN
c. loopbackでマウントする。
modprobe mtd
modprobe mtdblock
modprobe jffs2
losetup -vf ROOTIMG.BIN.LE
modprobe block2mtd block2mtd=/dev/loop0,131072
mount -r -t jffs2 /dev/mtdblock0 /mnt
パスワードファイルとかは昔と変化していないみたいね。
( vr-engineerのパスワードも、rootのパスワードも、vr-mainteのパスワードも相変わらず、PARA.BINの中に平文で書かれている。vr-mainteの方は以前に比べると多少判りにくい位置に移動しているけれど、 vr-engineerとrootのはとても判りやすい場所に残っている。)
3) 問題の修正部分(6.30.18)
diff -c -r OS/drivers/vr/madwifi/madwifi/ath/if_ath_pci.c OS.modified/drivers/vr/madwifi/madwifi/ath/if_ath_pci.c
*** OS/drivers/vr/madwifi/madwifi/ath/if_ath_pci.c 2010-04-07 08:10:59.000000000 +0900
--- OS.modified/drivers/vr/madwifi/madwifi/ath/if_ath_pci.c 2010-05-11 12:35:54.000000000 +0900
***************
*** 81,102 ****
* the HAL check them by defining a probe method.
*/
static struct pci_device_id ath_pci_id_table[] __devinitdata = {
! { 0x168c, 0x0007, PCI_ANY_ID, PCI_ANY_ID },
! { 0x168c, 0x0012, PCI_ANY_ID, PCI_ANY_ID },
! { 0x168c, 0x0013, PCI_ANY_ID, PCI_ANY_ID },
! { 0xa727, 0x0013, PCI_ANY_ID, PCI_ANY_ID }, /* 3com */
! { 0x10b7, 0x0013, PCI_ANY_ID, PCI_ANY_ID }, /* 3com 3CRDAG675 */
! { 0x168c, 0x1014, PCI_ANY_ID, PCI_ANY_ID }, /* IBM minipci 5212 */
! { 0x168c, 0x101a, PCI_ANY_ID, PCI_ANY_ID }, /* some Griffin-Lite */
! { 0x168c, 0x0015, PCI_ANY_ID, PCI_ANY_ID },
! { 0x168c, 0x0016, PCI_ANY_ID, PCI_ANY_ID },
! { 0x168c, 0x0017, PCI_ANY_ID, PCI_ANY_ID },
! { 0x168c, 0x0018, PCI_ANY_ID, PCI_ANY_ID },
! { 0x168c, 0x0019, PCI_ANY_ID, PCI_ANY_ID },
! { 0x168c, 0x001a, PCI_ANY_ID, PCI_ANY_ID },
! { 0x168c, 0x001b, PCI_ANY_ID, PCI_ANY_ID },
! { 0x168c, 0x001c, PCI_ANY_ID, PCI_ANY_ID }, /* PCI Express 5424 */
! { 0x168c, 0x001d, PCI_ANY_ID, PCI_ANY_ID }, /* PCI Express ??? */
{ 0 }
};
--- 81,104 ----
* the HAL check them by defining a probe method.
*/
static struct pci_device_id ath_pci_id_table[] __devinitdata = {
! // { 0x168c, 0x0007, PCI_ANY_ID, PCI_ANY_ID },
! // { 0x168c, 0x0012, PCI_ANY_ID, PCI_ANY_ID },
! // { 0x168c, 0x0013, PCI_ANY_ID, PCI_ANY_ID },
! // { 0xa727, 0x0013, PCI_ANY_ID, PCI_ANY_ID }, /* 3com */
! // { 0x10b7, 0x0013, PCI_ANY_ID, PCI_ANY_ID }, /* 3com 3CRDAG675 */
! // { 0x168c, 0x1014, PCI_ANY_ID, PCI_ANY_ID }, /* IBM minipci 5212 */
! // { 0x168c, 0x101a, PCI_ANY_ID, PCI_ANY_ID }, /* some Griffin-Lite */
! // { 0x168c, 0x0015, PCI_ANY_ID, PCI_ANY_ID },
! // { 0x168c, 0x0016, PCI_ANY_ID, PCI_ANY_ID },
! // { 0x168c, 0x0017, PCI_ANY_ID, PCI_ANY_ID },
! // { 0x168c, 0x0018, PCI_ANY_ID, PCI_ANY_ID },
! // { 0x168c, 0x0019, PCI_ANY_ID, PCI_ANY_ID },
! // { 0x168c, 0x001a, PCI_ANY_ID, PCI_ANY_ID },
! // { 0x168c, 0x001b, PCI_ANY_ID, PCI_ANY_ID },
! { 0x168c, 0x001b, 0x1021, 0x1010 }, /* SC-32KI new */
! { 0x168c, 0x001b, 0x168c, 0x1062 }, /* SC-32KI */
! // { 0x168c, 0x001c, PCI_ANY_ID, PCI_ANY_ID }, /* PCI Express 5424 */
! // { 0x168c, 0x001d, PCI_ANY_ID, PCI_ANY_ID }, /* PCI Express ??? */
{ 0 }
};
***************
*** 142,148 ****
if (pci_enable_device(pdev))
return (-EIO);
!
if (pci_request_regions (pdev, "ath"))
goto bad;
--- 144,150 ----
if (pci_enable_device(pdev))
return (-EIO);
! // mizutani
if (pci_request_regions (pdev, "ath"))
goto bad;
***************
*** 174,180 ****
* set it to the value used by other systems. It may be worth
* tweaking this setting more.
*/
! pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0xa8);
pci_set_master(pdev);
--- 176,182 ----
* set it to the value used by other systems. It may be worth
* tweaking this setting more.
*/
! pci_write_config_byte(pdev, PCI_LATENCY_TIMER, 0xa8); // mizutani
pci_set_master(pdev);
***************
*** 196,202 ****
}
*/
mem = (unsigned long) ioremap(phymem, pci_resource_len(pdev, 0));
!
if (!mem) {
printk(KERN_ERR "ath_pci: cannot remap PCI memory region\n") ;
--- 198,204 ----
}
*/
mem = (unsigned long) ioremap(phymem, pci_resource_len(pdev, 0));
! //mem = phymem;
if (!mem) {
printk(KERN_ERR "ath_pci: cannot remap PCI memory region\n") ;
***************
*** 238,243 ****
--- 240,257 ----
if (ath_attach(id->device, dev) != 0)
goto bad4;
+ if( id->vendor == 0x168c && id->device == 0x001b &&
+ id->subvendor == 0x168c && id->subdevice == 0x1062){
+
+ if( !(dev->dev_addr[0] == 0x00 &&
+ dev->dev_addr[1] == 0x80 &&
+ dev->dev_addr[2] == 0x87 )) {
+
+ ath_detach(dev);
+ goto bad4;
+ }
+ }
+
athname = ath_hal_probe(id->vendor, id->device);
printk(KERN_INFO "%s: %s: mem=0x%lx, irq=%d\n",
dev->name, athname ? athname : "Atheros ???", phymem, dev->irq);
どう見てもセコイ修正だな。プログラムの改良となるべき部分は一切無し。ひたすら改悪が目的の修正だ。
デーブルの大きさが2になってしまったので、binary patchだと、2種類のカードしか使えないけれど、修正するべき場所は多分、0x168c で binary fileを検索してやれば、すぐにわかるのではないかな。
0 件のコメント:
コメントを投稿