|  | 
 
| 源码:
 #include <linux/device.h>
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/string.h>
 
 MODULE_LICENSE("GPL");
 
 extern struct device first_bus;
 extern struct bus_type first_bus_type;
 static void first_dev_release(struct device *dev)
 {
 }
 struct device first_dev ={
 .bus    =  &first_bus_type,
 .parent =  &first_bus,
 .release= first_dev_release,
 };
 
 static ssize_t first_dev_show (struct device *dev, char *buf)
 
 {         printk("This is my first device!");
 return 1;
 }
 
 static DEVICE_ATTR(dev,S_IRUGO,first_dev_show, NULL);
 
 static int first_device_init (void)
 {
 int ret=0;
 dev_set_name(&first_dev, "first_dev");
 ret=device_register(&first_dev);
 device_create_file(&first_dev,&dev_attr_dev);
 
 return ret;
 }
 
 static void first_device_exit (void)
 {
 device_unregister(&first_dev);
 }
 
 module_init(first_device_init);
 module_exit(first_device_exit);
 错误信息:
 WARNING: at lib/kref.c:43 kref_get+0x48/0x50()
 Modules linked in: device(+) bus rt5370sta
 Backtrace:
 [<c002b034>] (dump_backtrace+0x0/0x10c) from [<c02f9500>] (dump_stack+0x18/0x1c)
 r7:00000000 r6:c0146690 r5:c03bc5ec r4:0000002b
 [<c02f94e8>] (dump_stack+0x0/0x1c) from [<c00467d8>] (warn_slowpath_common+0x4c/0x80)
 [<c004678c>] (warn_slowpath_common+0x0/0x80) from [<c0046824>] (warn_slowpath_null+0x18/0x1c)
 r7:c3a42000 r6:00000000 r5:bf0e44d8 r4:bf0e171c
 [<c004680c>] (warn_slowpath_null+0x0/0x1c) from [<c0146690>] (kref_get+0x48/0x50)
 [<c0146648>] (kref_get+0x0/0x50) from [<c014585c>] (kobject_get+0x18/0x20)
 r5:bf0e44d8 r4:bf0e1700
 [<c0145844>] (kobject_get+0x0/0x20) from [<c0189c48>] (get_device+0x1c/0x24)
 r5:bf0e44d8 r4:bf0e44d8
 [<c0189c2c>] (get_device+0x0/0x24) from [<c018a4e8>] (device_add+0x98/0x63c)
 [<c018a450>] (device_add+0x0/0x63c) from [<c018aaa8>] (device_register+0x1c/0x20)
 [<c018aa8c>] (device_register+0x0/0x20) from [<bf0e4050>] (first_device_init+0x24/0x44 [device])
 r5:001e4fe8 r4:bf0e44d8
 [<bf0e402c>] (first_device_init+0x0/0x44 [device]) from [<c0026284>] (do_one_initcall+0x3c/0x1bc)
 r5:001e4fe8 r4:00000b70
 [<c0026248>] (do_one_initcall+0x0/0x1bc) from [<c006af98>] (sys_init_module+0x94/0x1a4)
 [<c006af04>] (sys_init_module+0x0/0x1a4) from [<c0026e60>] (ret_fast_syscall+0x0/0x2c)
 r7:00000080 r6:000002ec r5:bef56ec0 r4:00000b70
 ---[ end trace 426184ffa19abac2 ]---
 Unable to handle kernel NULL pointer dereference at virtual address 00000020
 pgd = c3a48000
 [00000020] *pgd=3398e031, *pte=00000000, *ppte=00000000
 Internal error: Oops: 17 [#1]
 Modules linked in: device(+) bus rt5370sta
 CPU: 0    Tainted: G        W   (2.6.30.4-EmbedSky #12)
 PC is at sysfs_addrm_start+0x34/0xac
 LR is at sysfs_addrm_start+0x28/0xac
 pc : [<c00da1f0>]    lr : [<c00da1e4>]    psr: 60000013
 sp : c3a43d98  ip : c3a43d98  fp : c3a43db4
 r10: bf0e44e0  r9 : bf0e16f8  r8 : c3a43df4
 r7 : 00000000  r6 : c3a43db8  r5 : c3a2b750  r4 : 00000000
 r3 : 00000000  r2 : c0440adc  r1 : 00000001  r0 : c3805000
 Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
 Control: c000717f  Table: 33a48000  DAC: 00000015
 Process insmod (pid: 1043, stack limit = 0xc3a42268)
 Stack: (0xc3a43d98 to 0xc3a44000)
 3d80:                                                       c3a43db8 c3a2b750
 3da0: bf0e44e0 00000000 c3a43dec c3a43db8 c00da7d8 c00da1cc 00000000 00000000
 3dc0: 00000000 00000000 bf0e402c bf0e44e0 bf0e44e0 bf0e1700 c3a42000 bf0e1700
 3de0: c3a43e0c c3a43df0 c00da874 c00da79c c014585c c0146658 bf0e44e0 bf0e44e0
 3e00: c3a43e34 c3a43e10 c0145984 c00da84c bf0e44e0 00000000 bf0e1700 c3a42000
 3e20: c0027008 bf0e16f8 c3a43e54 c3a43e38 c0145ba8 c01458e8 bf0e44d8 bf0e44d8
 3e40: 00000000 c3a42000 c3a43e6c c3a43e58 c0145c44 c0145b84 c3a43e74 c3a43e74
 3e60: c3a43ebc c3a43e78 c018a530 c0145c1c 00000000 bf0e1700 c0027008 bf0e402c
 3e80: c3a43ea4 c3a43e90 c014561c c01465b8 bf0e44d8 bf0e44d8 001e4fe8 00000000
 3ea0: c3a42000 c0027008 bf0e402c c042b9e0 c3a43ed4 c3a43ec0 c018aaa8 c018a460
 3ec0: bf0e44d8 001e4fe8 c3a43eec c3a43ed8 bf0e4050 c018aa9c 00000b70 001e4fe8
 3ee0: c3a43f7c c3a43ef0 c0026284 bf0e403c c4915454 c49153ac c3950fe0 c4915a3c
 3f00: 0000000f 00000004 00000000 00000011 0000002c 00000002 00000002 c49156d4
 3f20: 00000011 00000011 c00978c8 00000000 00000000 00000000 00000000 00000000
 3f40: 00000000 00000b70 001e4fe8 bf0e4598 00000000 00000b70 001e4fe8 bf0e4598
 3f60: 00000000 c0027008 c3a42000 00000000 c3a43fa4 c3a43f80 c006af98 c0026258
 3f80: ffffffff 001e44c0 00000b70 bef56ec0 000002ec 00000080 00000000 c3a43fa8
 3fa0: c0026e60 c006af14 00000b70 bef56ec0 001e4ff8 00000b70 001e4fe8 bef56ec0
 3fc0: 00000b70 bef56ec0 000002ec 00000080 00000000 00000002 00000000 bef56dc4
 3fe0: bef56be8 bef56bd8 0002cdbc 00009300 20000010 001e4ff8 00000000 00000000
 Backtrace:
 [<c00da1bc>] (sysfs_addrm_start+0x0/0xac) from [<c00da7d8>] (create_dir+0x4c/0xb0)
 r7:00000000 r6:bf0e44e0 r5:c3a2b750 r4:c3a43db8
 [<c00da78c>] (create_dir+0x0/0xb0) from [<c00da874>] (sysfs_create_dir+0x38/0x64)
 r8:bf0e1700 r7:c3a42000 r6:bf0e1700 r5:bf0e44e0 r4:bf0e44e0
 [<c00da83c>] (sysfs_create_dir+0x0/0x64) from [<c0145984>] (kobject_add_internal+0xac/0x1d8)
 r4:bf0e44e0
 [<c01458d8>] (kobject_add_internal+0x0/0x1d8) from [<c0145ba8>] (kobject_add_varg+0x34/0x50)
 r9:bf0e16f8 r8:c0027008 r7:c3a42000 r6:bf0e1700 r5:00000000
 r4:bf0e44e0
 [<c0145b74>] (kobject_add_varg+0x0/0x50) from [<c0145c44>] (kobject_add+0x3c/0x64)
 r7:c3a42000 r6:00000000 r5:bf0e44d8 r4:bf0e44d8
 [<c0145c08>] (kobject_add+0x0/0x64) from [<c018a530>] (device_add+0xe0/0x63c)
 r3:bf0e1700 r2:00000000
 [<c018a450>] (device_add+0x0/0x63c) from [<c018aaa8>] (device_register+0x1c/0x20)
 [<c018aa8c>] (device_register+0x0/0x20) from [<bf0e4050>] (first_device_init+0x24/0x44 [device])
 r5:001e4fe8 r4:bf0e44d8
 [<bf0e402c>] (first_device_init+0x0/0x44 [device]) from [<c0026284>] (do_one_initcall+0x3c/0x1bc)
 r5:001e4fe8 r4:00000b70
 [<c0026248>] (do_one_initcall+0x0/0x1bc) from [<c006af98>] (sys_init_module+0x94/0x1a4)
 [<c006af04>] (sys_init_module+0x0/0x1a4) from [<c0026e60>] (ret_fast_syscall+0x0/0x2c)
 r7:00000080 r6:000002ec r5:bef56ec0 r4:00000b70
 Code: eb0880c2 e59f206c e1a03004 e5920000 (e5941020)
 ---[ end trace 426184ffa19abac3 ]---
 Segmentation fault
 
  求解答。多谢了
 | 
 |