diff options
9 files changed, 156 insertions, 938 deletions
diff --git a/driver-core.current/driver-core-extend-devnode-callbacks-to-provide-permissions.patch b/driver-core.current/driver-core-extend-devnode-callbacks-to-provide-permissions.patch deleted file mode 100644 index 34b52e07c30eec..00000000000000 --- a/driver-core.current/driver-core-extend-devnode-callbacks-to-provide-permissions.patch +++ /dev/null @@ -1,781 +0,0 @@ -From kay.sievers@vrfy.org Fri Sep 18 14:01:29 2009 -From: Kay Sievers <kay.sievers@vrfy.org> -Date: Fri, 18 Sep 2009 23:01:12 +0200 -Subject: Driver-Core: extend devnode callbacks to provide permissions -To: Greg KH <greg@kroah.com> -Message-ID: <1253307672.1864.0.camel@yio.site> - - -From: Kay Sievers <kay.sievers@vrfy.org> - -This allows subsytems to provide devtmpfs with non-default permissions -for the device node. Instead of the default mode of 0600, null, zero, -random, urandom, full, tty, ptmx now have a mode of 0666, which allows -non-privileged processes to access standard device nodes in case no -other userspace process applies the expected permissions. - -This also fixes a wrong assignment in pktcdvd and a checkpatch.pl complain. - -Signed-off-by: Kay Sievers <kay.sievers@vrfy.org> -Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - ---- - arch/x86/kernel/cpuid.c | 4 ++-- - arch/x86/kernel/microcode_core.c | 2 +- - arch/x86/kernel/msr.c | 4 ++-- - block/bsg.c | 4 ++-- - block/genhd.c | 8 ++++---- - drivers/base/core.c | 19 ++++++++++++------- - drivers/base/devtmpfs.c | 24 ++++++++++++++++-------- - drivers/block/aoe/aoechr.c | 4 ++-- - drivers/block/pktcdvd.c | 6 +++--- - drivers/char/hw_random/core.c | 2 +- - drivers/char/mem.c | 29 +++++++++++++++++++---------- - drivers/char/misc.c | 10 ++++++---- - drivers/char/raw.c | 4 ++-- - drivers/char/tty_io.c | 11 +++++++++++ - drivers/gpu/drm/drm_sysfs.c | 4 ++-- - drivers/hid/usbhid/hiddev.c | 4 ++-- - drivers/input/input.c | 4 ++-- - drivers/md/dm-ioctl.c | 2 +- - drivers/media/dvb/dvb-core/dvbdev.c | 4 ++-- - drivers/net/tun.c | 2 +- - drivers/usb/class/usblp.c | 4 ++-- - drivers/usb/core/file.c | 8 ++++---- - drivers/usb/core/usb.c | 4 ++-- - drivers/usb/misc/iowarrior.c | 4 ++-- - drivers/usb/misc/legousbtower.c | 4 ++-- - include/linux/device.h | 7 ++++--- - include/linux/genhd.h | 2 +- - include/linux/miscdevice.h | 3 ++- - include/linux/usb.h | 4 ++-- - sound/sound_core.c | 4 ++-- - 30 files changed, 116 insertions(+), 79 deletions(-) - ---- a/arch/x86/kernel/cpuid.c -+++ b/arch/x86/kernel/cpuid.c -@@ -182,7 +182,7 @@ static struct notifier_block __refdata c - .notifier_call = cpuid_class_cpu_callback, - }; - --static char *cpuid_nodename(struct device *dev) -+static char *cpuid_devnode(struct device *dev, mode_t *mode) - { - return kasprintf(GFP_KERNEL, "cpu/%u/cpuid", MINOR(dev->devt)); - } -@@ -203,7 +203,7 @@ static int __init cpuid_init(void) - err = PTR_ERR(cpuid_class); - goto out_chrdev; - } -- cpuid_class->nodename = cpuid_nodename; -+ cpuid_class->devnode = cpuid_devnode; - for_each_online_cpu(i) { - err = cpuid_device_create(i); - if (err != 0) ---- a/arch/x86/kernel/microcode_core.c -+++ b/arch/x86/kernel/microcode_core.c -@@ -236,7 +236,7 @@ static const struct file_operations micr - static struct miscdevice microcode_dev = { - .minor = MICROCODE_MINOR, - .name = "microcode", -- .devnode = "cpu/microcode", -+ .nodename = "cpu/microcode", - .fops = µcode_fops, - }; - ---- a/arch/x86/kernel/msr.c -+++ b/arch/x86/kernel/msr.c -@@ -241,7 +241,7 @@ static struct notifier_block __refdata m - .notifier_call = msr_class_cpu_callback, - }; - --static char *msr_nodename(struct device *dev) -+static char *msr_devnode(struct device *dev, mode_t *mode) - { - return kasprintf(GFP_KERNEL, "cpu/%u/msr", MINOR(dev->devt)); - } -@@ -262,7 +262,7 @@ static int __init msr_init(void) - err = PTR_ERR(msr_class); - goto out_chrdev; - } -- msr_class->nodename = msr_nodename; -+ msr_class->devnode = msr_devnode; - for_each_online_cpu(i) { - err = msr_device_create(i); - if (err != 0) ---- a/block/bsg.c -+++ b/block/bsg.c -@@ -1062,7 +1062,7 @@ EXPORT_SYMBOL_GPL(bsg_register_queue); - - static struct cdev bsg_cdev; - --static char *bsg_nodename(struct device *dev) -+static char *bsg_devnode(struct device *dev, mode_t *mode) - { - return kasprintf(GFP_KERNEL, "bsg/%s", dev_name(dev)); - } -@@ -1087,7 +1087,7 @@ static int __init bsg_init(void) - ret = PTR_ERR(bsg_class); - goto destroy_kmemcache; - } -- bsg_class->nodename = bsg_nodename; -+ bsg_class->devnode = bsg_devnode; - - ret = alloc_chrdev_region(&devid, 0, BSG_MAX_DEVS, "bsg"); - if (ret) ---- a/block/genhd.c -+++ b/block/genhd.c -@@ -998,12 +998,12 @@ struct class block_class = { - .name = "block", - }; - --static char *block_nodename(struct device *dev) -+static char *block_devnode(struct device *dev, mode_t *mode) - { - struct gendisk *disk = dev_to_disk(dev); - -- if (disk->nodename) -- return disk->nodename(disk); -+ if (disk->devnode) -+ return disk->devnode(disk, mode); - return NULL; - } - -@@ -1011,7 +1011,7 @@ static struct device_type disk_type = { - .name = "disk", - .groups = disk_attr_groups, - .release = disk_release, -- .nodename = block_nodename, -+ .devnode = block_devnode, - }; - - #ifdef CONFIG_PROC_FS ---- a/drivers/base/core.c -+++ b/drivers/base/core.c -@@ -166,13 +166,16 @@ static int dev_uevent(struct kset *kset, - if (MAJOR(dev->devt)) { - const char *tmp; - const char *name; -+ mode_t mode = 0; - - add_uevent_var(env, "MAJOR=%u", MAJOR(dev->devt)); - add_uevent_var(env, "MINOR=%u", MINOR(dev->devt)); -- name = device_get_nodename(dev, &tmp); -+ name = device_get_devnode(dev, &mode, &tmp); - if (name) { - add_uevent_var(env, "DEVNAME=%s", name); - kfree(tmp); -+ if (mode) -+ add_uevent_var(env, "DEVMODE=%#o", mode & 0777); - } - } - -@@ -1148,8 +1151,9 @@ static struct device *next_device(struct - } - - /** -- * device_get_nodename - path of device node file -+ * device_get_devnode - path of device node file - * @dev: device -+ * @mode: returned file access mode - * @tmp: possibly allocated string - * - * Return the relative path of a possible device node. -@@ -1157,21 +1161,22 @@ static struct device *next_device(struct - * a name. This memory is returned in tmp and needs to be - * freed by the caller. - */ --const char *device_get_nodename(struct device *dev, const char **tmp) -+const char *device_get_devnode(struct device *dev, -+ mode_t *mode, const char **tmp) - { - char *s; - - *tmp = NULL; - - /* the device type may provide a specific name */ -- if (dev->type && dev->type->nodename) -- *tmp = dev->type->nodename(dev); -+ if (dev->type && dev->type->devnode) -+ *tmp = dev->type->devnode(dev, mode); - if (*tmp) - return *tmp; - - /* the class may provide a specific name */ -- if (dev->class && dev->class->nodename) -- *tmp = dev->class->nodename(dev); -+ if (dev->class && dev->class->devnode) -+ *tmp = dev->class->devnode(dev, mode); - if (*tmp) - return *tmp; - ---- a/drivers/base/devtmpfs.c -+++ b/drivers/base/devtmpfs.c -@@ -6,9 +6,10 @@ - * During bootup, before any driver core device is registered, - * devtmpfs, a tmpfs-based filesystem is created. Every driver-core - * device which requests a device node, will add a node in this -- * filesystem. The node is named after the the name of the device, -- * or the susbsytem can provide a custom name. All devices are -- * owned by root and have a mode of 0600. -+ * filesystem. -+ * By default, all devices are named after the the name of the -+ * device, owned by root and have a default mode of 0600. Subsystems -+ * can overwrite the default setting if needed. - */ - - #include <linux/kernel.h> -@@ -20,6 +21,7 @@ - #include <linux/fs.h> - #include <linux/shmem_fs.h> - #include <linux/cred.h> -+#include <linux/sched.h> - #include <linux/init_task.h> - - static struct vfsmount *dev_mnt; -@@ -134,7 +136,7 @@ int devtmpfs_create_node(struct device * - const char *tmp = NULL; - const char *nodename; - const struct cred *curr_cred; -- mode_t mode; -+ mode_t mode = 0; - struct nameidata nd; - struct dentry *dentry; - int err; -@@ -142,14 +144,16 @@ int devtmpfs_create_node(struct device * - if (!dev_mnt) - return 0; - -- nodename = device_get_nodename(dev, &tmp); -+ nodename = device_get_devnode(dev, &mode, &tmp); - if (!nodename) - return -ENOMEM; - -+ if (mode == 0) -+ mode = 0600; - if (is_blockdev(dev)) -- mode = S_IFBLK|0600; -+ mode |= S_IFBLK; - else -- mode = S_IFCHR|0600; -+ mode |= S_IFCHR; - - curr_cred = override_creds(&init_cred); - err = vfs_path_lookup(dev_mnt->mnt_root, dev_mnt, -@@ -165,8 +169,12 @@ int devtmpfs_create_node(struct device * - - dentry = lookup_create(&nd, 0); - if (!IS_ERR(dentry)) { -+ int umask; -+ -+ umask = sys_umask(0000); - err = vfs_mknod(nd.path.dentry->d_inode, - dentry, mode, dev->devt); -+ sys_umask(umask); - /* mark as kernel created inode */ - if (!err) - dentry->d_inode->i_private = &dev_mnt; -@@ -271,7 +279,7 @@ int devtmpfs_delete_node(struct device * - if (!dev_mnt) - return 0; - -- nodename = device_get_nodename(dev, &tmp); -+ nodename = device_get_devnode(dev, NULL, &tmp); - if (!nodename) - return -ENOMEM; - ---- a/drivers/block/aoe/aoechr.c -+++ b/drivers/block/aoe/aoechr.c -@@ -266,7 +266,7 @@ static const struct file_operations aoe_ - .owner = THIS_MODULE, - }; - --static char *aoe_nodename(struct device *dev) -+static char *aoe_devnode(struct device *dev, mode_t *mode) - { - return kasprintf(GFP_KERNEL, "etherd/%s", dev_name(dev)); - } -@@ -288,7 +288,7 @@ aoechr_init(void) - unregister_chrdev(AOE_MAJOR, "aoechr"); - return PTR_ERR(aoe_class); - } -- aoe_class->nodename = aoe_nodename; -+ aoe_class->devnode = aoe_devnode; - - for (i = 0; i < ARRAY_SIZE(chardevs); ++i) - device_create(aoe_class, NULL, ---- a/drivers/block/pktcdvd.c -+++ b/drivers/block/pktcdvd.c -@@ -2857,7 +2857,7 @@ static struct block_device_operations pk - .media_changed = pkt_media_changed, - }; - --static char *pktcdvd_nodename(struct gendisk *gd) -+static char *pktcdvd_devnode(struct gendisk *gd, mode_t *mode) - { - return kasprintf(GFP_KERNEL, "pktcdvd/%s", gd->disk_name); - } -@@ -2914,7 +2914,7 @@ static int pkt_setup_dev(dev_t dev, dev_ - disk->fops = &pktcdvd_ops; - disk->flags = GENHD_FL_REMOVABLE; - strcpy(disk->disk_name, pd->name); -- disk->nodename = pktcdvd_nodename; -+ disk->devnode = pktcdvd_devnode; - disk->private_data = pd; - disk->queue = blk_alloc_queue(GFP_KERNEL); - if (!disk->queue) -@@ -3070,7 +3070,7 @@ static const struct file_operations pkt_ - static struct miscdevice pkt_misc = { - .minor = MISC_DYNAMIC_MINOR, - .name = DRIVER_NAME, -- .name = "pktcdvd/control", -+ .nodename = "pktcdvd/control", - .fops = &pkt_ctl_fops - }; - ---- a/drivers/char/hw_random/core.c -+++ b/drivers/char/hw_random/core.c -@@ -153,7 +153,7 @@ static const struct file_operations rng_ - static struct miscdevice rng_miscdev = { - .minor = RNG_MISCDEV_MINOR, - .name = RNG_MODULE_NAME, -- .devnode = "hwrng", -+ .nodename = "hwrng", - .fops = &rng_chrdev_ops, - }; - ---- a/drivers/char/mem.c -+++ b/drivers/char/mem.c -@@ -866,24 +866,25 @@ static const struct file_operations kmsg - - static const struct memdev { - const char *name; -+ mode_t mode; - const struct file_operations *fops; - struct backing_dev_info *dev_info; - } devlist[] = { -- [ 1] = { "mem", &mem_fops, &directly_mappable_cdev_bdi }, -+ [1] = { "mem", 0, &mem_fops, &directly_mappable_cdev_bdi }, - #ifdef CONFIG_DEVKMEM -- [ 2] = { "kmem", &kmem_fops, &directly_mappable_cdev_bdi }, -+ [2] = { "kmem", 0, &kmem_fops, &directly_mappable_cdev_bdi }, - #endif -- [ 3] = {"null", &null_fops, NULL }, -+ [3] = { "null", 0666, &null_fops, NULL }, - #ifdef CONFIG_DEVPORT -- [ 4] = { "port", &port_fops, NULL }, -+ [4] = { "port", 0, &port_fops, NULL }, - #endif -- [ 5] = { "zero", &zero_fops, &zero_bdi }, -- [ 7] = { "full", &full_fops, NULL }, -- [ 8] = { "random", &random_fops, NULL }, -- [ 9] = { "urandom", &urandom_fops, NULL }, -- [11] = { "kmsg", &kmsg_fops, NULL }, -+ [5] = { "zero", 0666, &zero_fops, &zero_bdi }, -+ [7] = { "full", 0666, &full_fops, NULL }, -+ [8] = { "random", 0666, &random_fops, NULL }, -+ [9] = { "urandom", 0666, &urandom_fops, NULL }, -+ [11] = { "kmsg", 0, &kmsg_fops, NULL }, - #ifdef CONFIG_CRASH_DUMP -- [12] = { "oldmem", &oldmem_fops, NULL }, -+ [12] = { "oldmem", 0, &oldmem_fops, NULL }, - #endif - }; - -@@ -920,6 +921,13 @@ static const struct file_operations memo - .open = memory_open, - }; - -+static char *mem_devnode(struct device *dev, mode_t *mode) -+{ -+ if (mode && devlist[MINOR(dev->devt)].mode) -+ *mode = devlist[MINOR(dev->devt)].mode; -+ return NULL; -+} -+ - static struct class *mem_class; - - static int __init chr_dev_init(void) -@@ -935,6 +943,7 @@ static int __init chr_dev_init(void) - printk("unable to get major %d for memory devs\n", MEM_MAJOR); - - mem_class = class_create(THIS_MODULE, "mem"); -+ mem_class->devnode = mem_devnode; - for (minor = 1; minor < ARRAY_SIZE(devlist); minor++) { - if (!devlist[minor].name) - continue; ---- a/drivers/char/misc.c -+++ b/drivers/char/misc.c -@@ -263,12 +263,14 @@ int misc_deregister(struct miscdevice *m - EXPORT_SYMBOL(misc_register); - EXPORT_SYMBOL(misc_deregister); - --static char *misc_nodename(struct device *dev) -+static char *misc_devnode(struct device *dev, mode_t *mode) - { - struct miscdevice *c = dev_get_drvdata(dev); - -- if (c->devnode) -- return kstrdup(c->devnode, GFP_KERNEL); -+ if (mode && c->mode) -+ *mode = c->mode; -+ if (c->nodename) -+ return kstrdup(c->nodename, GFP_KERNEL); - return NULL; - } - -@@ -287,7 +289,7 @@ static int __init misc_init(void) - err = -EIO; - if (register_chrdev(MISC_MAJOR,"misc",&misc_fops)) - goto fail_printk; -- misc_class->nodename = misc_nodename; -+ misc_class->devnode = misc_devnode; - return 0; - - fail_printk: ---- a/drivers/char/raw.c -+++ b/drivers/char/raw.c -@@ -261,7 +261,7 @@ static const struct file_operations raw_ - - static struct cdev raw_cdev; - --static char *raw_nodename(struct device *dev) -+static char *raw_devnode(struct device *dev, mode_t *mode) - { - return kasprintf(GFP_KERNEL, "raw/%s", dev_name(dev)); - } -@@ -289,7 +289,7 @@ static int __init raw_init(void) - ret = PTR_ERR(raw_class); - goto error_region; - } -- raw_class->nodename = raw_nodename; -+ raw_class->devnode = raw_devnode; - device_create(raw_class, NULL, MKDEV(RAW_MAJOR, 0), NULL, "rawctl"); - - return 0; ---- a/drivers/char/tty_io.c -+++ b/drivers/char/tty_io.c -@@ -3056,11 +3056,22 @@ void __init console_init(void) - } - } - -+static char *tty_devnode(struct device *dev, mode_t *mode) -+{ -+ if (!mode) -+ return NULL; -+ if (dev->devt == MKDEV(TTYAUX_MAJOR, 0) || -+ dev->devt == MKDEV(TTYAUX_MAJOR, 2)) -+ *mode = 0666; -+ return NULL; -+} -+ - static int __init tty_class_init(void) - { - tty_class = class_create(THIS_MODULE, "tty"); - if (IS_ERR(tty_class)) - return PTR_ERR(tty_class); -+ tty_class->devnode = tty_devnode; - return 0; - } - ---- a/drivers/gpu/drm/drm_sysfs.c -+++ b/drivers/gpu/drm/drm_sysfs.c -@@ -76,7 +76,7 @@ static ssize_t version_show(struct class - CORE_MINOR, CORE_PATCHLEVEL, CORE_DATE); - } - --static char *drm_nodename(struct device *dev) -+static char *drm_devnode(struct device *dev, mode_t *mode) - { - return kasprintf(GFP_KERNEL, "dri/%s", dev_name(dev)); - } -@@ -112,7 +112,7 @@ struct class *drm_sysfs_create(struct mo - if (err) - goto err_out_class; - -- class->nodename = drm_nodename; -+ class->devnode = drm_devnode; - - return class; - ---- a/drivers/hid/usbhid/hiddev.c -+++ b/drivers/hid/usbhid/hiddev.c -@@ -852,14 +852,14 @@ static const struct file_operations hidd - #endif - }; - --static char *hiddev_nodename(struct device *dev) -+static char *hiddev_devnode(struct device *dev, mode_t *mode) - { - return kasprintf(GFP_KERNEL, "usb/%s", dev_name(dev)); - } - - static struct usb_class_driver hiddev_class = { - .name = "hiddev%d", -- .nodename = hiddev_nodename, -+ .devnode = hiddev_devnode, - .fops = &hiddev_fops, - .minor_base = HIDDEV_MINOR_BASE, - }; ---- a/drivers/input/input.c -+++ b/drivers/input/input.c -@@ -1265,14 +1265,14 @@ static struct device_type input_dev_type - .uevent = input_dev_uevent, - }; - --static char *input_nodename(struct device *dev) -+static char *input_devnode(struct device *dev, mode_t *mode) - { - return kasprintf(GFP_KERNEL, "input/%s", dev_name(dev)); - } - - struct class input_class = { - .name = "input", -- .nodename = input_nodename, -+ .devnode = input_devnode, - }; - EXPORT_SYMBOL_GPL(input_class); - ---- a/drivers/md/dm-ioctl.c -+++ b/drivers/md/dm-ioctl.c -@@ -1532,7 +1532,7 @@ static const struct file_operations _ctl - static struct miscdevice _dm_misc = { - .minor = MISC_DYNAMIC_MINOR, - .name = DM_NAME, -- .devnode = "mapper/control", -+ .nodename = "mapper/control", - .fops = &_ctl_fops - }; - ---- a/drivers/media/dvb/dvb-core/dvbdev.c -+++ b/drivers/media/dvb/dvb-core/dvbdev.c -@@ -447,7 +447,7 @@ static int dvb_uevent(struct device *dev - return 0; - } - --static char *dvb_nodename(struct device *dev) -+static char *dvb_devnode(struct device *dev, mode_t *mode) - { - struct dvb_device *dvbdev = dev_get_drvdata(dev); - -@@ -478,7 +478,7 @@ static int __init init_dvbdev(void) - goto error; - } - dvb_class->dev_uevent = dvb_uevent; -- dvb_class->nodename = dvb_nodename; -+ dvb_class->devnode = dvb_devnode; - return 0; - - error: ---- a/drivers/net/tun.c -+++ b/drivers/net/tun.c -@@ -1370,7 +1370,7 @@ static const struct file_operations tun_ - static struct miscdevice tun_miscdev = { - .minor = TUN_MINOR, - .name = "tun", -- .devnode = "net/tun", -+ .nodename = "net/tun", - .fops = &tun_fops, - }; - ---- a/drivers/usb/class/usblp.c -+++ b/drivers/usb/class/usblp.c -@@ -1057,14 +1057,14 @@ static const struct file_operations usbl - .release = usblp_release, - }; - --static char *usblp_nodename(struct device *dev) -+static char *usblp_devnode(struct device *dev, mode_t *mode) - { - return kasprintf(GFP_KERNEL, "usb/%s", dev_name(dev)); - } - - static struct usb_class_driver usblp_class = { - .name = "lp%d", -- .nodename = usblp_nodename, -+ .devnode = usblp_devnode, - .fops = &usblp_fops, - .minor_base = USBLP_MINOR_BASE, - }; ---- a/drivers/usb/core/file.c -+++ b/drivers/usb/core/file.c -@@ -67,14 +67,14 @@ static struct usb_class { - struct class *class; - } *usb_class; - --static char *usb_nodename(struct device *dev) -+static char *usb_devnode(struct device *dev, mode_t *mode) - { - struct usb_class_driver *drv; - - drv = dev_get_drvdata(dev); -- if (!drv || !drv->nodename) -+ if (!drv || !drv->devnode) - return NULL; -- return drv->nodename(dev); -+ return drv->devnode(dev, mode); - } - - static int init_usb_class(void) -@@ -100,7 +100,7 @@ static int init_usb_class(void) - kfree(usb_class); - usb_class = NULL; - } -- usb_class->class->nodename = usb_nodename; -+ usb_class->class->devnode = usb_devnode; - - exit: - return result; ---- a/drivers/usb/core/usb.c -+++ b/drivers/usb/core/usb.c -@@ -311,7 +311,7 @@ static struct dev_pm_ops usb_device_pm_o - #endif /* CONFIG_PM */ - - --static char *usb_nodename(struct device *dev) -+static char *usb_devnode(struct device *dev, mode_t *mode) - { - struct usb_device *usb_dev; - -@@ -324,7 +324,7 @@ struct device_type usb_device_type = { - .name = "usb_device", - .release = usb_release_dev, - .uevent = usb_dev_uevent, -- .nodename = usb_nodename, -+ .devnode = usb_devnode, - .pm = &usb_device_pm_ops, - }; - ---- a/drivers/usb/misc/iowarrior.c -+++ b/drivers/usb/misc/iowarrior.c -@@ -727,7 +727,7 @@ static const struct file_operations iowa - .poll = iowarrior_poll, - }; - --static char *iowarrior_nodename(struct device *dev) -+static char *iowarrior_devnode(struct device *dev, mode_t *mode) - { - return kasprintf(GFP_KERNEL, "usb/%s", dev_name(dev)); - } -@@ -738,7 +738,7 @@ static char *iowarrior_nodename(struct d - */ - static struct usb_class_driver iowarrior_class = { - .name = "iowarrior%d", -- .nodename = iowarrior_nodename, -+ .devnode = iowarrior_devnode, - .fops = &iowarrior_fops, - .minor_base = IOWARRIOR_MINOR_BASE, - }; ---- a/drivers/usb/misc/legousbtower.c -+++ b/drivers/usb/misc/legousbtower.c -@@ -266,7 +266,7 @@ static const struct file_operations towe - .llseek = tower_llseek, - }; - --static char *legousbtower_nodename(struct device *dev) -+static char *legousbtower_devnode(struct device *dev, mode_t *mode) - { - return kasprintf(GFP_KERNEL, "usb/%s", dev_name(dev)); - } -@@ -277,7 +277,7 @@ static char *legousbtower_nodename(struc - */ - static struct usb_class_driver tower_class = { - .name = "legousbtower%d", -- .nodename = legousbtower_nodename, -+ .devnode = legousbtower_devnode, - .fops = &tower_fops, - .minor_base = LEGO_USB_TOWER_MINOR_BASE, - }; ---- a/include/linux/device.h -+++ b/include/linux/device.h -@@ -193,7 +193,7 @@ struct class { - struct kobject *dev_kobj; - - int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env); -- char *(*nodename)(struct device *dev); -+ char *(*devnode)(struct device *dev, mode_t *mode); - - void (*class_release)(struct class *class); - void (*dev_release)(struct device *dev); -@@ -298,7 +298,7 @@ struct device_type { - const char *name; - const struct attribute_group **groups; - int (*uevent)(struct device *dev, struct kobj_uevent_env *env); -- char *(*nodename)(struct device *dev); -+ char *(*devnode)(struct device *dev, mode_t *mode); - void (*release)(struct device *dev); - - const struct dev_pm_ops *pm; -@@ -487,7 +487,8 @@ extern struct device *device_find_child( - extern int device_rename(struct device *dev, char *new_name); - extern int device_move(struct device *dev, struct device *new_parent, - enum dpm_order dpm_order); --extern const char *device_get_nodename(struct device *dev, const char **tmp); -+extern const char *device_get_devnode(struct device *dev, -+ mode_t *mode, const char **tmp); - extern void *dev_get_drvdata(const struct device *dev); - extern void dev_set_drvdata(struct device *dev, void *data); - ---- a/include/linux/genhd.h -+++ b/include/linux/genhd.h -@@ -142,7 +142,7 @@ struct gendisk { - * disks that can't be partitioned. */ - - char disk_name[DISK_NAME_LEN]; /* name of major driver */ -- char *(*nodename)(struct gendisk *gd); -+ char *(*devnode)(struct gendisk *gd, mode_t *mode); - /* Array of pointers to partitions indexed by partno. - * Protected with matching bdev lock but stat and other - * non-critical accesses use RCU. Always access through ---- a/include/linux/miscdevice.h -+++ b/include/linux/miscdevice.h -@@ -41,7 +41,8 @@ struct miscdevice { - struct list_head list; - struct device *parent; - struct device *this_device; -- const char *devnode; -+ const char *nodename; -+ mode_t mode; - }; - - extern int misc_register(struct miscdevice * misc); ---- a/include/linux/usb.h -+++ b/include/linux/usb.h -@@ -922,7 +922,7 @@ extern struct bus_type usb_bus_type; - /** - * struct usb_class_driver - identifies a USB driver that wants to use the USB major number - * @name: the usb class device name for this driver. Will show up in sysfs. -- * @nodename: Callback to provide a naming hint for a possible -+ * @devnode: Callback to provide a naming hint for a possible - * device node to create. - * @fops: pointer to the struct file_operations of this driver. - * @minor_base: the start of the minor range for this driver. -@@ -933,7 +933,7 @@ extern struct bus_type usb_bus_type; - */ - struct usb_class_driver { - char *name; -- char *(*nodename)(struct device *dev); -+ char *(*devnode)(struct device *dev, mode_t *mode); - const struct file_operations *fops; - int minor_base; - }; ---- a/sound/sound_core.c -+++ b/sound/sound_core.c -@@ -29,7 +29,7 @@ MODULE_DESCRIPTION("Core sound module"); - MODULE_AUTHOR("Alan Cox"); - MODULE_LICENSE("GPL"); - --static char *sound_nodename(struct device *dev) -+static char *sound_devnode(struct device *dev, mode_t *mode) - { - if (MAJOR(dev->devt) == SOUND_MAJOR) - return NULL; -@@ -50,7 +50,7 @@ static int __init init_soundcore(void) - return PTR_ERR(sound_class); - } - -- sound_class->nodename = sound_nodename; -+ sound_class->devnode = sound_devnode; - - return 0; - } @@ -9,14 +9,13 @@ gregkh/gkh-version.patch ################################# # Driver core patches for 2.6.31 ################################# -driver-core.current/driver-core-extend-devnode-callbacks-to-provide-permissions.patch ################################# # TTY patches for 2.6.31 ################################# -tty.current/tty-gigaset-really-fix-chars_in_buffer.patch -tty.current/serial-bfin_5xx-fix-building-as-module-when-early-printk-is-enabled.patch -tty.current/tty-serial-pcmcia-add-id-for-advantech-card.patch +#tty.current/tty-gigaset-really-fix-chars_in_buffer.patch +#tty.current/serial-bfin_5xx-fix-building-as-module-when-early-printk-is-enabled.patch +#tty.current/tty-serial-pcmcia-add-id-for-advantech-card.patch ################################# @@ -60,86 +59,86 @@ usb.current/usb-fix-ss-endpoint-companion-descriptor-parsing.patch ################################# # TTY patches for after 2.6.31 is out ################################# -tty/tty-ldisc-make-proc-tty-ldiscs-use-ldisc_ops-instead-of-ldiscs.patch -tty/tty-ldisc-get-rid-of-tty_ldisc_try_get-helper-function.patch -tty/tty-includecheck-fix-drivers-char-vt.c.patch -tty/tty-icom-bit-and-or-confusion.patch +#tty/tty-ldisc-make-proc-tty-ldiscs-use-ldisc_ops-instead-of-ldiscs.patch +#tty/tty-ldisc-get-rid-of-tty_ldisc_try_get-helper-function.patch +#tty/tty-includecheck-fix-drivers-char-vt.c.patch +#tty/tty-icom-bit-and-or-confusion.patch +# +#tty/tty-cyclades-refcount +#tty/tty-cyclades-use-port-block-helper +#tty/tty-cyclades-precompute +#tty/tty-cyclades-use-port-hangup +#tty/tty-cyclades-use-port-close +#tty/tty-cyclades-cleanup +#tty/tty-cyclades-sleep-not-busy +#tty/tty-cyclades-use-dtr-helpers +#tty/tty-cyclades-merge-startup-common +#tty/tty-cyclades-ioctl-cleanup +#tty/tty-cyclades-modem-cleanup +#tty/tty-cyclades-add-io-helpers +#tty/tty-cyclades-remove-set-line-dups +#tty/net-slip-ttyfix +#tty/kfifo-const +#tty/tty-usb-mos7720-modem +#tty/tty-usb-mos7720-lsr +#tty/tty-io-typo +#tty/tty-usb-mos7840-modem +#tty/serial-add-irqflags-support +#tty/serial-8250-minbaud +#tty/tty-port-close-fn +#tty/tty-riscom8-split-close +#tty/tty-mxser-split-close +#tty/tty-isicom-split-close +#tty/tty-riscom8-close-kref +#tty/tty-cyclades-port-close +#tty/tty-kref-put-async +#tty/tty-usb-cdc-fix-speed +#tty/tty-usb-vhangup +#tty/tty-usb-clean-dtr-rts +#tty/tty-usb-shutdown +#tty/vt-events +#tty/vt-pm-extract +#tty/vt-incfix +#tty/vt-lockactive +#tty/tty-usb-drop-filp-argp +#tty/tty-isicom-split-open +#tty/serial-kill-info +#tty/serial-fold-closing-port +#tty/serial-port-portptr +#tty/serial-move-counts +#tty/serial-move-flags +#tty/serial-kill-uif +#tty/serial-move-mutex +#tty/serial-msr-move +#tty/serial-move-users +#tty/serial-kill-USF_CLOSING +#tty/serial-port-kref +#tty/serial-console-set-resume +#tty/tty-usb-serial-termiosbits -tty/tty-cyclades-refcount -tty/tty-cyclades-use-port-block-helper -tty/tty-cyclades-precompute -tty/tty-cyclades-use-port-hangup -tty/tty-cyclades-use-port-close -tty/tty-cyclades-cleanup -tty/tty-cyclades-sleep-not-busy -tty/tty-cyclades-use-dtr-helpers -tty/tty-cyclades-merge-startup-common -tty/tty-cyclades-ioctl-cleanup -tty/tty-cyclades-modem-cleanup -tty/tty-cyclades-add-io-helpers -tty/tty-cyclades-remove-set-line-dups -tty/net-slip-ttyfix -tty/kfifo-const -tty/tty-usb-mos7720-modem -tty/tty-usb-mos7720-lsr -tty/tty-io-typo -tty/tty-usb-mos7840-modem -tty/serial-add-irqflags-support -tty/serial-8250-minbaud -tty/tty-port-close-fn -tty/tty-riscom8-split-close -tty/tty-mxser-split-close -tty/tty-isicom-split-close -tty/tty-riscom8-close-kref -tty/tty-cyclades-port-close -tty/tty-kref-put-async -tty/tty-usb-cdc-fix-speed -tty/tty-usb-vhangup -tty/tty-usb-clean-dtr-rts -tty/tty-usb-shutdown -tty/vt-events -tty/vt-pm-extract -tty/vt-incfix -tty/vt-lockactive -tty/tty-usb-drop-filp-argp -tty/tty-isicom-split-open -tty/serial-kill-info -tty/serial-fold-closing-port -tty/serial-port-portptr -tty/serial-move-counts -tty/serial-move-flags -tty/serial-kill-uif -tty/serial-move-mutex -tty/serial-msr-move -tty/serial-move-users -tty/serial-kill-USF_CLOSING -tty/serial-port-kref -tty/serial-console-set-resume -tty/tty-usb-serial-termiosbits - -tty/n_tty-honor-opost-flag-for-echoes.patch -tty/n_tty-move-echoctl-check-and-clean-up-logic.patch - -tty/tty-handle-vt-specific-compat-ioctls-in-vt-driver.patch -tty/tty-vt-use-printk_once.patch -tty/tty-power-fix-suspend-vt-regression.patch -tty/tty-fix-typos.patch -tty/tty-riscom8-fix-shutdown-declaration.patch -tty/tty-riscom8-fix-tty-refcnt.patch -tty/tty-usb-serial-mct_u232-fix-tty-refcnt.patch -tty/uartlite-support-shared-interrupt-lines.patch -tty/tty-char-mxser-add-support-for-cp112ul.patch -tty/tty-char-mxser-use-thre-for-aspp_oqueue-ioctl.patch - -tty/usb-serial-change-referencing-of-port-and-serial-structures.patch -tty/usb-serial-put-subroutines-in-logical-order.patch -tty/usb-serial-change-logic-of-serial-lookups.patch -tty/usb-serial-acquire-references-when-a-new-tty-is-installed.patch -tty/usb-serial-fix-termios-initialization-logic.patch -tty/usb-serial-rename-subroutines.patch -tty/usb-serial-add-missing-tests-and-debug-lines.patch -tty/usb-serial-straighten-out-serial_open.patch -tty/usb-serial-update-the-console-driver.patch +#tty/n_tty-honor-opost-flag-for-echoes.patch +#tty/n_tty-move-echoctl-check-and-clean-up-logic.patch +# +#tty/tty-handle-vt-specific-compat-ioctls-in-vt-driver.patch +#tty/tty-vt-use-printk_once.patch +#tty/tty-power-fix-suspend-vt-regression.patch +#tty/tty-fix-typos.patch +#tty/tty-riscom8-fix-shutdown-declaration.patch +#tty/tty-riscom8-fix-tty-refcnt.patch +#tty/tty-usb-serial-mct_u232-fix-tty-refcnt.patch +#tty/uartlite-support-shared-interrupt-lines.patch +#tty/tty-char-mxser-add-support-for-cp112ul.patch +#tty/tty-char-mxser-use-thre-for-aspp_oqueue-ioctl.patch +# +#tty/usb-serial-change-referencing-of-port-and-serial-structures.patch +#tty/usb-serial-put-subroutines-in-logical-order.patch +#tty/usb-serial-change-logic-of-serial-lookups.patch +#tty/usb-serial-acquire-references-when-a-new-tty-is-installed.patch +#tty/usb-serial-fix-termios-initialization-logic.patch +#tty/usb-serial-rename-subroutines.patch +#tty/usb-serial-add-missing-tests-and-debug-lines.patch +#tty/usb-serial-straighten-out-serial_open.patch +#tty/usb-serial-update-the-console-driver.patch ################################# # USB stuff (after 2.6.30 is out) diff --git a/staging/staging-remove-agnx-driver.patch b/staging/staging-remove-agnx-driver.patch index a6e54d4d186fba..d1a9125eca1a39 100644 --- a/staging/staging-remove-agnx-driver.patch +++ b/staging/staging-remove-agnx-driver.patch @@ -30,71 +30,6 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> drivers/staging/agnx/xmit.h | 250 ---------- 17 files changed, 5211 deletions(-) ---- a/drivers/staging/Kconfig -+++ b/drivers/staging/Kconfig -@@ -57,8 +57,6 @@ source "drivers/staging/echo/Kconfig" - - source "drivers/staging/poch/Kconfig" - --source "drivers/staging/agnx/Kconfig" -- - source "drivers/staging/otus/Kconfig" - - source "drivers/staging/rt2860/Kconfig" ---- a/drivers/staging/Makefile -+++ b/drivers/staging/Makefile -@@ -11,7 +11,6 @@ obj-$(CONFIG_W35UND) += winbond/ - obj-$(CONFIG_PRISM2_USB) += wlan-ng/ - obj-$(CONFIG_ECHO) += echo/ - obj-$(CONFIG_POCH) += poch/ --obj-$(CONFIG_AGNX) += agnx/ - obj-$(CONFIG_OTUS) += otus/ - obj-$(CONFIG_RT2860) += rt2860/ - obj-$(CONFIG_RT2870) += rt2870/ ---- a/drivers/staging/agnx/Kconfig -+++ /dev/null -@@ -1,5 +0,0 @@ --config AGNX -- tristate "Wireless Airgo AGNX support" -- depends on WLAN_80211 && MAC80211 -- ---help--- -- This is an experimental driver for Airgo AGNX00 wireless chip. ---- a/drivers/staging/agnx/Makefile -+++ /dev/null -@@ -1,8 +0,0 @@ --obj-$(CONFIG_AGNX) += agnx.o -- --agnx-objs := rf.o \ -- pci.o \ -- xmit.o \ -- table.o \ -- sta.o \ -- phy.o ---- a/drivers/staging/agnx/TODO -+++ /dev/null -@@ -1,22 +0,0 @@ --2008 7/18 -- --The RX has can't receive OFDM packet correctly, --Guess it need be do RX calibrate. -- -- --before 2008 3/1 -- --1: The RX get too much "CRC failed" pakets, it make the card work very unstable, --2: After running a while, the card will get infinity "RX Frame" and "Error" --interrupt, not know the root reason so far, try to fix it --3: Using two tx queue txd and txm but not only txm. --4: Set the hdr correctly. --5: Try to do recalibrate correvtly --6: To support G mode in future --7: Fix the mac address can't be readed and set correctly in BE machine. --8: Fix include and exclude FCS in promisous mode and manage mode --9: Using sta_notify to notice sta change --10: Turn on frame reception at the end of start --11: Guess the card support HW_MULTICAST_FILTER --12: The tx process should be implment atomic? --13: Using mac80211 function to control the TX&RX LED. --- a/drivers/staging/agnx/agnx.h +++ /dev/null @@ -1,156 +0,0 @@ @@ -673,6 +608,25 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> -} - -#endif /* AGNX_DEBUG_H_ */ +--- a/drivers/staging/agnx/Kconfig ++++ /dev/null +@@ -1,5 +0,0 @@ +-config AGNX +- tristate "Wireless Airgo AGNX support" +- depends on WLAN_80211 && MAC80211 +- ---help--- +- This is an experimental driver for Airgo AGNX00 wireless chip. +--- a/drivers/staging/agnx/Makefile ++++ /dev/null +@@ -1,8 +0,0 @@ +-obj-$(CONFIG_AGNX) += agnx.o +- +-agnx-objs := rf.o \ +- pci.o \ +- xmit.o \ +- table.o \ +- sta.o \ +- phy.o --- a/drivers/staging/agnx/pci.c +++ /dev/null @@ -1,635 +0,0 @@ @@ -4212,6 +4166,31 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> -void tx_engine_lookup_tbl_init(struct agnx_priv *priv); - -#endif /* AGNX_TABLE_H_ */ +--- a/drivers/staging/agnx/TODO ++++ /dev/null +@@ -1,22 +0,0 @@ +-2008 7/18 +- +-The RX has can't receive OFDM packet correctly, +-Guess it need be do RX calibrate. +- +- +-before 2008 3/1 +- +-1: The RX get too much "CRC failed" pakets, it make the card work very unstable, +-2: After running a while, the card will get infinity "RX Frame" and "Error" +-interrupt, not know the root reason so far, try to fix it +-3: Using two tx queue txd and txm but not only txm. +-4: Set the hdr correctly. +-5: Try to do recalibrate correvtly +-6: To support G mode in future +-7: Fix the mac address can't be readed and set correctly in BE machine. +-8: Fix include and exclude FCS in promisous mode and manage mode +-9: Using sta_notify to notice sta change +-10: Turn on frame reception at the end of start +-11: Guess the card support HW_MULTICAST_FILTER +-12: The tx process should be implment atomic? +-13: Using mac80211 function to control the TX&RX LED. --- a/drivers/staging/agnx/xmit.c +++ /dev/null @@ -1,836 +0,0 @@ @@ -5304,3 +5283,24 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> -void handle_other_irq(struct agnx_priv *priv); -int _agnx_tx(struct agnx_priv *priv, struct sk_buff *skb); -#endif /* AGNX_XMIT_H_ */ +--- a/drivers/staging/Kconfig ++++ b/drivers/staging/Kconfig +@@ -59,8 +59,6 @@ source "drivers/staging/echo/Kconfig" + + source "drivers/staging/poch/Kconfig" + +-source "drivers/staging/agnx/Kconfig" +- + source "drivers/staging/otus/Kconfig" + + source "drivers/staging/rt2860/Kconfig" +--- a/drivers/staging/Makefile ++++ b/drivers/staging/Makefile +@@ -12,7 +12,6 @@ obj-$(CONFIG_W35UND) += winbond/ + obj-$(CONFIG_PRISM2_USB) += wlan-ng/ + obj-$(CONFIG_ECHO) += echo/ + obj-$(CONFIG_POCH) += poch/ +-obj-$(CONFIG_AGNX) += agnx/ + obj-$(CONFIG_OTUS) += otus/ + obj-$(CONFIG_RT2860) += rt2860/ + obj-$(CONFIG_RT2870) += rt2870/ diff --git a/usb.current/usb-option-telit-uc864g-support.patch b/usb.current/usb-option-telit-uc864g-support.patch index f6900869a43b66..b9925f2edae8b4 100644 --- a/usb.current/usb-option-telit-uc864g-support.patch +++ b/usb.current/usb-option-telit-uc864g-support.patch @@ -18,7 +18,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c -@@ -292,6 +292,7 @@ static int option_resume(struct usb_ser +@@ -291,6 +291,7 @@ static int option_resume(struct usb_ser #define TELIT_VENDOR_ID 0x1bc7 #define TELIT_PRODUCT_UC864E 0x1003 @@ -26,7 +26,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> /* ZTE PRODUCTS */ #define ZTE_VENDOR_ID 0x19d2 -@@ -504,6 +505,7 @@ static struct usb_device_id option_ids[] +@@ -503,6 +504,7 @@ static struct usb_device_id option_ids[] { USB_DEVICE(QUALCOMM_VENDOR_ID, 0x6613)}, /* Onda H600/ZTE MF330 */ { USB_DEVICE(MAXON_VENDOR_ID, 0x6280) }, /* BP3-USB & BP3-EXT HSDPA */ { USB_DEVICE(TELIT_VENDOR_ID, TELIT_PRODUCT_UC864E) }, diff --git a/usb.current/usb-option.c-add-support-for-zte-ac2726-evdo-modem.patch b/usb.current/usb-option.c-add-support-for-zte-ac2726-evdo-modem.patch index 8fa43d810d2163..5106143ef065c1 100644 --- a/usb.current/usb-option.c-add-support-for-zte-ac2726-evdo-modem.patch +++ b/usb.current/usb-option.c-add-support-for-zte-ac2726-evdo-modem.patch @@ -23,7 +23,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/drivers/usb/serial/option.c +++ b/drivers/usb/serial/option.c -@@ -300,6 +300,7 @@ static int option_resume(struct usb_ser +@@ -299,6 +299,7 @@ static int option_resume(struct usb_ser #define ZTE_PRODUCT_MF626 0x0031 #define ZTE_PRODUCT_CDMA_TECH 0xfffe #define ZTE_PRODUCT_AC8710 0xfff1 @@ -31,7 +31,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> #define BENQ_VENDOR_ID 0x04a5 #define BENQ_PRODUCT_H10 0x4068 -@@ -572,6 +573,7 @@ static struct usb_device_id option_ids[] +@@ -571,6 +572,7 @@ static struct usb_device_id option_ids[] { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, 0x0073, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_CDMA_TECH, 0xff, 0xff, 0xff) }, { USB_DEVICE_AND_INTERFACE_INFO(ZTE_VENDOR_ID, ZTE_PRODUCT_AC8710, 0xff, 0xff, 0xff) }, diff --git a/usb/usb-dbgp-ehci-debug-controller-initialization-delays.patch b/usb/usb-dbgp-ehci-debug-controller-initialization-delays.patch index 96293b57ed3aa7..03eca181cc69a9 100644 --- a/usb/usb-dbgp-ehci-debug-controller-initialization-delays.patch +++ b/usb/usb-dbgp-ehci-debug-controller-initialization-delays.patch @@ -121,7 +121,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> return -1; } -- loop = 10; +- loop = 100000; + loop = 250 * 1000; /* Reset the EHCI controller */ cmd = readl(&ehci_regs->command); diff --git a/usb/usb-ehci-dbgp-early_printk-split-ehci-debug-driver-from-early_printk.c.patch b/usb/usb-ehci-dbgp-early_printk-split-ehci-debug-driver-from-early_printk.c.patch index 192e2296669e87..14025c6c8b0b94 100644 --- a/usb/usb-ehci-dbgp-early_printk-split-ehci-debug-driver-from-early_printk.c.patch +++ b/usb/usb-ehci-dbgp-early_printk-split-ehci-debug-driver-from-early_printk.c.patch @@ -500,7 +500,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> - return -1; - } - -- loop = 10; +- loop = 100000; - /* Reset the EHCI controller */ - cmd = readl(&ehci_regs->command); - cmd |= CMD_RESET; @@ -1230,7 +1230,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + return -1; + } + -+ loop = 10; ++ loop = 100000; + /* Reset the EHCI controller */ + cmd = readl(&ehci_regs->command); + cmd |= CMD_RESET; diff --git a/usb/usb-gadget-update-freescale-udc-entry-in-maintainers.patch b/usb/usb-gadget-update-freescale-udc-entry-in-maintainers.patch index 69e2cbba6b6750..ba902cc8b45cbc 100644 --- a/usb/usb-gadget-update-freescale-udc-entry-in-maintainers.patch +++ b/usb/usb-gadget-update-freescale-udc-entry-in-maintainers.patch @@ -21,7 +21,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> --- a/MAINTAINERS +++ b/MAINTAINERS -@@ -2106,12 +2106,12 @@ S: Supported +@@ -2107,12 +2107,12 @@ S: Supported F: arch/powerpc/sysdev/qe_lib/ F: arch/powerpc/include/asm/*qe.h @@ -1 +1 @@ -2.6.31-git8 +2.6.31-git12 |