Skip to contentSkip to conversation

Linux 2.6.9-ac3

PATCH New Alan Cox 4 participants 6 messages Oct 22, 2004

Subsystems (3)
lore
Share & tools
lore

Alan Cox

author
#0 lore raw

ftp://ftp.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.9/

2.6.9-ac3
o Fix syncppp/async ppp problems with new hangup (Paul Fulghum)
o Fix broken parport_pc unload (Andrea Arcangeli)
o Security fix for smbfs leak/overrun (Urban Widmark)
o Stop i8xx_tco making some boxes reboot on load (wim@iguana)
o Fix cpia/module tools deadlock (Peter Pregler)
o Fix missing suid_dumpable export (Alan Cox)

2.6.9-ac2
o Fix invalid kernel version stupidity (Adrian Bunk)
o Compiler ICE workaround/fixup (Linus Torvalds)
o Fix network DoS bug in 2.6.9 (Herbert Xu)
| Suggested by Sami Farin
o Flash lights on panic as in 2.4 (Andi Kleen)

2.6.9-ac1

Security Fixes
o Set VM_IO on areas that are temporarily (Alan Cox)
marked PageReserved (Serious bug)
o Lock ide-proc against driver unload (Alan Cox)
(very low severity)

Bug Fixes
o Working IDE locking (Alan Cox)
| And a great deal of review by Bartlomiej
o Handle E7xxx boxes with USB legacy flaws (Alan Cox)

Functionality
o Allow booting with "irqpoll" or "irqfixup" (Alan Cox)
on systems with broken IRQ tables.
o Support for setuid core dumping in some (Alan Cox)
environments (off by default)
o Support for drives that don't report geometry
o IT8212 support (raid and passthrough) (Alan Cox)
o Allow IDE to grab all unknown generic IDE (Alan Cox)
devices (boot with "all-generic-ide")
o Restore PWC driver (Luc Saillard)

Other
o Small pending tty clean-up to moxa (Alan Cox)
o Put VIA Velocity (tm) adapters under gigabit (VIA)

#1 lore raw
Quoted 3 lines

Bug Fixes
o Working IDE locking (Alan Cox)
| And a great deal of review by Bartlomiej

Mmm.. may still have some issues.

Here's what "cardctl eject" now gives on unload of ide-cs:

bad: scheduling while atomic!

 [<c02a0f7e>] schedule+0x4de/0x4f0
 [<c0119451>] __wake_up_common+0x41/0x60
 [<c02a1079>] wait_for_completion+0x99/0xf0
 [<c01193f0>] default_wake_function+0x0/0x20
 [<c01193f0>] default_wake_function+0x0/0x20
 [<c012c8a8>] queue_work+0x68/0x80
 [<c012c791>] call_usermodehelper+0xe1/0xf0
 [<c012c640>] __call_usermodehelper+0x0/0x70
 [<c01bdc7d>] kset_hotplug+0x1dd/0x240
 [<c01bdd3a>] kobject_hotplug+0x5a/0x60
 [<c01be07b>] kobject_del+0x1b/0x40
 [<c01be0b3>] kobject_unregister+0x13/0x30
 [<c018cef9>] del_gendisk+0x39/0xe0
 [<c0223cd8>] idedisk_cleanup+0x48/0x60
 [<c0212fd6>] __ide_unregister_hwif+0x506/0x5c0
 [<c0196be8>] ext3_mark_iloc_dirty+0x28/0x40
 [<c02130b6>] ide_unregister_hwif+0x26/0x40
 [<e092da23>] ide_release+0x73/0x80 [ide_cs]
 [<c0118992>] activate_task+0x62/0x80
 [<e092d1b6>] ide_detach+0x86/0xa0 [ide_cs]
 [<e08b5b19>] unbind_request+0xc9/0xd0 [ds]
 [<e08b62fd>] ds_ioctl+0x3dd/0x690 [ds]
 [<c029c25d>] unix_dgram_sendmsg+0x36d/0x570
 [<c0230ce0>] sock_sendmsg+0xe0/0x100
 [<c013bd8b>] generic_file_aio_write_nolock+0x27b/0x4b0
 [<c0185a7b>] proc_destroy_inode+0x1b/0x20
 [<c0172b75>] destroy_inode+0x35/0x60
 [<c0173ef2>] iput+0x62/0x90
 [<c0185a7b>] proc_destroy_inode+0x1b/0x20
 [<c0172b75>] destroy_inode+0x35/0x60
 [<c0147bb3>] zap_pmd_range+0x63/0x80
 [<c0147c23>] unmap_page_range+0x53/0x80
 [<c0147d36>] unmap_vmas+0xe6/0x1d0
 [<c014a4d7>] remove_vm_struct+0x77/0xa0
 [<c014bf1f>] unmap_vma_list+0x1f/0x30
 [<c014c2df>] do_munmap+0x14f/0x190
 [<c016ba30>] sys_ioctl+0x100/0x270
 [<c01060d9>] sysenter_past_esp+0x52/0x71

I see a similar dump when using delkin_cb on 2.6.9-ac3 as well.

Cheers

Signature · 2 lines
Mark Lord
(hdparm keeper & the original "Linux IDE Guy")
#2 lore raw

PATCH 1/1 ide: fixes for 2.6.9-ac3 ide issues

The attached patch fixes two problems with 2.6.9-ac3:

1. restores the missing spin_unlock_irq() line, and
2. removes hwif from /proc/ide/ as part of __ide_unregister_hwif().

(and also removes a bogus compiler warning)

Signature · 2 lines
Mark Lord
(hdparm keeper & the original "Linux IDE Guy")
drivers/ide/ide.c +3 -1
diff -u --recursive --new-file --exclude='.*' linux-2.6.9-ac3/drivers/ide/ide.c linux/drivers/ide/ide.c
@@ -862,7 +862,7 @@
 
 int __ide_unregister_hwif(ide_hwif_t *hwif)
 {
-	ide_drive_t *drive;
+	ide_drive_t *drive = NULL; /* keep compiler happy */
 	ide_hwif_t *g;
 	static ide_hwif_t tmp_hwif; /* protected by ide_cfg_sem */
 	ide_hwgroup_t *hwgroup;
@@ -901,6 +901,7 @@
 	was_present = hwif->present;	 
 	hwif->present = 0;
 
+	spin_unlock_irq(&ide_lock);
 	up(&ide_setting_sem);
 
 	for (unit = 0; unit < MAX_DRIVES; ++unit) {
@@ -912,6 +913,7 @@
 
 #ifdef CONFIG_PROC_FS
 	destroy_proc_ide_drives(hwif);
+	destroy_proc_ide_interface(hwif);
 #endif
 
 	spin_lock_irq(&ide_lock);
drivers/ide/ide-proc.c +18 -12
diff -u --recursive --new-file --exclude='.*' linux-2.6.9-ac3/drivers/ide/ide-proc.c linux/drivers/ide/ide-proc.c
@@ -821,24 +821,30 @@
 EXPORT_SYMBOL_GPL(ide_pci_create_host_proc);
 #endif
 
+void destroy_proc_ide_interface(ide_hwif_t *hwif)
+{
+	int exist = (hwif->proc != NULL);
+#if 0
+	if (!hwif->present)
+		continue;
+#endif
+	if (exist) {
+		destroy_proc_ide_drives(hwif);
+		ide_remove_proc_entries(hwif->proc, hwif_entries);
+		remove_proc_entry(hwif->name, proc_ide_root);
+		hwif->proc = NULL;
+	}
+}
+
+EXPORT_SYMBOL(destroy_proc_ide_interface);
+
 void destroy_proc_ide_interfaces(void)
 {
 	int	h;
 
 	for (h = 0; h < MAX_HWIFS; h++) {
 		ide_hwif_t *hwif = &ide_hwifs[h];
-		int exist = (hwif->proc != NULL);
-#if 0
-		if (!hwif->present)
-			continue;
-#endif
-		if (exist) {
-			destroy_proc_ide_drives(hwif);
-			ide_remove_proc_entries(hwif->proc, hwif_entries);
-			remove_proc_entry(hwif->name, proc_ide_root);
-			hwif->proc = NULL;
-		} else
-			continue;
+		destroy_proc_ide_interface(hwif);
 	}
 }
 
include/linux/ide.h +1 -0
diff -u --recursive --new-file --exclude='.*' linux-2.6.9-ac3/include/linux/ide.h linux/include/linux/ide.h
@@ -1076,6 +1076,7 @@
 extern void proc_ide_create(void);
 extern void proc_ide_destroy(void);
 extern void destroy_proc_ide_drives(ide_hwif_t *);
+extern void destroy_proc_ide_interface(ide_hwif_t *);
 extern void create_proc_ide_interfaces(void);
 extern void ide_add_proc_entries(struct proc_dir_entry *, ide_proc_entry_t *, void *);
 extern void ide_remove_proc_entries(struct proc_dir_entry *, ide_proc_entry_t *);
#3 lore raw
In reply to Alan Cox
Quoted 1 line · Alan Cox

ftp://ftp.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.9/

Since you're collecting and may end up being the source of all patches stable; any chance of a patch tarball too please?

Cheers,
Con

#4 lore raw

PATCH 1/1 delkin_cb: new driver for Cardbus IDE CF Adapter

In reply to Alan Cox

This is the first 2.6 release of a PCI-IDE module to support the Delkin/ASKA/Workbit Cardbus CompactFlash<-->IDE adaptor. It may (or not) also work for other versions of this hardware (eg. SD).

This module is based on the existing ide-cs module,
and works fine for me (with other fixes previously posted for -ac3).

Patch is against 2.6.9-ac3.

Signature · 2 lines
Mark Lord
(hdparm keeper & the original "Linux IDE Guy")
drivers/ide/Kconfig +7 -0
diff -u --recursive --new-file --exclude='.*' linux-2.6.9-ac3/drivers/ide/Kconfig linux/drivers/ide/Kconfig
@@ -166,6 +166,13 @@
 	  Support for outboard IDE disks, tape drives, and CD-ROM drives
 	  connected through a  PCMCIA card.
 
+config BLK_DEV_DELKIN
+	tristate "Cardbus IDE support (Delkin/ASKA/Workbit)"
+	depends on PCMCIA && PCI
+	help
+	  Support for Delkin, ASKA, and Workbit Cardbus CompactFlash
+	  Adapters.  This may also work for similar SD and XD adapters.
+
 config BLK_DEV_IDECD
 	tristate "Include IDE/ATAPI CDROM support"
 	---help---
drivers/ide/pci/delkin_cb.c +139 -0

139 lines not on this page · raw message

drivers/ide/pci/Makefile +1 -0
diff -u --recursive --new-file --exclude='.*' linux-2.6.9-ac3/drivers/ide/pci/Makefile linux/drivers/ide/pci/Makefile
@@ -9,6 +9,7 @@
 obj-$(CONFIG_BLK_DEV_CS5530)		+= cs5530.o
 obj-$(CONFIG_BLK_DEV_SC1200)		+= sc1200.o
 obj-$(CONFIG_BLK_DEV_CY82C693)		+= cy82c693.o
+obj-$(CONFIG_BLK_DEV_DELKIN)		+= delkin_cb.o
 obj-$(CONFIG_BLK_DEV_HPT34X)		+= hpt34x.o
 obj-$(CONFIG_BLK_DEV_HPT366)		+= hpt366.o
 #obj-$(CONFIG_BLK_DEV_HPT37X)		+= hpt37x.o
drivers/scsi/nsp32.h +0 -1
diff -u --recursive --new-file --exclude='.*' linux-2.6.9-ac3/drivers/scsi/nsp32.h linux/drivers/scsi/nsp32.h
@@ -22,7 +22,6 @@
  * VENDOR/DEVICE ID
  */
 #define PCI_VENDOR_ID_IODATA  0x10fc
-#define PCI_VENDOR_ID_WORKBIT 0x1145
 
 #define PCI_DEVICE_ID_NINJASCSI_32BI_CBSC_II   0x0005
 #define PCI_DEVICE_ID_NINJASCSI_32BI_KME       0xf007
include/linux/pci_ids.h +3 -0
diff -u --recursive --new-file --exclude='.*' linux-2.6.9-ac3/include/linux/pci_ids.h linux/include/linux/pci_ids.h
@@ -2331,3 +2331,6 @@
 #define PCI_DEVICE_ID_ARK_STING		0xa091
 #define PCI_DEVICE_ID_ARK_STINGARK	0xa099
 #define PCI_DEVICE_ID_ARK_2000MT	0xa0a1
+
+#define PCI_VENDOR_ID_WORKBIT		0x1145
+#define PCI_DEVICE_ID_WORKBIT_CB	0xf021
#5 lore raw
In reply to Alan Cox
Quoted 1 line · Alan Cox

ftp://ftp.kernel.org/pub/linux/kernel/people/alan/linux-2.6/2.6.9/

If you're collection ide patchlets for later inclusion, please include this as well. It makes sure we remove the ideX directory in proc when an interface is removed. With ide-cs and repeated insert/reject cycles, we end up with tons of ide2 entries.

include/linux/ide.h renamed from opt/kernel/linux-2.6/include/linux/ide.h +1 -0
@@ -1063,6 +1063,7 @@
 extern void proc_ide_create(void);
 extern void proc_ide_destroy(void);
 extern void destroy_proc_ide_drives(ide_hwif_t *);
+extern void destroy_proc_ide_interfaces(void);
 extern void create_proc_ide_interfaces(void);
 extern void ide_add_proc_entries(struct proc_dir_entry *, ide_proc_entry_t *, void *);
 extern void ide_remove_proc_entries(struct proc_dir_entry *, ide_proc_entry_t *);
drivers/ide/ide.c renamed from opt/kernel/linux-2.6/drivers/ide/ide.c +1 -0
@@ -798,6 +798,7 @@
 
 #ifdef CONFIG_PROC_FS
 	destroy_proc_ide_drives(hwif);
+	destroy_proc_ide_interfaces();
 #endif
 
 	hwgroup = hwif->hwgroup;
drivers/ide/ide-proc.c renamed from opt/kernel/linux-2.6/drivers/ide/ide-proc.c +2 -3
@@ -731,10 +731,9 @@
 	for (h = 0; h < MAX_HWIFS; h++) {
 		ide_hwif_t *hwif = &ide_hwifs[h];
 		int exist = (hwif->proc != NULL);
-#if 0
-		if (!hwif->present)
+
+		if (hwif->present)
 			continue;
-#endif
 		if (exist) {
 			destroy_proc_ide_drives(hwif);
 			ide_remove_proc_entries(hwif->proc, hwif_entries);
Signature · 1 line
Jens Axboe