加载linux驱动模块时,终端提示一堆内存错误

一、问题描述

        在写好一个linux驱动模块,在开发板上运行的时候,出现以下提示:

WARNING: CPU: 0 PID: 100 at fs/sysfs/dir.c:31 sysfs_warn_dup+0x54/0x74()
sysfs: cannot create duplicate filename '/class/led_class'
Modules linked in: leddriver(O+) [last unloaded: leddriver]
CPU: 0 PID: 100 Comm: modprobe Tainted: G        W  O    4.1.15 #1
Hardware name: Freescale i.MX6 Ultralite (Device Tree)
[<80015ed4>] (unwind_backtrace) from [<80012794>] (show_stack+0x10/0x14)
[<80012794>] (show_stack) from [<8068ca68>] (dump_stack+0x80/0xc8)
[<8068ca68>] (dump_stack) from [<8003824c>] (warn_slowpath_common+0x74/0xb0)
[<8003824c>] (warn_slowpath_common) from [<800382b8>] (warn_slowpath_fmt+0x30/0x40)
[<800382b8>] (warn_slowpath_fmt) from [<8014b774>] (sysfs_warn_dup+0x54/0x74)
[<8014b774>] (sysfs_warn_dup) from [<8014b860>] (sysfs_create_dir_ns+0x84/0x9c)
[<8014b860>] (sysfs_create_dir_ns) from [<8029e380>] (kobject_add_internal+0xa0/0x2d8)
[<8029e380>] (kobject_add_internal) from [<8029e670>] (kset_register+0x50/0x7c)
[<8029e670>] (kset_register) from [<8034e604>] (__class_register+0xa8/0x1bc)
[<8034e604>] (__class_register) from [<8034e758>] (__class_create+0x40/0x78)
[<8034e758>] (__class_create) from [<7f008104>] (led_probe+0x70/0x19c [leddriver])
[<7f008104>] (led_probe [leddriver]) from [<8034f2c0>] (platform_drv_probe+0x44/0xa4)
[<8034f2c0>] (platform_drv_probe) from [<8034db88>] (driver_probe_device+0x16c/0x2b0)
[<8034db88>] (driver_probe_device) from [<8034dd9c>] (__driver_attach+0x8c/0x90)
[<8034dd9c>] (__driver_attach) from [<8034c100>] (bus_for_each_dev+0x6c/0xa0)
[<8034c100>] (bus_for_each_dev) from [<8034d33c>] (bus_add_driver+0x140/0x1ec)
[<8034d33c>] (bus_add_driver) from [<8034e388>] (driver_register+0x78/0xf8)
[<8034e388>] (driver_register) from [<80009704>] (do_one_initcall+0x80/0x1d8)
[<80009704>] (do_one_initcall) from [<8068a954>] (do_init_module+0x58/0x1a8)
[<8068a954>] (do_init_module) from [<80095e48>] (load_module+0x165c/0x1d48)
[<80095e48>] (load_module) from [<800966bc>] (SyS_finit_module+0x64/0x74)
[<800966bc>] (SyS_finit_module) from [<8000f500>] (ret_fast_syscall+0x0/0x3c)
---[ end trace dec46dec8f9e0b01 ]---
------------[ cut here ]------------
WARNING: CPU: 0 PID: 100 at lib/kobject.c:240 kobject_add_internal+0x25c/0x2d8()
kobject_add_internal failed for led_class with -EEXIST, don't try to register things with the same name in the same directory.
Modules linked in: leddriver(O+) [last unloaded: leddriver]
CPU: 0 PID: 100 Comm: modprobe Tainted: G        W  O    4.1.15 #1
Hardware name: Freescale i.MX6 Ultralite (Device Tree)
[<80015ed4>] (unwind_backtrace) from [<80012794>] (show_stack+0x10/0x14)
[<80012794>] (show_stack) from [<8068ca68>] (dump_stack+0x80/0xc8)
[<8068ca68>] (dump_stack) from [<8003824c>] (warn_slowpath_common+0x74/0xb0)
[<8003824c>] (warn_slowpath_common) from [<800382b8>] (warn_slowpath_fmt+0x30/0x40)
[<800382b8>] (warn_slowpath_fmt) from [<8029e53c>] (kobject_add_internal+0x25c/0x2d8)
[<8029e53c>] (kobject_add_internal) from [<8029e670>] (kset_register+0x50/0x7c)
[<8029e670>] (kset_register) from [<8034e604>] (__class_register+0xa8/0x1bc)
[<8034e604>] (__class_register) from [<8034e758>] (__class_create+0x40/0x78)
[<8034e758>] (__class_create) from [<7f008104>] (led_probe+0x70/0x19c [leddriver])
[<7f008104>] (led_probe [leddriver]) from [<8034f2c0>] (platform_drv_probe+0x44/0xa4)
[<8034f2c0>] (platform_drv_probe) from [<8034db88>] (driver_probe_device+0x16c/0x2b0)
[<8034db88>] (driver_probe_device) from [<8034dd9c>] (__driver_attach+0x8c/0x90)
[<8034dd9c>] (__driver_attach) from [<8034c100>] (bus_for_each_dev+0x6c/0xa0)
[<8034c100>] (bus_for_each_dev) from [<8034d33c>] (bus_add_driver+0x140/0x1ec)
[<8034d33c>] (bus_add_driver) from [<8034e388>] (driver_register+0x78/0xf8)
[<8034e388>] (driver_register) from [<80009704>] (do_one_initcall+0x80/0x1d8)
[<80009704>] (do_one_initcall) from [<8068a954>] (do_init_module+0x58/0x1a8)
[<8068a954>] (do_init_module) from [<80095e48>] (load_module+0x165c/0x1d48)
[<80095e48>] (load_module) from [<800966bc>] (SyS_finit_module+0x64/0x74)
[<800966bc>] (SyS_finit_module) from [<8000f500>] (ret_fast_syscall+0x0/0x3c)
---[ end trace dec46dec8f9e0b02 ]---

二、问题解决

1、有一条重要的错误提示:
 

object_add_internal failed for led_class with -EEXIST, don't try to register things with the same name in the same directory.

那应该是由于class类的名字已经存在,重新申请的时候出现重名冲突的情况,所以修改类的名字或者删掉原来的类即可(推荐第一种)。

2、很多时候都会出现这种形式的错误,无非是命名冲突,或者申请,释放的对象出现错误,只要细心一点或者能够根据错误提示修改即可。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值