diff options
author | <greg@echidna.(none)> | 2005-09-26 14:25:31 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-09-26 14:25:31 -0700 |
commit | 91a58b314302947ce21404c0c7e803661a0bf2db (patch) | |
tree | 3508ebb6d565a2b73224732a53ead7d02e6b7e45 /gregkh | |
download | patches-91a58b314302947ce21404c0c7e803661a0bf2db.tar.gz |
initial creation of the patch set, based on 2.6.14-rc2-git3
Diffstat (limited to 'gregkh')
-rw-r--r-- | gregkh/gregkh-debugfs_example.patch | 82 | ||||
-rw-r--r-- | gregkh/gregkh-kobject-warn.patch | 35 | ||||
-rw-r--r-- | gregkh/gregkh-laptop-sysrq.patch | 20 | ||||
-rw-r--r-- | gregkh/gregkh-usb-hacking.patch | 311 | ||||
-rw-r--r-- | gregkh/gregkh-usb-minors.patch | 51 | ||||
-rw-r--r-- | gregkh/no-random.patch | 15 |
6 files changed, 514 insertions, 0 deletions
diff --git a/gregkh/gregkh-debugfs_example.patch b/gregkh/gregkh-debugfs_example.patch new file mode 100644 index 0000000000000..50bed68d2928d --- /dev/null +++ b/gregkh/gregkh-debugfs_example.patch @@ -0,0 +1,82 @@ +Subject: debugfs example code + +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + + +--- + fs/debugfs/debugfs_example.c | 70 +++++++++++++++++++++++++++++++++++++++++++ + 1 files changed, 70 insertions(+) + +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gregkh-2.6/fs/debugfs/debugfs_example.c 2005-05-09 09:15:47.000000000 -0700 +@@ -0,0 +1,70 @@ ++/* ++ * debugfs_example.c - Tiny example of how to use debugfs ++ * ++ * Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com> ++ * Copyright (C) 2004 IBM Inc. ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License version ++ * 2 as published by the Free Software Foundation. ++ * ++ * debugfs is for people to use instead of /proc or /sys. ++ * See Documentation/fs/debugfs.txt for more details. ++ * ++ */ ++ ++#include <linux/config.h> ++#include <linux/module.h> ++#include <linux/fs.h> ++#include <linux/mount.h> ++#include <linux/pagemap.h> ++#include <linux/init.h> ++#include <linux/namei.h> ++#include <linux/debugfs.h> ++ ++ ++static struct dentry *test_dentry; ++static struct dentry *test_dir; ++static struct dentry *test_u32_dentry; ++static u32 value = 42; ++ ++ ++static ssize_t example_read_file(struct file *file, char __user *user_buf, ++ size_t count, loff_t *ppos) ++{ ++ char buf[10]; ++ ++ sprintf(buf, "foo\n"); ++ return simple_read_from_buffer(user_buf, count, ppos, buf, sizeof(buf)); ++} ++ ++ ++static int example_open(struct inode *inode, struct file *file) ++{ ++ return 0; ++} ++ ++static struct file_operations example_file_operations = { ++ .read = example_read_file, ++ .open = example_open, ++}; ++ ++static int __init test_init(void) ++{ ++ test_dir = debugfs_create_dir("foo_dir", NULL); ++ test_dentry = debugfs_create_file("foo", 0444, test_dir, NULL, &example_file_operations); ++ test_u32_dentry = debugfs_create_u32("foo_u32", 0444, test_dir, &value); ++ return 0; ++} ++ ++static void __exit test_exit(void) ++{ ++ debugfs_remove(test_u32_dentry); ++ debugfs_remove(test_dentry); ++ debugfs_remove(test_dir); ++} ++ ++module_init(test_init); ++module_exit(test_exit); ++MODULE_LICENSE("GPL"); ++ diff --git a/gregkh/gregkh-kobject-warn.patch b/gregkh/gregkh-kobject-warn.patch new file mode 100644 index 0000000000000..de950863ed323 --- /dev/null +++ b/gregkh/gregkh-kobject-warn.patch @@ -0,0 +1,35 @@ +From: gregkh@suse.de +Subject: kobject warning stuff + +Good for development, don't push it to mainline as there are too many false positives. + + +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + lib/kobject.c | 7 +++++++ + 1 files changed, 7 insertions(+) + +--- gregkh-2.6.orig/lib/kobject.c 2005-05-09 09:07:22.000000000 -0700 ++++ gregkh-2.6/lib/kobject.c 2005-05-09 09:15:45.000000000 -0700 +@@ -121,6 +121,7 @@ + */ + void kobject_init(struct kobject * kobj) + { ++ WARN_ON(atomic_read(&kobj->kref.refcount)); + kref_init(&kobj->kref); + INIT_LIST_HEAD(&kobj->entry); + kobj->kset = kset_get(kobj->kset); +@@ -345,6 +346,12 @@ + kobj->k_name = NULL; + if (t && t->release) + t->release(kobj); ++ else ++ pr_debug("kobject '%s' does not have a release() function, " ++ "if this is not a directory kobject, it is broken " ++ "and must be fixed.\n", ++ kobj->name); ++ + if (s) + kset_put(s); + if (parent) diff --git a/gregkh/gregkh-laptop-sysrq.patch b/gregkh/gregkh-laptop-sysrq.patch new file mode 100644 index 0000000000000..32c2922f7f95f --- /dev/null +++ b/gregkh/gregkh-laptop-sysrq.patch @@ -0,0 +1,20 @@ +From: gregkh@suse.de +Subject: Stupid patch for my laptop which can't get sysrq-u + +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/char/sysrq.c | 2 +- + 1 files changed, 1 insertion(+), 1 deletion(-) + +--- gregkh-2.6.orig/drivers/char/sysrq.c 2005-06-27 11:07:27.000000000 -0700 ++++ gregkh-2.6/drivers/char/sysrq.c 2005-06-27 11:09:15.000000000 -0700 +@@ -324,7 +324,7 @@ + /* v */ NULL, /* May be assigned at init time by SMP VOYAGER */ + /* w */ NULL, + /* x */ NULL, +-/* y */ NULL, ++/* y */ &sysrq_mountro_op, /* stupid fujitsu laptop, can't hit the U key */ + /* z */ NULL + }; + diff --git a/gregkh/gregkh-usb-hacking.patch b/gregkh/gregkh-usb-hacking.patch new file mode 100644 index 0000000000000..c338da76de7e0 --- /dev/null +++ b/gregkh/gregkh-usb-hacking.patch @@ -0,0 +1,311 @@ +Subject: Greg's test usb module + +Don't mess with it, it's horrible. + +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + drivers/usb/Makefile | 2 + drivers/usb/gregkh.c | 289 +++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 291 insertions(+) + +--- /dev/null 1970-01-01 00:00:00.000000000 +0000 ++++ gregkh-2.6/drivers/usb/gregkh.c 2005-07-13 09:49:41.000000000 -0700 +@@ -0,0 +1,289 @@ ++/* ++ * greg kroah-hartman's junk module ++ * ++ * Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com> ++ * ++ * The place I use to mess around with new ideas... ++ * ++ * Released under the GPL V2 only. ++ * ++ * use at your own risk... ++ * ++ */ ++ ++#include <linux/config.h> ++#include <linux/kobject.h> ++#include <linux/string.h> ++#include <linux/sysfs.h> ++#include <linux/module.h> ++#include <linux/init.h> ++#include <linux/kdev_t.h> ++#include <linux/device.h> ++ ++struct greg { ++ struct kobject kobj; ++ u32 a; ++ u16 b; ++ u8 c; ++ void * d; ++}; ++ ++struct d_greg { ++ u16 foo; ++ struct greg g; ++ u16 baz; ++}; ++ ++struct greg_attribute { ++ struct attribute attr; ++ u32 offset; ++ ssize_t (*show)(struct greg *, char * buf, u32 offset); ++ ssize_t (*store)(struct greg *, const char * buf, size_t count); ++}; ++#define to_greg_attr(_attr) container_of(_attr, struct greg_attribute, attr) ++#define to_greg(obj) container_of(obj, struct greg, kobj) ++ ++static ssize_t greg_attr_show(struct kobject * kobj, struct attribute * attr, char * buf) ++{ ++ struct greg_attribute *g_attr = to_greg_attr(attr); ++ struct greg *g = to_greg(kobj); ++ ssize_t ret = 0; ++ ++ printk("GREG: %s kobj=%p g=%p\n", __FUNCTION__, kobj, g); ++ if (g_attr->show) ++ ret = g_attr->show(g, buf, g_attr->offset); ++ return ret; ++} ++ ++static ssize_t greg_attr_store(struct kobject * kobj, struct attribute * attr, const char * buf, size_t count) ++{ ++ struct greg_attribute *g_attr = to_greg_attr(attr); ++ struct greg *g = to_greg(kobj); ++ ssize_t ret = 0; ++ ++ if (g_attr->store) ++ ret = g_attr->store(g, buf, count); ++ return ret; ++} ++ ++static struct sysfs_ops greg_sysfs_ops = { ++ .show = greg_attr_show, ++ .store = greg_attr_store, ++}; ++ ++static void greg_kobj_release(struct kobject *kobj) ++{ ++ kfree(container_of(kobj, struct greg, kobj)); ++} ++ ++static struct kobj_type greg_ktype = { ++ .sysfs_ops = &greg_sysfs_ops, ++ .release = &greg_kobj_release, ++}; ++ ++ ++static decl_subsys(gregkh, &greg_ktype, NULL); ++ ++static struct greg *g1; ++static struct greg *g2; ++ ++static ssize_t u32_show(struct greg *g, char *buf, u32 offset) ++{ ++ void *v = g; ++ u32 *val = offset + v; ++ printk("GREG: %s val=%p\n", __FUNCTION__, val); ++ return sprintf(buf, "%d\n", *val); ++} ++ ++static ssize_t u16_show(struct greg *g, char *buf, u32 offset) ++{ ++ void *v = g; ++ u16 *val = offset + v; ++ printk("GREG: %s val=%p\n", __FUNCTION__, val); ++ return sprintf(buf, "%d\n", *val); ++} ++ ++static ssize_t u8_show(struct greg *g, char *buf, u32 offset) ++{ ++ void *v = g; ++ u8 *val = offset + v; ++ printk("GREG: %s val=%p\n", __FUNCTION__, val); ++ return sprintf(buf, "%d\n", *val); ++} ++ ++static ssize_t void_ptr_show(struct greg *g, char *buf, u32 offset) ++{ ++ void *v = g; ++ void **val = offset + v; ++ printk("GREG: %s val=%p\n", __FUNCTION__, val); ++ return sprintf(buf, "%p\n", *val); ++} ++ ++#define to_d_greg(obj) container_of(obj, struct d_greg, g) ++ ++#if 0 ++/* we want the to figure out where baz is in memory, and we're given a struct greg *, ++ * so, how to get there... */ ++static void x(struct greg *g) ++{ ++ u16 *baz_pointer; ++ void *v; ++ struct d_greg *d; ++ s32 o1, o2; ++ ++ /* we can get from greg to a d_greg with container_of */ ++ d = to_d_greg(g); ++ v = d; ++ ++ /* now to the baz by adding the offset within d_greg */ ++ baz_pointer = v + offsetof(struct d_greg, baz); ++ ++ /* we got it, but let's do it in one line... */ ++ baz_pointer = ((void *)to_d_greg(g) + offsetof(struct d_greg, baz)); ++ ++ /* ok, put it in a #define for all to use... */ ++#define find_it_1(container, offset) \ ++ ((void *)(container) + offset) ++ ++ baz_pointer = find_it_1(to_d_greg(g), offsetof(struct d_greg, baz)); ++ ++ /* simpler... */ ++#define find_it_2(ptr, type, member, var) \ ++ ((void *)(container_of(ptr, type, member) + offsetof(type, var))) ++ baz_pointer = find_it_2(g, struct d_greg, g, baz); ++ ++ /* just numbers, no pointers */ ++ o1 = offsetof(struct d_greg, g); ++ o2 = offsetof(struct d_greg, baz); ++ v = g; ++ baz_pointer = v - o1 + o2; ++} ++ ++#define void_container_of(ptr, type, member) ({ \ ++ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ ++ (type *)( (char *)__mptr - offsetof(type,member) );}) ++#define D_RO(_name, _ptr, ++#endif ++ ++ ++#define G_RO(_name, _var, _type) \ ++static struct greg_attribute _name##_attr = { \ ++ .attr = { .name = __stringify(_name), .mode = 0444, .owner = THIS_MODULE }, \ ++ .offset = offsetof(struct greg, _var), \ ++ .show = _type##_show, \ ++} ++ ++G_RO(a, a, u32); ++G_RO(b, b, u16); ++G_RO(c, c, u8); ++G_RO(d, d, void_ptr); ++ ++static struct attribute * g_attrs[] = { ++ &a_attr.attr, ++ &b_attr.attr, ++ &c_attr.attr, ++ &d_attr.attr, ++ NULL ++}; ++ ++static struct attribute_group g_attr_group = { ++ .attrs = g_attrs, ++}; ++ ++#if 0 ++#define G_ATTR_RO(_name) \ ++static struct greg_attribute _name##_attr = __ATTR_RO(_name) ++ ++#define G_ATTR_RW(_name) \ ++static struct greg_attribute _name##_attr = \ ++ __ATTR(_name, 0644, _name##_show, _name##_store) ++ ++static struct greg_attribute b_attr = { ++ .attr = {.name ="b", .mode =0444, .owner = THIS_MODULE }, ++ .show = b_show, ++}; ++//G_ATTR_RO(a); ++//G_ATTR_RO(b); ++#endif ++ ++static struct class *greg_class; ++ ++static void greg_class_init(void) ++{ ++ greg_class = class_create(THIS_MODULE, "gregkh"); ++ ++ class_device_create(greg_class, MKDEV(42, 0), NULL, "greg1"); ++ class_device_create(greg_class, MKDEV(42, 1), NULL, "greg2"); ++ class_device_create(greg_class, MKDEV(42, 2), NULL, "greg3"); ++ ++ printk("GREG: create a dupe name\n"); ++ class_device_create(greg_class, MKDEV(42, 3), NULL, "greg1"); ++ printk("GREG: dup name created\n"); ++} ++ ++ ++static int greg_init(void) ++{ ++ int error; ++ ++ error = subsystem_register(&gregkh_subsys); ++ if (error) { ++ printk("GREG: error %d\n", error); ++ return error; ++ } ++ ++ g1 = kmalloc(sizeof(*g1), GFP_KERNEL); ++ memset(g1, 0x00, sizeof(*g1)); ++ g1->a = 1; ++ g1->b = 2; ++ g1->c = 3; ++ g1->d = g1; ++ ++ g2 = kmalloc(sizeof(*g2), GFP_KERNEL); ++ memset(g2, 0x00, sizeof(*g2)); ++ g2->a = 1; ++ g2->b = 2; ++ g2->c = 3; ++ g2->d = g2; ++ ++ kobject_set_name(&g1->kobj, "g1"); ++ kobject_set_name(&g2->kobj, "g2"); ++ ++ kobj_set_kset_s(g1, gregkh_subsys); ++ kobj_set_kset_s(g2, gregkh_subsys); ++ g1->kobj.parent = &gregkh_subsys.kset.kobj; ++ g2->kobj.parent = &gregkh_subsys.kset.kobj; ++ ++ kobject_register(&g1->kobj); ++ kobject_register(&g2->kobj); ++ ++// error = sysfs_create_file(&g1->kobj, &a_attr.attr); ++// error = sysfs_create_file(&g2->kobj, &b_attr.attr); ++// error = sysfs_create_file(&g2->kobj, &c_attr.attr); ++// error = sysfs_create_file(&g2->kobj, &d_attr.attr); ++ error = sysfs_create_group(&g1->kobj, &g_attr_group); ++ error = sysfs_create_group(&g2->kobj, &g_attr_group); ++ printk("GREG: %s g1=%p\n", __FUNCTION__, g1); ++ printk("GREG: %s g2=%p\n", __FUNCTION__, g2); ++ ++ greg_class_init(); ++ ++ return error; ++} ++ ++ ++static void greg_exit(void) ++{ ++ kobject_unregister(&g1->kobj); ++ kobject_unregister(&g2->kobj); ++ subsystem_unregister(&gregkh_subsys); ++ ++ class_destroy(greg_class); ++} ++ ++ ++ ++ ++module_init(greg_init); ++module_exit(greg_exit); ++MODULE_LICENSE("GPL"); +--- gregkh-2.6.orig/drivers/usb/Makefile 2005-07-13 09:45:06.000000000 -0700 ++++ gregkh-2.6/drivers/usb/Makefile 2005-07-13 09:49:41.000000000 -0700 +@@ -76,3 +76,5 @@ + + obj-$(CONFIG_USB_ATM) += atm/ + obj-$(CONFIG_USB_SPEEDTOUCH) += atm/ ++ ++obj-m += gregkh.o diff --git a/gregkh/gregkh-usb-minors.patch b/gregkh/gregkh-usb-minors.patch new file mode 100644 index 0000000000000..80f19365535d6 --- /dev/null +++ b/gregkh/gregkh-usb-minors.patch @@ -0,0 +1,51 @@ +Subject: devices.txt update with proper usb minor numbers + +Someday I'll submit this to lannana + +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + Documentation/devices.txt | 26 ++++++++++++++++++++------ + 1 files changed, 20 insertions(+), 6 deletions(-) + +--- gregkh-2.6.orig/Documentation/devices.txt 2005-06-27 11:07:25.000000000 -0700 ++++ gregkh-2.6/Documentation/devices.txt 2005-06-27 11:09:21.000000000 -0700 +@@ -2543,18 +2543,32 @@ + 0 = /dev/usb/lp0 First USB printer + ... + 15 = /dev/usb/lp15 16th USB printer +- 16 = /dev/usb/mouse0 First USB mouse +- ... +- 31 = /dev/usb/mouse15 16th USB mouse +- 32 = /dev/usb/ez0 First USB firmware loader +- ... +- 47 = /dev/usb/ez15 16th USB firmware loader + 48 = /dev/usb/scanner0 First USB scanner + ... + 63 = /dev/usb/scanner15 16th USB scanner + 64 = /dev/usb/rio500 Diamond Rio 500 + 65 = /dev/usb/usblcd USBLCD Interface (info@usblcd.de) + 66 = /dev/usb/cpad0 Synaptics cPad (mouse/LCD) ++ 96 = /dev/usb/hiddev0 1st USB HID device ++ ... ++ 111 = /dev/usb/hiddev15 16th USB HID device ++ 112 = /dev/usb/auer0 1st auerswald ISDN device ++ ... ++ 127 = /dev/usb/auer15 16th auerswald ISDN device ++ 128 = /dev/usb/brlvgr0 First Braille Voyager device ++ ... ++ 131 = /dev/usb/brlvgr3 Fourth Braille Voyager device ++ 132 = /dev/usb/idmouse ID Mouse (fingerprint scanner) device ++ 133 = /dev/usb/sisusbvga1 First SiSUSB VGA device ++ ... ++ 140 = /dev/usb/sisusbvga8 Eigth SISUSB VGA device ++ 144 = /dev/usb/lcd USB LCD device ++ 160 = /dev/usb/legousbtower0 1st USB Legotower device ++ ... ++ 175 = /dev/usb/legousbtower15 16th USB Legotower device ++ 240 = /dev/usb/dabusb0 First daubusb device ++ ... ++ 243 = /dev/usb/dabusb3 Fourth dabusb device + + 180 block USB block devices + 0 = /dev/uba First USB block device diff --git a/gregkh/no-random.patch b/gregkh/no-random.patch new file mode 100644 index 0000000000000..79d2235058cb5 --- /dev/null +++ b/gregkh/no-random.patch @@ -0,0 +1,15 @@ +--- + kernel/sysctl.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- gregkh-2.6.orig/kernel/sysctl.c 2005-09-08 09:07:30.000000000 -0700 ++++ gregkh-2.6/kernel/sysctl.c 2005-09-08 09:09:09.000000000 -0700 +@@ -124,7 +124,7 @@ extern int sysctl_hz_timer; + extern int acct_parm[]; + #endif + +-int randomize_va_space = 1; ++int randomize_va_space = 0; + + static int parse_table(int __user *, int, void __user *, size_t __user *, void __user *, size_t, + ctl_table *, void **); |