--- linux-2.6.12/drivers/usb/net/zd1201.c 2005-05-13 22:12:06.000000000 +0200 +++ linux-2.6.12-cl/drivers/usb/net/zd1201.c 2005-06-20 09:43:22.000000000 +0200 @@ -1884,12 +1884,53 @@ kfree(zd); } +#ifdef CONFIG_PM + +static int zd1201_suspend (struct usb_interface *interface, + pm_message_t message) +{ + struct zd1201 *zd = (struct zd1201 *)usb_get_intfdata(interface); + + netif_device_detach(zd->dev); + + zd->was_enabled = zd->mac_enabled; + + if (zd->was_enabled) + return zd1201_disable(zd); + else + return 0; +} + +static int zd1201_resume (struct usb_interface *interface) +{ + struct zd1201 *zd = (struct zd1201 *)usb_get_intfdata(interface); + + if (!zd || !zd->dev) + return -ENODEV; + + netif_device_attach(zd->dev); + + if (zd->was_enabled) + return zd1201_enable(zd); + else + return 0; +} + +#else + +#define zd1201_suspend NULL +#define zd1201_resume NULL + +#endif + static struct usb_driver zd1201_usb = { .owner = THIS_MODULE, .name = "zd1201", .probe = zd1201_probe, .disconnect = zd1201_disconnect, .id_table = zd1201_table, + .suspend = zd1201_suspend, + .resume = zd1201_resume, }; static int __init zd1201_init(void) --- linux-2.6.12/drivers/usb/net/zd1201.h 2005-05-13 22:12:06.000000000 +0200 +++ linux-2.6.12-cl/drivers/usb/net/zd1201.h 2005-06-20 09:43:22.000000000 +0200 @@ -46,6 +46,7 @@ char essid[IW_ESSID_MAX_SIZE+1]; int essidlen; int mac_enabled; + int was_enabled; int monitor; int encode_enabled; int encode_restricted; --- linux-2.6.12/fs/hfsplus/super.c 2005-05-13 22:12:09.000000000 +0200 +++ linux-2.6.12-cl/fs/hfsplus/super.c 2005-06-20 09:43:22.000000000 +0200 @@ -17,6 +17,9 @@ #include #include #include +#include + +static int force_rw = 0; static struct inode *hfsplus_alloc_inode(struct super_block *sb); static void hfsplus_destroy_inode(struct inode *inode); @@ -255,9 +258,12 @@ if (!(vhdr->attributes & cpu_to_be32(HFSPLUS_VOL_UNMNT))) { printk("HFS+-fs warning: Filesystem was not cleanly unmounted, " - "running fsck.hfsplus is recommended. leaving read-only.\n"); - sb->s_flags |= MS_RDONLY; - *flags |= MS_RDONLY; + "running fsck.hfsplus is recommended. leaving read-%s.\n", + force_rw ? "write":"only"); + if (!force_rw) { + sb->s_flags |= MS_RDONLY; + *flags |= MS_RDONLY; + } } else if (vhdr->attributes & cpu_to_be32(HFSPLUS_VOL_SOFTLOCK)) { printk("HFS+-fs: Filesystem is marked locked, leaving read-only.\n"); sb->s_flags |= MS_RDONLY; @@ -350,8 +356,10 @@ if (!(vhdr->attributes & cpu_to_be32(HFSPLUS_VOL_UNMNT))) { if (!silent) printk("HFS+-fs warning: Filesystem was not cleanly unmounted, " - "running fsck.hfsplus is recommended. mounting read-only.\n"); - sb->s_flags |= MS_RDONLY; + "running fsck.hfsplus is recommended. mounting read-%s.\n", + force_rw ? "write":"only"); + if (!force_rw) + sb->s_flags |= MS_RDONLY; } else if (vhdr->attributes & cpu_to_be32(HFSPLUS_VOL_SOFTLOCK)) { if (!silent) printk("HFS+-fs: Filesystem is marked locked, mounting read-only.\n"); @@ -441,6 +449,9 @@ MODULE_DESCRIPTION("Extended Macintosh Filesystem"); MODULE_LICENSE("GPL"); +module_param(force_rw, int, 0644); +MODULE_PARM_DESC(force_rw,"Force r/w mounting (DANGEROUS)."); + static kmem_cache_t *hfsplus_inode_cachep; static struct inode *hfsplus_alloc_inode(struct super_block *sb) --- linux-2.6.12/Makefile 2005-06-20 09:41:59.000000000 +0200 +++ linux-2.6.12-cl/Makefile 2005-06-20 09:43:33.000000000 +0200 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 6 SUBLEVEL = 12 -EXTRAVERSION = +EXTRAVERSION = -cl NAME=Woozy Numbat # *DOCUMENTATION*