aboutsummaryrefslogtreecommitdiffstats
path: root/gregkh
diff options
context:
space:
mode:
author <greg@echidna.(none)>2005-09-26 14:25:31 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2005-09-26 14:25:31 -0700
commit91a58b314302947ce21404c0c7e803661a0bf2db (patch)
tree3508ebb6d565a2b73224732a53ead7d02e6b7e45 /gregkh
downloadpatches-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.patch82
-rw-r--r--gregkh/gregkh-kobject-warn.patch35
-rw-r--r--gregkh/gregkh-laptop-sysrq.patch20
-rw-r--r--gregkh/gregkh-usb-hacking.patch311
-rw-r--r--gregkh/gregkh-usb-minors.patch51
-rw-r--r--gregkh/no-random.patch15
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 **);