Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

undefined reference to `usb_add_gadget_udc' while building GadgetFS as module #274

Open
azmathmoosa opened this issue Jan 3, 2017 · 1 comment

Comments

@azmathmoosa
Copy link

I am trying to build with support for GadgetFS. I tried to build it inside the kernel (using *) and it successfully builds, but when trying to mount using it, a runtime error occurs and it fails to mount.

So I tried to make it as a module but the build fails with the above error.

In function `sunxi_udc_probe_otg':
/work/12_Kyloren/13_NanoPi/Debian/lichee/linux-3.4/drivers/usb/sunxi_usb/udc/sunxi_udc.c:3004: undefined reference to `usb_add_gadget_udc'
make: *** [.tmp_vmlinux1] Error 1

My menuconfig is as follows

<*> USB support
     [*] USB runtime power management (autosuspend) and wakeup
     [*]    OTG support
    <M> USB Gadget support -->
            [*] softwinner sunxi usb peripheral controller
            <M> Gadget filesystem
            <M> Mass Storage Gadget
     <*> sunxi usb2.0 dual role controller support -->
           <*> SUNXI usb2 manager
                  USB2 controller support (otg support) -->
          <*> SunXi USB driver debug message
          <*> SunXi USB HOST driver

I tried this configuration as well, but then the build fails with undefined reference usb_hcd_**

<*> USB support
     [*] USB runtime power management (autosuspend) and wakeup
     [*]    OTG support
    <M> USB Gadget support -->
            [*] softwinner sunxi usb peripheral controller
            <M> Gadget filesystem
            <M> Mass Storage Gadget
     <M> sunxi usb2.0 dual role controller support -->
           <M> SUNXI usb2 manager
                  USB2 controller support (otg support) -->
          <M> SunXi USB driver debug message
          <M> SunXi USB HOST driver

Please let me know how to get around this.

BTW: This is for the board with AllWinner H3

@azmathmoosa
Copy link
Author

azmathmoosa commented Jan 3, 2017

I managed to build with this


<*> USB support
     [*] USB runtime power management (autosuspend) and wakeup
     [*]    OTG support
    **<*>** USB Gadget support -->
            [*] softwinner sunxi usb peripheral controller
            <M> Gadget filesystem
            <M> Mass Storage Gadget
     <*> sunxi usb2.0 dual role controller support -->
           <*> SUNXI usb2 manager
                  USB2 controller support (otg support) -->
          <*> SunXi USB driver debug message
          <*> SunXi USB HOST driver

However, on mounting I get this (the same runtime error when I make gadgetfs in-built)

root@kyloren:/dev$ # modprobe gadgetfs
[  283.295807] gadgetfs: USB Gadget filesystem, version 24 Aug 2004
root@kyloren:/dev$ # 
root@kyloren:/dev$ # mkdir /dev/gadget  
root@kyloren:/dev$ # mount -t gadgetfs gadgetfs /dev/gadget  
[  302.459138] WRN:L2558(drivers/usb/sunxi_usb/udc/sunxi_udc.c):ERR: Error in bind() : -120
[  302.478543] nop sunxi_usb_udc: failed to start (null): -120

amery pushed a commit that referenced this issue Jul 5, 2017
We need to use refcount_set() on a newly created rule to avoid
following error :

[   64.601749] ------------[ cut here ]------------
[   64.601757] WARNING: CPU: 0 PID: 6476 at lib/refcount.c:184 refcount_sub_and_test+0x75/0xa0
[   64.601758] Modules linked in: w1_therm wire cdc_acm ehci_pci ehci_hcd mlx4_en ib_uverbs mlx4_ib ib_core mlx4_core
[   64.601769] CPU: 0 PID: 6476 Comm: ip Tainted: G        W       4.12.0-smp-DEV #274
[   64.601771] task: ffff8837bf482040 task.stack: ffff8837bdc08000
[   64.601773] RIP: 0010:refcount_sub_and_test+0x75/0xa0
[   64.601774] RSP: 0018:ffff8837bdc0f5c0 EFLAGS: 00010286
[   64.601776] RAX: 0000000000000026 RBX: 0000000000000001 RCX: 0000000000000000
[   64.601777] RDX: 0000000000000026 RSI: 0000000000000096 RDI: ffffed06f7b81eae
[   64.601778] RBP: ffff8837bdc0f5d0 R08: 0000000000000004 R09: fffffbfff4a54c25
[   64.601779] R10: 00000000cbc500e5 R11: ffffffffa52a6128 R12: ffff881febcf6f24
[   64.601779] R13: ffff881fbf4eaf00 R14: ffff881febcf6f80 R15: ffff8837d7a4ed00
[   64.601781] FS:  00007ff5a2f6b700(0000) GS:ffff881fff800000(0000) knlGS:0000000000000000
[   64.601782] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[   64.601783] CR2: 00007ffcdc70d000 CR3: 0000001f9c91e000 CR4: 00000000001406f0
[   64.601783] Call Trace:
[   64.601786]  refcount_dec_and_test+0x11/0x20
[   64.601790]  fib_nl_delrule+0xc39/0x1630
[   64.601793]  ? is_bpf_text_address+0xe/0x20
[   64.601795]  ? fib_nl_newrule+0x25e0/0x25e0
[   64.601798]  ? depot_save_stack+0x133/0x470
[   64.601801]  ? ns_capable+0x13/0x20
[   64.601803]  ? __netlink_ns_capable+0xcc/0x100
[   64.601806]  rtnetlink_rcv_msg+0x23a/0x6a0
[   64.601808]  ? rtnl_newlink+0x1630/0x1630
[   64.601811]  ? memset+0x31/0x40
[   64.601813]  netlink_rcv_skb+0x2d7/0x440
[   64.601815]  ? rtnl_newlink+0x1630/0x1630
[   64.601816]  ? netlink_ack+0xaf0/0xaf0
[   64.601818]  ? kasan_unpoison_shadow+0x35/0x50
[   64.601820]  ? __kmalloc_node_track_caller+0x4c/0x70
[   64.601821]  rtnetlink_rcv+0x28/0x30
[   64.601823]  netlink_unicast+0x422/0x610
[   64.601824]  ? netlink_attachskb+0x650/0x650
[   64.601826]  netlink_sendmsg+0x7b7/0xb60
[   64.601828]  ? netlink_unicast+0x610/0x610
[   64.601830]  ? netlink_unicast+0x610/0x610
[   64.601832]  sock_sendmsg+0xba/0xf0
[   64.601834]  ___sys_sendmsg+0x6a9/0x8c0
[   64.601835]  ? copy_msghdr_from_user+0x520/0x520
[   64.601837]  ? __alloc_pages_nodemask+0x160/0x520
[   64.601839]  ? memcg_write_event_control+0xd60/0xd60
[   64.601841]  ? __alloc_pages_slowpath+0x1d50/0x1d50
[   64.601843]  ? kasan_slab_free+0x71/0xc0
[   64.601845]  ? mem_cgroup_commit_charge+0xb2/0x11d0
[   64.601847]  ? lru_cache_add_active_or_unevictable+0x7d/0x1a0
[   64.601849]  ? __handle_mm_fault+0x1af8/0x2810
[   64.601851]  ? may_open_dev+0xc0/0xc0
[   64.601852]  ? __pmd_alloc+0x2c0/0x2c0
[   64.601853]  ? __fdget+0x13/0x20
[   64.601855]  __sys_sendmsg+0xc6/0x150
[   64.601856]  ? __sys_sendmsg+0xc6/0x150
[   64.601857]  ? SyS_shutdown+0x170/0x170
[   64.601859]  ? handle_mm_fault+0x28a/0x650
[   64.601861]  SyS_sendmsg+0x12/0x20
[   64.601863]  entry_SYSCALL_64_fastpath+0x13/0x94

Fixes: 717d1e9 ("net: convert fib_rule.refcnt from atomic_t to refcount_t")
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant