dev.o: file format elf64-littleaarch64 Disassembly of section .text: ffff80001139e37c <__my_cpu_offset>: /* * We want to allow caching the value, so avoid using volatile and * instead use a fake stack read to hazard against barrier(). */ asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff80001139e37c: d538d080 mrs x0, tpidr_el1 ARM64_HAS_VIRT_HOST_EXTN) : "=r" (off) : "Q" (*(const unsigned long *)current_stack_pointer)); return off; } ffff80001139e380: d65f03c0 ret ffff80001139e384 : * Indicates the ifindex the interface is linked to. * Physical interfaces have the same 'ifindex' and 'iflink' values. */ int dev_get_iflink(const struct net_device *dev) { ffff80001139e384: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139e388: 910003fd mov x29, sp ffff80001139e38c: f9000bf3 str x19, [sp,#16] ffff80001139e390: aa0003f3 mov x19, x0 ffff80001139e394: aa1e03e0 mov x0, x30 ffff80001139e398: 94000000 bl 0 <_mcount> ffff80001139e398: R_AARCH64_CALL26 _mcount if (dev->netdev_ops && dev->netdev_ops->ndo_get_iflink) ffff80001139e39c: f940fa60 ldr x0, [x19,#496] ffff80001139e3a0: b4000100 cbz x0, ffff80001139e3c0 ffff80001139e3a4: f9411401 ldr x1, [x0,#552] ffff80001139e3a8: b40000c1 cbz x1, ffff80001139e3c0 return dev->netdev_ops->ndo_get_iflink(dev); ffff80001139e3ac: aa1303e0 mov x0, x19 ffff80001139e3b0: d63f0020 blr x1 return dev->ifindex; } ffff80001139e3b4: f9400bf3 ldr x19, [sp,#16] ffff80001139e3b8: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e3bc: d65f03c0 ret return dev->ifindex; ffff80001139e3c0: b9410260 ldr w0, [x19,#256] } ffff80001139e3c4: f9400bf3 ldr x19, [sp,#16] ffff80001139e3c8: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e3cc: d65f03c0 ret ffff80001139e3d0 <__dev_get_by_index>: * about locking. The caller must hold either the RTNL semaphore * or @dev_base_lock. */ struct net_device *__dev_get_by_index(struct net *net, int ifindex) { ffff80001139e3d0: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139e3d4: 910003fd mov x29, sp ffff80001139e3d8: f9000bf3 str x19, [sp,#16] ffff80001139e3dc: aa0003f3 mov x19, x0 ffff80001139e3e0: aa1e03e0 mov x0, x30 ffff80001139e3e4: f90017a1 str x1, [x29,#40] ffff80001139e3e8: 94000000 bl 0 <_mcount> ffff80001139e3e8: R_AARCH64_CALL26 _mcount return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; ffff80001139e3ec: f94017a1 ldr x1, [x29,#40] struct net_device *dev; struct hlist_head *head = dev_index_hash(net, ifindex); hlist_for_each_entry(dev, head, index_hlist) ffff80001139e3f0: f9409a62 ldr x2, [x19,#304] return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; ffff80001139e3f4: d37d1c20 ubfiz x0, x1, #3, #8 hlist_for_each_entry(dev, head, index_hlist) ffff80001139e3f8: f8606840 ldr x0, [x2,x0] ffff80001139e3fc: b4000040 cbz x0, ffff80001139e404 <__dev_get_by_index+0x34> ffff80001139e400: d10e4000 sub x0, x0, #0x390 ffff80001139e404: b40000c0 cbz x0, ffff80001139e41c <__dev_get_by_index+0x4c> if (dev->ifindex == ifindex) ffff80001139e408: b9410002 ldr w2, [x0,#256] ffff80001139e40c: 6b01005f cmp w2, w1 ffff80001139e410: 54000060 b.eq ffff80001139e41c <__dev_get_by_index+0x4c> hlist_for_each_entry(dev, head, index_hlist) ffff80001139e414: f941c800 ldr x0, [x0,#912] ffff80001139e418: b5ffff40 cbnz x0, ffff80001139e400 <__dev_get_by_index+0x30> return dev; return NULL; } ffff80001139e41c: f9400bf3 ldr x19, [sp,#16] ffff80001139e420: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139e424: d65f03c0 ret ffff80001139e428 : * had its reference counter increased so the caller must be careful * about locking. The caller must hold RCU lock. */ struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex) { ffff80001139e428: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139e42c: 910003fd mov x29, sp ffff80001139e430: f9000bf3 str x19, [sp,#16] ffff80001139e434: aa0003f3 mov x19, x0 ffff80001139e438: aa1e03e0 mov x0, x30 ffff80001139e43c: f90017a1 str x1, [x29,#40] ffff80001139e440: 94000000 bl 0 <_mcount> ffff80001139e440: R_AARCH64_CALL26 _mcount return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; ffff80001139e444: f94017a1 ldr x1, [x29,#40] ffff80001139e448: f9409a62 ldr x2, [x19,#304] ffff80001139e44c: d37d1c20 ubfiz x0, x1, #3, #8 }) static __always_inline void __read_once_size(const volatile void *p, void *res, int size) { __READ_ONCE_SIZE; ffff80001139e450: f8606840 ldr x0, [x2,x0] struct net_device *dev; struct hlist_head *head = dev_index_hash(net, ifindex); hlist_for_each_entry_rcu(dev, head, index_hlist) ffff80001139e454: b4000040 cbz x0, ffff80001139e45c ffff80001139e458: d10e4000 sub x0, x0, #0x390 ffff80001139e45c: b40000c0 cbz x0, ffff80001139e474 if (dev->ifindex == ifindex) ffff80001139e460: b9410002 ldr w2, [x0,#256] ffff80001139e464: 6b01005f cmp w2, w1 ffff80001139e468: 54000060 b.eq ffff80001139e474 ffff80001139e46c: f941c800 ldr x0, [x0,#912] hlist_for_each_entry_rcu(dev, head, index_hlist) ffff80001139e470: b5ffff40 cbnz x0, ffff80001139e458 return dev; return NULL; } ffff80001139e474: f9400bf3 ldr x19, [sp,#16] ffff80001139e478: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139e47c: d65f03c0 ret ffff80001139e480 : * its reference counter increased so the caller must be careful * about locking. The caller must hold RCU lock. */ struct net_device *dev_get_by_napi_id(unsigned int napi_id) { ffff80001139e480: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139e484: 910003fd mov x29, sp ffff80001139e488: f9000bf3 str x19, [sp,#16] ffff80001139e48c: 2a0003f3 mov w19, w0 ffff80001139e490: aa1e03e0 mov x0, x30 ffff80001139e494: 94000000 bl 0 <_mcount> ffff80001139e494: R_AARCH64_CALL26 _mcount struct napi_struct *napi; WARN_ON_ONCE(!rcu_read_lock_held()); if (napi_id < MIN_NAPI_ID) ffff80001139e498: 7140067f cmp w19, #0x1, lsl #12 ffff80001139e49c: 540001a9 b.ls ffff80001139e4d0 ffff80001139e4a0: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff80001139e4a0: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly static struct napi_struct *napi_by_id(unsigned int napi_id) { unsigned int hash = napi_id % HASH_SIZE(napi_hash); struct napi_struct *napi; hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) ffff80001139e4a4: d37d1e60 ubfiz x0, x19, #3, #8 ffff80001139e4a8: 91000021 add x1, x1, #0x0 ffff80001139e4a8: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff80001139e4ac: f8606821 ldr x1, [x1,x0] ffff80001139e4b0: b4000041 cbz x1, ffff80001139e4b8 ffff80001139e4b4: d105c021 sub x1, x1, #0x170 ffff80001139e4b8: b40000c1 cbz x1, ffff80001139e4d0 if (napi->napi_id == napi_id) ffff80001139e4bc: b9418022 ldr w2, [x1,#384] ffff80001139e4c0: 6b02027f cmp w19, w2 ffff80001139e4c4: 540000e0 b.eq ffff80001139e4e0 ffff80001139e4c8: f940b821 ldr x1, [x1,#368] hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) ffff80001139e4cc: b5ffff41 cbnz x1, ffff80001139e4b4 return NULL; ffff80001139e4d0: d2800000 mov x0, #0x0 // #0 } ffff80001139e4d4: f9400bf3 ldr x19, [sp,#16] ffff80001139e4d8: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e4dc: d65f03c0 ret return napi ? napi->dev : NULL; ffff80001139e4e0: f9401c20 ldr x0, [x1,#56] } ffff80001139e4e4: f9400bf3 ldr x19, [sp,#16] ffff80001139e4e8: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e4ec: d65f03c0 ret ffff80001139e4f0 : { ffff80001139e4f0: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139e4f4: 910003fd mov x29, sp ffff80001139e4f8: f9000bf3 str x19, [sp,#16] ffff80001139e4fc: 2a0003f3 mov w19, w0 ffff80001139e500: aa1e03e0 mov x0, x30 ffff80001139e504: 94000000 bl 0 <_mcount> ffff80001139e504: R_AARCH64_CALL26 _mcount ffff80001139e508: 51000660 sub w0, w19, #0x1 ffff80001139e50c: 7100841f cmp w0, #0x21 ffff80001139e510: 540000e8 b.hi ffff80001139e52c ffff80001139e514: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff80001139e514: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x90 ffff80001139e518: 91000021 add x1, x1, #0x0 ffff80001139e518: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x90 ffff80001139e51c: f8605820 ldr x0, [x1,w0,uxtw #3] } ffff80001139e520: f9400bf3 ldr x19, [sp,#16] ffff80001139e524: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e528: d65f03c0 ret { ffff80001139e52c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff80001139e52c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8 ffff80001139e530: 91000000 add x0, x0, #0x0 ffff80001139e530: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8 } ffff80001139e534: f9400bf3 ldr x19, [sp,#16] ffff80001139e538: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e53c: d65f03c0 ret ffff80001139e540 : { ffff80001139e540: a9bb7bfd stp x29, x30, [sp,#-80]! ffff80001139e544: 910003fd mov x29, sp ffff80001139e548: a90153f3 stp x19, x20, [sp,#16] ffff80001139e54c: a9025bf5 stp x21, x22, [sp,#32] ffff80001139e550: aa0003f3 mov x19, x0 ffff80001139e554: aa1e03e0 mov x0, x30 ffff80001139e558: aa0103f5 mov x21, x1 ffff80001139e55c: 90000016 adrp x22, 0 <__stack_chk_guard> ffff80001139e55c: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff80001139e560: 94000000 bl 0 <_mcount> ffff80001139e560: R_AARCH64_CALL26 _mcount ffff80001139e564: f94002c1 ldr x1, [x22] ffff80001139e564: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard if (dev->flags & IFF_UP) { ffff80001139e568: b9422aa0 ldr w0, [x21,#552] { ffff80001139e56c: f90027a1 str x1, [x29,#72] struct netdev_notifier_info info = { ffff80001139e570: 9100e3b4 add x20, x29, #0x38 if (dev->flags & IFF_UP) { ffff80001139e574: 360001e0 tbz w0, #0, ffff80001139e5b0 struct netdev_notifier_info info = { ffff80001139e578: a9007e9f stp xzr, xzr, [x20] return nb->notifier_call(nb, val, &info); ffff80001139e57c: f9400263 ldr x3, [x19] ffff80001139e580: d2800141 mov x1, #0xa // #10 ffff80001139e584: aa1403e2 mov x2, x20 struct netdev_notifier_info info = { ffff80001139e588: f9001fb5 str x21, [x29,#56] return nb->notifier_call(nb, val, &info); ffff80001139e58c: aa1303e0 mov x0, x19 ffff80001139e590: d63f0060 blr x3 ffff80001139e594: f9400263 ldr x3, [x19] struct netdev_notifier_info info = { ffff80001139e598: a9007e9f stp xzr, xzr, [x20] ffff80001139e59c: f9001fb5 str x21, [x29,#56] return nb->notifier_call(nb, val, &info); ffff80001139e5a0: aa1303e0 mov x0, x19 ffff80001139e5a4: d2800041 mov x1, #0x2 // #2 ffff80001139e5a8: aa1403e2 mov x2, x20 ffff80001139e5ac: d63f0060 blr x3 struct netdev_notifier_info info = { ffff80001139e5b0: a9007e9f stp xzr, xzr, [x20] return nb->notifier_call(nb, val, &info); ffff80001139e5b4: f9400263 ldr x3, [x19] ffff80001139e5b8: d28000c1 mov x1, #0x6 // #6 struct netdev_notifier_info info = { ffff80001139e5bc: f9001fb5 str x21, [x29,#56] return nb->notifier_call(nb, val, &info); ffff80001139e5c0: aa1303e0 mov x0, x19 ffff80001139e5c4: aa1403e2 mov x2, x20 ffff80001139e5c8: d63f0060 blr x3 } ffff80001139e5cc: f94027a1 ldr x1, [x29,#72] ffff80001139e5d0: f94002c0 ldr x0, [x22] ffff80001139e5d0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139e5d4: eb00003f cmp x1, x0 ffff80001139e5d8: 540000a1 b.ne ffff80001139e5ec ffff80001139e5dc: a94153f3 ldp x19, x20, [sp,#16] ffff80001139e5e0: a9425bf5 ldp x21, x22, [sp,#32] ffff80001139e5e4: a8c57bfd ldp x29, x30, [sp],#80 ffff80001139e5e8: d65f03c0 ret ffff80001139e5ec: 94000000 bl 0 <__stack_chk_fail> ffff80001139e5ec: R_AARCH64_CALL26 __stack_chk_fail ffff80001139e5f0 : { ffff80001139e5f0: a9ba7bfd stp x29, x30, [sp,#-96]! ffff80001139e5f4: 910003fd mov x29, sp ffff80001139e5f8: a90153f3 stp x19, x20, [sp,#16] ffff80001139e5fc: a9025bf5 stp x21, x22, [sp,#32] ffff80001139e600: f9001bf7 str x23, [sp,#48] ffff80001139e604: aa0003f5 mov x21, x0 ffff80001139e608: aa1e03e0 mov x0, x30 for_each_netdev(net, dev) { ffff80001139e60c: aa0103f6 mov x22, x1 { ffff80001139e610: 90000017 adrp x23, 0 <__stack_chk_guard> ffff80001139e610: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff80001139e614: 94000000 bl 0 <_mcount> ffff80001139e614: R_AARCH64_CALL26 _mcount ffff80001139e618: f94002e0 ldr x0, [x23] ffff80001139e618: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard for_each_netdev(net, dev) { ffff80001139e61c: f8490ed4 ldr x20, [x22,#144]! { ffff80001139e620: f9002fa0 str x0, [x29,#88] for_each_netdev(net, dev) { ffff80001139e624: eb1402df cmp x22, x20 ffff80001139e628: 910123b3 add x19, x29, #0x48 ffff80001139e62c: d1012294 sub x20, x20, #0x48 ffff80001139e630: 540005e0 b.eq ffff80001139e6ec struct netdev_notifier_info info = { ffff80001139e634: a9007e7f stp xzr, xzr, [x19] return nb->notifier_call(nb, val, &info); ffff80001139e638: f94002a3 ldr x3, [x21] struct netdev_notifier_info info = { ffff80001139e63c: f9000274 str x20, [x19] return nb->notifier_call(nb, val, &info); ffff80001139e640: aa1503e0 mov x0, x21 ffff80001139e644: d28000a1 mov x1, #0x5 // #5 ffff80001139e648: aa1303e2 mov x2, x19 ffff80001139e64c: d63f0060 blr x3 } /* Restore (negative) errno value from notify return value. */ static inline int notifier_to_errno(int ret) { ret &= ~NOTIFY_STOP_MASK; ffff80001139e650: 12107800 and w0, w0, #0xffff7fff return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff80001139e654: 7100041f cmp w0, #0x1 ffff80001139e658: 5400030d b.le ffff80001139e6b8 for_each_netdev_continue_reverse(net, dev) ffff80001139e65c: f9402a82 ldr x2, [x20,#80] ffff80001139e660: 52800021 mov w1, #0x1 // #1 ffff80001139e664: eb0202df cmp x22, x2 ffff80001139e668: 4b000034 sub w20, w1, w0 ffff80001139e66c: d1012053 sub x19, x2, #0x48 ffff80001139e670: 54000100 b.eq ffff80001139e690 call_netdevice_unregister_notifiers(nb, dev); ffff80001139e674: aa1303e1 mov x1, x19 ffff80001139e678: aa1503e0 mov x0, x21 ffff80001139e67c: 97ffffb1 bl ffff80001139e540 for_each_netdev_continue_reverse(net, dev) ffff80001139e680: f9402a73 ldr x19, [x19,#80] ffff80001139e684: eb1302df cmp x22, x19 ffff80001139e688: d1012273 sub x19, x19, #0x48 ffff80001139e68c: 54ffff41 b.ne ffff80001139e674 ffff80001139e690: 2a1403e0 mov w0, w20 } ffff80001139e694: f9402fa2 ldr x2, [x29,#88] ffff80001139e698: f94002e1 ldr x1, [x23] ffff80001139e698: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139e69c: eb01005f cmp x2, x1 ffff80001139e6a0: 540002a1 b.ne ffff80001139e6f4 ffff80001139e6a4: a94153f3 ldp x19, x20, [sp,#16] ffff80001139e6a8: a9425bf5 ldp x21, x22, [sp,#32] ffff80001139e6ac: f9401bf7 ldr x23, [sp,#48] ffff80001139e6b0: a8c67bfd ldp x29, x30, [sp],#96 ffff80001139e6b4: d65f03c0 ret if (!(dev->flags & IFF_UP)) ffff80001139e6b8: b9422a80 ldr w0, [x20,#552] ffff80001139e6bc: 36000100 tbz w0, #0, ffff80001139e6dc struct netdev_notifier_info info = { ffff80001139e6c0: a9007e7f stp xzr, xzr, [x19] return nb->notifier_call(nb, val, &info); ffff80001139e6c4: f94002a3 ldr x3, [x21] struct netdev_notifier_info info = { ffff80001139e6c8: f9000274 str x20, [x19] return nb->notifier_call(nb, val, &info); ffff80001139e6cc: aa1503e0 mov x0, x21 ffff80001139e6d0: d2800021 mov x1, #0x1 // #1 ffff80001139e6d4: aa1303e2 mov x2, x19 ffff80001139e6d8: d63f0060 blr x3 for_each_netdev(net, dev) { ffff80001139e6dc: f9402694 ldr x20, [x20,#72] ffff80001139e6e0: eb1402df cmp x22, x20 ffff80001139e6e4: d1012294 sub x20, x20, #0x48 ffff80001139e6e8: 54fffa61 b.ne ffff80001139e634 return 0; ffff80001139e6ec: 52800000 mov w0, #0x0 // #0 ffff80001139e6f0: 17ffffe9 b ffff80001139e694 } ffff80001139e6f4: 94000000 bl 0 <__stack_chk_fail> ffff80001139e6f4: R_AARCH64_CALL26 __stack_chk_fail ffff80001139e6f8 : { ffff80001139e6f8: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139e6fc: 910003fd mov x29, sp ffff80001139e700: f9000bf3 str x19, [sp,#16] ffff80001139e704: aa0003f3 mov x19, x0 ffff80001139e708: aa1e03e0 mov x0, x30 ffff80001139e70c: 94000000 bl 0 <_mcount> ffff80001139e70c: R_AARCH64_CALL26 _mcount ffff80001139e710: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff80001139e710: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff80001139e714: 91000021 add x1, x1, #0x0 ffff80001139e714: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff80001139e718: f9440022 ldr x2, [x1,#2048] ffff80001139e71c: 91200021 add x1, x1, #0x800 return !list_empty(&ptype_all) || !list_empty(&dev->ptype_all); ffff80001139e720: eb02003f cmp x1, x2 ffff80001139e724: 52800020 mov w0, #0x1 // #1 ffff80001139e728: 54000080 b.eq ffff80001139e738 } ffff80001139e72c: f9400bf3 ldr x19, [sp,#16] ffff80001139e730: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e734: d65f03c0 ret ffff80001139e738: f8488e60 ldr x0, [x19,#136]! return !list_empty(&ptype_all) || !list_empty(&dev->ptype_all); ffff80001139e73c: eb00027f cmp x19, x0 ffff80001139e740: 1a9f07e0 cset w0, ne } ffff80001139e744: f9400bf3 ldr x19, [sp,#16] ffff80001139e748: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e74c: d65f03c0 ret ffff80001139e750 : { ffff80001139e750: a9bc7bfd stp x29, x30, [sp,#-64]! ffff80001139e754: 910003fd mov x29, sp ffff80001139e758: a90153f3 stp x19, x20, [sp,#16] ffff80001139e75c: a9025bf5 stp x21, x22, [sp,#32] ffff80001139e760: aa0003f3 mov x19, x0 ffff80001139e764: aa1e03e0 mov x0, x30 ffff80001139e768: f9001fa1 str x1, [x29,#56] ffff80001139e76c: 53001c56 uxtb w22, w2 ffff80001139e770: 53003c75 uxth w21, w3 ffff80001139e774: 53003c94 uxth w20, w4 ffff80001139e778: 94000000 bl 0 <_mcount> ffff80001139e778: R_AARCH64_CALL26 _mcount if (sb_dev->num_tc >= 0 || tc >= dev->num_tc) ffff80001139e77c: f9401fa1 ldr x1, [x29,#56] ffff80001139e780: 79d09020 ldrsh w0, [x1,#2120] ffff80001139e784: 36f803a0 tbz w0, #31, ffff80001139e7f8 ffff80001139e788: 79d09260 ldrsh w0, [x19,#2120] ffff80001139e78c: 6b0002df cmp w22, w0 ffff80001139e790: 5400034a b.ge ffff80001139e7f8 if ((offset + count) > dev->real_num_tx_queues) ffff80001139e794: b943ce60 ldr w0, [x19,#972] ffff80001139e798: 0b150282 add w2, w20, w21 ffff80001139e79c: 6b00005f cmp w2, w0 ffff80001139e7a0: 540002c8 b.hi ffff80001139e7f8 ffff80001139e7a4: 8b360836 add x22, x1, w22, uxtb #2 while (count--) ffff80001139e7a8: 510006a2 sub w2, w21, #0x1 sb_dev->tc_to_txq[tc].count = count; ffff80001139e7ac: 791096d5 strh w21, [x22,#2122] sb_dev->tc_to_txq[tc].offset = offset; ffff80001139e7b0: 79109ad4 strh w20, [x22,#2124] while (count--) ffff80001139e7b4: 53003c42 uxth w2, w2 static inline struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev, unsigned int index) { return &dev->_tx[index]; ffff80001139e7b8: 52802804 mov w4, #0x140 // #320 ffff80001139e7bc: 529fffe0 mov w0, #0xffff // #65535 ffff80001139e7c0: 34000135 cbz w21, ffff80001139e7e4 netdev_get_tx_queue(dev, count + offset)->sb_dev = sb_dev; ffff80001139e7c4: f941e263 ldr x3, [x19,#960] ffff80001139e7c8: 0b020285 add w5, w20, w2 while (count--) ffff80001139e7cc: 51000442 sub w2, w2, #0x1 netdev_get_tx_queue(dev, count + offset)->sb_dev = sb_dev; ffff80001139e7d0: 9b240ca3 smaddl x3, w5, w4, x3 while (count--) ffff80001139e7d4: 53003c42 uxth w2, w2 netdev_get_tx_queue(dev, count + offset)->sb_dev = sb_dev; ffff80001139e7d8: f9003861 str x1, [x3,#112] while (count--) ffff80001139e7dc: 6b00005f cmp w2, w0 ffff80001139e7e0: 54ffff21 b.ne ffff80001139e7c4 } ffff80001139e7e4: a94153f3 ldp x19, x20, [sp,#16] ffff80001139e7e8: a9425bf5 ldp x21, x22, [sp,#32] return 0; ffff80001139e7ec: 52800000 mov w0, #0x0 // #0 } ffff80001139e7f0: a8c47bfd ldp x29, x30, [sp],#64 ffff80001139e7f4: d65f03c0 ret ffff80001139e7f8: a94153f3 ldp x19, x20, [sp,#16] ffff80001139e7fc: a9425bf5 ldp x21, x22, [sp,#32] return -EINVAL; ffff80001139e800: 128002a0 mov w0, #0xffffffea // #-22 } ffff80001139e804: a8c47bfd ldp x29, x30, [sp],#64 ffff80001139e808: d65f03c0 ret ffff80001139e80c : { ffff80001139e80c: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139e810: 910003fd mov x29, sp ffff80001139e814: a90153f3 stp x19, x20, [sp,#16] ffff80001139e818: aa0003f3 mov x19, x0 ffff80001139e81c: aa1e03e0 mov x0, x30 ffff80001139e820: 53003c34 uxth w20, w1 ffff80001139e824: 94000000 bl 0 <_mcount> ffff80001139e824: R_AARCH64_CALL26 _mcount if (netif_is_multiqueue(dev)) ffff80001139e828: b943ca60 ldr w0, [x19,#968] ffff80001139e82c: 7100041f cmp w0, #0x1 ffff80001139e830: 54000108 b.hi ffff80001139e850 if (channel > S16_MAX) ffff80001139e834: 37780174 tbnz w20, #15, ffff80001139e860 dev->num_tc = -channel; ffff80001139e838: 4b1403f4 neg w20, w20 ffff80001139e83c: 79109274 strh w20, [x19,#2120] return 0; ffff80001139e840: 52800000 mov w0, #0x0 // #0 } ffff80001139e844: a94153f3 ldp x19, x20, [sp,#16] ffff80001139e848: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e84c: d65f03c0 ret return -ENODEV; ffff80001139e850: 12800240 mov w0, #0xffffffed // #-19 } ffff80001139e854: a94153f3 ldp x19, x20, [sp,#16] ffff80001139e858: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e85c: d65f03c0 ret return -EINVAL; ffff80001139e860: 128002a0 mov w0, #0xffffffea // #-22 ffff80001139e864: 17fffff8 b ffff80001139e844 ffff80001139e868 : { ffff80001139e868: a9bf7bfd stp x29, x30, [sp,#-16]! ffff80001139e86c: 910003fd mov x29, sp ffff80001139e870: aa1e03e0 mov x0, x30 ffff80001139e874: 94000000 bl 0 <_mcount> ffff80001139e874: R_AARCH64_CALL26 _mcount * of previous kernel. */ static inline bool is_kdump_kernel(void) { return elfcorehdr_addr != ELFCORE_ADDR_MAX; ffff80001139e878: 90000000 adrp x0, 0 ffff80001139e878: R_AARCH64_ADR_PREL_PG_HI21 elfcorehdr_addr 1 : min_t(int, DEFAULT_MAX_NUM_RSS_QUEUES, num_online_cpus()); ffff80001139e87c: f9400001 ldr x1, [x0] ffff80001139e87c: R_AARCH64_LDST64_ABS_LO12_NC elfcorehdr_addr ffff80001139e880: 52800020 mov w0, #0x1 // #1 ffff80001139e884: b100043f cmn x1, #0x1 ffff80001139e888: 540000c1 b.ne ffff80001139e8a0 ffff80001139e88c: 90000000 adrp x0, 0 <__num_online_cpus> ffff80001139e88c: R_AARCH64_ADR_PREL_PG_HI21 __num_online_cpus ffff80001139e890: b9400000 ldr w0, [x0] ffff80001139e890: R_AARCH64_LDST32_ABS_LO12_NC __num_online_cpus ffff80001139e894: 52800101 mov w1, #0x8 // #8 ffff80001139e898: 7100201f cmp w0, #0x8 ffff80001139e89c: 1a81d000 csel w0, w0, w1, le } ffff80001139e8a0: a8c17bfd ldp x29, x30, [sp],#16 ffff80001139e8a4: d65f03c0 ret ffff80001139e8a8 : { ffff80001139e8a8: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139e8ac: 910003fd mov x29, sp ffff80001139e8b0: aa1e03e0 mov x0, x30 ffff80001139e8b4: f9000fa2 str x2, [x29,#24] ffff80001139e8b8: 94000000 bl 0 <_mcount> ffff80001139e8b8: R_AARCH64_CALL26 _mcount } ffff80001139e8bc: f9400fa2 ldr x2, [x29,#24] ffff80001139e8c0: aa0203e0 mov x0, x2 ffff80001139e8c4: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e8c8: d65f03c0 ret ffff80001139e8cc : { ffff80001139e8cc: a9bf7bfd stp x29, x30, [sp,#-16]! ffff80001139e8d0: 910003fd mov x29, sp ffff80001139e8d4: aa1e03e0 mov x0, x30 ffff80001139e8d8: 94000000 bl 0 <_mcount> ffff80001139e8d8: R_AARCH64_CALL26 _mcount } ffff80001139e8dc: 52800000 mov w0, #0x0 // #0 ffff80001139e8e0: a8c17bfd ldp x29, x30, [sp],#16 ffff80001139e8e4: d65f03c0 ret ffff80001139e8e8 : { ffff80001139e8e8: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139e8ec: 910003fd mov x29, sp ffff80001139e8f0: f9000bf3 str x19, [sp,#16] ffff80001139e8f4: 53003c13 uxth w19, w0 ffff80001139e8f8: aa1e03e0 mov x0, x30 ffff80001139e8fc: 94000000 bl 0 <_mcount> ffff80001139e8fc: R_AARCH64_CALL26 _mcount ffff80001139e900: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff80001139e900: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff80001139e904: 91000042 add x2, x2, #0x0 ffff80001139e904: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff80001139e908: f9440840 ldr x0, [x2,#2064] ffff80001139e90c: 91204042 add x2, x2, #0x810 list_for_each_entry_rcu(ptype, offload_head, list) { ffff80001139e910: eb00005f cmp x2, x0 ffff80001139e914: d1008000 sub x0, x0, #0x20 ffff80001139e918: 54000100 b.eq ffff80001139e938 if (ptype->type != type || !ptype->callbacks.gro_receive) ffff80001139e91c: 79400001 ldrh w1, [x0] ffff80001139e920: 6b13003f cmp w1, w19 ffff80001139e924: 54000120 b.eq ffff80001139e948 ffff80001139e928: f9401000 ldr x0, [x0,#32] list_for_each_entry_rcu(ptype, offload_head, list) { ffff80001139e92c: eb00005f cmp x2, x0 ffff80001139e930: d1008000 sub x0, x0, #0x20 ffff80001139e934: 54ffff41 b.ne ffff80001139e91c return NULL; ffff80001139e938: d2800000 mov x0, #0x0 // #0 } ffff80001139e93c: f9400bf3 ldr x19, [sp,#16] ffff80001139e940: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e944: d65f03c0 ret if (ptype->type != type || !ptype->callbacks.gro_receive) ffff80001139e948: f9400801 ldr x1, [x0,#16] ffff80001139e94c: b4fffee1 cbz x1, ffff80001139e928 } ffff80001139e950: f9400bf3 ldr x19, [sp,#16] ffff80001139e954: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e958: d65f03c0 ret ffff80001139e95c : { ffff80001139e95c: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139e960: 910003fd mov x29, sp ffff80001139e964: f9000bf3 str x19, [sp,#16] ffff80001139e968: 53003c13 uxth w19, w0 ffff80001139e96c: aa1e03e0 mov x0, x30 ffff80001139e970: 94000000 bl 0 <_mcount> ffff80001139e970: R_AARCH64_CALL26 _mcount ffff80001139e974: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff80001139e974: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff80001139e978: 91000042 add x2, x2, #0x0 ffff80001139e978: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff80001139e97c: f9440840 ldr x0, [x2,#2064] ffff80001139e980: 91204042 add x2, x2, #0x810 list_for_each_entry_rcu(ptype, offload_head, list) { ffff80001139e984: eb00005f cmp x2, x0 ffff80001139e988: d1008000 sub x0, x0, #0x20 ffff80001139e98c: 54000100 b.eq ffff80001139e9ac if (ptype->type != type || !ptype->callbacks.gro_complete) ffff80001139e990: 79400001 ldrh w1, [x0] ffff80001139e994: 6b13003f cmp w1, w19 ffff80001139e998: 54000120 b.eq ffff80001139e9bc ffff80001139e99c: f9401000 ldr x0, [x0,#32] list_for_each_entry_rcu(ptype, offload_head, list) { ffff80001139e9a0: eb00005f cmp x2, x0 ffff80001139e9a4: d1008000 sub x0, x0, #0x20 ffff80001139e9a8: 54ffff41 b.ne ffff80001139e990 return NULL; ffff80001139e9ac: d2800000 mov x0, #0x0 // #0 } ffff80001139e9b0: f9400bf3 ldr x19, [sp,#16] ffff80001139e9b4: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e9b8: d65f03c0 ret if (ptype->type != type || !ptype->callbacks.gro_complete) ffff80001139e9bc: f9400c01 ldr x1, [x0,#24] ffff80001139e9c0: b4fffee1 cbz x1, ffff80001139e99c } ffff80001139e9c4: f9400bf3 ldr x19, [sp,#16] ffff80001139e9c8: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e9cc: d65f03c0 ret ffff80001139e9d0 <____netdev_has_upper_dev>: } return NULL; } static int ____netdev_has_upper_dev(struct net_device *upper_dev, void *data) { ffff80001139e9d0: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139e9d4: 910003fd mov x29, sp ffff80001139e9d8: f9000bf3 str x19, [sp,#16] ffff80001139e9dc: aa0003f3 mov x19, x0 ffff80001139e9e0: aa1e03e0 mov x0, x30 ffff80001139e9e4: f90017a1 str x1, [x29,#40] ffff80001139e9e8: 94000000 bl 0 <_mcount> ffff80001139e9e8: R_AARCH64_CALL26 _mcount struct net_device *dev = data; return upper_dev == dev; ffff80001139e9ec: f94017a1 ldr x1, [x29,#40] ffff80001139e9f0: eb13003f cmp x1, x19 } ffff80001139e9f4: f9400bf3 ldr x19, [sp,#16] ffff80001139e9f8: 1a9f17e0 cset w0, eq ffff80001139e9fc: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139ea00: d65f03c0 ret ffff80001139ea04 : return !list_empty(&dev->adj_list.lower); } void *netdev_adjacent_get_private(struct list_head *adj_list) { ffff80001139ea04: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139ea08: 910003fd mov x29, sp ffff80001139ea0c: f9000bf3 str x19, [sp,#16] ffff80001139ea10: aa0003f3 mov x19, x0 ffff80001139ea14: aa1e03e0 mov x0, x30 ffff80001139ea18: 94000000 bl 0 <_mcount> ffff80001139ea18: R_AARCH64_CALL26 _mcount struct netdev_adjacent *adj; adj = list_entry(adj_list, struct netdev_adjacent, list); return adj->private; } ffff80001139ea1c: f85f8260 ldur x0, [x19,#-8] ffff80001139ea20: f9400bf3 ldr x19, [sp,#16] ffff80001139ea24: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139ea28: d65f03c0 ret ffff80001139ea2c : * Gets the next device from the dev's upper list, starting from iter * position. The caller must hold RCU read lock. */ struct net_device *netdev_upper_get_next_dev_rcu(struct net_device *dev, struct list_head **iter) { ffff80001139ea2c: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139ea30: 910003fd mov x29, sp ffff80001139ea34: f9000bf3 str x19, [sp,#16] ffff80001139ea38: aa0003f3 mov x19, x0 ffff80001139ea3c: aa1e03e0 mov x0, x30 ffff80001139ea40: f90017a1 str x1, [x29,#40] ffff80001139ea44: 94000000 bl 0 <_mcount> ffff80001139ea44: R_AARCH64_CALL26 _mcount struct netdev_adjacent *upper; WARN_ON_ONCE(!rcu_read_lock_held() && !lockdep_rtnl_is_held()); upper = list_entry_rcu((*iter)->next, struct netdev_adjacent, list); ffff80001139ea48: f94017a1 ldr x1, [x29,#40] if (&upper->list == &dev->adj_list.upper) ffff80001139ea4c: 9102a273 add x19, x19, #0xa8 upper = list_entry_rcu((*iter)->next, struct netdev_adjacent, list); ffff80001139ea50: f9400020 ldr x0, [x1] ffff80001139ea54: f9400002 ldr x2, [x0] if (&upper->list == &dev->adj_list.upper) ffff80001139ea58: eb13005f cmp x2, x19 ffff80001139ea5c: 540000c0 b.eq ffff80001139ea74 return NULL; *iter = &upper->list; ffff80001139ea60: f9000022 str x2, [x1] return upper->dev; ffff80001139ea64: f85e8040 ldur x0, [x2,#-24] } ffff80001139ea68: f9400bf3 ldr x19, [sp,#16] ffff80001139ea6c: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139ea70: d65f03c0 ret return NULL; ffff80001139ea74: d2800000 mov x0, #0x0 // #0 ffff80001139ea78: 17fffffc b ffff80001139ea68 ffff80001139ea7c <__netdev_walk_all_upper_dev>: static int __netdev_walk_all_upper_dev(struct net_device *dev, int (*fn)(struct net_device *dev, void *data), void *data) { ffff80001139ea7c: a9b17bfd stp x29, x30, [sp,#-240]! ffff80001139ea80: 910003fd mov x29, sp ffff80001139ea84: a90153f3 stp x19, x20, [sp,#16] ffff80001139ea88: a9025bf5 stp x21, x22, [sp,#32] ffff80001139ea8c: a90363f7 stp x23, x24, [sp,#48] ffff80001139ea90: a9046bf9 stp x25, x26, [sp,#64] ffff80001139ea94: aa0003f6 mov x22, x0 ffff80001139ea98: aa1e03e0 mov x0, x30 ffff80001139ea9c: aa0103f9 mov x25, x1 ffff80001139eaa0: 9000001a adrp x26, 0 <__stack_chk_guard> ffff80001139eaa0: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff80001139eaa4: aa0203f8 mov x24, x2 ffff80001139eaa8: 94000000 bl 0 <_mcount> ffff80001139eaa8: R_AARCH64_CALL26 _mcount ffff80001139eaac: f9400340 ldr x0, [x26] ffff80001139eaac: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard struct list_head *niter, *iter, *iter_stack[MAX_NEST_DEV + 1]; int ret, cur = 0; bool ignore; now = dev; iter = &dev->adj_list.upper; ffff80001139eab0: 9102a2d3 add x19, x22, #0xa8 { ffff80001139eab4: f90077a0 str x0, [x29,#232] iter = &dev->adj_list.upper; ffff80001139eab8: aa1303e1 mov x1, x19 now = dev; ffff80001139eabc: aa1603f4 mov x20, x22 int ret, cur = 0; ffff80001139eac0: 52800015 mov w21, #0x0 // #0 if (!next) { if (!cur) return 0; next = dev_stack[--cur]; niter = iter_stack[cur]; ffff80001139eac4: 910283b7 add x23, x29, #0xa0 upper = list_entry((*iter)->next, struct netdev_adjacent, list); ffff80001139eac8: f9400263 ldr x3, [x19] if (&upper->list == &dev->adj_list.upper) ffff80001139eacc: eb01007f cmp x3, x1 ffff80001139ead0: aa0303f3 mov x19, x3 ffff80001139ead4: 540002c0 b.eq ffff80001139eb2c <__netdev_walk_all_upper_dev+0xb0> return upper->dev; ffff80001139ead8: f85e8064 ldur x4, [x3,#-24] *ignore = upper->ignore; ffff80001139eadc: 385f1060 ldurb w0, [x3,#-15] if (!udev) ffff80001139eae0: b4000264 cbz x4, ffff80001139eb2c <__netdev_walk_all_upper_dev+0xb0> if (ignore) ffff80001139eae4: 35ffff20 cbnz w0, ffff80001139eac8 <__netdev_walk_all_upper_dev+0x4c> dev_stack[cur] = now; ffff80001139eae8: 910163a0 add x0, x29, #0x58 ffff80001139eaec: f835d814 str x20, [x0,w21,sxtw #3] iter_stack[cur++] = iter; ffff80001139eaf0: f835dae3 str x3, [x23,w21,sxtw #3] niter = &udev->adj_list.upper; ffff80001139eaf4: 9102a093 add x19, x4, #0xa8 iter_stack[cur++] = iter; ffff80001139eaf8: 110006b5 add w21, w21, #0x1 return upper->dev; ffff80001139eafc: aa0403f4 mov x20, x4 if (now != dev) { ffff80001139eb00: eb16029f cmp x20, x22 ffff80001139eb04: 540000a0 b.eq ffff80001139eb18 <__netdev_walk_all_upper_dev+0x9c> ret = fn(now, data); ffff80001139eb08: aa1403e0 mov x0, x20 ffff80001139eb0c: aa1803e1 mov x1, x24 ffff80001139eb10: d63f0320 blr x25 if (ret) ffff80001139eb14: 350001a0 cbnz w0, ffff80001139eb48 <__netdev_walk_all_upper_dev+0xcc> upper = list_entry((*iter)->next, struct netdev_adjacent, list); ffff80001139eb18: f9400263 ldr x3, [x19] ffff80001139eb1c: 9102a281 add x1, x20, #0xa8 if (&upper->list == &dev->adj_list.upper) ffff80001139eb20: eb01007f cmp x3, x1 ffff80001139eb24: aa0303f3 mov x19, x3 ffff80001139eb28: 54fffd81 b.ne ffff80001139ead8 <__netdev_walk_all_upper_dev+0x5c> if (!cur) ffff80001139eb2c: 340000d5 cbz w21, ffff80001139eb44 <__netdev_walk_all_upper_dev+0xc8> next = dev_stack[--cur]; ffff80001139eb30: 510006b5 sub w21, w21, #0x1 ffff80001139eb34: 910163a0 add x0, x29, #0x58 ffff80001139eb38: f875d814 ldr x20, [x0,w21,sxtw #3] niter = iter_stack[cur]; ffff80001139eb3c: f875daf3 ldr x19, [x23,w21,sxtw #3] ffff80001139eb40: 17fffff0 b ffff80001139eb00 <__netdev_walk_all_upper_dev+0x84> return 0; ffff80001139eb44: 2a1503e0 mov w0, w21 now = next; iter = niter; } return 0; } ffff80001139eb48: f94077a2 ldr x2, [x29,#232] ffff80001139eb4c: f9400341 ldr x1, [x26] ffff80001139eb4c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139eb50: eb01005f cmp x2, x1 ffff80001139eb54: 540000e1 b.ne ffff80001139eb70 <__netdev_walk_all_upper_dev+0xf4> ffff80001139eb58: a94153f3 ldp x19, x20, [sp,#16] ffff80001139eb5c: a9425bf5 ldp x21, x22, [sp,#32] ffff80001139eb60: a94363f7 ldp x23, x24, [sp,#48] ffff80001139eb64: a9446bf9 ldp x25, x26, [sp,#64] ffff80001139eb68: a8cf7bfd ldp x29, x30, [sp],#240 ffff80001139eb6c: d65f03c0 ret ffff80001139eb70: 94000000 bl 0 <__stack_chk_fail> ffff80001139eb70: R_AARCH64_CALL26 __stack_chk_fail ffff80001139eb74 : int netdev_walk_all_upper_dev_rcu(struct net_device *dev, int (*fn)(struct net_device *dev, void *data), void *data) { ffff80001139eb74: a9b17bfd stp x29, x30, [sp,#-240]! ffff80001139eb78: 910003fd mov x29, sp ffff80001139eb7c: a90153f3 stp x19, x20, [sp,#16] ffff80001139eb80: a9025bf5 stp x21, x22, [sp,#32] ffff80001139eb84: a90363f7 stp x23, x24, [sp,#48] ffff80001139eb88: a9046bf9 stp x25, x26, [sp,#64] ffff80001139eb8c: aa0003f6 mov x22, x0 ffff80001139eb90: aa1e03e0 mov x0, x30 ffff80001139eb94: 9000001a adrp x26, 0 <__stack_chk_guard> ffff80001139eb94: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff80001139eb98: aa0103f9 mov x25, x1 ffff80001139eb9c: aa0203f8 mov x24, x2 ffff80001139eba0: 94000000 bl 0 <_mcount> ffff80001139eba0: R_AARCH64_CALL26 _mcount ffff80001139eba4: f9400340 ldr x0, [x26] ffff80001139eba4: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard struct net_device *udev, *next, *now, *dev_stack[MAX_NEST_DEV + 1]; struct list_head *niter, *iter, *iter_stack[MAX_NEST_DEV + 1]; int ret, cur = 0; now = dev; iter = &dev->adj_list.upper; ffff80001139eba8: 9102a2d5 add x21, x22, #0xa8 { ffff80001139ebac: f90077a0 str x0, [x29,#232] ffff80001139ebb0: f94002a3 ldr x3, [x21] iter = &dev->adj_list.upper; ffff80001139ebb4: aa1503e0 mov x0, x21 if (&upper->list == &dev->adj_list.upper) ffff80001139ebb8: eb03001f cmp x0, x3 now = dev; ffff80001139ebbc: aa1603f3 mov x19, x22 int ret, cur = 0; ffff80001139ebc0: 52800014 mov w20, #0x0 // #0 if (!next) { if (!cur) return 0; next = dev_stack[--cur]; niter = iter_stack[cur]; ffff80001139ebc4: 910283b7 add x23, x29, #0xa0 if (&upper->list == &dev->adj_list.upper) ffff80001139ebc8: 54000260 b.eq ffff80001139ec14 return upper->dev; ffff80001139ebcc: f85e8064 ldur x4, [x3,#-24] if (!udev) ffff80001139ebd0: b4000224 cbz x4, ffff80001139ec14 dev_stack[cur] = now; ffff80001139ebd4: 910163a0 add x0, x29, #0x58 ffff80001139ebd8: f834d813 str x19, [x0,w20,sxtw #3] iter_stack[cur++] = iter; ffff80001139ebdc: f834dae3 str x3, [x23,w20,sxtw #3] niter = &udev->adj_list.upper; ffff80001139ebe0: 9102a095 add x21, x4, #0xa8 iter_stack[cur++] = iter; ffff80001139ebe4: 11000694 add w20, w20, #0x1 ffff80001139ebe8: aa0403f3 mov x19, x4 if (now != dev) { ffff80001139ebec: eb16027f cmp x19, x22 ffff80001139ebf0: 540000a0 b.eq ffff80001139ec04 ret = fn(now, data); ffff80001139ebf4: aa1303e0 mov x0, x19 ffff80001139ebf8: aa1803e1 mov x1, x24 ffff80001139ebfc: d63f0320 blr x25 if (ret) ffff80001139ec00: 35000180 cbnz w0, ffff80001139ec30 ffff80001139ec04: f94002a3 ldr x3, [x21] ffff80001139ec08: 9102a260 add x0, x19, #0xa8 if (&upper->list == &dev->adj_list.upper) ffff80001139ec0c: eb03001f cmp x0, x3 ffff80001139ec10: 54fffde1 b.ne ffff80001139ebcc if (!cur) ffff80001139ec14: 340000d4 cbz w20, ffff80001139ec2c next = dev_stack[--cur]; ffff80001139ec18: 51000694 sub w20, w20, #0x1 ffff80001139ec1c: 910163a0 add x0, x29, #0x58 ffff80001139ec20: f874d813 ldr x19, [x0,w20,sxtw #3] niter = iter_stack[cur]; ffff80001139ec24: f874daf5 ldr x21, [x23,w20,sxtw #3] ffff80001139ec28: 17fffff1 b ffff80001139ebec return 0; ffff80001139ec2c: 2a1403e0 mov w0, w20 now = next; iter = niter; } return 0; } ffff80001139ec30: f94077a2 ldr x2, [x29,#232] ffff80001139ec34: f9400341 ldr x1, [x26] ffff80001139ec34: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139ec38: eb01005f cmp x2, x1 ffff80001139ec3c: 540000e1 b.ne ffff80001139ec58 ffff80001139ec40: a94153f3 ldp x19, x20, [sp,#16] ffff80001139ec44: a9425bf5 ldp x21, x22, [sp,#32] ffff80001139ec48: a94363f7 ldp x23, x24, [sp,#48] ffff80001139ec4c: a9446bf9 ldp x25, x26, [sp,#64] ffff80001139ec50: a8cf7bfd ldp x29, x30, [sp],#240 ffff80001139ec54: d65f03c0 ret ffff80001139ec58: 94000000 bl 0 <__stack_chk_fail> ffff80001139ec58: R_AARCH64_CALL26 __stack_chk_fail ffff80001139ec5c : { ffff80001139ec5c: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139ec60: 910003fd mov x29, sp ffff80001139ec64: f9000bf3 str x19, [sp,#16] ffff80001139ec68: aa0003f3 mov x19, x0 ffff80001139ec6c: aa1e03e0 mov x0, x30 ffff80001139ec70: f90017a1 str x1, [x29,#40] ffff80001139ec74: 94000000 bl 0 <_mcount> ffff80001139ec74: R_AARCH64_CALL26 _mcount return !!netdev_walk_all_upper_dev_rcu(dev, ____netdev_has_upper_dev, ffff80001139ec78: f94017a2 ldr x2, [x29,#40] ffff80001139ec7c: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff80001139ec7c: R_AARCH64_ADR_PREL_PG_HI21 .text+0x654 ffff80001139ec80: aa1303e0 mov x0, x19 ffff80001139ec84: 91000021 add x1, x1, #0x0 ffff80001139ec84: R_AARCH64_ADD_ABS_LO12_NC .text+0x654 ffff80001139ec88: 94000000 bl ffff80001139eb74 ffff80001139ec88: R_AARCH64_CALL26 netdev_walk_all_upper_dev_rcu } ffff80001139ec8c: f9400bf3 ldr x19, [sp,#16] return !!netdev_walk_all_upper_dev_rcu(dev, ____netdev_has_upper_dev, ffff80001139ec90: 6b1f001f cmp w0, wzr } ffff80001139ec94: 1a9f07e0 cset w0, ne ffff80001139ec98: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139ec9c: d65f03c0 ret ffff80001139eca0 : * RTNL lock or its own locking that guarantees that the neighbour lower * list will remain unchanged. */ void *netdev_lower_get_next_private(struct net_device *dev, struct list_head **iter) { ffff80001139eca0: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139eca4: 910003fd mov x29, sp ffff80001139eca8: f9000bf3 str x19, [sp,#16] ffff80001139ecac: aa0003f3 mov x19, x0 ffff80001139ecb0: aa1e03e0 mov x0, x30 ffff80001139ecb4: f90017a1 str x1, [x29,#40] ffff80001139ecb8: 94000000 bl 0 <_mcount> ffff80001139ecb8: R_AARCH64_CALL26 _mcount struct netdev_adjacent *lower; lower = list_entry(*iter, struct netdev_adjacent, list); ffff80001139ecbc: f94017a1 ldr x1, [x29,#40] if (&lower->list == &dev->adj_list.lower) ffff80001139ecc0: 9102e273 add x19, x19, #0xb8 lower = list_entry(*iter, struct netdev_adjacent, list); ffff80001139ecc4: f9400022 ldr x2, [x1] if (&lower->list == &dev->adj_list.lower) ffff80001139ecc8: eb13005f cmp x2, x19 ffff80001139eccc: 540000e0 b.eq ffff80001139ece8 return NULL; *iter = lower->list.next; ffff80001139ecd0: f9400040 ldr x0, [x2] ffff80001139ecd4: f9000020 str x0, [x1] return lower->private; ffff80001139ecd8: f85f8040 ldur x0, [x2,#-8] } ffff80001139ecdc: f9400bf3 ldr x19, [sp,#16] ffff80001139ece0: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139ece4: d65f03c0 ret return NULL; ffff80001139ece8: d2800000 mov x0, #0x0 // #0 ffff80001139ecec: 17fffffc b ffff80001139ecdc ffff80001139ecf0 : * Gets the next netdev_adjacent->private from the dev's lower neighbour * list, starting from iter position. The caller must hold RCU read lock. */ void *netdev_lower_get_next_private_rcu(struct net_device *dev, struct list_head **iter) { ffff80001139ecf0: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139ecf4: 910003fd mov x29, sp ffff80001139ecf8: f9000bf3 str x19, [sp,#16] ffff80001139ecfc: aa0003f3 mov x19, x0 ffff80001139ed00: aa1e03e0 mov x0, x30 ffff80001139ed04: f90017a1 str x1, [x29,#40] ffff80001139ed08: 94000000 bl 0 <_mcount> ffff80001139ed08: R_AARCH64_CALL26 _mcount struct netdev_adjacent *lower; WARN_ON_ONCE(!rcu_read_lock_held()); lower = list_entry_rcu((*iter)->next, struct netdev_adjacent, list); ffff80001139ed0c: f94017a1 ldr x1, [x29,#40] if (&lower->list == &dev->adj_list.lower) ffff80001139ed10: 9102e273 add x19, x19, #0xb8 lower = list_entry_rcu((*iter)->next, struct netdev_adjacent, list); ffff80001139ed14: f9400020 ldr x0, [x1] ffff80001139ed18: f9400002 ldr x2, [x0] if (&lower->list == &dev->adj_list.lower) ffff80001139ed1c: eb13005f cmp x2, x19 ffff80001139ed20: 540000c0 b.eq ffff80001139ed38 return NULL; *iter = &lower->list; ffff80001139ed24: f9000022 str x2, [x1] return lower->private; ffff80001139ed28: f85f8040 ldur x0, [x2,#-8] } ffff80001139ed2c: f9400bf3 ldr x19, [sp,#16] ffff80001139ed30: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139ed34: d65f03c0 ret return NULL; ffff80001139ed38: d2800000 mov x0, #0x0 // #0 ffff80001139ed3c: 17fffffc b ffff80001139ed2c ffff80001139ed40 : * list, starting from iter position. The caller must hold RTNL lock or * its own locking that guarantees that the neighbour lower * list will remain unchanged. */ void *netdev_lower_get_next(struct net_device *dev, struct list_head **iter) { ffff80001139ed40: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139ed44: 910003fd mov x29, sp ffff80001139ed48: f9000bf3 str x19, [sp,#16] ffff80001139ed4c: aa0003f3 mov x19, x0 ffff80001139ed50: aa1e03e0 mov x0, x30 ffff80001139ed54: f90017a1 str x1, [x29,#40] ffff80001139ed58: 94000000 bl 0 <_mcount> ffff80001139ed58: R_AARCH64_CALL26 _mcount struct netdev_adjacent *lower; lower = list_entry(*iter, struct netdev_adjacent, list); ffff80001139ed5c: f94017a1 ldr x1, [x29,#40] if (&lower->list == &dev->adj_list.lower) ffff80001139ed60: 9102e273 add x19, x19, #0xb8 lower = list_entry(*iter, struct netdev_adjacent, list); ffff80001139ed64: f9400022 ldr x2, [x1] if (&lower->list == &dev->adj_list.lower) ffff80001139ed68: eb13005f cmp x2, x19 ffff80001139ed6c: 540000e0 b.eq ffff80001139ed88 return NULL; *iter = lower->list.next; ffff80001139ed70: f9400040 ldr x0, [x2] ffff80001139ed74: f9000020 str x0, [x1] return lower->dev; ffff80001139ed78: f85e8040 ldur x0, [x2,#-24] } ffff80001139ed7c: f9400bf3 ldr x19, [sp,#16] ffff80001139ed80: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139ed84: d65f03c0 ret return NULL; ffff80001139ed88: d2800000 mov x0, #0x0 // #0 ffff80001139ed8c: 17fffffc b ffff80001139ed7c ffff80001139ed90 : int netdev_walk_all_lower_dev(struct net_device *dev, int (*fn)(struct net_device *dev, void *data), void *data) { ffff80001139ed90: a9b17bfd stp x29, x30, [sp,#-240]! ffff80001139ed94: 910003fd mov x29, sp ffff80001139ed98: a90153f3 stp x19, x20, [sp,#16] ffff80001139ed9c: a9025bf5 stp x21, x22, [sp,#32] ffff80001139eda0: a90363f7 stp x23, x24, [sp,#48] ffff80001139eda4: a9046bf9 stp x25, x26, [sp,#64] ffff80001139eda8: aa0003f6 mov x22, x0 ffff80001139edac: aa1e03e0 mov x0, x30 ffff80001139edb0: 9000001a adrp x26, 0 <__stack_chk_guard> ffff80001139edb0: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff80001139edb4: aa0103f9 mov x25, x1 ffff80001139edb8: aa0203f8 mov x24, x2 ffff80001139edbc: 94000000 bl 0 <_mcount> ffff80001139edbc: R_AARCH64_CALL26 _mcount ffff80001139edc0: f9400340 ldr x0, [x26] ffff80001139edc0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard struct net_device *ldev, *next, *now, *dev_stack[MAX_NEST_DEV + 1]; struct list_head *niter, *iter, *iter_stack[MAX_NEST_DEV + 1]; int ret, cur = 0; now = dev; iter = &dev->adj_list.lower; ffff80001139edc4: 9102e2d5 add x21, x22, #0xb8 lower = list_entry((*iter)->next, struct netdev_adjacent, list); ffff80001139edc8: f94002a3 ldr x3, [x21] { ffff80001139edcc: f90077a0 str x0, [x29,#232] iter = &dev->adj_list.lower; ffff80001139edd0: aa1503e0 mov x0, x21 if (&lower->list == &dev->adj_list.lower) ffff80001139edd4: eb03001f cmp x0, x3 now = dev; ffff80001139edd8: aa1603f3 mov x19, x22 int ret, cur = 0; ffff80001139eddc: 52800014 mov w20, #0x0 // #0 if (!next) { if (!cur) return 0; next = dev_stack[--cur]; niter = iter_stack[cur]; ffff80001139ede0: 910283b7 add x23, x29, #0xa0 if (&lower->list == &dev->adj_list.lower) ffff80001139ede4: 54000260 b.eq ffff80001139ee30 return lower->dev; ffff80001139ede8: f85e8064 ldur x4, [x3,#-24] if (!ldev) ffff80001139edec: b4000224 cbz x4, ffff80001139ee30 dev_stack[cur] = now; ffff80001139edf0: 910163a0 add x0, x29, #0x58 ffff80001139edf4: f834d813 str x19, [x0,w20,sxtw #3] iter_stack[cur++] = iter; ffff80001139edf8: f834dae3 str x3, [x23,w20,sxtw #3] niter = &ldev->adj_list.lower; ffff80001139edfc: 9102e095 add x21, x4, #0xb8 iter_stack[cur++] = iter; ffff80001139ee00: 11000694 add w20, w20, #0x1 ffff80001139ee04: aa0403f3 mov x19, x4 if (now != dev) { ffff80001139ee08: eb16027f cmp x19, x22 ffff80001139ee0c: 540000a0 b.eq ffff80001139ee20 ret = fn(now, data); ffff80001139ee10: aa1303e0 mov x0, x19 ffff80001139ee14: aa1803e1 mov x1, x24 ffff80001139ee18: d63f0320 blr x25 if (ret) ffff80001139ee1c: 35000180 cbnz w0, ffff80001139ee4c lower = list_entry((*iter)->next, struct netdev_adjacent, list); ffff80001139ee20: f94002a3 ldr x3, [x21] ffff80001139ee24: 9102e260 add x0, x19, #0xb8 if (&lower->list == &dev->adj_list.lower) ffff80001139ee28: eb03001f cmp x0, x3 ffff80001139ee2c: 54fffde1 b.ne ffff80001139ede8 if (!cur) ffff80001139ee30: 340000d4 cbz w20, ffff80001139ee48 next = dev_stack[--cur]; ffff80001139ee34: 51000694 sub w20, w20, #0x1 ffff80001139ee38: 910163a0 add x0, x29, #0x58 ffff80001139ee3c: f874d813 ldr x19, [x0,w20,sxtw #3] niter = iter_stack[cur]; ffff80001139ee40: f874daf5 ldr x21, [x23,w20,sxtw #3] ffff80001139ee44: 17fffff1 b ffff80001139ee08 return 0; ffff80001139ee48: 2a1403e0 mov w0, w20 now = next; iter = niter; } return 0; } ffff80001139ee4c: f94077a2 ldr x2, [x29,#232] ffff80001139ee50: f9400341 ldr x1, [x26] ffff80001139ee50: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139ee54: eb01005f cmp x2, x1 ffff80001139ee58: 540000e1 b.ne ffff80001139ee74 ffff80001139ee5c: a94153f3 ldp x19, x20, [sp,#16] ffff80001139ee60: a9425bf5 ldp x21, x22, [sp,#32] ffff80001139ee64: a94363f7 ldp x23, x24, [sp,#48] ffff80001139ee68: a9446bf9 ldp x25, x26, [sp,#64] ffff80001139ee6c: a8cf7bfd ldp x29, x30, [sp],#240 ffff80001139ee70: d65f03c0 ret ffff80001139ee74: 94000000 bl 0 <__stack_chk_fail> ffff80001139ee74: R_AARCH64_CALL26 __stack_chk_fail ffff80001139ee78 : return 0; } struct net_device *netdev_next_lower_dev_rcu(struct net_device *dev, struct list_head **iter) { ffff80001139ee78: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139ee7c: 910003fd mov x29, sp ffff80001139ee80: f9000bf3 str x19, [sp,#16] ffff80001139ee84: aa0003f3 mov x19, x0 ffff80001139ee88: aa1e03e0 mov x0, x30 ffff80001139ee8c: f90017a1 str x1, [x29,#40] ffff80001139ee90: 94000000 bl 0 <_mcount> ffff80001139ee90: R_AARCH64_CALL26 _mcount struct netdev_adjacent *lower; lower = list_entry_rcu((*iter)->next, struct netdev_adjacent, list); ffff80001139ee94: f94017a1 ldr x1, [x29,#40] if (&lower->list == &dev->adj_list.lower) ffff80001139ee98: 9102e273 add x19, x19, #0xb8 lower = list_entry_rcu((*iter)->next, struct netdev_adjacent, list); ffff80001139ee9c: f9400020 ldr x0, [x1] ffff80001139eea0: f9400002 ldr x2, [x0] if (&lower->list == &dev->adj_list.lower) ffff80001139eea4: eb13005f cmp x2, x19 ffff80001139eea8: 540000c0 b.eq ffff80001139eec0 return NULL; *iter = &lower->list; ffff80001139eeac: f9000022 str x2, [x1] return lower->dev; ffff80001139eeb0: f85e8040 ldur x0, [x2,#-24] } ffff80001139eeb4: f9400bf3 ldr x19, [sp,#16] ffff80001139eeb8: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139eebc: d65f03c0 ret return NULL; ffff80001139eec0: d2800000 mov x0, #0x0 // #0 ffff80001139eec4: 17fffffc b ffff80001139eeb4 ffff80001139eec8 <__netdev_upper_depth>: EXPORT_SYMBOL(netdev_next_lower_dev_rcu); static u8 __netdev_upper_depth(struct net_device *dev) { ffff80001139eec8: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139eecc: 910003fd mov x29, sp ffff80001139eed0: f9000bf3 str x19, [sp,#16] ffff80001139eed4: aa0003f3 mov x19, x0 ffff80001139eed8: aa1e03e0 mov x0, x30 ffff80001139eedc: 94000000 bl 0 <_mcount> ffff80001139eedc: R_AARCH64_CALL26 _mcount upper = list_entry((*iter)->next, struct netdev_adjacent, list); ffff80001139eee0: f9405662 ldr x2, [x19,#168] struct net_device *udev; struct list_head *iter; u8 max_depth = 0; bool ignore; for (iter = &dev->adj_list.upper, ffff80001139eee4: 9102a264 add x4, x19, #0xa8 if (&upper->list == &dev->adj_list.upper) ffff80001139eee8: eb02009f cmp x4, x2 ffff80001139eeec: 54000280 b.eq ffff80001139ef3c <__netdev_upper_depth+0x74> return upper->dev; ffff80001139eef0: f85e8043 ldur x3, [x2,#-24] *ignore = upper->ignore; ffff80001139eef4: 385f1041 ldurb w1, [x2,#-15] for (iter = &dev->adj_list.upper, ffff80001139eef8: 52800000 mov w0, #0x0 // #0 ffff80001139eefc: b40001a3 cbz x3, ffff80001139ef30 <__netdev_upper_depth+0x68> udev = __netdev_next_upper_dev(dev, &iter, &ignore); udev; udev = __netdev_next_upper_dev(dev, &iter, &ignore)) { if (ignore) ffff80001139ef00: 350000a1 cbnz w1, ffff80001139ef14 <__netdev_upper_depth+0x4c> continue; if (max_depth < udev->upper_level) ffff80001139ef04: 3949c061 ldrb w1, [x3,#624] ffff80001139ef08: 6b00003f cmp w1, w0 ffff80001139ef0c: 1a808020 csel w0, w1, w0, hi ffff80001139ef10: 53001c00 uxtb w0, w0 upper = list_entry((*iter)->next, struct netdev_adjacent, list); ffff80001139ef14: f9400041 ldr x1, [x2] if (&upper->list == &dev->adj_list.upper) ffff80001139ef18: eb01009f cmp x4, x1 ffff80001139ef1c: aa0103e2 mov x2, x1 ffff80001139ef20: 54000080 b.eq ffff80001139ef30 <__netdev_upper_depth+0x68> return upper->dev; ffff80001139ef24: f85e8023 ldur x3, [x1,#-24] *ignore = upper->ignore; ffff80001139ef28: 385f1021 ldurb w1, [x1,#-15] for (iter = &dev->adj_list.upper, ffff80001139ef2c: b5fffea3 cbnz x3, ffff80001139ef00 <__netdev_upper_depth+0x38> max_depth = udev->upper_level; } return max_depth; } ffff80001139ef30: f9400bf3 ldr x19, [sp,#16] ffff80001139ef34: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139ef38: d65f03c0 ret if (&upper->list == &dev->adj_list.upper) ffff80001139ef3c: 52800000 mov w0, #0x0 // #0 } ffff80001139ef40: f9400bf3 ldr x19, [sp,#16] ffff80001139ef44: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139ef48: d65f03c0 ret ffff80001139ef4c <__netdev_lower_depth>: static u8 __netdev_lower_depth(struct net_device *dev) { ffff80001139ef4c: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139ef50: 910003fd mov x29, sp ffff80001139ef54: f9000bf3 str x19, [sp,#16] ffff80001139ef58: aa0003f3 mov x19, x0 ffff80001139ef5c: aa1e03e0 mov x0, x30 ffff80001139ef60: 94000000 bl 0 <_mcount> ffff80001139ef60: R_AARCH64_CALL26 _mcount lower = list_entry((*iter)->next, struct netdev_adjacent, list); ffff80001139ef64: f9405e62 ldr x2, [x19,#184] struct net_device *ldev; struct list_head *iter; u8 max_depth = 0; bool ignore; for (iter = &dev->adj_list.lower, ffff80001139ef68: 9102e264 add x4, x19, #0xb8 if (&lower->list == &dev->adj_list.lower) ffff80001139ef6c: eb02009f cmp x4, x2 ffff80001139ef70: 54000280 b.eq ffff80001139efc0 <__netdev_lower_depth+0x74> return lower->dev; ffff80001139ef74: f85e8043 ldur x3, [x2,#-24] *ignore = lower->ignore; ffff80001139ef78: 385f1041 ldurb w1, [x2,#-15] for (iter = &dev->adj_list.lower, ffff80001139ef7c: 52800000 mov w0, #0x0 // #0 ffff80001139ef80: b40001a3 cbz x3, ffff80001139efb4 <__netdev_lower_depth+0x68> ldev = __netdev_next_lower_dev(dev, &iter, &ignore); ldev; ldev = __netdev_next_lower_dev(dev, &iter, &ignore)) { if (ignore) ffff80001139ef84: 350000a1 cbnz w1, ffff80001139ef98 <__netdev_lower_depth+0x4c> continue; if (max_depth < ldev->lower_level) ffff80001139ef88: 3949c461 ldrb w1, [x3,#625] ffff80001139ef8c: 6b00003f cmp w1, w0 ffff80001139ef90: 1a808020 csel w0, w1, w0, hi ffff80001139ef94: 53001c00 uxtb w0, w0 lower = list_entry((*iter)->next, struct netdev_adjacent, list); ffff80001139ef98: f9400041 ldr x1, [x2] if (&lower->list == &dev->adj_list.lower) ffff80001139ef9c: eb01009f cmp x4, x1 ffff80001139efa0: aa0103e2 mov x2, x1 ffff80001139efa4: 54000080 b.eq ffff80001139efb4 <__netdev_lower_depth+0x68> return lower->dev; ffff80001139efa8: f85e8023 ldur x3, [x1,#-24] *ignore = lower->ignore; ffff80001139efac: 385f1021 ldurb w1, [x1,#-15] for (iter = &dev->adj_list.lower, ffff80001139efb0: b5fffea3 cbnz x3, ffff80001139ef84 <__netdev_lower_depth+0x38> max_depth = ldev->lower_level; } return max_depth; } ffff80001139efb4: f9400bf3 ldr x19, [sp,#16] ffff80001139efb8: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139efbc: d65f03c0 ret if (&lower->list == &dev->adj_list.lower) ffff80001139efc0: 52800000 mov w0, #0x0 // #0 } ffff80001139efc4: f9400bf3 ldr x19, [sp,#16] ffff80001139efc8: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139efcc: d65f03c0 ret ffff80001139efd0 <__netdev_update_upper_level>: static int __netdev_update_upper_level(struct net_device *dev, void *data) { ffff80001139efd0: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139efd4: 910003fd mov x29, sp ffff80001139efd8: f9000bf3 str x19, [sp,#16] ffff80001139efdc: aa0003f3 mov x19, x0 ffff80001139efe0: aa1e03e0 mov x0, x30 ffff80001139efe4: 94000000 bl 0 <_mcount> ffff80001139efe4: R_AARCH64_CALL26 _mcount dev->upper_level = __netdev_upper_depth(dev) + 1; ffff80001139efe8: aa1303e0 mov x0, x19 ffff80001139efec: 97ffffb7 bl ffff80001139eec8 <__netdev_upper_depth> ffff80001139eff0: 53001c00 uxtb w0, w0 ffff80001139eff4: 11000400 add w0, w0, #0x1 ffff80001139eff8: 3909c260 strb w0, [x19,#624] return 0; } ffff80001139effc: f9400bf3 ldr x19, [sp,#16] ffff80001139f000: 52800000 mov w0, #0x0 // #0 ffff80001139f004: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139f008: d65f03c0 ret ffff80001139f00c <__netdev_update_lower_level>: static int __netdev_update_lower_level(struct net_device *dev, void *data) { ffff80001139f00c: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139f010: 910003fd mov x29, sp ffff80001139f014: f9000bf3 str x19, [sp,#16] ffff80001139f018: aa0003f3 mov x19, x0 ffff80001139f01c: aa1e03e0 mov x0, x30 ffff80001139f020: 94000000 bl 0 <_mcount> ffff80001139f020: R_AARCH64_CALL26 _mcount dev->lower_level = __netdev_lower_depth(dev) + 1; ffff80001139f024: aa1303e0 mov x0, x19 ffff80001139f028: 97ffffc9 bl ffff80001139ef4c <__netdev_lower_depth> ffff80001139f02c: 53001c00 uxtb w0, w0 ffff80001139f030: 11000400 add w0, w0, #0x1 ffff80001139f034: 3909c660 strb w0, [x19,#625] return 0; } ffff80001139f038: f9400bf3 ldr x19, [sp,#16] ffff80001139f03c: 52800000 mov w0, #0x0 // #0 ffff80001139f040: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139f044: d65f03c0 ret ffff80001139f048 : int netdev_walk_all_lower_dev_rcu(struct net_device *dev, int (*fn)(struct net_device *dev, void *data), void *data) { ffff80001139f048: a9b17bfd stp x29, x30, [sp,#-240]! ffff80001139f04c: 910003fd mov x29, sp ffff80001139f050: a90153f3 stp x19, x20, [sp,#16] ffff80001139f054: a9025bf5 stp x21, x22, [sp,#32] ffff80001139f058: a90363f7 stp x23, x24, [sp,#48] ffff80001139f05c: a9046bf9 stp x25, x26, [sp,#64] ffff80001139f060: aa0003f6 mov x22, x0 ffff80001139f064: aa1e03e0 mov x0, x30 ffff80001139f068: 9000001a adrp x26, 0 <__stack_chk_guard> ffff80001139f068: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff80001139f06c: aa0103f9 mov x25, x1 ffff80001139f070: aa0203f8 mov x24, x2 ffff80001139f074: 94000000 bl 0 <_mcount> ffff80001139f074: R_AARCH64_CALL26 _mcount ffff80001139f078: f9400340 ldr x0, [x26] ffff80001139f078: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard struct net_device *ldev, *next, *now, *dev_stack[MAX_NEST_DEV + 1]; struct list_head *niter, *iter, *iter_stack[MAX_NEST_DEV + 1]; int ret, cur = 0; now = dev; iter = &dev->adj_list.lower; ffff80001139f07c: 9102e2d5 add x21, x22, #0xb8 { ffff80001139f080: f90077a0 str x0, [x29,#232] ffff80001139f084: f94002a3 ldr x3, [x21] iter = &dev->adj_list.lower; ffff80001139f088: aa1503e0 mov x0, x21 if (&lower->list == &dev->adj_list.lower) ffff80001139f08c: eb03001f cmp x0, x3 now = dev; ffff80001139f090: aa1603f3 mov x19, x22 int ret, cur = 0; ffff80001139f094: 52800014 mov w20, #0x0 // #0 if (!next) { if (!cur) return 0; next = dev_stack[--cur]; niter = iter_stack[cur]; ffff80001139f098: 910283b7 add x23, x29, #0xa0 if (&lower->list == &dev->adj_list.lower) ffff80001139f09c: 54000260 b.eq ffff80001139f0e8 return lower->dev; ffff80001139f0a0: f85e8064 ldur x4, [x3,#-24] if (!ldev) ffff80001139f0a4: b4000224 cbz x4, ffff80001139f0e8 dev_stack[cur] = now; ffff80001139f0a8: 910163a0 add x0, x29, #0x58 ffff80001139f0ac: f834d813 str x19, [x0,w20,sxtw #3] iter_stack[cur++] = iter; ffff80001139f0b0: f834dae3 str x3, [x23,w20,sxtw #3] niter = &ldev->adj_list.lower; ffff80001139f0b4: 9102e095 add x21, x4, #0xb8 iter_stack[cur++] = iter; ffff80001139f0b8: 11000694 add w20, w20, #0x1 ffff80001139f0bc: aa0403f3 mov x19, x4 if (now != dev) { ffff80001139f0c0: eb16027f cmp x19, x22 ffff80001139f0c4: 540000a0 b.eq ffff80001139f0d8 ret = fn(now, data); ffff80001139f0c8: aa1303e0 mov x0, x19 ffff80001139f0cc: aa1803e1 mov x1, x24 ffff80001139f0d0: d63f0320 blr x25 if (ret) ffff80001139f0d4: 35000180 cbnz w0, ffff80001139f104 ffff80001139f0d8: f94002a3 ldr x3, [x21] ffff80001139f0dc: 9102e260 add x0, x19, #0xb8 if (&lower->list == &dev->adj_list.lower) ffff80001139f0e0: eb03001f cmp x0, x3 ffff80001139f0e4: 54fffde1 b.ne ffff80001139f0a0 if (!cur) ffff80001139f0e8: 340000d4 cbz w20, ffff80001139f100 next = dev_stack[--cur]; ffff80001139f0ec: 51000694 sub w20, w20, #0x1 ffff80001139f0f0: 910163a0 add x0, x29, #0x58 ffff80001139f0f4: f874d813 ldr x19, [x0,w20,sxtw #3] niter = iter_stack[cur]; ffff80001139f0f8: f874daf5 ldr x21, [x23,w20,sxtw #3] ffff80001139f0fc: 17fffff1 b ffff80001139f0c0 return 0; ffff80001139f100: 2a1403e0 mov w0, w20 now = next; iter = niter; } return 0; } ffff80001139f104: f94077a2 ldr x2, [x29,#232] ffff80001139f108: f9400341 ldr x1, [x26] ffff80001139f108: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139f10c: eb01005f cmp x2, x1 ffff80001139f110: 540000e1 b.ne ffff80001139f12c ffff80001139f114: a94153f3 ldp x19, x20, [sp,#16] ffff80001139f118: a9425bf5 ldp x21, x22, [sp,#32] ffff80001139f11c: a94363f7 ldp x23, x24, [sp,#48] ffff80001139f120: a9446bf9 ldp x25, x26, [sp,#64] ffff80001139f124: a8cf7bfd ldp x29, x30, [sp],#240 ffff80001139f128: d65f03c0 ret ffff80001139f12c: 94000000 bl 0 <__stack_chk_fail> ffff80001139f12c: R_AARCH64_CALL26 __stack_chk_fail ffff80001139f130 <__netdev_adjacent_dev_set>: EXPORT_SYMBOL(netdev_upper_dev_unlink); static void __netdev_adjacent_dev_set(struct net_device *upper_dev, struct net_device *lower_dev, bool val) { ffff80001139f130: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139f134: 910003fd mov x29, sp ffff80001139f138: a90153f3 stp x19, x20, [sp,#16] ffff80001139f13c: aa0003f3 mov x19, x0 ffff80001139f140: aa1e03e0 mov x0, x30 ffff80001139f144: f90017a1 str x1, [x29,#40] ffff80001139f148: 53001c54 uxtb w20, w2 ffff80001139f14c: 94000000 bl 0 <_mcount> ffff80001139f14c: R_AARCH64_CALL26 _mcount list_for_each_entry(adj, adj_list, list) { ffff80001139f150: f9405e63 ldr x3, [x19,#184] struct netdev_adjacent *adj; adj = __netdev_find_adj(lower_dev, &upper_dev->adj_list.lower); ffff80001139f154: 9102e260 add x0, x19, #0xb8 list_for_each_entry(adj, adj_list, list) { ffff80001139f158: eb03001f cmp x0, x3 ffff80001139f15c: d1006064 sub x4, x3, #0x18 ffff80001139f160: f94017a1 ldr x1, [x29,#40] ffff80001139f164: 54000180 b.eq ffff80001139f194 <__netdev_adjacent_dev_set+0x64> if (adj->dev == adj_dev) ffff80001139f168: f85e8062 ldur x2, [x3,#-24] ffff80001139f16c: eb02003f cmp x1, x2 ffff80001139f170: 540000a1 b.ne ffff80001139f184 <__netdev_adjacent_dev_set+0x54> ffff80001139f174: 1400001b b ffff80001139f1e0 <__netdev_adjacent_dev_set+0xb0> ffff80001139f178: f85e8063 ldur x3, [x3,#-24] ffff80001139f17c: eb03003f cmp x1, x3 ffff80001139f180: 54000300 b.eq ffff80001139f1e0 <__netdev_adjacent_dev_set+0xb0> list_for_each_entry(adj, adj_list, list) { ffff80001139f184: f9400c83 ldr x3, [x4,#24] ffff80001139f188: eb03001f cmp x0, x3 ffff80001139f18c: d1006064 sub x4, x3, #0x18 ffff80001139f190: 54ffff41 b.ne ffff80001139f178 <__netdev_adjacent_dev_set+0x48> ffff80001139f194: f9405420 ldr x0, [x1,#168] if (adj) adj->ignore = val; adj = __netdev_find_adj(upper_dev, &lower_dev->adj_list.upper); ffff80001139f198: 9102a021 add x1, x1, #0xa8 list_for_each_entry(adj, adj_list, list) { ffff80001139f19c: eb00003f cmp x1, x0 ffff80001139f1a0: d1006004 sub x4, x0, #0x18 ffff80001139f1a4: 54000180 b.eq ffff80001139f1d4 <__netdev_adjacent_dev_set+0xa4> if (adj->dev == adj_dev) ffff80001139f1a8: f85e8000 ldur x0, [x0,#-24] ffff80001139f1ac: eb00027f cmp x19, x0 ffff80001139f1b0: 540000a1 b.ne ffff80001139f1c4 <__netdev_adjacent_dev_set+0x94> ffff80001139f1b4: 1400000e b ffff80001139f1ec <__netdev_adjacent_dev_set+0xbc> ffff80001139f1b8: f85e8063 ldur x3, [x3,#-24] ffff80001139f1bc: eb03027f cmp x19, x3 ffff80001139f1c0: 54000160 b.eq ffff80001139f1ec <__netdev_adjacent_dev_set+0xbc> list_for_each_entry(adj, adj_list, list) { ffff80001139f1c4: f9400c83 ldr x3, [x4,#24] ffff80001139f1c8: eb03003f cmp x1, x3 ffff80001139f1cc: d1006064 sub x4, x3, #0x18 ffff80001139f1d0: 54ffff41 b.ne ffff80001139f1b8 <__netdev_adjacent_dev_set+0x88> if (adj) adj->ignore = val; } ffff80001139f1d4: a94153f3 ldp x19, x20, [sp,#16] ffff80001139f1d8: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f1dc: d65f03c0 ret if (adj) ffff80001139f1e0: b4fffda4 cbz x4, ffff80001139f194 <__netdev_adjacent_dev_set+0x64> adj->ignore = val; ffff80001139f1e4: 39002494 strb w20, [x4,#9] ffff80001139f1e8: 17ffffeb b ffff80001139f194 <__netdev_adjacent_dev_set+0x64> if (adj) ffff80001139f1ec: b4ffff44 cbz x4, ffff80001139f1d4 <__netdev_adjacent_dev_set+0xa4> adj->ignore = val; ffff80001139f1f0: 39002494 strb w20, [x4,#9] } ffff80001139f1f4: a94153f3 ldp x19, x20, [sp,#16] ffff80001139f1f8: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f1fc: d65f03c0 ret ffff80001139f200 : } } void *netdev_lower_dev_get_private(struct net_device *dev, struct net_device *lower_dev) { ffff80001139f200: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139f204: 910003fd mov x29, sp ffff80001139f208: f9000bf3 str x19, [sp,#16] ffff80001139f20c: aa0003f3 mov x19, x0 ffff80001139f210: aa1e03e0 mov x0, x30 ffff80001139f214: f90017a1 str x1, [x29,#40] ffff80001139f218: 94000000 bl 0 <_mcount> ffff80001139f218: R_AARCH64_CALL26 _mcount struct netdev_adjacent *lower; if (!lower_dev) ffff80001139f21c: f94017a1 ldr x1, [x29,#40] ffff80001139f220: b4000301 cbz x1, ffff80001139f280 list_for_each_entry(adj, adj_list, list) { ffff80001139f224: f9405e62 ldr x2, [x19,#184] return NULL; lower = __netdev_find_adj(lower_dev, &dev->adj_list.lower); ffff80001139f228: 9102e260 add x0, x19, #0xb8 list_for_each_entry(adj, adj_list, list) { ffff80001139f22c: eb02001f cmp x0, x2 ffff80001139f230: d1006043 sub x3, x2, #0x18 ffff80001139f234: 540000c1 b.ne ffff80001139f24c ffff80001139f238: 1400000e b ffff80001139f270 ffff80001139f23c: f9400c62 ldr x2, [x3,#24] ffff80001139f240: eb02001f cmp x0, x2 ffff80001139f244: d1006043 sub x3, x2, #0x18 ffff80001139f248: 54000140 b.eq ffff80001139f270 if (adj->dev == adj_dev) ffff80001139f24c: f85e8042 ldur x2, [x2,#-24] ffff80001139f250: eb02003f cmp x1, x2 ffff80001139f254: 54ffff41 b.ne ffff80001139f23c return NULL; ffff80001139f258: d2800000 mov x0, #0x0 // #0 if (!lower) ffff80001139f25c: b40000c3 cbz x3, ffff80001139f274 return NULL; return lower->private; ffff80001139f260: f9400860 ldr x0, [x3,#16] } ffff80001139f264: f9400bf3 ldr x19, [sp,#16] ffff80001139f268: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f26c: d65f03c0 ret return NULL; ffff80001139f270: d2800000 mov x0, #0x0 // #0 } ffff80001139f274: f9400bf3 ldr x19, [sp,#16] ffff80001139f278: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f27c: d65f03c0 ret return NULL; ffff80001139f280: aa0103e0 mov x0, x1 ffff80001139f284: 17fffffc b ffff80001139f274 ffff80001139f288 : * @dev: device * * Get the combination of flag bits exported through APIs to userspace. */ unsigned int dev_get_flags(const struct net_device *dev) { ffff80001139f288: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139f28c: 910003fd mov x29, sp ffff80001139f290: f9000bf3 str x19, [sp,#16] ffff80001139f294: aa0003f3 mov x19, x0 ffff80001139f298: aa1e03e0 mov x0, x30 ffff80001139f29c: 94000000 bl 0 <_mcount> ffff80001139f29c: R_AARCH64_CALL26 _mcount flags = (dev->flags & ~(IFF_PROMISC | IFF_ALLMULTI | IFF_RUNNING | IFF_LOWER_UP | IFF_DORMANT)) | ffff80001139f2a0: 79446260 ldrh w0, [x19,#560] flags = (dev->flags & ~(IFF_PROMISC | ffff80001139f2a4: b9422a63 ldr w3, [x19,#552] ffff80001139f2a8: 529f97e1 mov w1, #0xfcbf // #64703 ffff80001139f2ac: 72bfff81 movk w1, #0xfffc, lsl #16 * @nr: bit number to test * @addr: Address to start counting from */ static inline int test_bit(int nr, const volatile unsigned long *addr) { return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ffff80001139f2b0: f9402262 ldr x2, [x19,#64] IFF_DORMANT)) | ffff80001139f2b4: 12180400 and w0, w0, #0x300 flags = (dev->flags & ~(IFF_PROMISC | ffff80001139f2b8: 0a010061 and w1, w3, w1 ffff80001139f2bc: 2a010000 orr w0, w0, w1 (dev->gflags & (IFF_PROMISC | IFF_ALLMULTI)); if (netif_running(dev)) { ffff80001139f2c0: 36000182 tbz w2, #0, ffff80001139f2f0 unsigned int dev_get_flags(const struct net_device *dev) ffff80001139f2c4: 3948d261 ldrb w1, [x19,#564] if (netif_oper_up(dev)) ffff80001139f2c8: 350001a1 cbnz w1, ffff80001139f2fc flags |= IFF_RUNNING; ffff80001139f2cc: 321a0000 orr w0, w0, #0x40 ffff80001139f2d0: f9402263 ldr x3, [x19,#64] ffff80001139f2d4: f9402261 ldr x1, [x19,#64] ffff80001139f2d8: d3420863 ubfx x3, x3, #2, #1 if (netif_carrier_ok(dev)) flags |= IFF_LOWER_UP; ffff80001139f2dc: 32100002 orr w2, w0, #0x10000 ffff80001139f2e0: 6b1f007f cmp w3, wzr ffff80001139f2e4: 1a800040 csel w0, w2, w0, eq ffff80001139f2e8: d3441021 ubfx x1, x1, #4, #1 if (netif_dormant(dev)) flags |= IFF_DORMANT; ffff80001139f2ec: 2a014400 orr w0, w0, w1, lsl #17 } return flags; } ffff80001139f2f0: f9400bf3 ldr x19, [sp,#16] ffff80001139f2f4: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139f2f8: d65f03c0 ret if (netif_oper_up(dev)) ffff80001139f2fc: 7100183f cmp w1, #0x6 ffff80001139f300: 54fffe81 b.ne ffff80001139f2d0 ffff80001139f304: 17fffff2 b ffff80001139f2cc ffff80001139f308 <__dev_set_mtu>: return ret; } EXPORT_SYMBOL(dev_change_flags); int __dev_set_mtu(struct net_device *dev, int new_mtu) { ffff80001139f308: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139f30c: 910003fd mov x29, sp ffff80001139f310: f9000bf3 str x19, [sp,#16] ffff80001139f314: aa0003f3 mov x19, x0 ffff80001139f318: aa1e03e0 mov x0, x30 ffff80001139f31c: f90017a1 str x1, [x29,#40] ffff80001139f320: 94000000 bl 0 <_mcount> ffff80001139f320: R_AARCH64_CALL26 _mcount const struct net_device_ops *ops = dev->netdev_ops; if (ops->ndo_change_mtu) ffff80001139f324: f940fa60 ldr x0, [x19,#496] ffff80001139f328: f94017a1 ldr x1, [x29,#40] ffff80001139f32c: f9403402 ldr x2, [x0,#104] ffff80001139f330: b40000c2 cbz x2, ffff80001139f348 <__dev_set_mtu+0x40> return ops->ndo_change_mtu(dev, new_mtu); ffff80001139f334: aa1303e0 mov x0, x19 ffff80001139f338: d63f0040 blr x2 /* Pairs with all the lockless reads of dev->mtu in the stack */ WRITE_ONCE(dev->mtu, new_mtu); return 0; } ffff80001139f33c: f9400bf3 ldr x19, [sp,#16] ffff80001139f340: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f344: d65f03c0 ret static __always_inline void __write_once_size(volatile void *p, void *res, int size) { switch (size) { case 1: *(volatile __u8 *)p = *(__u8 *)res; break; case 2: *(volatile __u16 *)p = *(__u16 *)res; break; case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff80001139f348: b9023a61 str w1, [x19,#568] ffff80001139f34c: f9400bf3 ldr x19, [sp,#16] return 0; ffff80001139f350: 2a0203e0 mov w0, w2 } ffff80001139f354: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f358: d65f03c0 ret ffff80001139f35c : * dev_set_group - Change group this device belongs to * @dev: device * @new_group: group this device should belong to */ void dev_set_group(struct net_device *dev, int new_group) { ffff80001139f35c: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139f360: 910003fd mov x29, sp ffff80001139f364: f9000bf3 str x19, [sp,#16] ffff80001139f368: aa0003f3 mov x19, x0 ffff80001139f36c: aa1e03e0 mov x0, x30 ffff80001139f370: f90017a1 str x1, [x29,#40] ffff80001139f374: 94000000 bl 0 <_mcount> ffff80001139f374: R_AARCH64_CALL26 _mcount dev->group = new_group; ffff80001139f378: f94017a1 ldr x1, [x29,#40] ffff80001139f37c: b9010661 str w1, [x19,#260] } ffff80001139f380: f9400bf3 ldr x19, [sp,#16] ffff80001139f384: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f388: d65f03c0 ret ffff80001139f38c : * @new_carrier: new value * * Change device carrier */ int dev_change_carrier(struct net_device *dev, bool new_carrier) { ffff80001139f38c: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139f390: 910003fd mov x29, sp ffff80001139f394: a90153f3 stp x19, x20, [sp,#16] ffff80001139f398: aa0003f3 mov x19, x0 ffff80001139f39c: aa1e03e0 mov x0, x30 ffff80001139f3a0: 53001c34 uxtb w20, w1 ffff80001139f3a4: 94000000 bl 0 <_mcount> ffff80001139f3a4: R_AARCH64_CALL26 _mcount const struct net_device_ops *ops = dev->netdev_ops; if (!ops->ndo_change_carrier) ffff80001139f3a8: f940fa60 ldr x0, [x19,#496] ffff80001139f3ac: f940f002 ldr x2, [x0,#480] ffff80001139f3b0: b4000162 cbz x2, ffff80001139f3dc ffff80001139f3b4: f9402260 ldr x0, [x19,#64] return -EOPNOTSUPP; if (!netif_device_present(dev)) ffff80001139f3b8: 360800e0 tbz w0, #1, ffff80001139f3d4 return -ENODEV; return ops->ndo_change_carrier(dev, new_carrier); ffff80001139f3bc: aa1303e0 mov x0, x19 ffff80001139f3c0: 2a1403e1 mov w1, w20 ffff80001139f3c4: d63f0040 blr x2 } ffff80001139f3c8: a94153f3 ldp x19, x20, [sp,#16] ffff80001139f3cc: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139f3d0: d65f03c0 ret return -ENODEV; ffff80001139f3d4: 12800240 mov w0, #0xffffffed // #-19 ffff80001139f3d8: 17fffffc b ffff80001139f3c8 return -EOPNOTSUPP; ffff80001139f3dc: 12800bc0 mov w0, #0xffffffa1 // #-95 ffff80001139f3e0: 17fffffa b ffff80001139f3c8 ffff80001139f3e4 : * * Get device physical port ID */ int dev_get_phys_port_id(struct net_device *dev, struct netdev_phys_item_id *ppid) { ffff80001139f3e4: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139f3e8: 910003fd mov x29, sp ffff80001139f3ec: f9000bf3 str x19, [sp,#16] ffff80001139f3f0: aa0003f3 mov x19, x0 ffff80001139f3f4: aa1e03e0 mov x0, x30 ffff80001139f3f8: f90017a1 str x1, [x29,#40] ffff80001139f3fc: 94000000 bl 0 <_mcount> ffff80001139f3fc: R_AARCH64_CALL26 _mcount const struct net_device_ops *ops = dev->netdev_ops; if (!ops->ndo_get_phys_port_id) ffff80001139f400: f940fa60 ldr x0, [x19,#496] ffff80001139f404: f94017a1 ldr x1, [x29,#40] ffff80001139f408: f940f402 ldr x2, [x0,#488] ffff80001139f40c: b40000c2 cbz x2, ffff80001139f424 return -EOPNOTSUPP; return ops->ndo_get_phys_port_id(dev, ppid); ffff80001139f410: aa1303e0 mov x0, x19 ffff80001139f414: d63f0040 blr x2 } ffff80001139f418: f9400bf3 ldr x19, [sp,#16] ffff80001139f41c: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f420: d65f03c0 ret return -EOPNOTSUPP; ffff80001139f424: 12800bc0 mov w0, #0xffffffa1 // #-95 ffff80001139f428: 17fffffc b ffff80001139f418 ffff80001139f42c : * * This info can be used by switch drivers to set the phys state of the * port. */ int dev_change_proto_down(struct net_device *dev, bool proto_down) { ffff80001139f42c: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139f430: 910003fd mov x29, sp ffff80001139f434: a90153f3 stp x19, x20, [sp,#16] ffff80001139f438: aa0003f3 mov x19, x0 ffff80001139f43c: aa1e03e0 mov x0, x30 ffff80001139f440: 53001c34 uxtb w20, w1 ffff80001139f444: 94000000 bl 0 <_mcount> ffff80001139f444: R_AARCH64_CALL26 _mcount const struct net_device_ops *ops = dev->netdev_ops; if (!ops->ndo_change_proto_down) ffff80001139f448: f940fa60 ldr x0, [x19,#496] ffff80001139f44c: f9411802 ldr x2, [x0,#560] ffff80001139f450: b4000162 cbz x2, ffff80001139f47c ffff80001139f454: f9402260 ldr x0, [x19,#64] return -EOPNOTSUPP; if (!netif_device_present(dev)) ffff80001139f458: 360800e0 tbz w0, #1, ffff80001139f474 return -ENODEV; return ops->ndo_change_proto_down(dev, proto_down); ffff80001139f45c: aa1303e0 mov x0, x19 ffff80001139f460: 2a1403e1 mov w1, w20 ffff80001139f464: d63f0040 blr x2 } ffff80001139f468: a94153f3 ldp x19, x20, [sp,#16] ffff80001139f46c: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139f470: d65f03c0 ret return -ENODEV; ffff80001139f474: 12800240 mov w0, #0xffffffed // #-19 ffff80001139f478: 17fffffc b ffff80001139f468 return -EOPNOTSUPP; ffff80001139f47c: 12800bc0 mov w0, #0xffffffa1 // #-95 ffff80001139f480: 17fffffa b ffff80001139f468 ffff80001139f484 : * Returns a suitable unique value for a new device interface * number. The caller must hold the rtnl semaphore or the * dev_base_lock to be sure it remains unique. */ static int dev_new_index(struct net *net) { ffff80001139f484: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139f488: 910003fd mov x29, sp ffff80001139f48c: f9000bf3 str x19, [sp,#16] ffff80001139f490: aa0003f3 mov x19, x0 ffff80001139f494: aa1e03e0 mov x0, x30 ffff80001139f498: 94000000 bl 0 <_mcount> ffff80001139f498: R_AARCH64_CALL26 _mcount int ifindex = net->ifindex; ffff80001139f49c: b9401660 ldr w0, [x19,#20] ffff80001139f4a0: f9409a63 ldr x3, [x19,#304] for (;;) { if (++ifindex <= 0) ffff80001139f4a4: 11000400 add w0, w0, #0x1 ffff80001139f4a8: 6b1f001f cmp w0, wzr ffff80001139f4ac: 540001ed b.le ffff80001139f4e8 ffff80001139f4b0: d37d1c01 ubfiz x1, x0, #3, #8 hlist_for_each_entry(dev, head, index_hlist) ffff80001139f4b4: f8616861 ldr x1, [x3,x1] ffff80001139f4b8: b4000041 cbz x1, ffff80001139f4c0 ffff80001139f4bc: d10e4021 sub x1, x1, #0x390 ffff80001139f4c0: b40000c1 cbz x1, ffff80001139f4d8 if (dev->ifindex == ifindex) ffff80001139f4c4: b9410022 ldr w2, [x1,#256] ffff80001139f4c8: 6b02001f cmp w0, w2 ffff80001139f4cc: 54fffec0 b.eq ffff80001139f4a4 hlist_for_each_entry(dev, head, index_hlist) ffff80001139f4d0: f941c821 ldr x1, [x1,#912] ffff80001139f4d4: b5ffff41 cbnz x1, ffff80001139f4bc ifindex = 1; if (!__dev_get_by_index(net, ifindex)) return net->ifindex = ifindex; ffff80001139f4d8: b9001660 str w0, [x19,#20] } } ffff80001139f4dc: f9400bf3 ldr x19, [sp,#16] ffff80001139f4e0: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139f4e4: d65f03c0 ret ffff80001139f4e8: d2800101 mov x1, #0x8 // #8 ifindex = 1; ffff80001139f4ec: 52800020 mov w0, #0x1 // #1 ffff80001139f4f0: 17fffff1 b ffff80001139f4b4 ffff80001139f4f4 : lockdep_unregister_key(&dev->qdisc_xmit_lock_key); lockdep_unregister_key(&dev->addr_list_lock_key); } void netdev_update_lockdep_key(struct net_device *dev) { ffff80001139f4f4: a9bf7bfd stp x29, x30, [sp,#-16]! ffff80001139f4f8: 910003fd mov x29, sp ffff80001139f4fc: aa1e03e0 mov x0, x30 ffff80001139f500: 94000000 bl 0 <_mcount> ffff80001139f500: R_AARCH64_CALL26 _mcount lockdep_unregister_key(&dev->addr_list_lock_key); lockdep_register_key(&dev->addr_list_lock_key); lockdep_set_class(&dev->addr_list_lock, &dev->addr_list_lock_key); } ffff80001139f504: a8c17bfd ldp x29, x30, [sp],#16 ffff80001139f508: d65f03c0 ret ffff80001139f50c : static const struct ethtool_ops default_ethtool_ops; void netdev_set_default_ethtool_ops(struct net_device *dev, const struct ethtool_ops *ops) { ffff80001139f50c: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139f510: 910003fd mov x29, sp ffff80001139f514: f9000bf3 str x19, [sp,#16] ffff80001139f518: aa0003f3 mov x19, x0 ffff80001139f51c: aa1e03e0 mov x0, x30 ffff80001139f520: f90017a1 str x1, [x29,#40] ffff80001139f524: 94000000 bl 0 <_mcount> ffff80001139f524: R_AARCH64_CALL26 _mcount if (dev->ethtool_ops == &default_ethtool_ops) ffff80001139f528: f940fe62 ldr x2, [x19,#504] ffff80001139f52c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff80001139f52c: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff80001139f530: 91000000 add x0, x0, #0x0 ffff80001139f530: R_AARCH64_ADD_ABS_LO12_NC .bss ffff80001139f534: eb00005f cmp x2, x0 ffff80001139f538: f94017a1 ldr x1, [x29,#40] ffff80001139f53c: 54000080 b.eq ffff80001139f54c dev->ethtool_ops = ops; } ffff80001139f540: f9400bf3 ldr x19, [sp,#16] ffff80001139f544: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f548: d65f03c0 ret dev->ethtool_ops = ops; ffff80001139f54c: f900fe61 str x1, [x19,#504] } ffff80001139f550: f9400bf3 ldr x19, [sp,#16] ffff80001139f554: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f558: d65f03c0 ret ffff80001139f55c : * @one to the master device with current feature set @all. Will not * enable anything that is off in @mask. Returns the new feature set. */ netdev_features_t netdev_increment_features(netdev_features_t all, netdev_features_t one, netdev_features_t mask) { ffff80001139f55c: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139f560: 910003fd mov x29, sp ffff80001139f564: f9000bf3 str x19, [sp,#16] ffff80001139f568: aa0003f3 mov x19, x0 ffff80001139f56c: aa1e03e0 mov x0, x30 ffff80001139f570: f90017a1 str x1, [x29,#40] ffff80001139f574: f90013a2 str x2, [x29,#32] ffff80001139f578: 94000000 bl 0 <_mcount> ffff80001139f578: R_AARCH64_CALL26 _mcount if (mask & NETIF_F_HW_CSUM) ffff80001139f57c: f94013a2 ldr x2, [x29,#32] ffff80001139f580: f94017a1 ldr x1, [x29,#40] ffff80001139f584: 36180062 tbz w2, #3, ffff80001139f590 mask |= NETIF_F_CSUM_MASK; ffff80001139f588: d2800340 mov x0, #0x1a // #26 ffff80001139f58c: aa000042 orr x2, x2, x0 mask |= NETIF_F_VLAN_CHALLENGED; all |= one & (NETIF_F_ONE_FOR_ALL | NETIF_F_CSUM_MASK) & mask; ffff80001139f590: d2808f63 mov x3, #0x47b // #1147 ffff80001139f594: f2a803e3 movk x3, #0x401f, lsl #16 ffff80001139f598: 8a030020 and x0, x1, x3 mask |= NETIF_F_VLAN_CHALLENGED; ffff80001139f59c: b2760042 orr x2, x2, #0x400 all &= one | ~NETIF_F_ALL_FOR_ALL; ffff80001139f5a0: 92c04003 mov x3, #0xfffffdffffffffff // #-2199023255553 all |= one & (NETIF_F_ONE_FOR_ALL | NETIF_F_CSUM_MASK) & mask; ffff80001139f5a4: 8a020000 and x0, x0, x2 all &= one | ~NETIF_F_ALL_FOR_ALL; ffff80001139f5a8: f2bffbe3 movk x3, #0xffdf, lsl #16 all |= one & (NETIF_F_ONE_FOR_ALL | NETIF_F_CSUM_MASK) & mask; ffff80001139f5ac: aa130000 orr x0, x0, x19 all &= one | ~NETIF_F_ALL_FOR_ALL; ffff80001139f5b0: aa030021 orr x1, x1, x3 ffff80001139f5b4: 8a010000 and x0, x0, x1 /* If one device supports hw checksumming, set for all. */ if (all & NETIF_F_HW_CSUM) ffff80001139f5b8: 36180060 tbz w0, #3, ffff80001139f5c4 all &= ~(NETIF_F_CSUM_MASK & ~NETIF_F_HW_CSUM); ffff80001139f5bc: 92800241 mov x1, #0xffffffffffffffed // #-19 ffff80001139f5c0: 8a010000 and x0, x0, x1 return all; } ffff80001139f5c4: f9400bf3 ldr x19, [sp,#16] ffff80001139f5c8: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f5cc: d65f03c0 ret ffff80001139f5d0 : { ffff80001139f5d0: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139f5d4: 910003fd mov x29, sp ffff80001139f5d8: a90153f3 stp x19, x20, [sp,#16] ffff80001139f5dc: f90013f5 str x21, [sp,#32] ffff80001139f5e0: 90000015 adrp x21, ffff80001139e37c <__my_cpu_offset> ffff80001139f5e0: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff80001139f5e4: 910002b5 add x21, x21, #0x0 ffff80001139f5e4: R_AARCH64_ADD_ABS_LO12_NC .bss ffff80001139f5e8: aa0003f4 mov x20, x0 ffff80001139f5ec: aa1e03e0 mov x0, x30 ffff80001139f5f0: 910722b3 add x19, x21, #0x1c8 ffff80001139f5f4: 94000000 bl 0 <_mcount> ffff80001139f5f4: R_AARCH64_CALL26 _mcount ffff80001139f5f8: 910c22b5 add x21, x21, #0x308 if (s[i].name[0] != '\0' && s[i].name[0] != ' ' && ffff80001139f5fc: 39400262 ldrb w2, [x19] !strcmp(dev->name, s[i].name)) { ffff80001139f600: aa1303e1 mov x1, x19 if (s[i].name[0] != '\0' && s[i].name[0] != ' ' && ffff80001139f604: 121a7842 and w2, w2, #0xffffffdf ffff80001139f608: 53001c42 uxtb w2, w2 !strcmp(dev->name, s[i].name)) { ffff80001139f60c: aa1403e0 mov x0, x20 if (s[i].name[0] != '\0' && s[i].name[0] != ' ' && ffff80001139f610: 34000062 cbz w2, ffff80001139f61c !strcmp(dev->name, s[i].name)) { ffff80001139f614: 94000000 bl 0 ffff80001139f614: R_AARCH64_CALL26 strcmp if (s[i].name[0] != '\0' && s[i].name[0] != ' ' && ffff80001139f618: 34000120 cbz w0, ffff80001139f63c ffff80001139f61c: 9100a273 add x19, x19, #0x28 for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) { ffff80001139f620: eb15027f cmp x19, x21 ffff80001139f624: 54fffec1 b.ne ffff80001139f5fc return 0; ffff80001139f628: 52800000 mov w0, #0x0 // #0 } ffff80001139f62c: a94153f3 ldp x19, x20, [sp,#16] ffff80001139f630: f94013f5 ldr x21, [sp,#32] ffff80001139f634: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f638: d65f03c0 ret dev->irq = s[i].map.irq; ffff80001139f63c: 39408a61 ldrb w1, [x19,#34] return 1; ffff80001139f640: 52800020 mov w0, #0x1 // #1 dev->irq = s[i].map.irq; ffff80001139f644: b9003a81 str w1, [x20,#56] dev->base_addr = s[i].map.base_addr; ffff80001139f648: 79404261 ldrh w1, [x19,#32] ffff80001139f64c: f9001a81 str x1, [x20,#48] dev->mem_start = s[i].map.mem_start; ffff80001139f650: f9400a61 ldr x1, [x19,#16] ffff80001139f654: f9001681 str x1, [x20,#40] dev->mem_end = s[i].map.mem_end; ffff80001139f658: f9400e61 ldr x1, [x19,#24] ffff80001139f65c: f9001281 str x1, [x20,#32] } ffff80001139f660: a94153f3 ldp x19, x20, [sp,#16] ffff80001139f664: f94013f5 ldr x21, [sp,#32] ffff80001139f668: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f66c: d65f03c0 ret ffff80001139f670 : { ffff80001139f670: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139f674: 910003fd mov x29, sp ffff80001139f678: a90153f3 stp x19, x20, [sp,#16] ffff80001139f67c: aa0003f3 mov x19, x0 ffff80001139f680: aa1e03e0 mov x0, x30 ffff80001139f684: aa0103f4 mov x20, x1 ffff80001139f688: 94000000 bl 0 <_mcount> ffff80001139f688: R_AARCH64_CALL26 _mcount extern __kernel_size_t __real_strnlen(const char *, __kernel_size_t) __RENAME(strnlen); __FORTIFY_INLINE __kernel_size_t strnlen(const char *p, __kernel_size_t maxlen) { size_t p_size = __builtin_object_size(p, 0); __kernel_size_t ret = __real_strnlen(p, maxlen < p_size ? maxlen : p_size); ffff80001139f68c: aa1403e0 mov x0, x20 ffff80001139f690: d2800201 mov x1, #0x10 // #16 ffff80001139f694: 94000000 bl 0 ffff80001139f694: R_AARCH64_CALL26 strnlen if (p_size <= ret && maxlen != ret) ffff80001139f698: b100041f cmn x0, #0x1 __kernel_size_t ret = __real_strnlen(p, maxlen < p_size ? maxlen : p_size); ffff80001139f69c: aa0003e2 mov x2, x0 if (p_size <= ret && maxlen != ret) ffff80001139f6a0: 540002a0 b.eq ffff80001139f6f4 unsigned int hash = full_name_hash(net, name, strnlen(name, IFNAMSIZ)); ffff80001139f6a4: aa1303e0 mov x0, x19 ffff80001139f6a8: aa1403e1 mov x1, x20 ffff80001139f6ac: 94000000 bl 0 ffff80001139f6ac: R_AARCH64_CALL26 full_name_hash #ifndef HAVE_ARCH__HASH_32 #define __hash_32 __hash_32_generic #endif static inline u32 __hash_32_generic(u32 val) { return val * GOLDEN_RATIO_32; ffff80001139f6b0: 5290c8e1 mov w1, #0x8647 // #34375 ffff80001139f6b4: 72ac3901 movk w1, #0x61c8, lsl #16 ffff80001139f6b8: 1b017c00 mul w0, w0, w1 hlist_for_each_entry(name_node, head, hlist) ffff80001139f6bc: f9409662 ldr x2, [x19,#296] return &net->dev_name_head[hash_32(hash, NETDEV_HASHBITS)]; ffff80001139f6c0: d3587c01 ubfx x1, x0, #24, #8 hlist_for_each_entry(name_node, head, hlist) ffff80001139f6c4: f8617853 ldr x19, [x2,x1,lsl #3] ffff80001139f6c8: b40000f3 cbz x19, ffff80001139f6e4 if (!strcmp(name_node->name, name)) ffff80001139f6cc: f9401660 ldr x0, [x19,#40] ffff80001139f6d0: aa1403e1 mov x1, x20 ffff80001139f6d4: 94000000 bl 0 ffff80001139f6d4: R_AARCH64_CALL26 strcmp ffff80001139f6d8: 34000060 cbz w0, ffff80001139f6e4 hlist_for_each_entry(name_node, head, hlist) ffff80001139f6dc: f9400273 ldr x19, [x19] ffff80001139f6e0: b5ffff73 cbnz x19, ffff80001139f6cc } ffff80001139f6e4: aa1303e0 mov x0, x19 ffff80001139f6e8: a94153f3 ldp x19, x20, [sp,#16] ffff80001139f6ec: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139f6f0: d65f03c0 ret fortify_panic(__func__); ffff80001139f6f4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff80001139f6f4: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x90 ffff80001139f6f8: 91000000 add x0, x0, #0x0 ffff80001139f6f8: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x90 ffff80001139f6fc: 91044000 add x0, x0, #0x110 ffff80001139f700: 94000000 bl 0 ffff80001139f700: R_AARCH64_CALL26 fortify_panic ffff80001139f704 <__dev_get_by_name>: { ffff80001139f704: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139f708: 910003fd mov x29, sp ffff80001139f70c: f9000bf3 str x19, [sp,#16] ffff80001139f710: aa0003f3 mov x19, x0 ffff80001139f714: aa1e03e0 mov x0, x30 ffff80001139f718: f90017a1 str x1, [x29,#40] ffff80001139f71c: 94000000 bl 0 <_mcount> ffff80001139f71c: R_AARCH64_CALL26 _mcount node_name = netdev_name_node_lookup(net, name); ffff80001139f720: f94017a1 ldr x1, [x29,#40] ffff80001139f724: aa1303e0 mov x0, x19 ffff80001139f728: 97ffffd2 bl ffff80001139f670 return node_name ? node_name->dev : NULL; ffff80001139f72c: b4000040 cbz x0, ffff80001139f734 <__dev_get_by_name+0x30> ffff80001139f730: f9401000 ldr x0, [x0,#32] } ffff80001139f734: f9400bf3 ldr x19, [sp,#16] ffff80001139f738: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f73c: d65f03c0 ret ffff80001139f740 : { ffff80001139f740: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139f744: 910003fd mov x29, sp ffff80001139f748: a90153f3 stp x19, x20, [sp,#16] ffff80001139f74c: aa0003f4 mov x20, x0 ffff80001139f750: aa1e03e0 mov x0, x30 ffff80001139f754: aa0103f3 mov x19, x1 ffff80001139f758: 94000000 bl 0 <_mcount> ffff80001139f758: R_AARCH64_CALL26 _mcount index = kmalloc_index(size); if (!index) return ZERO_SIZE_PTR; return kmem_cache_alloc_trace( ffff80001139f75c: 90000002 adrp x2, 0 ffff80001139f75c: R_AARCH64_ADR_PREL_PG_HI21 kmalloc_caches+0x38 ffff80001139f760: f9400040 ldr x0, [x2] ffff80001139f760: R_AARCH64_LDST64_ABS_LO12_NC kmalloc_caches+0x38 ffff80001139f764: 52819801 mov w1, #0xcc0 // #3264 ffff80001139f768: d2800602 mov x2, #0x30 // #48 ffff80001139f76c: 94000000 bl 0 ffff80001139f76c: R_AARCH64_CALL26 kmem_cache_alloc_trace if (!name_node) ffff80001139f770: b40000a0 cbz x0, ffff80001139f784 #define HLIST_HEAD_INIT { .first = NULL } #define HLIST_HEAD(name) struct hlist_head name = { .first = NULL } #define INIT_HLIST_HEAD(ptr) ((ptr)->first = NULL) static inline void INIT_HLIST_NODE(struct hlist_node *h) { h->next = NULL; ffff80001139f774: f900001f str xzr, [x0] h->pprev = NULL; ffff80001139f778: f900041f str xzr, [x0,#8] name_node->dev = dev; ffff80001139f77c: f9001014 str x20, [x0,#32] name_node->name = name; ffff80001139f780: f9001413 str x19, [x0,#40] } ffff80001139f784: a94153f3 ldp x19, x20, [sp,#16] ffff80001139f788: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139f78c: d65f03c0 ret ffff80001139f790 : { ffff80001139f790: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139f794: 910003fd mov x29, sp ffff80001139f798: f9000bf3 str x19, [sp,#16] ffff80001139f79c: aa0003f3 mov x19, x0 ffff80001139f7a0: aa1e03e0 mov x0, x30 ffff80001139f7a4: 94000000 bl 0 <_mcount> ffff80001139f7a4: R_AARCH64_CALL26 _mcount ffff80001139f7a8: 90000002 adrp x2, 0 <__stack_chk_guard> ffff80001139f7a8: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff80001139f7ac: f9400041 ldr x1, [x2] ffff80001139f7ac: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard __READ_ONCE_SIZE; ffff80001139f7b0: aa1303e0 mov x0, x19 ffff80001139f7b4: f90017a1 str x1, [x29,#40] ffff80001139f7b8: f84b8c01 ldr x1, [x0,#184]! lower = list_first_or_null_rcu(&dev->adj_list.lower, ffff80001139f7bc: f90013a1 str x1, [x29,#32] ffff80001139f7c0: eb00003f cmp x1, x0 ffff80001139f7c4: 540001a0 b.eq ffff80001139f7f8 ffff80001139f7c8: f94013a1 ldr x1, [x29,#32] if (lower) ffff80001139f7cc: f1006020 subs x0, x1, #0x18 ffff80001139f7d0: 54000040 b.eq ffff80001139f7d8 return lower->private; ffff80001139f7d4: f85f8020 ldur x0, [x1,#-8] } ffff80001139f7d8: f94017a3 ldr x3, [x29,#40] ffff80001139f7dc: f9400041 ldr x1, [x2] ffff80001139f7dc: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139f7e0: eb01007f cmp x3, x1 ffff80001139f7e4: 54000081 b.ne ffff80001139f7f4 ffff80001139f7e8: f9400bf3 ldr x19, [sp,#16] ffff80001139f7ec: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f7f0: d65f03c0 ret ffff80001139f7f4: 94000000 bl 0 <__stack_chk_fail> ffff80001139f7f4: R_AARCH64_CALL26 __stack_chk_fail return NULL; ffff80001139f7f8: d2800000 mov x0, #0x0 // #0 ffff80001139f7fc: 17fffff7 b ffff80001139f7d8 ffff80001139f800 : { ffff80001139f800: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139f804: 910003fd mov x29, sp ffff80001139f808: f9000bf3 str x19, [sp,#16] ffff80001139f80c: aa0003f3 mov x19, x0 ffff80001139f810: aa1e03e0 mov x0, x30 ffff80001139f814: 94000000 bl 0 <_mcount> ffff80001139f814: R_AARCH64_CALL26 _mcount ffff80001139f818: 90000002 adrp x2, 0 <__stack_chk_guard> ffff80001139f818: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff80001139f81c: f9400041 ldr x1, [x2] ffff80001139f81c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139f820: aa1303e0 mov x0, x19 ffff80001139f824: f90017a1 str x1, [x29,#40] ffff80001139f828: f84a8c01 ldr x1, [x0,#168]! upper = list_first_or_null_rcu(&dev->adj_list.upper, ffff80001139f82c: f90013a1 str x1, [x29,#32] ffff80001139f830: eb00003f cmp x1, x0 ffff80001139f834: 540001c0 b.eq ffff80001139f86c ffff80001139f838: f94013a1 ldr x1, [x29,#32] if (upper && likely(upper->master)) ffff80001139f83c: f1006020 subs x0, x1, #0x18 ffff80001139f840: 54000080 b.eq ffff80001139f850 ffff80001139f844: 385f0020 ldurb w0, [x1,#-16] ffff80001139f848: 34000120 cbz w0, ffff80001139f86c return upper->dev; ffff80001139f84c: f85e8020 ldur x0, [x1,#-24] } ffff80001139f850: f94017a3 ldr x3, [x29,#40] ffff80001139f854: f9400041 ldr x1, [x2] ffff80001139f854: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139f858: eb01007f cmp x3, x1 ffff80001139f85c: 540000c1 b.ne ffff80001139f874 ffff80001139f860: f9400bf3 ldr x19, [sp,#16] ffff80001139f864: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f868: d65f03c0 ret return NULL; ffff80001139f86c: d2800000 mov x0, #0x0 // #0 ffff80001139f870: 17fffff8 b ffff80001139f850 } ffff80001139f874: 94000000 bl 0 <__stack_chk_fail> ffff80001139f874: R_AARCH64_CALL26 __stack_chk_fail ffff80001139f878 : { ffff80001139f878: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139f87c: 910003fd mov x29, sp ffff80001139f880: f9000bf3 str x19, [sp,#16] ffff80001139f884: aa0003f3 mov x19, x0 ffff80001139f888: aa1e03e0 mov x0, x30 ffff80001139f88c: 94000000 bl 0 <_mcount> ffff80001139f88c: R_AARCH64_CALL26 _mcount size_t p_size = __builtin_object_size(p, 0); if (__builtin_constant_p(size) && p_size < size) __write_overflow(); if (p_size < size) fortify_panic(__func__); return __builtin_memset(p, c, size); ffff80001139f890: aa1303e0 mov x0, x19 ffff80001139f894: 52800001 mov w1, #0x0 // #0 ffff80001139f898: d2812002 mov x2, #0x900 // #2304 ffff80001139f89c: 94000000 bl 0 ffff80001139f89c: R_AARCH64_CALL26 memset INIT_LIST_HEAD(&dev->napi_list); ffff80001139f8a0: 91016260 add x0, x19, #0x58 dev->reg_state = NETREG_DUMMY; ffff80001139f8a4: 528000a1 mov w1, #0x5 // #5 ffff80001139f8a8: 39136261 strb w1, [x19,#1240] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff80001139f8ac: f9002e60 str x0, [x19,#88] list->prev = list; ffff80001139f8b0: f9000400 str x0, [x0,#8] ATOMIC64_FETCH_OP (_relaxed,, , , , __VA_ARGS__) \ ATOMIC64_FETCH_OP (_acquire,, a, , "memory", __VA_ARGS__) \ ATOMIC64_FETCH_OP (_release,, , l, "memory", __VA_ARGS__) ATOMIC64_OPS(and, and, L) ATOMIC64_OPS(or, orr, L) ffff80001139f8b4: 91010262 add x2, x19, #0x40 ffff80001139f8b8: f9800051 prfm pstl1strm, [x2] ffff80001139f8bc: c85f7c40 ldxr x0, [x2] ffff80001139f8c0: b27f0000 orr x0, x0, #0x2 ffff80001139f8c4: c8017c40 stxr w1, x0, [x2] ffff80001139f8c8: 35ffffa1 cbnz w1, ffff80001139f8bc ffff80001139f8cc: f9800051 prfm pstl1strm, [x2] ffff80001139f8d0: c85f7c40 ldxr x0, [x2] ffff80001139f8d4: b2400000 orr x0, x0, #0x1 ffff80001139f8d8: c8017c40 stxr w1, x0, [x2] ffff80001139f8dc: 35ffffa1 cbnz w1, ffff80001139f8d0 } possible_net_t; static inline void write_pnet(possible_net_t *pnet, struct net *net) { #ifdef CONFIG_NET_NS pnet->net = net; ffff80001139f8e0: 90000000 adrp x0, 0 ffff80001139f8e0: R_AARCH64_ADR_PREL_PG_HI21 init_net ffff80001139f8e4: 91000000 add x0, x0, #0x0 ffff80001139f8e4: R_AARCH64_ADD_ABS_LO12_NC init_net ffff80001139f8e8: f9027a60 str x0, [x19,#1264] } ffff80001139f8ec: f9400bf3 ldr x19, [sp,#16] ffff80001139f8f0: 52800000 mov w0, #0x0 // #0 ffff80001139f8f4: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139f8f8: d65f03c0 ret ffff80001139f8fc : { ffff80001139f8fc: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139f900: 910003fd mov x29, sp ffff80001139f904: f9000bf3 str x19, [sp,#16] ffff80001139f908: aa0003f3 mov x19, x0 ffff80001139f90c: aa1e03e0 mov x0, x30 ffff80001139f910: f90017a1 str x1, [x29,#40] ffff80001139f914: 94000000 bl 0 <_mcount> ffff80001139f914: R_AARCH64_CALL26 _mcount if (q_size < size) __read_overflow2(); } if (p_size < size || q_size < size) fortify_panic(__func__); return __builtin_memcpy(p, q, size); ffff80001139f918: f94017a1 ldr x1, [x29,#40] ffff80001139f91c: aa1303e0 mov x0, x19 ffff80001139f920: d2801702 mov x2, #0xb8 // #184 ffff80001139f924: 94000000 bl 0 ffff80001139f924: R_AARCH64_CALL26 memcpy return __builtin_memset(p, c, size); ffff80001139f928: f9005e7f str xzr, [x19,#184] } ffff80001139f92c: f9400bf3 ldr x19, [sp,#16] ffff80001139f930: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139f934: d65f03c0 ret ffff80001139f938 : { ffff80001139f938: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139f93c: 910003fd mov x29, sp ffff80001139f940: a90153f3 stp x19, x20, [sp,#16] ffff80001139f944: aa0003f4 mov x20, x0 ffff80001139f948: aa1e03e0 mov x0, x30 ffff80001139f94c: aa0103f3 mov x19, x1 ffff80001139f950: 94000000 bl 0 <_mcount> ffff80001139f950: R_AARCH64_CALL26 _mcount const struct net_device_ops *ops = dev->netdev_ops; ffff80001139f954: f940fa80 ldr x0, [x20,#496] if (ops->ndo_get_stats64) { ffff80001139f958: f9404001 ldr x1, [x0,#128] ffff80001139f95c: b4000421 cbz x1, ffff80001139f9e0 ffff80001139f960: a9007e7f stp xzr, xzr, [x19] ffff80001139f964: a9017e7f stp xzr, xzr, [x19,#16] ffff80001139f968: a9027e7f stp xzr, xzr, [x19,#32] ffff80001139f96c: a9037e7f stp xzr, xzr, [x19,#48] ffff80001139f970: a9047e7f stp xzr, xzr, [x19,#64] ffff80001139f974: a9057e7f stp xzr, xzr, [x19,#80] ffff80001139f978: a9067e7f stp xzr, xzr, [x19,#96] ffff80001139f97c: a9077e7f stp xzr, xzr, [x19,#112] ffff80001139f980: a9087e7f stp xzr, xzr, [x19,#128] ffff80001139f984: a9097e7f stp xzr, xzr, [x19,#144] ffff80001139f988: a90a7e7f stp xzr, xzr, [x19,#160] ffff80001139f98c: a90b7e7f stp xzr, xzr, [x19,#176] ops->ndo_get_stats64(dev, storage); ffff80001139f990: f9404002 ldr x2, [x0,#128] ffff80001139f994: aa1303e1 mov x1, x19 ffff80001139f998: aa1403e0 mov x0, x20 ffff80001139f99c: d63f0040 blr x2 __READ_ONCE_SIZE; ffff80001139f9a0: f940e280 ldr x0, [x20,#448] storage->rx_dropped += (unsigned long)atomic_long_read(&dev->rx_dropped); ffff80001139f9a4: f9401a62 ldr x2, [x19,#48] storage->tx_dropped += (unsigned long)atomic_long_read(&dev->tx_dropped); ffff80001139f9a8: f9401e61 ldr x1, [x19,#56] storage->rx_dropped += (unsigned long)atomic_long_read(&dev->rx_dropped); ffff80001139f9ac: 8b000040 add x0, x2, x0 ffff80001139f9b0: f9001a60 str x0, [x19,#48] ffff80001139f9b4: f940e680 ldr x0, [x20,#456] storage->rx_nohandler += (unsigned long)atomic_long_read(&dev->rx_nohandler); ffff80001139f9b8: f9405e62 ldr x2, [x19,#184] storage->tx_dropped += (unsigned long)atomic_long_read(&dev->tx_dropped); ffff80001139f9bc: 8b000020 add x0, x1, x0 ffff80001139f9c0: f9001e60 str x0, [x19,#56] ffff80001139f9c4: f940ea81 ldr x1, [x20,#464] } ffff80001139f9c8: aa1303e0 mov x0, x19 storage->rx_nohandler += (unsigned long)atomic_long_read(&dev->rx_nohandler); ffff80001139f9cc: 8b010041 add x1, x2, x1 ffff80001139f9d0: f9005e61 str x1, [x19,#184] } ffff80001139f9d4: a94153f3 ldp x19, x20, [sp,#16] ffff80001139f9d8: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139f9dc: d65f03c0 ret } else if (ops->ndo_get_stats) { ffff80001139f9e0: f9404c01 ldr x1, [x0,#152] ffff80001139f9e4: b40000e1 cbz x1, ffff80001139fa00 netdev_stats_to_stats64(storage, ops->ndo_get_stats(dev)); ffff80001139f9e8: aa1403e0 mov x0, x20 ffff80001139f9ec: d63f0020 blr x1 ffff80001139f9f0: aa0003e1 mov x1, x0 ffff80001139f9f4: aa1303e0 mov x0, x19 ffff80001139f9f8: 94000000 bl ffff80001139f8fc ffff80001139f9f8: R_AARCH64_CALL26 netdev_stats_to_stats64 ffff80001139f9fc: 17ffffe9 b ffff80001139f9a0 netdev_stats_to_stats64(storage, &dev->stats); ffff80001139fa00: aa1303e0 mov x0, x19 ffff80001139fa04: 91042281 add x1, x20, #0x108 ffff80001139fa08: 94000000 bl ffff80001139f8fc ffff80001139fa08: R_AARCH64_CALL26 netdev_stats_to_stats64 ffff80001139fa0c: 17ffffe5 b ffff80001139f9a0 ffff80001139fa10 : { ffff80001139fa10: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139fa14: 910003fd mov x29, sp ffff80001139fa18: a90153f3 stp x19, x20, [sp,#16] ffff80001139fa1c: a9025bf5 stp x21, x22, [sp,#32] ffff80001139fa20: aa0003f4 mov x20, x0 ffff80001139fa24: aa1e03e0 mov x0, x30 ffff80001139fa28: 53003c35 uxth w21, w1 ffff80001139fa2c: aa0203f6 mov x22, x2 ffff80001139fa30: 94000000 bl 0 <_mcount> ffff80001139fa30: R_AARCH64_CALL26 _mcount ffff80001139fa34: f8490e93 ldr x19, [x20,#144]! for_each_netdev_rcu(net, dev) ffff80001139fa38: eb13029f cmp x20, x19 ffff80001139fa3c: d1012273 sub x19, x19, #0x48 ffff80001139fa40: 540000c1 b.ne ffff80001139fa58 ffff80001139fa44: 14000012 b ffff80001139fa8c ffff80001139fa48: f9402673 ldr x19, [x19,#72] ffff80001139fa4c: eb13029f cmp x20, x19 ffff80001139fa50: d1012273 sub x19, x19, #0x48 ffff80001139fa54: 540001c0 b.eq ffff80001139fa8c if (dev->type == type && ffff80001139fa58: 79448a63 ldrh w3, [x19,#580] ffff80001139fa5c: 6b15007f cmp w3, w21 ffff80001139fa60: 54ffff41 b.ne ffff80001139fa48 if (q_size < size) __read_overflow2(); } if (p_size < size || q_size < size) fortify_panic(__func__); return __builtin_memcmp(p, q, size); ffff80001139fa64: f9418e60 ldr x0, [x19,#792] ffff80001139fa68: 3949be62 ldrb w2, [x19,#623] ffff80001139fa6c: aa1603e1 mov x1, x22 ffff80001139fa70: 94000000 bl 0 ffff80001139fa70: R_AARCH64_CALL26 memcmp ffff80001139fa74: 35fffea0 cbnz w0, ffff80001139fa48 ffff80001139fa78: aa1303e0 mov x0, x19 } ffff80001139fa7c: a9425bf5 ldp x21, x22, [sp,#32] ffff80001139fa80: a94153f3 ldp x19, x20, [sp,#16] ffff80001139fa84: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139fa88: d65f03c0 ret return NULL; ffff80001139fa8c: d2800000 mov x0, #0x0 // #0 } ffff80001139fa90: a94153f3 ldp x19, x20, [sp,#16] ffff80001139fa94: a9425bf5 ldp x21, x22, [sp,#32] ffff80001139fa98: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139fa9c: d65f03c0 ret ffff80001139faa0 <__dev_getfirstbyhwtype>: { ffff80001139faa0: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139faa4: 910003fd mov x29, sp ffff80001139faa8: a90153f3 stp x19, x20, [sp,#16] ffff80001139faac: aa0003f4 mov x20, x0 ffff80001139fab0: aa1e03e0 mov x0, x30 ffff80001139fab4: 53003c33 uxth w19, w1 ffff80001139fab8: 94000000 bl 0 <_mcount> ffff80001139fab8: R_AARCH64_CALL26 _mcount ASSERT_RTNL(); ffff80001139fabc: 94000000 bl 0 ffff80001139fabc: R_AARCH64_CALL26 rtnl_is_locked ffff80001139fac0: 34000320 cbz w0, ffff80001139fb24 <__dev_getfirstbyhwtype+0x84> for_each_netdev(net, dev) ffff80001139fac4: aa1403e0 mov x0, x20 ffff80001139fac8: f8490c02 ldr x2, [x0,#144]! ffff80001139facc: eb02001f cmp x0, x2 ffff80001139fad0: d1012042 sub x2, x2, #0x48 ffff80001139fad4: 54000180 b.eq ffff80001139fb04 <__dev_getfirstbyhwtype+0x64> if (dev->type == type) ffff80001139fad8: 79448841 ldrh w1, [x2,#580] ffff80001139fadc: 6b13003f cmp w1, w19 ffff80001139fae0: 540000a1 b.ne ffff80001139faf4 <__dev_getfirstbyhwtype+0x54> ffff80001139fae4: 1400000c b ffff80001139fb14 <__dev_getfirstbyhwtype+0x74> ffff80001139fae8: 79448843 ldrh w3, [x2,#580] ffff80001139faec: 6b13007f cmp w3, w19 ffff80001139faf0: 54000120 b.eq ffff80001139fb14 <__dev_getfirstbyhwtype+0x74> for_each_netdev(net, dev) ffff80001139faf4: f9402442 ldr x2, [x2,#72] ffff80001139faf8: eb02001f cmp x0, x2 ffff80001139fafc: d1012042 sub x2, x2, #0x48 ffff80001139fb00: 54ffff41 b.ne ffff80001139fae8 <__dev_getfirstbyhwtype+0x48> return NULL; ffff80001139fb04: d2800000 mov x0, #0x0 // #0 } ffff80001139fb08: a94153f3 ldp x19, x20, [sp,#16] ffff80001139fb0c: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139fb10: d65f03c0 ret for_each_netdev(net, dev) ffff80001139fb14: aa0203e0 mov x0, x2 } ffff80001139fb18: a94153f3 ldp x19, x20, [sp,#16] ffff80001139fb1c: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139fb20: d65f03c0 ret ASSERT_RTNL(); ffff80001139fb24: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff80001139fb24: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff80001139fb28: 39400060 ldrb w0, [x3] ffff80001139fb28: R_AARCH64_LDST8_ABS_LO12_NC .data.once ffff80001139fb2c: 35fffcc0 cbnz w0, ffff80001139fac4 <__dev_getfirstbyhwtype+0x24> ffff80001139fb30: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff80001139fb30: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff80001139fb34: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff80001139fb34: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff80001139fb38: 52800024 mov w4, #0x1 // #1 ffff80001139fb3c: 91000000 add x0, x0, #0x0 ffff80001139fb3c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff80001139fb40: 91000021 add x1, x1, #0x0 ffff80001139fb40: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff80001139fb44: 52807c42 mov w2, #0x3e2 // #994 ffff80001139fb48: 39000064 strb w4, [x3] ffff80001139fb48: R_AARCH64_LDST8_ABS_LO12_NC .data.once ffff80001139fb4c: 94000000 bl 0 <__warn_printk> ffff80001139fb4c: R_AARCH64_CALL26 __warn_printk ffff80001139fb50: d4210000 brk #0x800 ffff80001139fb54: 17ffffdc b ffff80001139fac4 <__dev_getfirstbyhwtype+0x24> ffff80001139fb58 <__dev_get_by_flags>: { ffff80001139fb58: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139fb5c: 910003fd mov x29, sp ffff80001139fb60: a90153f3 stp x19, x20, [sp,#16] ffff80001139fb64: f90013f5 str x21, [sp,#32] ffff80001139fb68: aa0003f5 mov x21, x0 ffff80001139fb6c: aa1e03e0 mov x0, x30 ffff80001139fb70: 53003c34 uxth w20, w1 ffff80001139fb74: 53003c53 uxth w19, w2 ffff80001139fb78: 94000000 bl 0 <_mcount> ffff80001139fb78: R_AARCH64_CALL26 _mcount ASSERT_RTNL(); ffff80001139fb7c: 94000000 bl 0 ffff80001139fb7c: R_AARCH64_CALL26 rtnl_is_locked ffff80001139fb80: 34000300 cbz w0, ffff80001139fbe0 <__dev_get_by_flags+0x88> for_each_netdev(net, dev) { ffff80001139fb84: aa1503e4 mov x4, x21 ffff80001139fb88: f8490c80 ldr x0, [x4,#144]! ffff80001139fb8c: eb00009f cmp x4, x0 ffff80001139fb90: d1012000 sub x0, x0, #0x48 ffff80001139fb94: 540001c0 b.eq ffff80001139fbcc <__dev_get_by_flags+0x74> if (((dev->flags ^ if_flags) & mask) == 0) { ffff80001139fb98: b9422801 ldr w1, [x0,#552] ffff80001139fb9c: 4a010281 eor w1, w20, w1 ffff80001139fba0: 6a13003f tst w1, w19 ffff80001139fba4: 540000c1 b.ne ffff80001139fbbc <__dev_get_by_flags+0x64> ffff80001139fba8: 1400000a b ffff80001139fbd0 <__dev_get_by_flags+0x78> ffff80001139fbac: b9422803 ldr w3, [x0,#552] ffff80001139fbb0: 4a030283 eor w3, w20, w3 ffff80001139fbb4: 6a13007f tst w3, w19 ffff80001139fbb8: 540000c0 b.eq ffff80001139fbd0 <__dev_get_by_flags+0x78> for_each_netdev(net, dev) { ffff80001139fbbc: f9402400 ldr x0, [x0,#72] ffff80001139fbc0: eb00009f cmp x4, x0 ffff80001139fbc4: d1012000 sub x0, x0, #0x48 ffff80001139fbc8: 54ffff21 b.ne ffff80001139fbac <__dev_get_by_flags+0x54> ret = NULL; ffff80001139fbcc: d2800000 mov x0, #0x0 // #0 } ffff80001139fbd0: a94153f3 ldp x19, x20, [sp,#16] ffff80001139fbd4: f94013f5 ldr x21, [sp,#32] ffff80001139fbd8: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139fbdc: d65f03c0 ret ASSERT_RTNL(); ffff80001139fbe0: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff80001139fbe0: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff80001139fbe4: 91000063 add x3, x3, #0x0 ffff80001139fbe4: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff80001139fbe8: 39400460 ldrb w0, [x3,#1] ffff80001139fbec: 35fffcc0 cbnz w0, ffff80001139fb84 <__dev_get_by_flags+0x2c> ffff80001139fbf0: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff80001139fbf0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff80001139fbf4: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff80001139fbf4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff80001139fbf8: 52800024 mov w4, #0x1 // #1 ffff80001139fbfc: 91000000 add x0, x0, #0x0 ffff80001139fbfc: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff80001139fc00: 91000021 add x1, x1, #0x0 ffff80001139fc00: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff80001139fc04: 52808162 mov w2, #0x40b // #1035 ffff80001139fc08: 39000464 strb w4, [x3,#1] ffff80001139fc0c: 94000000 bl 0 <__warn_printk> ffff80001139fc0c: R_AARCH64_CALL26 __warn_printk ffff80001139fc10: d4210000 brk #0x800 ffff80001139fc14: 17ffffdc b ffff80001139fb84 <__dev_get_by_flags+0x2c> ffff80001139fc18 : { return dev->reg_state == NETREG_UNREGISTERING; } static inline const char *netdev_reg_state(const struct net_device *dev) { ffff80001139fc18: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139fc1c: 910003fd mov x29, sp ffff80001139fc20: f9000bf3 str x19, [sp,#16] switch (dev->reg_state) { ffff80001139fc24: 39536002 ldrb w2, [x0,#1240] { ffff80001139fc28: aa0003e1 mov x1, x0 switch (dev->reg_state) { ffff80001139fc2c: 7100145f cmp w2, #0x5 ffff80001139fc30: 54000169 b.ls ffff80001139fc5c case NETREG_UNREGISTERED: return " (unregistered)"; case NETREG_RELEASED: return " (released)"; case NETREG_DUMMY: return " (dummy)"; } WARN_ONCE(1, "%s: unknown reg_state %d\n", dev->name, dev->reg_state); ffff80001139fc34: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff80001139fc34: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff80001139fc38: 91000063 add x3, x3, #0x0 ffff80001139fc38: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff80001139fc3c: 39400860 ldrb w0, [x3,#2] return " (unknown)"; ffff80001139fc40: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff80001139fc40: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xb8 ffff80001139fc44: 91000273 add x19, x19, #0x0 ffff80001139fc44: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xb8 WARN_ONCE(1, "%s: unknown reg_state %d\n", dev->name, dev->reg_state); ffff80001139fc48: 340005e0 cbz w0, ffff80001139fd04 } ffff80001139fc4c: aa1303e0 mov x0, x19 ffff80001139fc50: f9400bf3 ldr x19, [sp,#16] ffff80001139fc54: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139fc58: d65f03c0 ret switch (dev->reg_state) { ffff80001139fc5c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff80001139fc5c: R_AARCH64_ADR_PREL_PG_HI21 .rodata ffff80001139fc60: 91000000 add x0, x0, #0x0 ffff80001139fc60: R_AARCH64_ADD_ABS_LO12_NC .rodata ffff80001139fc64: 38624801 ldrb w1, [x0,w2,uxtw] ffff80001139fc68: 10000063 adr x3, ffff80001139fc74 ffff80001139fc6c: 8b218861 add x1, x3, w1, sxtb #2 ffff80001139fc70: d61f0020 br x1 case NETREG_REGISTERED: return ""; ffff80001139fc74: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff80001139fc74: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x68 ffff80001139fc78: 91000273 add x19, x19, #0x0 ffff80001139fc78: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x68 } ffff80001139fc7c: aa1303e0 mov x0, x19 ffff80001139fc80: f9400bf3 ldr x19, [sp,#16] ffff80001139fc84: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139fc88: d65f03c0 ret case NETREG_UNREGISTERING: return " (unregistering)"; ffff80001139fc8c: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff80001139fc8c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x70 ffff80001139fc90: 91000273 add x19, x19, #0x0 ffff80001139fc90: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x70 } ffff80001139fc94: aa1303e0 mov x0, x19 ffff80001139fc98: f9400bf3 ldr x19, [sp,#16] ffff80001139fc9c: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139fca0: d65f03c0 ret case NETREG_UNREGISTERED: return " (unregistered)"; ffff80001139fca4: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff80001139fca4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x88 ffff80001139fca8: 91000273 add x19, x19, #0x0 ffff80001139fca8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x88 } ffff80001139fcac: aa1303e0 mov x0, x19 ffff80001139fcb0: f9400bf3 ldr x19, [sp,#16] ffff80001139fcb4: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139fcb8: d65f03c0 ret case NETREG_RELEASED: return " (released)"; ffff80001139fcbc: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff80001139fcbc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x98 ffff80001139fcc0: 91000273 add x19, x19, #0x0 ffff80001139fcc0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x98 } ffff80001139fcc4: aa1303e0 mov x0, x19 ffff80001139fcc8: f9400bf3 ldr x19, [sp,#16] ffff80001139fccc: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139fcd0: d65f03c0 ret case NETREG_DUMMY: return " (dummy)"; ffff80001139fcd4: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff80001139fcd4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xa8 ffff80001139fcd8: 91000273 add x19, x19, #0x0 ffff80001139fcd8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xa8 } ffff80001139fcdc: aa1303e0 mov x0, x19 ffff80001139fce0: f9400bf3 ldr x19, [sp,#16] ffff80001139fce4: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139fce8: d65f03c0 ret case NETREG_UNINITIALIZED: return " (uninitialized)"; ffff80001139fcec: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff80001139fcec: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x50 ffff80001139fcf0: 91000273 add x19, x19, #0x0 ffff80001139fcf0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x50 } ffff80001139fcf4: aa1303e0 mov x0, x19 ffff80001139fcf8: f9400bf3 ldr x19, [sp,#16] ffff80001139fcfc: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139fd00: d65f03c0 ret WARN_ONCE(1, "%s: unknown reg_state %d\n", dev->name, dev->reg_state); ffff80001139fd04: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff80001139fd04: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xc8 ffff80001139fd08: 52800024 mov w4, #0x1 // #1 ffff80001139fd0c: 91000000 add x0, x0, #0x0 ffff80001139fd0c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xc8 ffff80001139fd10: 39000864 strb w4, [x3,#2] ffff80001139fd14: 94000000 bl 0 <__warn_printk> ffff80001139fd14: R_AARCH64_CALL26 __warn_printk ffff80001139fd18: d4210000 brk #0x800 ffff80001139fd1c: 17ffffcc b ffff80001139fc4c ffff80001139fd20 : { ffff80001139fd20: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139fd24: 910003fd mov x29, sp ffff80001139fd28: f9000bf3 str x19, [sp,#16] ffff80001139fd2c: aa0003f3 mov x19, x0 ffff80001139fd30: aa1e03e0 mov x0, x30 ffff80001139fd34: 94000000 bl 0 <_mcount> ffff80001139fd34: R_AARCH64_CALL26 _mcount ASSERT_RTNL(); ffff80001139fd38: 94000000 bl 0 ffff80001139fd38: R_AARCH64_CALL26 rtnl_is_locked ffff80001139fd3c: 34000180 cbz w0, ffff80001139fd6c return dev && rtnl_dereference(dev->rx_handler); ffff80001139fd40: b40000f3 cbz x19, ffff80001139fd5c ffff80001139fd44: f941a260 ldr x0, [x19,#832] } ffff80001139fd48: f9400bf3 ldr x19, [sp,#16] return dev && rtnl_dereference(dev->rx_handler); ffff80001139fd4c: eb1f001f cmp x0, xzr ffff80001139fd50: 1a9f07e0 cset w0, ne } ffff80001139fd54: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139fd58: d65f03c0 ret ffff80001139fd5c: 2a1303e0 mov w0, w19 ffff80001139fd60: f9400bf3 ldr x19, [sp,#16] ffff80001139fd64: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139fd68: d65f03c0 ret ASSERT_RTNL(); ffff80001139fd6c: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff80001139fd6c: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff80001139fd70: 91000063 add x3, x3, #0x0 ffff80001139fd70: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff80001139fd74: 39400c60 ldrb w0, [x3,#3] ffff80001139fd78: 35fffe40 cbnz w0, ffff80001139fd40 ffff80001139fd7c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff80001139fd7c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff80001139fd80: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff80001139fd80: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff80001139fd84: 52800024 mov w4, #0x1 // #1 ffff80001139fd88: 91000000 add x0, x0, #0x0 ffff80001139fd88: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff80001139fd8c: 91000021 add x1, x1, #0x0 ffff80001139fd8c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff80001139fd90: 528263e2 mov w2, #0x131f // #4895 ffff80001139fd94: 39000c64 strb w4, [x3,#3] ffff80001139fd98: 94000000 bl 0 <__warn_printk> ffff80001139fd98: R_AARCH64_CALL26 __warn_printk ffff80001139fd9c: d4210000 brk #0x800 ffff80001139fda0: 17ffffe8 b ffff80001139fd40 ffff80001139fda4 : { ffff80001139fda4: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139fda8: 910003fd mov x29, sp ffff80001139fdac: f9000bf3 str x19, [sp,#16] ffff80001139fdb0: aa0003f3 mov x19, x0 ffff80001139fdb4: aa1e03e0 mov x0, x30 ffff80001139fdb8: f90017a1 str x1, [x29,#40] ffff80001139fdbc: f90013a2 str x2, [x29,#32] ffff80001139fdc0: 94000000 bl 0 <_mcount> ffff80001139fdc0: R_AARCH64_CALL26 _mcount if (netdev_is_rx_handler_busy(dev)) ffff80001139fdc4: aa1303e0 mov x0, x19 ffff80001139fdc8: 94000000 bl ffff80001139fd20 ffff80001139fdc8: R_AARCH64_CALL26 netdev_is_rx_handler_busy ffff80001139fdcc: 53001c00 uxtb w0, w0 ffff80001139fdd0: f94017a1 ldr x1, [x29,#40] ffff80001139fdd4: f94013a2 ldr x2, [x29,#32] ffff80001139fdd8: 35000160 cbnz w0, ffff80001139fe04 if (dev->priv_flags & IFF_NO_RX_HANDLER) ffff80001139fddc: b9422e60 ldr w0, [x19,#556] ffff80001139fde0: 12060000 and w0, w0, #0x4000000 ffff80001139fde4: 35000140 cbnz w0, ffff80001139fe0c rcu_assign_pointer(dev->rx_handler_data, rx_handler_data); ffff80001139fde8: 910d2263 add x3, x19, #0x348 ffff80001139fdec: c89ffc62 stlr x2, [x3] rcu_assign_pointer(dev->rx_handler, rx_handler); ffff80001139fdf0: 910d0273 add x19, x19, #0x340 ffff80001139fdf4: c89ffe61 stlr x1, [x19] } ffff80001139fdf8: f9400bf3 ldr x19, [sp,#16] ffff80001139fdfc: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139fe00: d65f03c0 ret return -EBUSY; ffff80001139fe04: 128001e0 mov w0, #0xfffffff0 // #-16 ffff80001139fe08: 17fffffc b ffff80001139fdf8 return -EINVAL; ffff80001139fe0c: 128002a0 mov w0, #0xffffffea // #-22 ffff80001139fe10: 17fffffa b ffff80001139fdf8 ffff80001139fe14 : { ffff80001139fe14: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139fe18: 910003fd mov x29, sp ffff80001139fe1c: a90153f3 stp x19, x20, [sp,#16] ffff80001139fe20: aa0003f4 mov x20, x0 ffff80001139fe24: aa1e03e0 mov x0, x30 ffff80001139fe28: aa0103f3 mov x19, x1 ffff80001139fe2c: 94000000 bl 0 <_mcount> ffff80001139fe2c: R_AARCH64_CALL26 _mcount ASSERT_RTNL(); ffff80001139fe30: 94000000 bl 0 ffff80001139fe30: R_AARCH64_CALL26 rtnl_is_locked ffff80001139fe34: 34000160 cbz w0, ffff80001139fe60 return netdev_walk_all_upper_dev_rcu(dev, ____netdev_has_upper_dev, ffff80001139fe38: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff80001139fe38: R_AARCH64_ADR_PREL_PG_HI21 .text+0x654 ffff80001139fe3c: aa1303e2 mov x2, x19 ffff80001139fe40: aa1403e0 mov x0, x20 ffff80001139fe44: 91000021 add x1, x1, #0x0 ffff80001139fe44: R_AARCH64_ADD_ABS_LO12_NC .text+0x654 ffff80001139fe48: 94000000 bl ffff80001139eb74 ffff80001139fe48: R_AARCH64_CALL26 netdev_walk_all_upper_dev_rcu ffff80001139fe4c: 6b1f001f cmp w0, wzr } ffff80001139fe50: 1a9f07e0 cset w0, ne ffff80001139fe54: a94153f3 ldp x19, x20, [sp,#16] ffff80001139fe58: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139fe5c: d65f03c0 ret ASSERT_RTNL(); ffff80001139fe60: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff80001139fe60: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff80001139fe64: 91000063 add x3, x3, #0x0 ffff80001139fe64: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff80001139fe68: 39401060 ldrb w0, [x3,#4] ffff80001139fe6c: 35fffe60 cbnz w0, ffff80001139fe38 ffff80001139fe70: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff80001139fe70: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff80001139fe74: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff80001139fe74: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff80001139fe78: 52800024 mov w4, #0x1 // #1 ffff80001139fe7c: 91000000 add x0, x0, #0x0 ffff80001139fe7c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff80001139fe80: 91000021 add x1, x1, #0x0 ffff80001139fe80: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff80001139fe84: 52834782 mov w2, #0x1a3c // #6716 ffff80001139fe88: 39001064 strb w4, [x3,#4] ffff80001139fe8c: 94000000 bl 0 <__warn_printk> ffff80001139fe8c: R_AARCH64_CALL26 __warn_printk ffff80001139fe90: d4210000 brk #0x800 ffff80001139fe94: 17ffffe9 b ffff80001139fe38 ffff80001139fe98 : { ffff80001139fe98: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139fe9c: 910003fd mov x29, sp ffff80001139fea0: f9000bf3 str x19, [sp,#16] ffff80001139fea4: aa0003f3 mov x19, x0 ffff80001139fea8: aa1e03e0 mov x0, x30 ffff80001139feac: 94000000 bl 0 <_mcount> ffff80001139feac: R_AARCH64_CALL26 _mcount ASSERT_RTNL(); ffff80001139feb0: 94000000 bl 0 ffff80001139feb0: R_AARCH64_CALL26 rtnl_is_locked ffff80001139feb4: 34000100 cbz w0, ffff80001139fed4 ffff80001139feb8: aa1303e0 mov x0, x19 ffff80001139febc: f84a8c01 ldr x1, [x0,#168]! } ffff80001139fec0: f9400bf3 ldr x19, [sp,#16] return !list_empty(&dev->adj_list.upper); ffff80001139fec4: eb01001f cmp x0, x1 } ffff80001139fec8: 1a9f07e0 cset w0, ne ffff80001139fecc: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139fed0: d65f03c0 ret ASSERT_RTNL(); ffff80001139fed4: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff80001139fed4: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff80001139fed8: 91000063 add x3, x3, #0x0 ffff80001139fed8: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff80001139fedc: 39401460 ldrb w0, [x3,#5] ffff80001139fee0: 35fffec0 cbnz w0, ffff80001139feb8 ffff80001139fee4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff80001139fee4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff80001139fee8: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff80001139fee8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff80001139feec: 52800024 mov w4, #0x1 // #1 ffff80001139fef0: 91000000 add x0, x0, #0x0 ffff80001139fef0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff80001139fef4: 91000021 add x1, x1, #0x0 ffff80001139fef4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff80001139fef8: 52834bc2 mov w2, #0x1a5e // #6750 ffff80001139fefc: 39001464 strb w4, [x3,#5] ffff80001139ff00: 94000000 bl 0 <__warn_printk> ffff80001139ff00: R_AARCH64_CALL26 __warn_printk ffff80001139ff04: d4210000 brk #0x800 ffff80001139ff08: 17ffffec b ffff80001139feb8 ffff80001139ff0c : { ffff80001139ff0c: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139ff10: 910003fd mov x29, sp ffff80001139ff14: f9000bf3 str x19, [sp,#16] ffff80001139ff18: aa0003f3 mov x19, x0 ffff80001139ff1c: aa1e03e0 mov x0, x30 ffff80001139ff20: 94000000 bl 0 <_mcount> ffff80001139ff20: R_AARCH64_CALL26 _mcount ASSERT_RTNL(); ffff80001139ff24: 94000000 bl 0 ffff80001139ff24: R_AARCH64_CALL26 rtnl_is_locked ffff80001139ff28: 340001c0 cbz w0, ffff80001139ff60 ffff80001139ff2c: aa1303e1 mov x1, x19 ffff80001139ff30: f84a8c20 ldr x0, [x1,#168]! if (list_empty(&dev->adj_list.upper)) ffff80001139ff34: eb00003f cmp x1, x0 ffff80001139ff38: 54000100 b.eq ffff80001139ff58 upper = list_first_entry(&dev->adj_list.upper, ffff80001139ff3c: f9405660 ldr x0, [x19,#168] if (likely(upper->master)) ffff80001139ff40: 385f0001 ldurb w1, [x0,#-16] ffff80001139ff44: 340000a1 cbz w1, ffff80001139ff58 return upper->dev; ffff80001139ff48: f85e8000 ldur x0, [x0,#-24] } ffff80001139ff4c: f9400bf3 ldr x19, [sp,#16] ffff80001139ff50: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139ff54: d65f03c0 ret return NULL; ffff80001139ff58: d2800000 mov x0, #0x0 // #0 ffff80001139ff5c: 17fffffc b ffff80001139ff4c ASSERT_RTNL(); ffff80001139ff60: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff80001139ff60: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff80001139ff64: 91000063 add x3, x3, #0x0 ffff80001139ff64: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff80001139ff68: 39401860 ldrb w0, [x3,#6] ffff80001139ff6c: 35fffe00 cbnz w0, ffff80001139ff2c ffff80001139ff70: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff80001139ff70: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff80001139ff74: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff80001139ff74: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff80001139ff78: 52800024 mov w4, #0x1 // #1 ffff80001139ff7c: 91000000 add x0, x0, #0x0 ffff80001139ff7c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff80001139ff80: 91000021 add x1, x1, #0x0 ffff80001139ff80: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff80001139ff84: 52834de2 mov w2, #0x1a6f // #6767 ffff80001139ff88: 39001864 strb w4, [x3,#6] ffff80001139ff8c: 94000000 bl 0 <__warn_printk> ffff80001139ff8c: R_AARCH64_CALL26 __warn_printk ffff80001139ff90: d4210000 brk #0x800 ffff80001139ff94: 17ffffe6 b ffff80001139ff2c ffff80001139ff98 <__netdev_has_upper_dev>: { ffff80001139ff98: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139ff9c: 910003fd mov x29, sp ffff80001139ffa0: a90153f3 stp x19, x20, [sp,#16] ffff80001139ffa4: aa0003f4 mov x20, x0 ffff80001139ffa8: aa1e03e0 mov x0, x30 ffff80001139ffac: aa0103f3 mov x19, x1 ffff80001139ffb0: 94000000 bl 0 <_mcount> ffff80001139ffb0: R_AARCH64_CALL26 _mcount ASSERT_RTNL(); ffff80001139ffb4: 94000000 bl 0 ffff80001139ffb4: R_AARCH64_CALL26 rtnl_is_locked ffff80001139ffb8: 34000160 cbz w0, ffff80001139ffe4 <__netdev_has_upper_dev+0x4c> return __netdev_walk_all_upper_dev(dev, ____netdev_has_upper_dev, ffff80001139ffbc: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff80001139ffbc: R_AARCH64_ADR_PREL_PG_HI21 .text+0x654 ffff80001139ffc0: aa1303e2 mov x2, x19 ffff80001139ffc4: aa1403e0 mov x0, x20 ffff80001139ffc8: 91000021 add x1, x1, #0x0 ffff80001139ffc8: R_AARCH64_ADD_ABS_LO12_NC .text+0x654 ffff80001139ffcc: 97fffaac bl ffff80001139ea7c <__netdev_walk_all_upper_dev> ffff80001139ffd0: 6b1f001f cmp w0, wzr } ffff80001139ffd4: 1a9f07e0 cset w0, ne ffff80001139ffd8: a94153f3 ldp x19, x20, [sp,#16] ffff80001139ffdc: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139ffe0: d65f03c0 ret ASSERT_RTNL(); ffff80001139ffe4: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff80001139ffe4: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff80001139ffe8: 91000063 add x3, x3, #0x0 ffff80001139ffe8: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff80001139ffec: 39401c60 ldrb w0, [x3,#7] ffff80001139fff0: 35fffe60 cbnz w0, ffff80001139ffbc <__netdev_has_upper_dev+0x24> ffff80001139fff4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff80001139fff4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff80001139fff8: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff80001139fff8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff80001139fffc: 52800024 mov w4, #0x1 // #1 ffff8000113a0000: 91000000 add x0, x0, #0x0 ffff8000113a0000: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113a0004: 91000021 add x1, x1, #0x0 ffff8000113a0004: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113a0008: 52836862 mov w2, #0x1b43 // #6979 ffff8000113a000c: 39001c64 strb w4, [x3,#7] ffff8000113a0010: 94000000 bl 0 <__warn_printk> ffff8000113a0010: R_AARCH64_CALL26 __warn_printk ffff8000113a0014: d4210000 brk #0x800 ffff8000113a0018: 17ffffe9 b ffff80001139ffbc <__netdev_has_upper_dev+0x24> ffff8000113a001c : { ffff8000113a001c: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a0020: 910003fd mov x29, sp ffff8000113a0024: a90153f3 stp x19, x20, [sp,#16] ffff8000113a0028: aa0003f4 mov x20, x0 ffff8000113a002c: aa1e03e0 mov x0, x30 ffff8000113a0030: f90017a1 str x1, [x29,#40] ffff8000113a0034: 53003c53 uxth w19, w2 ffff8000113a0038: 94000000 bl 0 <_mcount> ffff8000113a0038: R_AARCH64_CALL26 _mcount if (dev_maps) ffff8000113a003c: f94017a1 ldr x1, [x29,#40] ffff8000113a0040: b40004d4 cbz x20, ffff8000113a00d8 map = xmap_dereference(dev_maps->attr_map[tci]); ffff8000113a0044: 93407c21 sxtw x1, w1 ffff8000113a0048: 91000820 add x0, x1, #0x2 ffff8000113a004c: f8607a84 ldr x4, [x20,x0,lsl #3] return false; ffff8000113a0050: 52800000 mov w0, #0x0 // #0 if (!map) ffff8000113a0054: b4000284 cbz x4, ffff8000113a00a4 for (pos = map->len; pos--;) { ffff8000113a0058: b9400082 ldr w2, [x4] ffff8000113a005c: 51000440 sub w0, w2, #0x1 ffff8000113a0060: 2a0003e3 mov w3, w0 if (map->queues[pos] != index) ffff8000113a0064: 93407c65 sxtw x5, w3 ffff8000113a0068: 910020a5 add x5, x5, #0x8 for (pos = map->len; pos--;) { ffff8000113a006c: 3100047f cmn w3, #0x1 if (map->queues[pos] != index) ffff8000113a0070: 8b050485 add x5, x4, x5, lsl #1 for (pos = map->len; pos--;) { ffff8000113a0074: 540003a0 b.eq ffff8000113a00e8 if (map->queues[pos] != index) ffff8000113a0078: 794010a6 ldrh w6, [x5,#8] ffff8000113a007c: 51000463 sub w3, w3, #0x1 ffff8000113a0080: 6b1300df cmp w6, w19 ffff8000113a0084: 54ffff01 b.ne ffff8000113a0064 if (map->len > 1) { ffff8000113a0088: 7100045f cmp w2, #0x1 ffff8000113a008c: 54000129 b.ls ffff8000113a00b0 map->queues[pos] = map->queues[--map->len]; ffff8000113a0090: b9000080 str w0, [x4] ffff8000113a0094: 8b204484 add x4, x4, w0, uxtw #1 ffff8000113a0098: 79403081 ldrh w1, [x4,#24] return true; ffff8000113a009c: 52800020 mov w0, #0x1 // #1 map->queues[pos] = map->queues[--map->len]; ffff8000113a00a0: 790010a1 strh w1, [x5,#8] } ffff8000113a00a4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a00a8: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a00ac: d65f03c0 ret RCU_INIT_POINTER(dev_maps->attr_map[tci], NULL); ffff8000113a00b0: 91000821 add x1, x1, #0x2 ffff8000113a00b4: d37df021 lsl x1, x1, #3 case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a00b8: f8216a9f str xzr, [x20,x1] kfree_rcu(map, rcu); ffff8000113a00bc: 91002080 add x0, x4, #0x8 ffff8000113a00c0: d2800101 mov x1, #0x8 // #8 ffff8000113a00c4: 94000000 bl 0 ffff8000113a00c4: R_AARCH64_CALL26 kfree_call_rcu } ffff8000113a00c8: a94153f3 ldp x19, x20, [sp,#16] return false; ffff8000113a00cc: 52800000 mov w0, #0x0 // #0 } ffff8000113a00d0: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a00d4: d65f03c0 ret return false; ffff8000113a00d8: 2a1403e0 mov w0, w20 } ffff8000113a00dc: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a00e0: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a00e4: d65f03c0 ret ffff8000113a00e8: a94153f3 ldp x19, x20, [sp,#16] return true; ffff8000113a00ec: 52800020 mov w0, #0x1 // #1 } ffff8000113a00f0: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a00f4: d65f03c0 ret ffff8000113a00f8 : { ffff8000113a00f8: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a00fc: 910003fd mov x29, sp ffff8000113a0100: a90153f3 stp x19, x20, [sp,#16] ffff8000113a0104: f90013f5 str x21, [sp,#32] ffff8000113a0108: aa0003f4 mov x20, x0 ffff8000113a010c: aa1e03e0 mov x0, x30 ffff8000113a0110: aa0103f3 mov x19, x1 ffff8000113a0114: 94000000 bl 0 <_mcount> ffff8000113a0114: R_AARCH64_CALL26 _mcount } static inline struct net *read_pnet(const possible_net_t *pnet) { #ifdef CONFIG_NET_NS return pnet->net; ffff8000113a0118: f9400260 ldr x0, [x19] ffff8000113a011c: f9427815 ldr x21, [x0,#1264] ASSERT_RTNL(); ffff8000113a0120: 94000000 bl 0 ffff8000113a0120: R_AARCH64_CALL26 rtnl_is_locked ffff8000113a0124: 34000200 cbz w0, ffff8000113a0164 ret = raw_notifier_call_chain(&net->netdev_chain, val, info); ffff8000113a0128: aa1403e1 mov x1, x20 ffff8000113a012c: 9104e2a0 add x0, x21, #0x138 ffff8000113a0130: aa1303e2 mov x2, x19 ffff8000113a0134: 94000000 bl 0 ffff8000113a0134: R_AARCH64_CALL26 raw_notifier_call_chain if (ret & NOTIFY_STOP_MASK) ffff8000113a0138: 377800e0 tbnz w0, #15, ffff8000113a0154 return raw_notifier_call_chain(&netdev_chain, val, info); ffff8000113a013c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a013c: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a0140: 91000000 add x0, x0, #0x0 ffff8000113a0140: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a0144: 910c2000 add x0, x0, #0x308 ffff8000113a0148: aa1403e1 mov x1, x20 ffff8000113a014c: aa1303e2 mov x2, x19 ffff8000113a0150: 94000000 bl 0 ffff8000113a0150: R_AARCH64_CALL26 raw_notifier_call_chain } ffff8000113a0154: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a0158: f94013f5 ldr x21, [sp,#32] ffff8000113a015c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a0160: d65f03c0 ret ASSERT_RTNL(); ffff8000113a0164: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113a0164: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113a0168: 91000063 add x3, x3, #0x0 ffff8000113a0168: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113a016c: 39402060 ldrb w0, [x3,#8] ffff8000113a0170: 35fffdc0 cbnz w0, ffff8000113a0128 ffff8000113a0174: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a0174: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113a0178: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a0178: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113a017c: 52800024 mov w4, #0x1 // #1 ffff8000113a0180: 91000000 add x0, x0, #0x0 ffff8000113a0180: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113a0184: 91000021 add x1, x1, #0x0 ffff8000113a0184: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113a0188: 5280f262 mov w2, #0x793 // #1939 ffff8000113a018c: 39002064 strb w4, [x3,#8] ffff8000113a0190: 94000000 bl 0 <__warn_printk> ffff8000113a0190: R_AARCH64_CALL26 __warn_printk ffff8000113a0194: d4210000 brk #0x800 ffff8000113a0198: 17ffffe4 b ffff8000113a0128 ffff8000113a019c : { ffff8000113a019c: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113a01a0: 910003fd mov x29, sp ffff8000113a01a4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a01a8: f90013f5 str x21, [sp,#32] ffff8000113a01ac: aa0003f5 mov x21, x0 ffff8000113a01b0: aa1e03e0 mov x0, x30 ffff8000113a01b4: aa0103f4 mov x20, x1 ffff8000113a01b8: 90000013 adrp x19, 0 <__stack_chk_guard> ffff8000113a01b8: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a01bc: 94000000 bl 0 <_mcount> ffff8000113a01bc: R_AARCH64_CALL26 _mcount ffff8000113a01c0: f9400262 ldr x2, [x19] ffff8000113a01c0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard return call_netdevice_notifiers_info(val, &info); ffff8000113a01c4: 9100e3a1 add x1, x29, #0x38 ffff8000113a01c8: aa1503e0 mov x0, x21 { ffff8000113a01cc: f90027a2 str x2, [x29,#72] struct netdev_notifier_info info = { ffff8000113a01d0: f9001fb4 str x20, [x29,#56] ffff8000113a01d4: f90023bf str xzr, [x29,#64] return call_netdevice_notifiers_info(val, &info); ffff8000113a01d8: 97ffffc8 bl ffff8000113a00f8 } ffff8000113a01dc: f94027a2 ldr x2, [x29,#72] ffff8000113a01e0: f9400261 ldr x1, [x19] ffff8000113a01e0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a01e4: eb01005f cmp x2, x1 ffff8000113a01e8: 540000a1 b.ne ffff8000113a01fc ffff8000113a01ec: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a01f0: f94013f5 ldr x21, [sp,#32] ffff8000113a01f4: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a01f8: d65f03c0 ret ffff8000113a01fc: 94000000 bl 0 <__stack_chk_fail> ffff8000113a01fc: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a0200 : { ffff8000113a0200: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a0204: 910003fd mov x29, sp ffff8000113a0208: a90153f3 stp x19, x20, [sp,#16] ffff8000113a020c: aa0003f4 mov x20, x0 ffff8000113a0210: aa1e03e0 mov x0, x30 ffff8000113a0214: 94000000 bl 0 <_mcount> ffff8000113a0214: R_AARCH64_CALL26 _mcount ffff8000113a0218: 90000013 adrp x19, 0 <__stack_chk_guard> ffff8000113a0218: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a021c: f9400262 ldr x2, [x19] ffff8000113a021c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard return call_netdevice_notifiers_info(val, &info); ffff8000113a0220: 9100a3a1 add x1, x29, #0x28 ffff8000113a0224: d2800180 mov x0, #0xc // #12 { ffff8000113a0228: f9001fa2 str x2, [x29,#56] struct netdev_notifier_info info = { ffff8000113a022c: f90017b4 str x20, [x29,#40] ffff8000113a0230: f9001bbf str xzr, [x29,#48] return call_netdevice_notifiers_info(val, &info); ffff8000113a0234: 97ffffb1 bl ffff8000113a00f8 } ffff8000113a0238: f9401fa1 ldr x1, [x29,#56] ffff8000113a023c: f9400260 ldr x0, [x19] ffff8000113a023c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a0240: eb00003f cmp x1, x0 ffff8000113a0244: 54000081 b.ne ffff8000113a0254 ffff8000113a0248: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a024c: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a0250: d65f03c0 ret ffff8000113a0254: 94000000 bl 0 <__stack_chk_fail> ffff8000113a0254: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a0258 : { ffff8000113a0258: a9b97bfd stp x29, x30, [sp,#-112]! ffff8000113a025c: 910003fd mov x29, sp ffff8000113a0260: a90153f3 stp x19, x20, [sp,#16] ffff8000113a0264: aa0003f4 mov x20, x0 ffff8000113a0268: aa1e03e0 mov x0, x30 ffff8000113a026c: f90017a1 str x1, [x29,#40] ffff8000113a0270: 94000000 bl 0 <_mcount> ffff8000113a0270: R_AARCH64_CALL26 _mcount return __builtin_memcpy(p, q, size); ffff8000113a0274: f94017a1 ldr x1, [x29,#40] ffff8000113a0278: 90000013 adrp x19, 0 <__stack_chk_guard> ffff8000113a0278: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a027c: a9401424 ldp x4, x5, [x1] ffff8000113a0280: f9401027 ldr x7, [x1,#32] ffff8000113a0284: a9410c22 ldp x2, x3, [x1,#16] struct netdev_notifier_bonding_info info = { ffff8000113a0288: a9037fbf stp xzr, xzr, [x29,#48] ffff8000113a028c: 910103a6 add x6, x29, #0x40 ffff8000113a0290: a90417a4 stp x4, x5, [x29,#64] { ffff8000113a0294: f9400268 ldr x8, [x19] ffff8000113a0294: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard call_netdevice_notifiers_info(NETDEV_BONDING_INFO, ffff8000113a0298: 9100c3a1 add x1, x29, #0x30 ffff8000113a029c: d2800320 mov x0, #0x19 // #25 ffff8000113a02a0: a9010cc2 stp x2, x3, [x6,#16] ffff8000113a02a4: f90010c7 str x7, [x6,#32] { ffff8000113a02a8: f90037a8 str x8, [x29,#104] struct netdev_notifier_bonding_info info = { ffff8000113a02ac: f9001bb4 str x20, [x29,#48] call_netdevice_notifiers_info(NETDEV_BONDING_INFO, ffff8000113a02b0: 97ffff92 bl ffff8000113a00f8 } ffff8000113a02b4: f94037a1 ldr x1, [x29,#104] ffff8000113a02b8: f9400260 ldr x0, [x19] ffff8000113a02b8: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a02bc: eb00003f cmp x1, x0 ffff8000113a02c0: 54000081 b.ne ffff8000113a02d0 ffff8000113a02c4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a02c8: a8c77bfd ldp x29, x30, [sp],#112 ffff8000113a02cc: d65f03c0 ret ffff8000113a02d0: 94000000 bl 0 <__stack_chk_fail> ffff8000113a02d0: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a02d4 : { ffff8000113a02d4: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113a02d8: 910003fd mov x29, sp ffff8000113a02dc: a90153f3 stp x19, x20, [sp,#16] ffff8000113a02e0: f90013f5 str x21, [sp,#32] ffff8000113a02e4: aa0003f5 mov x21, x0 ffff8000113a02e8: aa1e03e0 mov x0, x30 ffff8000113a02ec: 90000013 adrp x19, 0 <__stack_chk_guard> ffff8000113a02ec: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a02f0: aa0103f4 mov x20, x1 ffff8000113a02f4: 94000000 bl 0 <_mcount> ffff8000113a02f4: R_AARCH64_CALL26 _mcount ffff8000113a02f8: f9400260 ldr x0, [x19] ffff8000113a02f8: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard struct netdev_notifier_changelowerstate_info changelowerstate_info = { ffff8000113a02fc: a9037fbf stp xzr, xzr, [x29,#48] { ffff8000113a0300: f90027a0 str x0, [x29,#72] struct netdev_notifier_changelowerstate_info changelowerstate_info = { ffff8000113a0304: f90023bf str xzr, [x29,#64] ffff8000113a0308: f9001bb5 str x21, [x29,#48] ASSERT_RTNL(); ffff8000113a030c: 94000000 bl 0 ffff8000113a030c: R_AARCH64_CALL26 rtnl_is_locked ffff8000113a0310: 340001a0 cbz w0, ffff8000113a0344 call_netdevice_notifiers_info(NETDEV_CHANGELOWERSTATE, ffff8000113a0314: 9100c3a1 add x1, x29, #0x30 ffff8000113a0318: d2800360 mov x0, #0x1b // #27 changelowerstate_info.lower_state_info = lower_state_info; ffff8000113a031c: f90023b4 str x20, [x29,#64] call_netdevice_notifiers_info(NETDEV_CHANGELOWERSTATE, ffff8000113a0320: 97ffff76 bl ffff8000113a00f8 } ffff8000113a0324: f94027a1 ldr x1, [x29,#72] ffff8000113a0328: f9400260 ldr x0, [x19] ffff8000113a0328: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a032c: eb00003f cmp x1, x0 ffff8000113a0330: 54000261 b.ne ffff8000113a037c ffff8000113a0334: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a0338: f94013f5 ldr x21, [sp,#32] ffff8000113a033c: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a0340: d65f03c0 ret ASSERT_RTNL(); ffff8000113a0344: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113a0344: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113a0348: 91000063 add x3, x3, #0x0 ffff8000113a0348: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113a034c: 39402460 ldrb w0, [x3,#9] ffff8000113a0350: 35fffe20 cbnz w0, ffff8000113a0314 ffff8000113a0354: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a0354: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113a0358: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a0358: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113a035c: 52800024 mov w4, #0x1 // #1 ffff8000113a0360: 91000000 add x0, x0, #0x0 ffff8000113a0360: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113a0364: 91000021 add x1, x1, #0x0 ffff8000113a0364: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113a0368: 5283dae2 mov w2, #0x1ed7 // #7895 ffff8000113a036c: 39002464 strb w4, [x3,#9] ffff8000113a0370: 94000000 bl 0 <__warn_printk> ffff8000113a0370: R_AARCH64_CALL26 __warn_printk ffff8000113a0374: d4210000 brk #0x800 ffff8000113a0378: 17ffffe7 b ffff8000113a0314 } ffff8000113a037c: 94000000 bl 0 <__stack_chk_fail> ffff8000113a037c: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a0380 : { ffff8000113a0380: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113a0384: 910003fd mov x29, sp ffff8000113a0388: a90153f3 stp x19, x20, [sp,#16] ffff8000113a038c: f90013f5 str x21, [sp,#32] ffff8000113a0390: aa0003f5 mov x21, x0 ffff8000113a0394: aa1e03e0 mov x0, x30 ffff8000113a0398: aa0103f4 mov x20, x1 ffff8000113a039c: f9001fa2 str x2, [x29,#56] ffff8000113a03a0: 90000013 adrp x19, 0 <__stack_chk_guard> ffff8000113a03a0: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a03a4: 94000000 bl 0 <_mcount> ffff8000113a03a4: R_AARCH64_CALL26 _mcount ffff8000113a03a8: f9400263 ldr x3, [x19] ffff8000113a03a8: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard struct netdev_notifier_pre_changeaddr_info info = { ffff8000113a03ac: f9401fa2 ldr x2, [x29,#56] rc = call_netdevice_notifiers_info(NETDEV_PRE_CHANGEADDR, &info.info); ffff8000113a03b0: d2800120 mov x0, #0x9 // #9 ffff8000113a03b4: 910103a1 add x1, x29, #0x40 { ffff8000113a03b8: f9002fa3 str x3, [x29,#88] struct netdev_notifier_pre_changeaddr_info info = { ffff8000113a03bc: f90023b5 str x21, [x29,#64] ffff8000113a03c0: f90027a2 str x2, [x29,#72] ffff8000113a03c4: f9002bb4 str x20, [x29,#80] rc = call_netdevice_notifiers_info(NETDEV_PRE_CHANGEADDR, &info.info); ffff8000113a03c8: 97ffff4c bl ffff8000113a00f8 ret &= ~NOTIFY_STOP_MASK; ffff8000113a03cc: 12107800 and w0, w0, #0xffff7fff return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff8000113a03d0: 7100041f cmp w0, #0x1 ffff8000113a03d4: 5400016d b.le ffff8000113a0400 ffff8000113a03d8: 52800021 mov w1, #0x1 // #1 ffff8000113a03dc: 4b000020 sub w0, w1, w0 } ffff8000113a03e0: f9402fa2 ldr x2, [x29,#88] ffff8000113a03e4: f9400261 ldr x1, [x19] ffff8000113a03e4: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a03e8: eb01005f cmp x2, x1 ffff8000113a03ec: 540000e1 b.ne ffff8000113a0408 ffff8000113a03f0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a03f4: f94013f5 ldr x21, [sp,#32] ffff8000113a03f8: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113a03fc: d65f03c0 ret ffff8000113a0400: 52800000 mov w0, #0x0 // #0 ffff8000113a0404: 17fffff7 b ffff8000113a03e0 ffff8000113a0408: 94000000 bl 0 <__stack_chk_fail> ffff8000113a0408: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a040c : { ffff8000113a040c: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a0410: 910003fd mov x29, sp ffff8000113a0414: a90153f3 stp x19, x20, [sp,#16] ffff8000113a0418: aa0003f4 mov x20, x0 ffff8000113a041c: aa1e03e0 mov x0, x30 ffff8000113a0420: 94000000 bl 0 <_mcount> ffff8000113a0420: R_AARCH64_CALL26 _mcount ffff8000113a0424: 90000013 adrp x19, 0 <__stack_chk_guard> ffff8000113a0424: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a0428: f9400260 ldr x0, [x19] ffff8000113a0428: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a042c: f9001fa0 str x0, [x29,#56] rtnl_lock(); ffff8000113a0430: 94000000 bl 0 ffff8000113a0430: R_AARCH64_CALL26 rtnl_lock return call_netdevice_notifiers_info(val, &info); ffff8000113a0434: 9100a3a1 add x1, x29, #0x28 ffff8000113a0438: d2800260 mov x0, #0x13 // #19 struct netdev_notifier_info info = { ffff8000113a043c: f90017b4 str x20, [x29,#40] ffff8000113a0440: f9001bbf str xzr, [x29,#48] return call_netdevice_notifiers_info(val, &info); ffff8000113a0444: 97ffff2d bl ffff8000113a00f8 ffff8000113a0448: 9100a3a1 add x1, x29, #0x28 ffff8000113a044c: d28002c0 mov x0, #0x16 // #22 struct netdev_notifier_info info = { ffff8000113a0450: f90017b4 str x20, [x29,#40] ffff8000113a0454: f9001bbf str xzr, [x29,#48] return call_netdevice_notifiers_info(val, &info); ffff8000113a0458: 97ffff28 bl ffff8000113a00f8 rtnl_unlock(); ffff8000113a045c: 94000000 bl 0 ffff8000113a045c: R_AARCH64_CALL26 rtnl_unlock } ffff8000113a0460: f9401fa1 ldr x1, [x29,#56] ffff8000113a0464: f9400260 ldr x0, [x19] ffff8000113a0464: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a0468: eb00003f cmp x1, x0 ffff8000113a046c: 54000081 b.ne ffff8000113a047c ffff8000113a0470: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a0474: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a0478: d65f03c0 ret ffff8000113a047c: 94000000 bl 0 <__stack_chk_fail> ffff8000113a047c: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a0480 <__dev_close_many>: { ffff8000113a0480: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113a0484: 910003fd mov x29, sp ffff8000113a0488: a90153f3 stp x19, x20, [sp,#16] ffff8000113a048c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a0490: aa0003f5 mov x21, x0 ffff8000113a0494: aa1e03e0 mov x0, x30 ffff8000113a0498: 94000000 bl 0 <_mcount> ffff8000113a0498: R_AARCH64_CALL26 _mcount ffff8000113a049c: 90000016 adrp x22, 0 <__stack_chk_guard> ffff8000113a049c: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a04a0: f94002c0 ldr x0, [x22] ffff8000113a04a0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a04a4: f90027a0 str x0, [x29,#72] ASSERT_RTNL(); ffff8000113a04a8: 94000000 bl 0 ffff8000113a04a8: R_AARCH64_CALL26 rtnl_is_locked ffff8000113a04ac: 340006a0 cbz w0, ffff8000113a0580 <__dev_close_many+0x100> might_sleep(); ffff8000113a04b0: 94000000 bl 0 <_cond_resched> ffff8000113a04b0: R_AARCH64_CALL26 _cond_resched list_for_each_entry(dev, head, close_list) { ffff8000113a04b4: f94002b3 ldr x19, [x21] /* * GAS converts the mysterious and undocumented BIC (immediate) alias to * an AND (immediate) instruction with the immediate inverted. We don't * have a constraint for this, so fall back to register. */ ATOMIC64_OPS(andnot, bic, ) ffff8000113a04b8: d2800034 mov x20, #0x1 // #1 ffff8000113a04bc: eb1302bf cmp x21, x19 ffff8000113a04c0: d101e273 sub x19, x19, #0x78 ffff8000113a04c4: 54000260 b.eq ffff8000113a0510 <__dev_close_many+0x90> netpoll_poll_disable(dev); ffff8000113a04c8: aa1303e0 mov x0, x19 ffff8000113a04cc: 94000000 bl 0 ffff8000113a04cc: R_AARCH64_CALL26 netpoll_poll_disable return call_netdevice_notifiers_info(val, &info); ffff8000113a04d0: 9100e3a1 add x1, x29, #0x38 ffff8000113a04d4: d2800140 mov x0, #0xa // #10 struct netdev_notifier_info info = { ffff8000113a04d8: f9001fb3 str x19, [x29,#56] ffff8000113a04dc: f90023bf str xzr, [x29,#64] return call_netdevice_notifiers_info(val, &info); ffff8000113a04e0: 97ffff06 bl ffff8000113a00f8 ffff8000113a04e4: 91010262 add x2, x19, #0x40 ffff8000113a04e8: f9800051 prfm pstl1strm, [x2] ffff8000113a04ec: c85f7c40 ldxr x0, [x2] ffff8000113a04f0: 8a340000 bic x0, x0, x20 ffff8000113a04f4: c8017c40 stxr w1, x0, [x2] ffff8000113a04f8: 35ffffa1 cbnz w1, ffff8000113a04ec <__dev_close_many+0x6c> smp_mb__after_atomic(); /* Commit netif_running(). */ ffff8000113a04fc: d5033bbf dmb ish list_for_each_entry(dev, head, close_list) { ffff8000113a0500: f9403e73 ldr x19, [x19,#120] ffff8000113a0504: eb1302bf cmp x21, x19 ffff8000113a0508: d101e273 sub x19, x19, #0x78 ffff8000113a050c: 54fffde1 b.ne ffff8000113a04c8 <__dev_close_many+0x48> dev_deactivate_many(head); ffff8000113a0510: aa1503e0 mov x0, x21 ffff8000113a0514: 94000000 bl 0 ffff8000113a0514: R_AARCH64_CALL26 dev_deactivate_many list_for_each_entry(dev, head, close_list) { ffff8000113a0518: f94002b3 ldr x19, [x21] ffff8000113a051c: eb1302bf cmp x21, x19 ffff8000113a0520: d101e273 sub x19, x19, #0x78 ffff8000113a0524: 540001e0 b.eq ffff8000113a0560 <__dev_close_many+0xe0> if (ops->ndo_stop) ffff8000113a0528: f940fa60 ldr x0, [x19,#496] ffff8000113a052c: f9400c01 ldr x1, [x0,#24] ffff8000113a0530: b4000061 cbz x1, ffff8000113a053c <__dev_close_many+0xbc> ops->ndo_stop(dev); ffff8000113a0534: aa1303e0 mov x0, x19 ffff8000113a0538: d63f0020 blr x1 dev->flags &= ~IFF_UP; ffff8000113a053c: b9422a61 ldr w1, [x19,#552] netpoll_poll_enable(dev); ffff8000113a0540: aa1303e0 mov x0, x19 dev->flags &= ~IFF_UP; ffff8000113a0544: 121f7821 and w1, w1, #0xfffffffe ffff8000113a0548: b9022a61 str w1, [x19,#552] netpoll_poll_enable(dev); ffff8000113a054c: 94000000 bl 0 ffff8000113a054c: R_AARCH64_CALL26 netpoll_poll_enable list_for_each_entry(dev, head, close_list) { ffff8000113a0550: f9403e73 ldr x19, [x19,#120] ffff8000113a0554: eb1302bf cmp x21, x19 ffff8000113a0558: d101e273 sub x19, x19, #0x78 ffff8000113a055c: 54fffe61 b.ne ffff8000113a0528 <__dev_close_many+0xa8> } ffff8000113a0560: f94027a1 ldr x1, [x29,#72] ffff8000113a0564: f94002c0 ldr x0, [x22] ffff8000113a0564: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a0568: eb00003f cmp x1, x0 ffff8000113a056c: 54000261 b.ne ffff8000113a05b8 <__dev_close_many+0x138> ffff8000113a0570: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a0574: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a0578: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a057c: d65f03c0 ret ASSERT_RTNL(); ffff8000113a0580: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113a0580: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113a0584: 91000063 add x3, x3, #0x0 ffff8000113a0584: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113a0588: 39402860 ldrb w0, [x3,#10] ffff8000113a058c: 35fff920 cbnz w0, ffff8000113a04b0 <__dev_close_many+0x30> ffff8000113a0590: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a0590: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113a0594: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a0594: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113a0598: 52800024 mov w4, #0x1 // #1 ffff8000113a059c: 91000000 add x0, x0, #0x0 ffff8000113a059c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113a05a0: 91000021 add x1, x1, #0x0 ffff8000113a05a0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113a05a4: 5280b9e2 mov w2, #0x5cf // #1487 ffff8000113a05a8: 39002864 strb w4, [x3,#10] ffff8000113a05ac: 94000000 bl 0 <__warn_printk> ffff8000113a05ac: R_AARCH64_CALL26 __warn_printk ffff8000113a05b0: d4210000 brk #0x800 ffff8000113a05b4: 17ffffbf b ffff8000113a04b0 <__dev_close_many+0x30> } ffff8000113a05b8: 94000000 bl 0 <__stack_chk_fail> ffff8000113a05b8: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a05bc : { ffff8000113a05bc: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113a05c0: 910003fd mov x29, sp ffff8000113a05c4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a05c8: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a05cc: a90363f7 stp x23, x24, [sp,#48] ffff8000113a05d0: a9046bf9 stp x25, x26, [sp,#64] ffff8000113a05d4: aa0003f5 mov x21, x0 ffff8000113a05d8: aa1e03e0 mov x0, x30 ffff8000113a05dc: 94000000 bl 0 <_mcount> ffff8000113a05dc: R_AARCH64_CALL26 _mcount down_write(&pernet_ops_rwsem); ffff8000113a05e0: 90000018 adrp x24, 0 ffff8000113a05e0: R_AARCH64_ADR_PREL_PG_HI21 pernet_ops_rwsem ffff8000113a05e4: 91000300 add x0, x24, #0x0 ffff8000113a05e4: R_AARCH64_ADD_ABS_LO12_NC pernet_ops_rwsem ffff8000113a05e8: 94000000 bl 0 ffff8000113a05e8: R_AARCH64_CALL26 down_write rtnl_lock(); ffff8000113a05ec: 94000000 bl 0 ffff8000113a05ec: R_AARCH64_CALL26 rtnl_lock err = raw_notifier_chain_register(&netdev_chain, nb); ffff8000113a05f0: 90000019 adrp x25, ffff80001139e37c <__my_cpu_offset> ffff8000113a05f0: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a05f4: 91000320 add x0, x25, #0x0 ffff8000113a05f4: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a05f8: 910c2000 add x0, x0, #0x308 ffff8000113a05fc: aa1503e1 mov x1, x21 ffff8000113a0600: 94000000 bl 0 ffff8000113a0600: R_AARCH64_CALL26 raw_notifier_chain_register ffff8000113a0604: 2a0003f7 mov w23, w0 if (err) ffff8000113a0608: 350005c0 cbnz w0, ffff8000113a06c0 if (dev_boot_phase) ffff8000113a060c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a060c: R_AARCH64_ADR_PREL_PG_HI21 .data ffff8000113a0610: b9400000 ldr w0, [x0] ffff8000113a0610: R_AARCH64_LDST32_ABS_LO12_NC .data ffff8000113a0614: 35000560 cbnz w0, ffff8000113a06c0 for_each_net(net) { ffff8000113a0618: 9000001a adrp x26, 0 ffff8000113a0618: R_AARCH64_ADR_PREL_PG_HI21 net_namespace_list ffff8000113a061c: f9400353 ldr x19, [x26] ffff8000113a061c: R_AARCH64_LDST64_ABS_LO12_NC net_namespace_list ffff8000113a0620: 91000354 add x20, x26, #0x0 ffff8000113a0620: R_AARCH64_ADD_ABS_LO12_NC net_namespace_list ffff8000113a0624: eb14027f cmp x19, x20 ffff8000113a0628: d1008273 sub x19, x19, #0x20 ffff8000113a062c: 540000c1 b.ne ffff8000113a0644 ffff8000113a0630: 14000024 b ffff8000113a06c0 ffff8000113a0634: f9401273 ldr x19, [x19,#32] ffff8000113a0638: eb14027f cmp x19, x20 ffff8000113a063c: d1008273 sub x19, x19, #0x20 ffff8000113a0640: 54000400 b.eq ffff8000113a06c0 err = call_netdevice_register_net_notifiers(nb, net); ffff8000113a0644: aa1303e1 mov x1, x19 ffff8000113a0648: aa1503e0 mov x0, x21 ffff8000113a064c: 97fff7e9 bl ffff80001139e5f0 ffff8000113a0650: 2a0003f6 mov w22, w0 if (err) ffff8000113a0654: 34ffff00 cbz w0, ffff8000113a0634 for_each_net_continue_reverse(net) ffff8000113a0658: f9401677 ldr x23, [x19,#40] ffff8000113a065c: 9100035a add x26, x26, #0x0 ffff8000113a065c: R_AARCH64_ADD_ABS_LO12_NC net_namespace_list ffff8000113a0660: eb1a02ff cmp x23, x26 ffff8000113a0664: d10082f7 sub x23, x23, #0x20 ffff8000113a0668: 54000220 b.eq ffff8000113a06ac for_each_netdev(net, dev) ffff8000113a066c: aa1703f4 mov x20, x23 ffff8000113a0670: f8490e93 ldr x19, [x20,#144]! ffff8000113a0674: eb13029f cmp x20, x19 ffff8000113a0678: d1012273 sub x19, x19, #0x48 ffff8000113a067c: 54000100 b.eq ffff8000113a069c call_netdevice_unregister_notifiers(nb, dev); ffff8000113a0680: aa1303e1 mov x1, x19 ffff8000113a0684: aa1503e0 mov x0, x21 ffff8000113a0688: 97fff7ae bl ffff80001139e540 for_each_netdev(net, dev) ffff8000113a068c: f9402673 ldr x19, [x19,#72] ffff8000113a0690: eb13029f cmp x20, x19 ffff8000113a0694: d1012273 sub x19, x19, #0x48 ffff8000113a0698: 54ffff41 b.ne ffff8000113a0680 for_each_net_continue_reverse(net) ffff8000113a069c: f94016f7 ldr x23, [x23,#40] ffff8000113a06a0: eb1a02ff cmp x23, x26 ffff8000113a06a4: d10082f7 sub x23, x23, #0x20 ffff8000113a06a8: 54fffe21 b.ne ffff8000113a066c raw_notifier_chain_unregister(&netdev_chain, nb); ffff8000113a06ac: 91000320 add x0, x25, #0x0 ffff8000113a06ac: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a06b0: 910c2000 add x0, x0, #0x308 ffff8000113a06b4: aa1503e1 mov x1, x21 ffff8000113a06b8: 94000000 bl 0 ffff8000113a06b8: R_AARCH64_CALL26 raw_notifier_chain_unregister err = call_netdevice_register_net_notifiers(nb, net); ffff8000113a06bc: 2a1603f7 mov w23, w22 rtnl_unlock(); ffff8000113a06c0: 94000000 bl 0 ffff8000113a06c0: R_AARCH64_CALL26 rtnl_unlock up_write(&pernet_ops_rwsem); ffff8000113a06c4: 91000300 add x0, x24, #0x0 ffff8000113a06c4: R_AARCH64_ADD_ABS_LO12_NC pernet_ops_rwsem ffff8000113a06c8: 94000000 bl 0 ffff8000113a06c8: R_AARCH64_CALL26 up_write } ffff8000113a06cc: 2a1703e0 mov w0, w23 ffff8000113a06d0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a06d4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a06d8: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a06dc: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a06e0: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a06e4: d65f03c0 ret ffff8000113a06e8 : { ffff8000113a06e8: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113a06ec: 910003fd mov x29, sp ffff8000113a06f0: a90153f3 stp x19, x20, [sp,#16] ffff8000113a06f4: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a06f8: a90363f7 stp x23, x24, [sp,#48] ffff8000113a06fc: f90023f9 str x25, [sp,#64] ffff8000113a0700: aa0003f5 mov x21, x0 ffff8000113a0704: aa1e03e0 mov x0, x30 ffff8000113a0708: 94000000 bl 0 <_mcount> ffff8000113a0708: R_AARCH64_CALL26 _mcount down_write(&pernet_ops_rwsem); ffff8000113a070c: 90000019 adrp x25, 0 ffff8000113a070c: R_AARCH64_ADR_PREL_PG_HI21 pernet_ops_rwsem ffff8000113a0710: 91000320 add x0, x25, #0x0 ffff8000113a0710: R_AARCH64_ADD_ABS_LO12_NC pernet_ops_rwsem ffff8000113a0714: 94000000 bl 0 ffff8000113a0714: R_AARCH64_CALL26 down_write rtnl_lock(); ffff8000113a0718: 94000000 bl 0 ffff8000113a0718: R_AARCH64_CALL26 rtnl_lock err = raw_notifier_chain_unregister(&netdev_chain, nb); ffff8000113a071c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a071c: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a0720: 91000000 add x0, x0, #0x0 ffff8000113a0720: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a0724: 910c2000 add x0, x0, #0x308 ffff8000113a0728: aa1503e1 mov x1, x21 ffff8000113a072c: 94000000 bl 0 ffff8000113a072c: R_AARCH64_CALL26 raw_notifier_chain_unregister ffff8000113a0730: 2a0003f8 mov w24, w0 if (err) ffff8000113a0734: 350002e0 cbnz w0, ffff8000113a0790 for_each_net(net) ffff8000113a0738: 90000017 adrp x23, 0 ffff8000113a0738: R_AARCH64_ADR_PREL_PG_HI21 net_namespace_list ffff8000113a073c: f94002f6 ldr x22, [x23] ffff8000113a073c: R_AARCH64_LDST64_ABS_LO12_NC net_namespace_list ffff8000113a0740: 910002f7 add x23, x23, #0x0 ffff8000113a0740: R_AARCH64_ADD_ABS_LO12_NC net_namespace_list ffff8000113a0744: eb1702df cmp x22, x23 ffff8000113a0748: d10082d6 sub x22, x22, #0x20 ffff8000113a074c: 54000220 b.eq ffff8000113a0790 for_each_netdev(net, dev) ffff8000113a0750: aa1603f4 mov x20, x22 ffff8000113a0754: f8490e93 ldr x19, [x20,#144]! ffff8000113a0758: eb13029f cmp x20, x19 ffff8000113a075c: d1012273 sub x19, x19, #0x48 ffff8000113a0760: 54000100 b.eq ffff8000113a0780 call_netdevice_unregister_notifiers(nb, dev); ffff8000113a0764: aa1303e1 mov x1, x19 ffff8000113a0768: aa1503e0 mov x0, x21 ffff8000113a076c: 97fff775 bl ffff80001139e540 for_each_netdev(net, dev) ffff8000113a0770: f9402673 ldr x19, [x19,#72] ffff8000113a0774: eb13029f cmp x20, x19 ffff8000113a0778: d1012273 sub x19, x19, #0x48 ffff8000113a077c: 54ffff41 b.ne ffff8000113a0764 for_each_net(net) ffff8000113a0780: f94012d6 ldr x22, [x22,#32] ffff8000113a0784: eb1702df cmp x22, x23 ffff8000113a0788: d10082d6 sub x22, x22, #0x20 ffff8000113a078c: 54fffe21 b.ne ffff8000113a0750 rtnl_unlock(); ffff8000113a0790: 94000000 bl 0 ffff8000113a0790: R_AARCH64_CALL26 rtnl_unlock up_write(&pernet_ops_rwsem); ffff8000113a0794: 91000320 add x0, x25, #0x0 ffff8000113a0794: R_AARCH64_ADD_ABS_LO12_NC pernet_ops_rwsem ffff8000113a0798: 94000000 bl 0 ffff8000113a0798: R_AARCH64_CALL26 up_write } ffff8000113a079c: 2a1803e0 mov w0, w24 ffff8000113a07a0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a07a4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a07a8: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a07ac: f94023f9 ldr x25, [sp,#64] ffff8000113a07b0: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a07b4: d65f03c0 ret ffff8000113a07b8 <__register_netdevice_notifier_net>: { ffff8000113a07b8: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a07bc: 910003fd mov x29, sp ffff8000113a07c0: a90153f3 stp x19, x20, [sp,#16] ffff8000113a07c4: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a07c8: aa0003f4 mov x20, x0 ffff8000113a07cc: aa1e03e0 mov x0, x30 ffff8000113a07d0: aa0103f3 mov x19, x1 ffff8000113a07d4: 53001c56 uxtb w22, w2 err = raw_notifier_chain_register(&net->netdev_chain, nb); ffff8000113a07d8: 9104e295 add x21, x20, #0x138 { ffff8000113a07dc: 94000000 bl 0 <_mcount> ffff8000113a07dc: R_AARCH64_CALL26 _mcount err = raw_notifier_chain_register(&net->netdev_chain, nb); ffff8000113a07e0: aa1503e0 mov x0, x21 ffff8000113a07e4: aa1303e1 mov x1, x19 ffff8000113a07e8: 94000000 bl 0 ffff8000113a07e8: R_AARCH64_CALL26 raw_notifier_chain_register if (err) ffff8000113a07ec: 350000a0 cbnz w0, ffff8000113a0800 <__register_netdevice_notifier_net+0x48> if (dev_boot_phase) ffff8000113a07f0: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a07f0: R_AARCH64_ADR_PREL_PG_HI21 .data ffff8000113a07f4: b9400000 ldr w0, [x0] ffff8000113a07f4: R_AARCH64_LDST32_ABS_LO12_NC .data ffff8000113a07f8: 340000c0 cbz w0, ffff8000113a0810 <__register_netdevice_notifier_net+0x58> return 0; ffff8000113a07fc: 52800000 mov w0, #0x0 // #0 } ffff8000113a0800: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a0804: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a0808: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a080c: d65f03c0 ret err = call_netdevice_register_net_notifiers(nb, net); ffff8000113a0810: aa1403e1 mov x1, x20 ffff8000113a0814: aa1303e0 mov x0, x19 ffff8000113a0818: 97fff776 bl ffff80001139e5f0 ffff8000113a081c: 2a0003f4 mov w20, w0 if (err && !ignore_call_fail) ffff8000113a0820: 34fffee0 cbz w0, ffff8000113a07fc <__register_netdevice_notifier_net+0x44> ffff8000113a0824: 710006df cmp w22, #0x1 ffff8000113a0828: 54fffea0 b.eq ffff8000113a07fc <__register_netdevice_notifier_net+0x44> raw_notifier_chain_unregister(&net->netdev_chain, nb); ffff8000113a082c: aa1503e0 mov x0, x21 ffff8000113a0830: aa1303e1 mov x1, x19 ffff8000113a0834: 94000000 bl 0 ffff8000113a0834: R_AARCH64_CALL26 raw_notifier_chain_unregister return err; ffff8000113a0838: 2a1403e0 mov w0, w20 ffff8000113a083c: 17fffff1 b ffff8000113a0800 <__register_netdevice_notifier_net+0x48> ffff8000113a0840 : { ffff8000113a0840: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a0844: 910003fd mov x29, sp ffff8000113a0848: f9000bf3 str x19, [sp,#16] ffff8000113a084c: aa0003f3 mov x19, x0 ffff8000113a0850: aa1e03e0 mov x0, x30 ffff8000113a0854: f90017a1 str x1, [x29,#40] ffff8000113a0858: 94000000 bl 0 <_mcount> ffff8000113a0858: R_AARCH64_CALL26 _mcount rtnl_lock(); ffff8000113a085c: 94000000 bl 0 ffff8000113a085c: R_AARCH64_CALL26 rtnl_lock err = __register_netdevice_notifier_net(net, nb, false); ffff8000113a0860: f94017a1 ldr x1, [x29,#40] ffff8000113a0864: 52800002 mov w2, #0x0 // #0 ffff8000113a0868: aa1303e0 mov x0, x19 ffff8000113a086c: 97ffffd3 bl ffff8000113a07b8 <__register_netdevice_notifier_net> rtnl_unlock(); ffff8000113a0870: f90017a0 str x0, [x29,#40] ffff8000113a0874: 94000000 bl 0 ffff8000113a0874: R_AARCH64_CALL26 rtnl_unlock } ffff8000113a0878: f94017a0 ldr x0, [x29,#40] ffff8000113a087c: f9400bf3 ldr x19, [sp,#16] ffff8000113a0880: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a0884: d65f03c0 ret ffff8000113a0888 : { ffff8000113a0888: a9b97bfd stp x29, x30, [sp,#-112]! ffff8000113a088c: 910003fd mov x29, sp ffff8000113a0890: a90153f3 stp x19, x20, [sp,#16] ffff8000113a0894: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a0898: a90363f7 stp x23, x24, [sp,#48] ffff8000113a089c: a9046bf9 stp x25, x26, [sp,#64] ffff8000113a08a0: a90573fb stp x27, x28, [sp,#80] ffff8000113a08a4: aa0003f5 mov x21, x0 ffff8000113a08a8: aa1e03e0 mov x0, x30 ffff8000113a08ac: aa0103f3 mov x19, x1 ffff8000113a08b0: aa0203f7 mov x23, x2 ffff8000113a08b4: 94000000 bl 0 <_mcount> ffff8000113a08b4: R_AARCH64_CALL26 _mcount static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb, ffff8000113a08b8: 7940fa60 ldrh w0, [x19,#124] struct netdev_rx_queue *rxqueue = dev->_rx; ffff8000113a08bc: f94192a4 ldr x4, [x21,#800] if (skb_rx_queue_recorded(skb)) { ffff8000113a08c0: 34000100 cbz w0, ffff8000113a08e0 skb->queue_mapping = rx_queue + 1; } static inline u16 skb_get_rx_queue(const struct sk_buff *skb) { return skb->queue_mapping - 1; ffff8000113a08c4: 51000400 sub w0, w0, #0x1 if (unlikely(index >= dev->real_num_rx_queues)) { ffff8000113a08c8: b9432ea3 ldr w3, [x21,#812] ffff8000113a08cc: 53003c02 uxth w2, w0 ffff8000113a08d0: 6b03005f cmp w2, w3 ffff8000113a08d4: 540009c2 b.cs ffff8000113a0a0c rxqueue += index; ffff8000113a08d8: d3783c42 ubfiz x2, x2, #8, #16 ffff8000113a08dc: 8b020084 add x4, x4, x2 __READ_ONCE_SIZE; ffff8000113a08e0: f9400496 ldr x22, [x4,#8] ffff8000113a08e4: f9400094 ldr x20, [x4] if (!flow_table && !map) ffff8000113a08e8: b4000bd4 cbz x20, ffff8000113a0a60 skb->network_header = skb->data - skb->head; ffff8000113a08ec: f9406662 ldr x2, [x19,#200] ffff8000113a08f0: f9406261 ldr x1, [x19,#192] if (!skb->l4_hash && !skb->sw_hash) ffff8000113a08f4: 39420660 ldrb w0, [x19,#129] skb->network_header = skb->data - skb->head; ffff8000113a08f8: cb010041 sub x1, x2, x1 ffff8000113a08fc: 79016a61 strh w1, [x19,#180] if (!skb->l4_hash && !skb->sw_hash) ffff8000113a0900: 12000400 and w0, w0, #0x3 ffff8000113a0904: 34000640 cbz w0, ffff8000113a09cc return skb->hash; ffff8000113a0908: b9409663 ldr w3, [x19,#148] ffff8000113a090c: 2a0303f8 mov w24, w3 if (!hash) ffff8000113a0910: 34000983 cbz w3, ffff8000113a0a40 ffff8000113a0914: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a0914: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a0918: 91000000 add x0, x0, #0x0 ffff8000113a0918: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a091c: f9441001 ldr x1, [x0,#2080] if (flow_table && sock_flow_table) { ffff8000113a0920: b40002f6 cbz x22, ffff8000113a097c ffff8000113a0924: b40002c1 cbz x1, ffff8000113a097c ident = sock_flow_table->ents[hash & sock_flow_table->mask]; ffff8000113a0928: b9400022 ldr w2, [x1] if ((ident ^ hash) & ~rps_cpu_mask) ffff8000113a092c: b9482800 ldr w0, [x0,#2088] ident = sock_flow_table->ents[hash & sock_flow_table->mask]; ffff8000113a0930: 0a020062 and w2, w3, w2 ffff8000113a0934: 91004042 add x2, x2, #0x10 ffff8000113a0938: b8627821 ldr w1, [x1,x2,lsl #2] if ((ident ^ hash) & ~rps_cpu_mask) ffff8000113a093c: 4a030022 eor w2, w1, w3 ffff8000113a0940: 0a200042 bic w2, w2, w0 ffff8000113a0944: 350001c2 cbnz w2, ffff8000113a097c rflow = &flow_table->flows[hash & flow_table->mask]; ffff8000113a0948: b94002c2 ldr w2, [x22] next_cpu = ident & rps_cpu_mask; ffff8000113a094c: 0a000039 and w25, w1, w0 rflow = &flow_table->flows[hash & flow_table->mask]; ffff8000113a0950: 0a020060 and w0, w3, w2 ffff8000113a0954: 91000800 add x0, x0, #0x2 ffff8000113a0958: 8b000ed6 add x22, x22, x0, lsl #3 tcpu = rflow->cpu; ffff8000113a095c: 794012c0 ldrh w0, [x22,#8] ffff8000113a0960: 9000001a adrp x26, 0 ffff8000113a0960: R_AARCH64_ADR_PREL_PG_HI21 nr_cpu_ids if (unlikely(tcpu != next_cpu) && ffff8000113a0964: 6b00033f cmp w25, w0 rflow = &flow_table->flows[hash & flow_table->mask]; ffff8000113a0968: 910022d6 add x22, x22, #0x8 if (unlikely(tcpu != next_cpu) && ffff8000113a096c: 54000801 b.ne ffff8000113a0a6c if (tcpu < nr_cpu_ids && cpu_online(tcpu)) { ffff8000113a0970: b9400341 ldr w1, [x26] ffff8000113a0970: R_AARCH64_LDST32_ABS_LO12_NC nr_cpu_ids ffff8000113a0974: 6b01001f cmp w0, w1 ffff8000113a0978: 54000303 b.cc ffff8000113a09d8 if (map) { ffff8000113a097c: b4000634 cbz x20, ffff8000113a0a40 tcpu = map->cpus[reciprocal_scale(hash, map->len)]; ffff8000113a0980: b9400280 ldr w0, [x20] ffff8000113a0984: 90000001 adrp x1, 0 <__cpu_online_mask> ffff8000113a0984: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask * * Return: a result based on @val in interval [0, @ep_ro). */ static inline u32 reciprocal_scale(u32 val, u32 ep_ro) { return (u32)(((u64) val * ep_ro) >> 32); ffff8000113a0988: 9bb87c18 umull x24, w0, w24 ffff8000113a098c: d360ff18 lsr x24, x24, #32 ffff8000113a0990: 8b180694 add x20, x20, x24, lsl #1 ffff8000113a0994: 79403280 ldrh w0, [x20,#24] ffff8000113a0998: 91000021 add x1, x1, #0x0 ffff8000113a0998: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113a099c: 13067c02 asr w2, w0, #6 ffff8000113a09a0: 937d7c42 sbfiz x2, x2, #3, #32 ffff8000113a09a4: f8616841 ldr x1, [x2,x1] ffff8000113a09a8: 9ac02421 lsr x1, x1, x0 if (cpu_online(tcpu)) { ffff8000113a09ac: 360004a1 tbz w1, #0, ffff8000113a0a40 } ffff8000113a09b0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a09b4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a09b8: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a09bc: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a09c0: a94573fb ldp x27, x28, [sp,#80] ffff8000113a09c4: a8c77bfd ldp x29, x30, [sp],#112 ffff8000113a09c8: d65f03c0 ret __skb_get_hash(skb); ffff8000113a09cc: aa1303e0 mov x0, x19 ffff8000113a09d0: 94000000 bl 0 <__skb_get_hash> ffff8000113a09d0: R_AARCH64_CALL26 __skb_get_hash ffff8000113a09d4: 17ffffcd b ffff8000113a0908 ffff8000113a09d8: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113a09d8: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113a09dc: 12001401 and w1, w0, #0x3f ffff8000113a09e0: 1100fc03 add w3, w0, #0x3f ffff8000113a09e4: 6b1f001f cmp w0, wzr ffff8000113a09e8: 1a80b063 csel w3, w3, w0, lt ffff8000113a09ec: 13067c63 asr w3, w3, #6 ffff8000113a09f0: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113a09f4: 91000042 add x2, x2, #0x0 ffff8000113a09f4: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113a09f8: f8626862 ldr x2, [x3,x2] ffff8000113a09fc: 9ac12441 lsr x1, x2, x1 if (tcpu < nr_cpu_ids && cpu_online(tcpu)) { ffff8000113a0a00: 3607fbe1 tbz w1, #0, ffff8000113a097c *rflowp = rflow; ffff8000113a0a04: f90002f6 str x22, [x23] goto done; ffff8000113a0a08: 17ffffea b ffff8000113a09b0 WARN_ONCE(dev->real_num_rx_queues > 1, ffff8000113a0a0c: 7100047f cmp w3, #0x1 ffff8000113a0a10: 54000189 b.ls ffff8000113a0a40 ffff8000113a0a14: 90000004 adrp x4, ffff80001139e37c <__my_cpu_offset> ffff8000113a0a14: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113a0a18: 91000084 add x4, x4, #0x0 ffff8000113a0a18: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113a0a1c: 39402c80 ldrb w0, [x4,#11] ffff8000113a0a20: 35000100 cbnz w0, ffff8000113a0a40 ffff8000113a0a24: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a0a24: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xe8 ffff8000113a0a28: 52800025 mov w5, #0x1 // #1 ffff8000113a0a2c: 91000000 add x0, x0, #0x0 ffff8000113a0a2c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xe8 ffff8000113a0a30: aa1503e1 mov x1, x21 ffff8000113a0a34: 39002c85 strb w5, [x4,#11] ffff8000113a0a38: 94000000 bl 0 <__warn_printk> ffff8000113a0a38: R_AARCH64_CALL26 __warn_printk ffff8000113a0a3c: d4210000 brk #0x800 int cpu = -1; ffff8000113a0a40: 12800000 mov w0, #0xffffffff // #-1 } ffff8000113a0a44: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a0a48: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a0a4c: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a0a50: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a0a54: a94573fb ldp x27, x28, [sp,#80] ffff8000113a0a58: a8c77bfd ldp x29, x30, [sp],#112 ffff8000113a0a5c: d65f03c0 ret if (!flow_table && !map) ffff8000113a0a60: b5fff476 cbnz x22, ffff8000113a08ec int cpu = -1; ffff8000113a0a64: 12800000 mov w0, #0xffffffff // #-1 ffff8000113a0a68: 17fffff7 b ffff8000113a0a44 (tcpu >= nr_cpu_ids || !cpu_online(tcpu) || ffff8000113a0a6c: b9400345 ldr w5, [x26] ffff8000113a0a6c: R_AARCH64_LDST32_ABS_LO12_NC nr_cpu_ids if (unlikely(tcpu != next_cpu) && ffff8000113a0a70: 6b05001f cmp w0, w5 ffff8000113a0a74: 54000262 b.cs ffff8000113a0ac0 ffff8000113a0a78: 13067c04 asr w4, w0, #6 ffff8000113a0a7c: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113a0a7c: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113a0a80: 91000041 add x1, x2, #0x0 ffff8000113a0a80: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113a0a84: 937d7c84 sbfiz x4, x4, #3, #32 ffff8000113a0a88: f8616884 ldr x4, [x4,x1] ffff8000113a0a8c: 12001401 and w1, w0, #0x3f ffff8000113a0a90: 9ac12484 lsr x4, x4, x1 (tcpu >= nr_cpu_ids || !cpu_online(tcpu) || ffff8000113a0a94: 36000164 tbz w4, #0, ffff8000113a0ac0 ((int)(per_cpu(softnet_data, tcpu).input_queue_head - ffff8000113a0a98: 90000004 adrp x4, 0 <__per_cpu_offset> ffff8000113a0a98: R_AARCH64_ADR_PREL_PG_HI21 __per_cpu_offset ffff8000113a0a9c: 91000084 add x4, x4, #0x0 ffff8000113a0a9c: R_AARCH64_ADD_ABS_LO12_NC __per_cpu_offset ffff8000113a0aa0: f8605886 ldr x6, [x4,w0,uxtw #3] ffff8000113a0aa4: 90000004 adrp x4, ffff80001139e37c <__my_cpu_offset> ffff8000113a0aa4: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned ffff8000113a0aa8: 91000084 add x4, x4, #0x0 ffff8000113a0aa8: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a0aac: 8b060084 add x4, x4, x6 ffff8000113a0ab0: b9408086 ldr w6, [x4,#128] ffff8000113a0ab4: b94006c4 ldr w4, [x22,#4] ffff8000113a0ab8: 4b0400c4 sub w4, w6, w4 (tcpu >= nr_cpu_ids || !cpu_online(tcpu) || ffff8000113a0abc: 37fff924 tbnz w4, #31, ffff8000113a09e0 if (next_cpu < nr_cpu_ids) { ffff8000113a0ac0: 12003f3c and w28, w25, #0xffff rflow = set_rps_cpu(dev, skb, rflow, next_cpu); ffff8000113a0ac4: 53003f24 uxth w4, w25 if (next_cpu < nr_cpu_ids) { ffff8000113a0ac8: 6b1c00bf cmp w5, w28 rflow = set_rps_cpu(dev, skb, rflow, next_cpu); ffff8000113a0acc: b9006fa4 str w4, [x29,#108] if (next_cpu < nr_cpu_ids) { ffff8000113a0ad0: 54000689 b.ls ffff8000113a0ba0 set_rps_cpu(struct net_device *dev, struct sk_buff *skb, ffff8000113a0ad4: 7940fa60 ldrh w0, [x19,#124] if (!skb_rx_queue_recorded(skb) || !dev->rx_cpu_rmap || ffff8000113a0ad8: 34000540 cbz w0, ffff8000113a0b80 ffff8000113a0adc: f941c6a1 ldr x1, [x21,#904] ffff8000113a0ae0: b4000501 cbz x1, ffff8000113a0b80 !(dev->features & NETIF_F_NTUPLE)) ffff8000113a0ae4: f94066a2 ldr x2, [x21,#200] if (!skb_rx_queue_recorded(skb) || !dev->rx_cpu_rmap || ffff8000113a0ae8: b63004c2 tbz x2, #38, ffff8000113a0b80 extern int cpu_rmap_update(struct cpu_rmap *rmap, u16 index, const struct cpumask *affinity); static inline u16 cpu_rmap_lookup_index(struct cpu_rmap *rmap, unsigned int cpu) { return rmap->near[cpu].index; ffff8000113a0aec: 8b3c2821 add x1, x1, w28, uxth #2 ffff8000113a0af0: 79402022 ldrh w2, [x1,#16] return skb->queue_mapping - 1; ffff8000113a0af4: 51000400 sub w0, w0, #0x1 if (rxq_index == skb_get_rx_queue(skb)) ffff8000113a0af8: 6b20205f cmp w2, w0, uxth ffff8000113a0afc: 54000420 b.eq ffff8000113a0b80 rxqueue = dev->_rx + rxq_index; ffff8000113a0b00: f94192a1 ldr x1, [x21,#800] ffff8000113a0b04: d3783c40 ubfiz x0, x2, #8, #16 ffff8000113a0b08: 8b000020 add x0, x1, x0 ffff8000113a0b0c: f940041b ldr x27, [x0,#8] if (!flow_table) ffff8000113a0b10: b400039b cbz x27, ffff8000113a0b80 if (!skb->l4_hash && !skb->sw_hash) ffff8000113a0b14: 39420660 ldrb w0, [x19,#129] ffff8000113a0b18: 12000400 and w0, w0, #0x3 ffff8000113a0b1c: 350000c0 cbnz w0, ffff8000113a0b34 __skb_get_hash(skb); ffff8000113a0b20: aa1303e0 mov x0, x19 ffff8000113a0b24: f90033a2 str x2, [x29,#96] ffff8000113a0b28: 94000000 bl 0 <__skb_get_hash> ffff8000113a0b28: R_AARCH64_CALL26 __skb_get_hash ffff8000113a0b2c: b9409663 ldr w3, [x19,#148] ffff8000113a0b30: f94033a2 ldr x2, [x29,#96] rc = dev->netdev_ops->ndo_rx_flow_steer(dev, skb, ffff8000113a0b34: f940faa0 ldr x0, [x21,#496] flow_id = skb_get_hash(skb) & flow_table->mask; ffff8000113a0b38: b9400365 ldr w5, [x27] rc = dev->netdev_ops->ndo_rx_flow_steer(dev, skb, ffff8000113a0b3c: f940b806 ldr x6, [x0,#368] flow_id = skb_get_hash(skb) & flow_table->mask; ffff8000113a0b40: 0a0300a5 and w5, w5, w3 rc = dev->netdev_ops->ndo_rx_flow_steer(dev, skb, ffff8000113a0b44: 2a0503e3 mov w3, w5 ffff8000113a0b48: f90033a5 str x5, [x29,#96] ffff8000113a0b4c: aa1503e0 mov x0, x21 ffff8000113a0b50: aa1303e1 mov x1, x19 ffff8000113a0b54: d63f00c0 blr x6 if (rc < 0) ffff8000113a0b58: f94033a5 ldr x5, [x29,#96] ffff8000113a0b5c: 37f80120 tbnz w0, #31, ffff8000113a0b80 rflow = &flow_table->flows[flow_id]; ffff8000113a0b60: 8b254f64 add x4, x27, w5, uxtw #3 rflow->filter = rc; ffff8000113a0b64: 53003c00 uxth w0, w0 rflow = &flow_table->flows[flow_id]; ffff8000113a0b68: 91006084 add x4, x4, #0x18 rflow->filter = rc; ffff8000113a0b6c: 79000480 strh w0, [x4,#2] if (old_rflow->filter == rflow->filter) ffff8000113a0b70: 794006c1 ldrh w1, [x22,#2] ffff8000113a0b74: 6b00003f cmp w1, w0 ffff8000113a0b78: 540001c0 b.eq ffff8000113a0bb0 rflow = &flow_table->flows[flow_id]; ffff8000113a0b7c: aa0403f6 mov x22, x4 per_cpu(softnet_data, next_cpu).input_queue_head; ffff8000113a0b80: 90000000 adrp x0, 0 <__per_cpu_offset> ffff8000113a0b80: R_AARCH64_ADR_PREL_PG_HI21 __per_cpu_offset ffff8000113a0b84: 91000000 add x0, x0, #0x0 ffff8000113a0b84: R_AARCH64_ADD_ABS_LO12_NC __per_cpu_offset ffff8000113a0b88: f87cd801 ldr x1, [x0,w28,sxtw #3] ffff8000113a0b8c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a0b8c: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned ffff8000113a0b90: 91000000 add x0, x0, #0x0 ffff8000113a0b90: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a0b94: 8b010000 add x0, x0, x1 ffff8000113a0b98: b9408000 ldr w0, [x0,#128] rflow->last_qtail = ffff8000113a0b9c: b90006c0 str w0, [x22,#4] rflow->cpu = next_cpu; ffff8000113a0ba0: 7940dba2 ldrh w2, [x29,#108] ffff8000113a0ba4: 2a1903e0 mov w0, w25 ffff8000113a0ba8: 790002c2 strh w2, [x22] ffff8000113a0bac: 17ffff71 b ffff8000113a0970 old_rflow->filter = RPS_NO_FILTER; ffff8000113a0bb0: 12800000 mov w0, #0xffffffff // #-1 ffff8000113a0bb4: 790006c0 strh w0, [x22,#2] rflow = &flow_table->flows[flow_id]; ffff8000113a0bb8: aa0403f6 mov x22, x4 ffff8000113a0bbc: 17fffff1 b ffff8000113a0b80 ffff8000113a0bc0 <__get_xps_queue_idx>: { ffff8000113a0bc0: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a0bc4: 910003fd mov x29, sp ffff8000113a0bc8: a90153f3 stp x19, x20, [sp,#16] ffff8000113a0bcc: f90013f5 str x21, [sp,#32] ffff8000113a0bd0: aa0003f4 mov x20, x0 ffff8000113a0bd4: aa1e03e0 mov x0, x30 ffff8000113a0bd8: f9001fa2 str x2, [x29,#56] ffff8000113a0bdc: f9001ba3 str x3, [x29,#48] ffff8000113a0be0: aa0103f5 mov x21, x1 ffff8000113a0be4: 94000000 bl 0 <_mcount> ffff8000113a0be4: R_AARCH64_CALL26 _mcount if (dev->num_tc) { ffff8000113a0be8: 79d09280 ldrsh w0, [x20,#2120] ffff8000113a0bec: f9401fa2 ldr x2, [x29,#56] ffff8000113a0bf0: f9401ba3 ldr x3, [x29,#48] ffff8000113a0bf4: 340000e0 cbz w0, ffff8000113a0c10 <__get_xps_queue_idx+0x50> return dev->prio_tc_map[prio & TC_BITMASK]; ffff8000113a0bf8: b9408ea1 ldr w1, [x21,#140] tci *= dev->num_tc; ffff8000113a0bfc: 1b007c63 mul w3, w3, w0 ffff8000113a0c00: 92400c20 and x0, x1, #0xf ffff8000113a0c04: 8b000280 add x0, x20, x0 tci += netdev_get_prio_tc_map(dev, skb->priority); ffff8000113a0c08: 39622801 ldrb w1, [x0,#2186] ffff8000113a0c0c: 0b010063 add w3, w3, w1 map = rcu_dereference(dev_maps->attr_map[tci]); ffff8000113a0c10: 2a0303e3 mov w3, w3 ffff8000113a0c14: 91000863 add x3, x3, #0x2 ffff8000113a0c18: d37df063 lsl x3, x3, #3 ffff8000113a0c1c: f8636853 ldr x19, [x2,x3] if (map) { ffff8000113a0c20: b40002f3 cbz x19, ffff8000113a0c7c <__get_xps_queue_idx+0xbc> if (map->len == 1) ffff8000113a0c24: b9400260 ldr w0, [x19] ffff8000113a0c28: 7100041f cmp w0, #0x1 ffff8000113a0c2c: 54000100 b.eq ffff8000113a0c4c <__get_xps_queue_idx+0x8c> if (!skb->l4_hash && !skb->sw_hash) ffff8000113a0c30: 394206a1 ldrb w1, [x21,#129] ffff8000113a0c34: 12000421 and w1, w1, #0x3 ffff8000113a0c38: 340001a1 cbz w1, ffff8000113a0c6c <__get_xps_queue_idx+0xac> return skb->hash; ffff8000113a0c3c: b94096a1 ldr w1, [x21,#148] ffff8000113a0c40: 9ba17c00 umull x0, w0, w1 queue_index = map->queues[reciprocal_scale( ffff8000113a0c44: d360fc00 lsr x0, x0, #32 ffff8000113a0c48: 8b000673 add x19, x19, x0, lsl #1 ffff8000113a0c4c: 79403260 ldrh w0, [x19,#24] if (unlikely(queue_index >= dev->real_num_tx_queues)) ffff8000113a0c50: b943ce81 ldr w1, [x20,#972] queue_index = -1; ffff8000113a0c54: 6b01001f cmp w0, w1 ffff8000113a0c58: 5a9f3000 csinv w0, w0, wzr, cc } ffff8000113a0c5c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a0c60: f94013f5 ldr x21, [sp,#32] ffff8000113a0c64: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a0c68: d65f03c0 ret __skb_get_hash(skb); ffff8000113a0c6c: aa1503e0 mov x0, x21 ffff8000113a0c70: 94000000 bl 0 <__skb_get_hash> ffff8000113a0c70: R_AARCH64_CALL26 __skb_get_hash ffff8000113a0c74: b9400260 ldr w0, [x19] ffff8000113a0c78: 17fffff1 b ffff8000113a0c3c <__get_xps_queue_idx+0x7c> int queue_index = -1; ffff8000113a0c7c: 12800000 mov w0, #0xffffffff // #-1 ffff8000113a0c80: 17fffff7 b ffff8000113a0c5c <__get_xps_queue_idx+0x9c> ffff8000113a0c84 : { ffff8000113a0c84: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a0c88: 910003fd mov x29, sp ffff8000113a0c8c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a0c90: f90013f5 str x21, [sp,#32] ffff8000113a0c94: aa0003f3 mov x19, x0 ffff8000113a0c98: 2a0103f4 mov w20, w1 ffff8000113a0c9c: aa1e03e0 mov x0, x30 ffff8000113a0ca0: 94000000 bl 0 <_mcount> ffff8000113a0ca0: R_AARCH64_CALL26 _mcount if (rxq < 1 || rxq > dev->num_rx_queues) ffff8000113a0ca4: 340002b4 cbz w20, ffff8000113a0cf8 ffff8000113a0ca8: b9432a60 ldr w0, [x19,#808] ffff8000113a0cac: 6b00029f cmp w20, w0 ffff8000113a0cb0: 54000248 b.hi ffff8000113a0cf8 if (dev->reg_state == NETREG_REGISTERED) { ffff8000113a0cb4: 39536275 ldrb w21, [x19,#1240] ffff8000113a0cb8: 710006bf cmp w21, #0x1 ffff8000113a0cbc: 540000e0 b.eq ffff8000113a0cd8 dev->real_num_rx_queues = rxq; ffff8000113a0cc0: b9032e74 str w20, [x19,#812] return 0; ffff8000113a0cc4: 52800000 mov w0, #0x0 // #0 } ffff8000113a0cc8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a0ccc: f94013f5 ldr x21, [sp,#32] ffff8000113a0cd0: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a0cd4: d65f03c0 ret ASSERT_RTNL(); ffff8000113a0cd8: 94000000 bl 0 ffff8000113a0cd8: R_AARCH64_CALL26 rtnl_is_locked ffff8000113a0cdc: 34000120 cbz w0, ffff8000113a0d00 rc = net_rx_queue_update_kobjects(dev, dev->real_num_rx_queues, ffff8000113a0ce0: b9432e61 ldr w1, [x19,#812] ffff8000113a0ce4: aa1303e0 mov x0, x19 ffff8000113a0ce8: 2a1403e2 mov w2, w20 ffff8000113a0cec: 94000000 bl 0 ffff8000113a0cec: R_AARCH64_CALL26 net_rx_queue_update_kobjects if (rc) ffff8000113a0cf0: 34fffe80 cbz w0, ffff8000113a0cc0 ffff8000113a0cf4: 17fffff5 b ffff8000113a0cc8 return -EINVAL; ffff8000113a0cf8: 128002a0 mov w0, #0xffffffea // #-22 ffff8000113a0cfc: 17fffff3 b ffff8000113a0cc8 ASSERT_RTNL(); ffff8000113a0d00: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113a0d00: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113a0d04: 91000063 add x3, x3, #0x0 ffff8000113a0d04: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113a0d08: 39403060 ldrb w0, [x3,#12] ffff8000113a0d0c: 35fffea0 cbnz w0, ffff8000113a0ce0 ffff8000113a0d10: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a0d10: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113a0d14: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a0d14: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113a0d18: 91000000 add x0, x0, #0x0 ffff8000113a0d18: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113a0d1c: 91000021 add x1, x1, #0x0 ffff8000113a0d1c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113a0d20: 52816c22 mov w2, #0xb61 // #2913 ffff8000113a0d24: 39003075 strb w21, [x3,#12] ffff8000113a0d28: 94000000 bl 0 <__warn_printk> ffff8000113a0d28: R_AARCH64_CALL26 __warn_printk ffff8000113a0d2c: d4210000 brk #0x800 ffff8000113a0d30: 17ffffec b ffff8000113a0ce0 ffff8000113a0d34 : { ffff8000113a0d34: a9bf7bfd stp x29, x30, [sp,#-16]! ffff8000113a0d38: 910003fd mov x29, sp static inline bool pskb_may_pull(struct sk_buff *skb, unsigned int len) ffff8000113a0d3c: b9407003 ldr w3, [x0,#112] return skb->len - skb->data_len; ffff8000113a0d40: b9407404 ldr w4, [x0,#116] return true; ffff8000113a0d44: 52800022 mov w2, #0x1 // #1 return skb->len - skb->data_len; ffff8000113a0d48: 4b040064 sub w4, w3, w4 if (likely(len <= skb_headlen(skb))) ffff8000113a0d4c: 6b04003f cmp w1, w4 ffff8000113a0d50: 54000088 b.hi ffff8000113a0d60 } ffff8000113a0d54: 2a0203e0 mov w0, w2 ffff8000113a0d58: a8c17bfd ldp x29, x30, [sp],#16 ffff8000113a0d5c: d65f03c0 ret if (unlikely(len > skb->len)) ffff8000113a0d60: 6b01007f cmp w3, w1 ffff8000113a0d64: 540000c3 b.cc ffff8000113a0d7c return __pskb_pull_tail(skb, len - skb_headlen(skb)) != NULL; ffff8000113a0d68: 4b040021 sub w1, w1, w4 ffff8000113a0d6c: 94000000 bl 0 <__pskb_pull_tail> ffff8000113a0d6c: R_AARCH64_CALL26 __pskb_pull_tail ffff8000113a0d70: eb1f001f cmp x0, xzr ffff8000113a0d74: 1a9f07e2 cset w2, ne ffff8000113a0d78: 17fffff7 b ffff8000113a0d54 return false; ffff8000113a0d7c: 52800002 mov w2, #0x0 // #0 ffff8000113a0d80: 17fffff5 b ffff8000113a0d54 ffff8000113a0d84 : { ffff8000113a0d84: a9bf7bfd stp x29, x30, [sp,#-16]! ffff8000113a0d88: 910003fd mov x29, sp ffff8000113a0d8c: aa0003e2 mov x2, x0 if (!skb->cloned) ffff8000113a0d90: 3941f800 ldrb w0, [x0,#126] ffff8000113a0d94: 12000000 and w0, w0, #0x1 ffff8000113a0d98: 34000320 cbz w0, ffff8000113a0dfc static inline int skb_header_cloned(const struct sk_buff *skb) ffff8000113a0d9c: f9406040 ldr x0, [x2,#192] return skb->head + skb->end; ffff8000113a0da0: b940bc44 ldr w4, [x2,#188] return dataref != 1; ffff8000113a0da4: aa0003e3 mov x3, x0 return skb->head + skb->end; ffff8000113a0da8: 8b040000 add x0, x0, x4 ffff8000113a0dac: b9402000 ldr w0, [x0,#32] dataref = (dataref & SKB_DATAREF_MASK) - (dataref >> SKB_DATAREF_SHIFT); ffff8000113a0db0: 12003c04 and w4, w0, #0xffff ffff8000113a0db4: 4b804080 sub w0, w4, w0, asr #16 return dataref != 1; ffff8000113a0db8: 7100041f cmp w0, #0x1 ffff8000113a0dbc: 1a9f07e0 cset w0, ne return skb->data - skb->head; ffff8000113a0dc0: f9406444 ldr x4, [x2,#200] ffff8000113a0dc4: cb030083 sub x3, x4, x3 delta = headroom - skb_headroom(skb); ffff8000113a0dc8: 4b030024 sub w4, w1, w3 ffff8000113a0dcc: 6b03003f cmp w1, w3 ffff8000113a0dd0: 1a9f8081 csel w1, w4, wzr, hi if (delta || cloned) ffff8000113a0dd4: 2a000020 orr w0, w1, w0 ffff8000113a0dd8: 340000e0 cbz w0, ffff8000113a0df4 return pskb_expand_head(skb, ALIGN(delta, NET_SKB_PAD), 0, ffff8000113a0ddc: 1100fc21 add w1, w1, #0x3f ffff8000113a0de0: aa0203e0 mov x0, x2 ffff8000113a0de4: 121a6421 and w1, w1, #0xffffffc0 ffff8000113a0de8: 52800002 mov w2, #0x0 // #0 ffff8000113a0dec: 52814403 mov w3, #0xa20 // #2592 ffff8000113a0df0: 94000000 bl 0 ffff8000113a0df0: R_AARCH64_CALL26 pskb_expand_head } ffff8000113a0df4: a8c17bfd ldp x29, x30, [sp],#16 ffff8000113a0df8: d65f03c0 ret ffff8000113a0dfc: f9406043 ldr x3, [x2,#192] ffff8000113a0e00: 17fffff0 b ffff8000113a0dc0 ffff8000113a0e04 : { ffff8000113a0e04: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a0e08: 910003fd mov x29, sp ffff8000113a0e0c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a0e10: f90013f5 str x21, [sp,#32] ffff8000113a0e14: aa0003f3 mov x19, x0 ffff8000113a0e18: aa1e03e0 mov x0, x30 ffff8000113a0e1c: 2a0103f4 mov w20, w1 ffff8000113a0e20: 94000000 bl 0 <_mcount> ffff8000113a0e20: R_AARCH64_CALL26 _mcount BUG_ON(skb->end - skb->tail < grow); ffff8000113a0e24: b940ba62 ldr w2, [x19,#184] static void gro_pull_from_frag0(struct sk_buff *skb, int grow) ffff8000113a0e28: b940be75 ldr w21, [x19,#188] ffff8000113a0e2c: f9406260 ldr x0, [x19,#192] BUG_ON(skb->end - skb->tail < grow); ffff8000113a0e30: 4b0202a1 sub w1, w21, w2 ffff8000113a0e34: 6b14003f cmp w1, w20 return skb->head + skb->end; ffff8000113a0e38: 8b354015 add x21, x0, w21, uxtw ffff8000113a0e3c: 540002c3 b.cc ffff8000113a0e94 ffff8000113a0e40: f9401661 ldr x1, [x19,#40] ffff8000113a0e44: 8b224000 add x0, x0, w2, uxtw ffff8000113a0e48: 93407e82 sxtw x2, w20 ffff8000113a0e4c: 94000000 bl 0 ffff8000113a0e4c: R_AARCH64_CALL26 memcpy skb->data_len -= grow; ffff8000113a0e50: b9407661 ldr w1, [x19,#116] skb->tail += grow; ffff8000113a0e54: b940ba60 ldr w0, [x19,#184] skb->data_len -= grow; ffff8000113a0e58: 4b140021 sub w1, w1, w20 skb->tail += grow; ffff8000113a0e5c: 0b140000 add w0, w0, w20 skb->data_len -= grow; ffff8000113a0e60: b9007661 str w1, [x19,#116] skb->tail += grow; ffff8000113a0e64: b900ba60 str w0, [x19,#184] frag->bv_offset += delta; ffff8000113a0e68: b9403ea0 ldr w0, [x21,#60] frag->bv_len -= delta; ffff8000113a0e6c: b9403aa1 ldr w1, [x21,#56] frag->bv_offset += delta; ffff8000113a0e70: 0b140000 add w0, w0, w20 frag->bv_len -= delta; ffff8000113a0e74: 4b140034 sub w20, w1, w20 frag->bv_offset += delta; ffff8000113a0e78: b9003ea0 str w0, [x21,#60] frag->bv_len -= delta; ffff8000113a0e7c: b9003ab4 str w20, [x21,#56] if (unlikely(!skb_frag_size(&pinfo->frags[0]))) { ffff8000113a0e80: 340000d4 cbz w20, ffff8000113a0e98 } ffff8000113a0e84: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a0e88: f94013f5 ldr x21, [sp,#32] ffff8000113a0e8c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a0e90: d65f03c0 ret BUG_ON(skb->end - skb->tail < grow); ffff8000113a0e94: d4210000 brk #0x800 static inline void __skb_frag_unref(skb_frag_t *frag) ffff8000113a0e98: f9406261 ldr x1, [x19,#192] return skb->head + skb->end; ffff8000113a0e9c: b940be60 ldr w0, [x19,#188] static inline void __skb_frag_unref(skb_frag_t *frag) ffff8000113a0ea0: 8b000020 add x0, x1, x0 ffff8000113a0ea4: f9401800 ldr x0, [x0,#48] ffff8000113a0ea8: f9400401 ldr x1, [x0,#8] static inline struct page *compound_head(struct page *page) { unsigned long head = READ_ONCE(page->compound_head); if (unlikely(head & 1)) ffff8000113a0eac: 92400022 and x2, x1, #0x1 return (struct page *) (head - 1); ffff8000113a0eb0: eb1f005f cmp x2, xzr ffff8000113a0eb4: d1000421 sub x1, x1, #0x1 ffff8000113a0eb8: 9a810000 csel x0, x0, x1, eq ATOMIC_OPS(sub, sub, J) ffff8000113a0ebc: 9100d004 add x4, x0, #0x34 ffff8000113a0ec0: 52800021 mov w1, #0x1 // #1 ffff8000113a0ec4: f9800091 prfm pstl1strm, [x4] ffff8000113a0ec8: 885f7c82 ldxr w2, [x4] ffff8000113a0ecc: 4b010042 sub w2, w2, w1 ffff8000113a0ed0: 8803fc82 stlxr w3, w2, [x4] ffff8000113a0ed4: 35ffffa3 cbnz w3, ffff8000113a0ec8 ffff8000113a0ed8: d5033bbf dmb ish if (page_is_devmap_managed(page)) { put_devmap_managed_page(page); return; } if (put_page_testzero(page)) ffff8000113a0edc: 35000042 cbnz w2, ffff8000113a0ee4 __put_page(page); ffff8000113a0ee0: 94000000 bl 0 <__put_page> ffff8000113a0ee0: R_AARCH64_CALL26 __put_page --pinfo->nr_frags * sizeof(pinfo->frags[0])); ffff8000113a0ee4: 39400aa2 ldrb w2, [x21,#2] return __builtin_memmove(p, q, size); ffff8000113a0ee8: 9100c2a0 add x0, x21, #0x30 ffff8000113a0eec: 51000442 sub w2, w2, #0x1 ffff8000113a0ef0: 53001c42 uxtb w2, w2 memmove(pinfo->frags, pinfo->frags + 1, ffff8000113a0ef4: 39000aa2 strb w2, [x21,#2] ffff8000113a0ef8: 910102a1 add x1, x21, #0x40 ffff8000113a0efc: d37c1c42 ubfiz x2, x2, #4, #8 ffff8000113a0f00: 94000000 bl 0 ffff8000113a0f00: R_AARCH64_CALL26 memmove ffff8000113a0f04: 17ffffe0 b ffff8000113a0e84 ffff8000113a0f08 : { ffff8000113a0f08: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113a0f0c: 910003fd mov x29, sp ffff8000113a0f10: a90153f3 stp x19, x20, [sp,#16] ffff8000113a0f14: f90013f5 str x21, [sp,#32] ffff8000113a0f18: aa0003f5 mov x21, x0 ffff8000113a0f1c: aa1e03e0 mov x0, x30 ffff8000113a0f20: aa0103f4 mov x20, x1 ffff8000113a0f24: f9001fa2 str x2, [x29,#56] ffff8000113a0f28: 90000013 adrp x19, 0 <__stack_chk_guard> ffff8000113a0f28: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a0f2c: 94000000 bl 0 <_mcount> ffff8000113a0f2c: R_AARCH64_CALL26 _mcount ffff8000113a0f30: f9400261 ldr x1, [x19] ffff8000113a0f30: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard sprintf(linkname, dev_list == &dev->adj_list.upper ? ffff8000113a0f34: f9401fa2 ldr x2, [x29,#56] ffff8000113a0f38: 9102a2a0 add x0, x21, #0xa8 { ffff8000113a0f3c: f9002fa1 str x1, [x29,#88] sprintf(linkname, dev_list == &dev->adj_list.upper ? ffff8000113a0f40: eb00005f cmp x2, x0 ffff8000113a0f44: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a0f44: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x138 ffff8000113a0f48: 91000021 add x1, x1, #0x0 ffff8000113a0f48: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x138 ffff8000113a0f4c: 54000200 b.eq ffff8000113a0f8c ffff8000113a0f50: aa1403e2 mov x2, x20 ffff8000113a0f54: 910103a0 add x0, x29, #0x40 ffff8000113a0f58: 94000000 bl 0 ffff8000113a0f58: R_AARCH64_CALL26 sprintf return sysfs_create_link(&(dev->dev.kobj), &(adj_dev->dev.kobj), ffff8000113a0f5c: 91144281 add x1, x20, #0x510 ffff8000113a0f60: 910103a2 add x2, x29, #0x40 ffff8000113a0f64: 911442a0 add x0, x21, #0x510 ffff8000113a0f68: 94000000 bl 0 ffff8000113a0f68: R_AARCH64_CALL26 sysfs_create_link } ffff8000113a0f6c: f9402fa2 ldr x2, [x29,#88] ffff8000113a0f70: f9400261 ldr x1, [x19] ffff8000113a0f70: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a0f74: eb01005f cmp x2, x1 ffff8000113a0f78: 54000101 b.ne ffff8000113a0f98 ffff8000113a0f7c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a0f80: f94013f5 ldr x21, [sp,#32] ffff8000113a0f84: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113a0f88: d65f03c0 ret sprintf(linkname, dev_list == &dev->adj_list.upper ? ffff8000113a0f8c: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a0f8c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x128 ffff8000113a0f90: 91000021 add x1, x1, #0x0 ffff8000113a0f90: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x128 ffff8000113a0f94: 17ffffef b ffff8000113a0f50 } ffff8000113a0f98: 94000000 bl 0 <__stack_chk_fail> ffff8000113a0f98: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a0f9c : { ffff8000113a0f9c: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113a0fa0: 910003fd mov x29, sp ffff8000113a0fa4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a0fa8: f90013f5 str x21, [sp,#32] ffff8000113a0fac: aa0003f4 mov x20, x0 ffff8000113a0fb0: aa1e03e0 mov x0, x30 ffff8000113a0fb4: aa0103f5 mov x21, x1 ffff8000113a0fb8: f9001fa2 str x2, [x29,#56] ffff8000113a0fbc: 90000013 adrp x19, 0 <__stack_chk_guard> ffff8000113a0fbc: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a0fc0: 94000000 bl 0 <_mcount> ffff8000113a0fc0: R_AARCH64_CALL26 _mcount ffff8000113a0fc4: f9400261 ldr x1, [x19] ffff8000113a0fc4: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard sprintf(linkname, dev_list == &dev->adj_list.upper ? ffff8000113a0fc8: f9401fa2 ldr x2, [x29,#56] ffff8000113a0fcc: 9102a280 add x0, x20, #0xa8 { ffff8000113a0fd0: f9002fa1 str x1, [x29,#88] sprintf(linkname, dev_list == &dev->adj_list.upper ? ffff8000113a0fd4: eb00005f cmp x2, x0 ffff8000113a0fd8: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a0fd8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x138 ffff8000113a0fdc: 91000021 add x1, x1, #0x0 ffff8000113a0fdc: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x138 ffff8000113a0fe0: 540001e0 b.eq ffff8000113a101c ffff8000113a0fe4: aa1503e2 mov x2, x21 ffff8000113a0fe8: 910103a0 add x0, x29, #0x40 ffff8000113a0fec: 94000000 bl 0 ffff8000113a0fec: R_AARCH64_CALL26 sprintf sysfs_remove_link(&(dev->dev.kobj), linkname); ffff8000113a0ff0: 91144280 add x0, x20, #0x510 ffff8000113a0ff4: 910103a1 add x1, x29, #0x40 ffff8000113a0ff8: 94000000 bl 0 ffff8000113a0ff8: R_AARCH64_CALL26 sysfs_remove_link } ffff8000113a0ffc: f9402fa1 ldr x1, [x29,#88] ffff8000113a1000: f9400260 ldr x0, [x19] ffff8000113a1000: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a1004: eb00003f cmp x1, x0 ffff8000113a1008: 54000101 b.ne ffff8000113a1028 ffff8000113a100c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1010: f94013f5 ldr x21, [sp,#32] ffff8000113a1014: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113a1018: d65f03c0 ret sprintf(linkname, dev_list == &dev->adj_list.upper ? ffff8000113a101c: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a101c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x128 ffff8000113a1020: 91000021 add x1, x1, #0x0 ffff8000113a1020: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x128 ffff8000113a1024: 17fffff0 b ffff8000113a0fe4 } ffff8000113a1028: 94000000 bl 0 <__stack_chk_fail> ffff8000113a1028: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a102c : { ffff8000113a102c: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a1030: 910003fd mov x29, sp ffff8000113a1034: a90153f3 stp x19, x20, [sp,#16] ffff8000113a1038: f90013f5 str x21, [sp,#32] ffff8000113a103c: aa0003f3 mov x19, x0 ffff8000113a1040: aa1e03e0 mov x0, x30 ffff8000113a1044: aa0103f5 mov x21, x1 ffff8000113a1048: aa0203f4 mov x20, x2 ffff8000113a104c: 94000000 bl 0 <_mcount> ffff8000113a104c: R_AARCH64_CALL26 _mcount if (ops->ndo_get_phys_port_name) { ffff8000113a1050: f940fa60 ldr x0, [x19,#496] ffff8000113a1054: f940fc03 ldr x3, [x0,#504] ffff8000113a1058: b4000163 cbz x3, ffff8000113a1084 err = ops->ndo_get_phys_port_name(dev, name, len); ffff8000113a105c: aa1303e0 mov x0, x19 ffff8000113a1060: aa1503e1 mov x1, x21 ffff8000113a1064: aa1403e2 mov x2, x20 ffff8000113a1068: d63f0060 blr x3 if (err != -EOPNOTSUPP) ffff8000113a106c: 31017c1f cmn w0, #0x5f ffff8000113a1070: 540000a0 b.eq ffff8000113a1084 } ffff8000113a1074: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1078: f94013f5 ldr x21, [sp,#32] ffff8000113a107c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a1080: d65f03c0 ret return devlink_compat_phys_port_name_get(dev, name, len); ffff8000113a1084: aa1503e1 mov x1, x21 ffff8000113a1088: aa1403e2 mov x2, x20 ffff8000113a108c: aa1303e0 mov x0, x19 ffff8000113a1090: 94000000 bl 0 ffff8000113a1090: R_AARCH64_CALL26 devlink_compat_phys_port_name_get } ffff8000113a1094: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1098: f94013f5 ldr x21, [sp,#32] ffff8000113a109c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a10a0: d65f03c0 ret ffff8000113a10a4 : { ffff8000113a10a4: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113a10a8: 910003fd mov x29, sp ffff8000113a10ac: a90153f3 stp x19, x20, [sp,#16] ffff8000113a10b0: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a10b4: aa0003f5 mov x21, x0 ffff8000113a10b8: aa1e03e0 mov x0, x30 ffff8000113a10bc: aa0103f3 mov x19, x1 ffff8000113a10c0: 53001c54 uxtb w20, w2 ffff8000113a10c4: 94000000 bl 0 <_mcount> ffff8000113a10c4: R_AARCH64_CALL26 _mcount ffff8000113a10c8: 90000016 adrp x22, 0 <__stack_chk_guard> ffff8000113a10c8: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard const struct net_device_ops *ops = dev->netdev_ops; ffff8000113a10cc: f940faa1 ldr x1, [x21,#496] { ffff8000113a10d0: f94002c0 ldr x0, [x22] ffff8000113a10d0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard if (ops->ndo_get_port_parent_id) { ffff8000113a10d4: f940f823 ldr x3, [x1,#496] { ffff8000113a10d8: f9002fa0 str x0, [x29,#88] struct netdev_phys_item_id first = { }; ffff8000113a10dc: a9037fbf stp xzr, xzr, [x29,#48] ffff8000113a10e0: a9047fbf stp xzr, xzr, [x29,#64] ffff8000113a10e4: 390143bf strb wzr, [x29,#80] if (ops->ndo_get_port_parent_id) { ffff8000113a10e8: b4000203 cbz x3, ffff8000113a1128 err = ops->ndo_get_port_parent_id(dev, ppid); ffff8000113a10ec: aa1303e1 mov x1, x19 ffff8000113a10f0: aa1503e0 mov x0, x21 ffff8000113a10f4: d63f0060 blr x3 if (err != -EOPNOTSUPP) ffff8000113a10f8: 31017c1f cmn w0, #0x5f err = ops->ndo_get_port_parent_id(dev, ppid); ffff8000113a10fc: 2a0003e1 mov w1, w0 if (err != -EOPNOTSUPP) ffff8000113a1100: 54000140 b.eq ffff8000113a1128 } ffff8000113a1104: f9402fa3 ldr x3, [x29,#88] ffff8000113a1108: f94002c2 ldr x2, [x22] ffff8000113a1108: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a110c: 2a0103e0 mov w0, w1 ffff8000113a1110: eb02007f cmp x3, x2 ffff8000113a1114: 54000601 b.ne ffff8000113a11d4 ffff8000113a1118: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a111c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a1120: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113a1124: d65f03c0 ret err = devlink_compat_switch_id_get(dev, ppid); ffff8000113a1128: aa1303e1 mov x1, x19 ffff8000113a112c: aa1503e0 mov x0, x21 ffff8000113a1130: 94000000 bl 0 ffff8000113a1130: R_AARCH64_CALL26 devlink_compat_switch_id_get if (!err || err != -EOPNOTSUPP) ffff8000113a1134: 31017c1f cmn w0, #0x5f err = devlink_compat_switch_id_get(dev, ppid); ffff8000113a1138: 2a0003e1 mov w1, w0 if (!err || err != -EOPNOTSUPP) ffff8000113a113c: 54fffe41 b.ne ffff8000113a1104 if (!recurse) ffff8000113a1140: 34fffe34 cbz w20, ffff8000113a1104 netdev_for_each_lower_dev(dev, lower_dev, iter) { ffff8000113a1144: f84b8ea0 ldr x0, [x21,#184]! if (&lower->list == &dev->adj_list.lower) ffff8000113a1148: eb0002bf cmp x21, x0 ffff8000113a114c: d1006002 sub x2, x0, #0x18 ffff8000113a1150: 54fffda0 b.eq ffff8000113a1104 return lower->dev; ffff8000113a1154: f85e8000 ldur x0, [x0,#-24] *iter = lower->list.next; ffff8000113a1158: f9400c54 ldr x20, [x2,#24] netdev_for_each_lower_dev(dev, lower_dev, iter) { ffff8000113a115c: b50001a0 cbnz x0, ffff8000113a1190 ffff8000113a1160: 17ffffe9 b ffff8000113a1104 first = *ppid; ffff8000113a1164: 39408260 ldrb w0, [x19,#32] ffff8000113a1168: a9401664 ldp x4, x5, [x19] ffff8000113a116c: a9410e62 ldp x2, x3, [x19,#16] ffff8000113a1170: a90317a4 stp x4, x5, [x29,#48] ffff8000113a1174: a9040fa2 stp x2, x3, [x29,#64] ffff8000113a1178: 390143a0 strb w0, [x29,#80] if (&lower->list == &dev->adj_list.lower) ffff8000113a117c: eb1402bf cmp x21, x20 ffff8000113a1180: 54000220 b.eq ffff8000113a11c4 return lower->dev; ffff8000113a1184: f85e8280 ldur x0, [x20,#-24] *iter = lower->list.next; ffff8000113a1188: f9400294 ldr x20, [x20] netdev_for_each_lower_dev(dev, lower_dev, iter) { ffff8000113a118c: b4000200 cbz x0, ffff8000113a11cc err = dev_get_port_parent_id(lower_dev, ppid, recurse); ffff8000113a1190: aa1303e1 mov x1, x19 ffff8000113a1194: 52800022 mov w2, #0x1 // #1 ffff8000113a1198: 94000000 bl ffff8000113a10a4 ffff8000113a1198: R_AARCH64_CALL26 dev_get_port_parent_id if (err) ffff8000113a119c: 35000180 cbnz w0, ffff8000113a11cc if (!first.id_len) ffff8000113a11a0: 394143a0 ldrb w0, [x29,#80] ffff8000113a11a4: 34fffe00 cbz w0, ffff8000113a1164 return __builtin_memcmp(p, q, size); ffff8000113a11a8: 9100c3a0 add x0, x29, #0x30 ffff8000113a11ac: aa1303e1 mov x1, x19 ffff8000113a11b0: d2800422 mov x2, #0x21 // #33 ffff8000113a11b4: 94000000 bl 0 ffff8000113a11b4: R_AARCH64_CALL26 memcmp else if (memcmp(&first, ppid, sizeof(*ppid))) ffff8000113a11b8: 34fffe20 cbz w0, ffff8000113a117c return -ENODATA; ffff8000113a11bc: 12800781 mov w1, #0xffffffc3 // #-61 ffff8000113a11c0: 17ffffd1 b ffff8000113a1104 if (&lower->list == &dev->adj_list.lower) ffff8000113a11c4: 52800001 mov w1, #0x0 // #0 ffff8000113a11c8: 17ffffcf b ffff8000113a1104 ffff8000113a11cc: 2a0003e1 mov w1, w0 ffff8000113a11d0: 17ffffcd b ffff8000113a1104 } ffff8000113a11d4: 94000000 bl 0 <__stack_chk_fail> ffff8000113a11d4: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a11d8 : { ffff8000113a11d8: a9b77bfd stp x29, x30, [sp,#-144]! ffff8000113a11dc: 910003fd mov x29, sp ffff8000113a11e0: a90153f3 stp x19, x20, [sp,#16] ffff8000113a11e4: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a11e8: aa0003f5 mov x21, x0 ffff8000113a11ec: aa1e03e0 mov x0, x30 ffff8000113a11f0: aa0103f6 mov x22, x1 ffff8000113a11f4: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113a11f4: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a11f8: 94000000 bl 0 <_mcount> ffff8000113a11f8: R_AARCH64_CALL26 _mcount struct netdev_phys_item_id a_id = { }; ffff8000113a11fc: 9100e3b3 add x19, x29, #0x38 { ffff8000113a1200: f9400283 ldr x3, [x20] ffff8000113a1200: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard if (dev_get_port_parent_id(a, &a_id, true) || ffff8000113a1204: aa1503e0 mov x0, x21 ffff8000113a1208: aa1303e1 mov x1, x19 ffff8000113a120c: 52800022 mov w2, #0x1 // #1 { ffff8000113a1210: f90047a3 str x3, [x29,#136] struct netdev_phys_item_id a_id = { }; ffff8000113a1214: a9007e7f stp xzr, xzr, [x19] ffff8000113a1218: a9017e7f stp xzr, xzr, [x19,#16] ffff8000113a121c: 390163bf strb wzr, [x29,#88] struct netdev_phys_item_id b_id = { }; ffff8000113a1220: a9067fbf stp xzr, xzr, [x29,#96] ffff8000113a1224: a9077fbf stp xzr, xzr, [x29,#112] ffff8000113a1228: 390203bf strb wzr, [x29,#128] if (dev_get_port_parent_id(a, &a_id, true) || ffff8000113a122c: 94000000 bl ffff8000113a10a4 ffff8000113a122c: R_AARCH64_CALL26 dev_get_port_parent_id ffff8000113a1230: 34000140 cbz w0, ffff8000113a1258 return false; ffff8000113a1234: 52800000 mov w0, #0x0 // #0 } ffff8000113a1238: f94047a2 ldr x2, [x29,#136] ffff8000113a123c: f9400281 ldr x1, [x20] ffff8000113a123c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a1240: eb01005f cmp x2, x1 ffff8000113a1244: 540002e1 b.ne ffff8000113a12a0 ffff8000113a1248: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a124c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a1250: a8c97bfd ldp x29, x30, [sp],#144 ffff8000113a1254: d65f03c0 ret dev_get_port_parent_id(b, &b_id, true)) ffff8000113a1258: aa1603e0 mov x0, x22 ffff8000113a125c: 910183a1 add x1, x29, #0x60 ffff8000113a1260: 52800022 mov w2, #0x1 // #1 ffff8000113a1264: 94000000 bl ffff8000113a10a4 ffff8000113a1264: R_AARCH64_CALL26 dev_get_port_parent_id if (dev_get_port_parent_id(a, &a_id, true) || ffff8000113a1268: 35fffe60 cbnz w0, ffff8000113a1234 return a->id_len == b->id_len && ffff8000113a126c: 39408261 ldrb w1, [x19,#32] ffff8000113a1270: 394203a2 ldrb w2, [x29,#128] ffff8000113a1274: 6b01005f cmp w2, w1 ffff8000113a1278: 54fffe01 b.ne ffff8000113a1238 memcmp(a->id, b->id, a->id_len) == 0; ffff8000113a127c: 53001c42 uxtb w2, w2 if (p_size < size || q_size < size) ffff8000113a1280: f100845f cmp x2, #0x21 ffff8000113a1284: 54000108 b.hi ffff8000113a12a4 return __builtin_memcmp(p, q, size); ffff8000113a1288: aa1303e0 mov x0, x19 ffff8000113a128c: 910183a1 add x1, x29, #0x60 ffff8000113a1290: 94000000 bl 0 ffff8000113a1290: R_AARCH64_CALL26 memcmp return a->id_len == b->id_len && ffff8000113a1294: 6b1f001f cmp w0, wzr ffff8000113a1298: 1a9f17e0 cset w0, eq ffff8000113a129c: 17ffffe7 b ffff8000113a1238 } ffff8000113a12a0: 94000000 bl 0 <__stack_chk_fail> ffff8000113a12a0: R_AARCH64_CALL26 __stack_chk_fail fortify_panic(__func__); ffff8000113a12a4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a12a4: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a12a8: 91000000 add x0, x0, #0x0 ffff8000113a12a8: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a12ac: 94000000 bl 0 ffff8000113a12ac: R_AARCH64_CALL26 fortify_panic ffff8000113a12b0 : { ffff8000113a12b0: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a12b4: 910003fd mov x29, sp ffff8000113a12b8: a90153f3 stp x19, x20, [sp,#16] ffff8000113a12bc: aa0003f3 mov x19, x0 ffff8000113a12c0: aa1e03e0 mov x0, x30 ffff8000113a12c4: 53001c34 uxtb w20, w1 ffff8000113a12c8: 94000000 bl 0 <_mcount> ffff8000113a12c8: R_AARCH64_CALL26 _mcount netif_carrier_off(dev); ffff8000113a12cc: aa1303e0 mov x0, x19 if (proto_down) ffff8000113a12d0: 350000f4 cbnz w20, ffff8000113a12ec netif_carrier_on(dev); ffff8000113a12d4: 94000000 bl 0 ffff8000113a12d4: R_AARCH64_CALL26 netif_carrier_on dev->proto_down = proto_down; ffff8000113a12d8: 3922e274 strb w20, [x19,#2232] } ffff8000113a12dc: 52800000 mov w0, #0x0 // #0 ffff8000113a12e0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a12e4: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a12e8: d65f03c0 ret netif_carrier_off(dev); ffff8000113a12ec: 94000000 bl 0 ffff8000113a12ec: R_AARCH64_CALL26 netif_carrier_off dev->proto_down = proto_down; ffff8000113a12f0: 3922e274 strb w20, [x19,#2232] } ffff8000113a12f4: 52800000 mov w0, #0x0 // #0 ffff8000113a12f8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a12fc: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a1300: d65f03c0 ret ffff8000113a1304 : { ffff8000113a1304: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a1308: 910003fd mov x29, sp ffff8000113a130c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a1310: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a1314: f9001bf7 str x23, [sp,#48] ffff8000113a1318: aa0003f6 mov x22, x0 ffff8000113a131c: aa1e03e0 mov x0, x30 ffff8000113a1320: 94000000 bl 0 <_mcount> ffff8000113a1320: R_AARCH64_CALL26 _mcount for_each_possible_cpu(i) ffff8000113a1324: 90000014 adrp x20, 0 <__cpu_possible_mask> ffff8000113a1324: R_AARCH64_ADR_PREL_PG_HI21 __cpu_possible_mask ffff8000113a1328: 90000017 adrp x23, 0 ffff8000113a1328: R_AARCH64_ADR_PREL_PG_HI21 nr_cpu_ids int i, refcnt = 0; ffff8000113a132c: 52800013 mov w19, #0x0 // #0 for_each_possible_cpu(i) ffff8000113a1330: 12800000 mov w0, #0xffffffff // #-1 ffff8000113a1334: 91000294 add x20, x20, #0x0 ffff8000113a1334: R_AARCH64_ADD_ABS_LO12_NC __cpu_possible_mask ffff8000113a1338: 910002f7 add x23, x23, #0x0 ffff8000113a1338: R_AARCH64_ADD_ABS_LO12_NC nr_cpu_ids refcnt += *per_cpu_ptr(dev->pcpu_refcnt, i); ffff8000113a133c: 90000015 adrp x21, 0 <__per_cpu_offset> ffff8000113a133c: R_AARCH64_ADR_PREL_PG_HI21 __per_cpu_offset for_each_possible_cpu(i) ffff8000113a1340: 14000006 b ffff8000113a1358 refcnt += *per_cpu_ptr(dev->pcpu_refcnt, i); ffff8000113a1344: 910002a2 add x2, x21, #0x0 ffff8000113a1344: R_AARCH64_ADD_ABS_LO12_NC __per_cpu_offset ffff8000113a1348: f860d843 ldr x3, [x2,w0,sxtw #3] ffff8000113a134c: f94262c2 ldr x2, [x22,#1216] ffff8000113a1350: b8636842 ldr w2, [x2,x3] ffff8000113a1354: 0b020273 add w19, w19, w2 for_each_possible_cpu(i) ffff8000113a1358: aa1403e1 mov x1, x20 ffff8000113a135c: 94000000 bl 0 ffff8000113a135c: R_AARCH64_CALL26 cpumask_next ffff8000113a1360: b94002e2 ldr w2, [x23] ffff8000113a1364: 6b02001f cmp w0, w2 ffff8000113a1368: 54fffee3 b.cc ffff8000113a1344 } ffff8000113a136c: 2a1303e0 mov w0, w19 ffff8000113a1370: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a1374: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1378: f9401bf7 ldr x23, [sp,#48] ffff8000113a137c: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a1380: d65f03c0 ret ffff8000113a1384 : { ffff8000113a1384: a9bf7bfd stp x29, x30, [sp,#-16]! ffff8000113a1388: 910003fd mov x29, sp ffff8000113a138c: aa1e03e0 mov x0, x30 ffff8000113a1390: 94000000 bl 0 <_mcount> ffff8000113a1390: R_AARCH64_CALL26 _mcount might_sleep(); ffff8000113a1394: 94000000 bl 0 <_cond_resched> ffff8000113a1394: R_AARCH64_CALL26 _cond_resched if (rtnl_is_locked()) ffff8000113a1398: 94000000 bl 0 ffff8000113a1398: R_AARCH64_CALL26 rtnl_is_locked ffff8000113a139c: 35000080 cbnz w0, ffff8000113a13ac synchronize_rcu(); ffff8000113a13a0: 94000000 bl 0 ffff8000113a13a0: R_AARCH64_CALL26 synchronize_rcu } ffff8000113a13a4: a8c17bfd ldp x29, x30, [sp],#16 ffff8000113a13a8: d65f03c0 ret synchronize_rcu_expedited(); ffff8000113a13ac: 94000000 bl 0 ffff8000113a13ac: R_AARCH64_CALL26 synchronize_rcu_expedited } ffff8000113a13b0: a8c17bfd ldp x29, x30, [sp],#16 ffff8000113a13b4: d65f03c0 ret ffff8000113a13b8 : { ffff8000113a13b8: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a13bc: 910003fd mov x29, sp ffff8000113a13c0: f9000bf3 str x19, [sp,#16] ffff8000113a13c4: aa0003f3 mov x19, x0 ffff8000113a13c8: aa1e03e0 mov x0, x30 ffff8000113a13cc: 94000000 bl 0 <_mcount> ffff8000113a13cc: R_AARCH64_CALL26 _mcount ASSERT_RTNL(); ffff8000113a13d0: 94000000 bl 0 ffff8000113a13d0: R_AARCH64_CALL26 rtnl_is_locked ffff8000113a13d4: 340000e0 cbz w0, ffff8000113a13f0 case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a13d8: f901a27f str xzr, [x19,#832] synchronize_net(); ffff8000113a13dc: 94000000 bl ffff8000113a1384 ffff8000113a13dc: R_AARCH64_CALL26 synchronize_net ffff8000113a13e0: f901a67f str xzr, [x19,#840] } ffff8000113a13e4: f9400bf3 ldr x19, [sp,#16] ffff8000113a13e8: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a13ec: d65f03c0 ret ASSERT_RTNL(); ffff8000113a13f0: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113a13f0: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113a13f4: 91000063 add x3, x3, #0x0 ffff8000113a13f4: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113a13f8: 39403460 ldrb w0, [x3,#13] ffff8000113a13fc: 35fffee0 cbnz w0, ffff8000113a13d8 ffff8000113a1400: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a1400: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113a1404: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a1404: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113a1408: 52800024 mov w4, #0x1 // #1 ffff8000113a140c: 91000000 add x0, x0, #0x0 ffff8000113a140c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113a1410: 91000021 add x1, x1, #0x0 ffff8000113a1410: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113a1414: 528269e2 mov w2, #0x134f // #4943 ffff8000113a1418: 39003464 strb w4, [x3,#13] ffff8000113a141c: 94000000 bl 0 <__warn_printk> ffff8000113a141c: R_AARCH64_CALL26 __warn_printk ffff8000113a1420: d4210000 brk #0x800 ffff8000113a1424: 17ffffed b ffff8000113a13d8 ffff8000113a1428 : { ffff8000113a1428: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a142c: 910003fd mov x29, sp ffff8000113a1430: a90153f3 stp x19, x20, [sp,#16] ffff8000113a1434: f90013f5 str x21, [sp,#32] ffff8000113a1438: 90000015 adrp x21, 0 <__cpu_online_mask> ffff8000113a1438: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113a143c: aa0003f3 mov x19, x0 ffff8000113a1440: aa1e03e0 mov x0, x30 ffff8000113a1444: 94000000 bl 0 <_mcount> ffff8000113a1444: R_AARCH64_CALL26 _mcount ffff8000113a1448: 910002b5 add x21, x21, #0x0 ffff8000113a1448: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask while (remsd) { ffff8000113a144c: b4000233 cbz x19, ffff8000113a1490 if (cpu_online(remsd->cpu)) ffff8000113a1450: b940ea60 ldr w0, [x19,#232] struct softnet_data *next = remsd->rps_ipi_next; ffff8000113a1454: f9407274 ldr x20, [x19,#224] ffff8000113a1458: 1100fc01 add w1, w0, #0x3f ffff8000113a145c: 6b1f001f cmp w0, wzr ffff8000113a1460: 1a80b021 csel w1, w1, w0, lt ffff8000113a1464: 13067c21 asr w1, w1, #6 ffff8000113a1468: 937d7c21 sbfiz x1, x1, #3, #32 ffff8000113a146c: f8756821 ldr x1, [x1,x21] ffff8000113a1470: 9ac02421 lsr x1, x1, x0 if (cpu_online(remsd->cpu)) ffff8000113a1474: 37000081 tbnz w1, #0, ffff8000113a1484 while (remsd) { ffff8000113a1478: b40000d4 cbz x20, ffff8000113a1490 ffff8000113a147c: aa1403f3 mov x19, x20 ffff8000113a1480: 17fffff4 b ffff8000113a1450 smp_call_function_single_async(remsd->cpu, &remsd->csd); ffff8000113a1484: 91030261 add x1, x19, #0xc0 ffff8000113a1488: 94000000 bl 0 ffff8000113a1488: R_AARCH64_CALL26 smp_call_function_single_async while (remsd) { ffff8000113a148c: b5ffff94 cbnz x20, ffff8000113a147c } ffff8000113a1490: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1494: f94013f5 ldr x21, [sp,#32] ffff8000113a1498: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a149c: d65f03c0 ret ffff8000113a14a0 : { ffff8000113a14a0: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a14a4: 910003fd mov x29, sp ffff8000113a14a8: f9000bf3 str x19, [sp,#16] ffff8000113a14ac: aa0003f3 mov x19, x0 ffff8000113a14b0: aa1e03e0 mov x0, x30 ffff8000113a14b4: 94000000 bl 0 <_mcount> ffff8000113a14b4: R_AARCH64_CALL26 _mcount if (!skb_headlen(skb) && pinfo->nr_frags && ffff8000113a14b8: b9407262 ldr w2, [x19,#112] ffff8000113a14bc: b9407661 ldr w1, [x19,#116] NAPI_GRO_CB(skb)->data_offset = 0; ffff8000113a14c0: b900367f str wzr, [x19,#52] NAPI_GRO_CB(skb)->frag0 = NULL; ffff8000113a14c4: f900167f str xzr, [x19,#40] NAPI_GRO_CB(skb)->frag0_len = 0; ffff8000113a14c8: b900327f str wzr, [x19,#48] if (!skb_headlen(skb) && pinfo->nr_frags && ffff8000113a14cc: 6b01005f cmp w2, w1 static void skb_gro_reset_offset(struct sk_buff *skb) ffff8000113a14d0: b940be63 ldr w3, [x19,#188] ffff8000113a14d4: f9406264 ldr x4, [x19,#192] if (!skb_headlen(skb) && pinfo->nr_frags && ffff8000113a14d8: 54000080 b.eq ffff8000113a14e8 } ffff8000113a14dc: f9400bf3 ldr x19, [sp,#16] ffff8000113a14e0: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a14e4: d65f03c0 ret return skb->head + skb->end; ffff8000113a14e8: 8b234081 add x1, x4, w3, uxtw if (!skb_headlen(skb) && pinfo->nr_frags && ffff8000113a14ec: 39400822 ldrb w2, [x1,#2] ffff8000113a14f0: 34ffff62 cbz w2, ffff8000113a14dc */ #include static __always_inline void *lowmem_page_address(const struct page *page) { return page_to_virt(page); ffff8000113a14f4: f9401824 ldr x4, [x1,#48] ffff8000113a14f8: d2a00402 mov x2, #0x200000 // #2097152 ffff8000113a14fc: f2c00402 movk x2, #0x20, lsl #32 ffff8000113a1500: 8b020082 add x2, x4, x2 ffff8000113a1504: d2ffffe5 mov x5, #0xffff000000000000 // #-281474976710656 return page_address(skb_frag_page(frag)) + skb_frag_off(frag); ffff8000113a1508: b9403c24 ldr w4, [x1,#60] ffff8000113a150c: d346fc42 lsr x2, x2, #6 ffff8000113a1510: 8b0240a2 add x2, x5, x2, lsl #16 ffff8000113a1514: 8b040042 add x2, x2, x4 NAPI_GRO_CB(skb)->frag0 = skb_frag_address(frag0); ffff8000113a1518: f9001662 str x2, [x19,#40] NAPI_GRO_CB(skb)->frag0_len = min_t(unsigned int, ffff8000113a151c: b940ba62 ldr w2, [x19,#184] ffff8000113a1520: b9403821 ldr w1, [x1,#56] ffff8000113a1524: 4b020063 sub w3, w3, w2 ffff8000113a1528: 6b03003f cmp w1, w3 ffff8000113a152c: 1a839023 csel w3, w1, w3, ls ffff8000113a1530: b9003263 str w3, [x19,#48] } ffff8000113a1534: f9400bf3 ldr x19, [sp,#16] ffff8000113a1538: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a153c: d65f03c0 ret ffff8000113a1540 : { ffff8000113a1540: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a1544: 910003fd mov x29, sp ffff8000113a1548: f9000bf3 str x19, [sp,#16] ffff8000113a154c: aa0003f3 mov x19, x0 ffff8000113a1550: aa1e03e0 mov x0, x30 ffff8000113a1554: f90017a1 str x1, [x29,#40] ffff8000113a1558: 94000000 bl 0 <_mcount> ffff8000113a1558: R_AARCH64_CALL26 _mcount if (!(dev->flags & IFF_UP)) ffff8000113a155c: b9422a62 ldr w2, [x19,#552] return false; ffff8000113a1560: 52800000 mov w0, #0x0 // #0 if (!(dev->flags & IFF_UP)) ffff8000113a1564: f94017a1 ldr x1, [x29,#40] ffff8000113a1568: 360001e2 tbz w2, #0, ffff8000113a15a4 len = dev->mtu + dev->hard_header_len + VLAN_HLEN; ffff8000113a156c: b9423a62 ldr w2, [x19,#568] ffff8000113a1570: 79448e63 ldrh w3, [x19,#582] if (skb->len <= len) ffff8000113a1574: b9407020 ldr w0, [x1,#112] len = dev->mtu + dev->hard_header_len + VLAN_HLEN; ffff8000113a1578: 11001042 add w2, w2, #0x4 ffff8000113a157c: 0b030042 add w2, w2, w3 if (skb->len <= len) ffff8000113a1580: 6b00005f cmp w2, w0 return true; ffff8000113a1584: 52800020 mov w0, #0x1 // #1 if (skb->len <= len) ffff8000113a1588: 540000e2 b.cs ffff8000113a15a4 return skb->head + skb->end; ffff8000113a158c: b940bc20 ldr w0, [x1,#188] return csum_fold(csum_partial(csum_start, plen, partial)); } static inline bool skb_is_gso(const struct sk_buff *skb) { return skb_shinfo(skb)->gso_size; ffff8000113a1590: f9406021 ldr x1, [x1,#192] ffff8000113a1594: 8b000020 add x0, x1, x0 if (skb_is_gso(skb)) ffff8000113a1598: 79400800 ldrh w0, [x0,#4] ffff8000113a159c: 6b1f001f cmp w0, wzr ffff8000113a15a0: 1a9f07e0 cset w0, ne } ffff8000113a15a4: f9400bf3 ldr x19, [sp,#16] ffff8000113a15a8: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a15ac: d65f03c0 ret ffff8000113a15b0 : { ffff8000113a15b0: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a15b4: 910003fd mov x29, sp ffff8000113a15b8: f9000bf3 str x19, [sp,#16] ffff8000113a15bc: aa0003f3 mov x19, x0 ffff8000113a15c0: aa1e03e0 mov x0, x30 ffff8000113a15c4: 94000000 bl 0 <_mcount> ffff8000113a15c4: R_AARCH64_CALL26 _mcount if (*name == '\0') ffff8000113a15c8: 39400260 ldrb w0, [x19] ffff8000113a15cc: 350000a0 cbnz w0, ffff8000113a15e0 return false; ffff8000113a15d0: 52800000 mov w0, #0x0 // #0 } ffff8000113a15d4: f9400bf3 ldr x19, [sp,#16] ffff8000113a15d8: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a15dc: d65f03c0 ret __kernel_size_t ret = __real_strnlen(p, maxlen < p_size ? maxlen : p_size); ffff8000113a15e0: aa1303e0 mov x0, x19 ffff8000113a15e4: d2800201 mov x1, #0x10 // #16 ffff8000113a15e8: 94000000 bl 0 ffff8000113a15e8: R_AARCH64_CALL26 strnlen if (p_size <= ret && maxlen != ret) ffff8000113a15ec: b100041f cmn x0, #0x1 ffff8000113a15f0: 54000480 b.eq ffff8000113a1680 if (strnlen(name, IFNAMSIZ) == IFNAMSIZ) ffff8000113a15f4: f100401f cmp x0, #0x10 ffff8000113a15f8: 54fffec0 b.eq ffff8000113a15d0 if (!strcmp(name, ".") || !strcmp(name, "..")) ffff8000113a15fc: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a15fc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x148 ffff8000113a1600: aa1303e0 mov x0, x19 ffff8000113a1604: 91000021 add x1, x1, #0x0 ffff8000113a1604: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x148 ffff8000113a1608: 94000000 bl 0 ffff8000113a1608: R_AARCH64_CALL26 strcmp ffff8000113a160c: 34fffe20 cbz w0, ffff8000113a15d0 ffff8000113a1610: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a1610: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x150 ffff8000113a1614: aa1303e0 mov x0, x19 ffff8000113a1618: 91000021 add x1, x1, #0x0 ffff8000113a1618: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x150 ffff8000113a161c: 94000000 bl 0 ffff8000113a161c: R_AARCH64_CALL26 strcmp ffff8000113a1620: 34fffd80 cbz w0, ffff8000113a15d0 while (*name) { ffff8000113a1624: 39400261 ldrb w1, [x19] ffff8000113a1628: 34000281 cbz w1, ffff8000113a1678 if (*name == '/' || *name == ':' || isspace(*name)) ffff8000113a162c: 7100e83f cmp w1, #0x3a ffff8000113a1630: 54fffd00 b.eq ffff8000113a15d0 ffff8000113a1634: 7100bc3f cmp w1, #0x2f ffff8000113a1638: 1a9f17e0 cset w0, eq ffff8000113a163c: 35fffca0 cbnz w0, ffff8000113a15d0 ffff8000113a1640: 90000002 adrp x2, 0 <_ctype> ffff8000113a1640: R_AARCH64_ADR_PREL_PG_HI21 _ctype ffff8000113a1644: 91000042 add x2, x2, #0x0 ffff8000113a1644: R_AARCH64_ADD_ABS_LO12_NC _ctype ffff8000113a1648: 3861c841 ldrb w1, [x2,w1,sxtw] ffff8000113a164c: 36280121 tbz w1, #5, ffff8000113a1670 ffff8000113a1650: 17ffffe1 b ffff8000113a15d4 ffff8000113a1654: 7100e83f cmp w1, #0x3a ffff8000113a1658: 54fffbc0 b.eq ffff8000113a15d0 ffff8000113a165c: 7100bc3f cmp w1, #0x2f ffff8000113a1660: 1a9f17e0 cset w0, eq ffff8000113a1664: 35fffb60 cbnz w0, ffff8000113a15d0 ffff8000113a1668: 3861c841 ldrb w1, [x2,w1,sxtw] ffff8000113a166c: 372ffb41 tbnz w1, #5, ffff8000113a15d4 while (*name) { ffff8000113a1670: 38401e61 ldrb w1, [x19,#1]! ffff8000113a1674: 35ffff01 cbnz w1, ffff8000113a1654 return true; ffff8000113a1678: 52800020 mov w0, #0x1 // #1 ffff8000113a167c: 17ffffd6 b ffff8000113a15d4 fortify_panic(__func__); ffff8000113a1680: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a1680: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x90 ffff8000113a1684: 91000000 add x0, x0, #0x0 ffff8000113a1684: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x90 ffff8000113a1688: 91044000 add x0, x0, #0x110 ffff8000113a168c: 94000000 bl 0 ffff8000113a168c: R_AARCH64_CALL26 fortify_panic ffff8000113a1690 : { ffff8000113a1690: a9b87bfd stp x29, x30, [sp,#-128]! ffff8000113a1694: 910003fd mov x29, sp ffff8000113a1698: a90153f3 stp x19, x20, [sp,#16] ffff8000113a169c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a16a0: a90363f7 stp x23, x24, [sp,#48] ffff8000113a16a4: a9046bf9 stp x25, x26, [sp,#64] ffff8000113a16a8: a90573fb stp x27, x28, [sp,#80] ffff8000113a16ac: aa0003f8 mov x24, x0 ffff8000113a16b0: aa1e03e0 mov x0, x30 ffff8000113a16b4: 9000001a adrp x26, 0 <__stack_chk_guard> ffff8000113a16b4: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a16b8: aa0103fb mov x27, x1 ffff8000113a16bc: aa0203f4 mov x20, x2 ffff8000113a16c0: 94000000 bl 0 <_mcount> ffff8000113a16c0: R_AARCH64_CALL26 _mcount ffff8000113a16c4: f9400340 ldr x0, [x26] ffff8000113a16c4: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a16c8: f9003fa0 str x0, [x29,#120] BUG_ON(!net); ffff8000113a16cc: b4000eb8 cbz x24, ffff8000113a18a0 if (!dev_valid_name(name)) ffff8000113a16d0: aa1403e0 mov x0, x20 int i = 0; ffff8000113a16d4: b90067bf str wzr, [x29,#100] if (!dev_valid_name(name)) ffff8000113a16d8: 94000000 bl ffff8000113a15b0 ffff8000113a16d8: R_AARCH64_CALL26 dev_valid_name ffff8000113a16dc: 53001c00 uxtb w0, w0 ffff8000113a16e0: 34000d20 cbz w0, ffff8000113a1884 p = strchr(name, '%'); ffff8000113a16e4: aa1403e0 mov x0, x20 ffff8000113a16e8: 528004a1 mov w1, #0x25 // #37 ffff8000113a16ec: 94000000 bl 0 ffff8000113a16ec: R_AARCH64_CALL26 strchr ffff8000113a16f0: 9101a3b6 add x22, x29, #0x68 if (p) { ffff8000113a16f4: b40007e0 cbz x0, ffff8000113a17f0 if (p[1] != 'd' || strchr(p + 2, '%')) ffff8000113a16f8: 39400401 ldrb w1, [x0,#1] ffff8000113a16fc: 7101903f cmp w1, #0x64 ffff8000113a1700: 54000c21 b.ne ffff8000113a1884 ffff8000113a1704: 91000800 add x0, x0, #0x2 ffff8000113a1708: 528004a1 mov w1, #0x25 // #37 ffff8000113a170c: 94000000 bl 0 ffff8000113a170c: R_AARCH64_CALL26 strchr ffff8000113a1710: b5000ba0 cbnz x0, ffff8000113a1884 inuse = (unsigned long *) get_zeroed_page(GFP_ATOMIC); ffff8000113a1714: 52814400 mov w0, #0xa20 // #2592 ffff8000113a1718: 94000000 bl 0 ffff8000113a1718: R_AARCH64_CALL26 get_zeroed_page ffff8000113a171c: aa0003f7 mov x23, x0 if (!inuse) ffff8000113a1720: b4000ba0 cbz x0, ffff8000113a1894 for_each_netdev(net, d) { ffff8000113a1724: aa1803f5 mov x21, x24 ffff8000113a1728: f8490eb3 ldr x19, [x21,#144]! ffff8000113a172c: 9101a3b6 add x22, x29, #0x68 ffff8000113a1730: eb1302bf cmp x21, x19 ffff8000113a1734: d1012273 sub x19, x19, #0x48 ffff8000113a1738: 540004c0 b.eq ffff8000113a17d0 if (i < 0 || i >= max_netdevices) ffff8000113a173c: 12bfff19 mov w25, #0x7ffff // #524287 */ static inline void set_bit(unsigned int nr, volatile unsigned long *p) { p += BIT_WORD(nr); atomic_long_or(BIT_MASK(nr), (atomic_long_t *)p); ffff8000113a1740: d280003c mov x28, #0x1 // #1 ffff8000113a1744: 14000005 b ffff8000113a1758 for_each_netdev(net, d) { ffff8000113a1748: f9402673 ldr x19, [x19,#72] ffff8000113a174c: eb1302bf cmp x21, x19 ffff8000113a1750: d1012273 sub x19, x19, #0x48 ffff8000113a1754: 540003e0 b.eq ffff8000113a17d0 if (!sscanf(d->name, name, &i)) ffff8000113a1758: aa1303e0 mov x0, x19 ffff8000113a175c: aa1403e1 mov x1, x20 ffff8000113a1760: 910193a2 add x2, x29, #0x64 ffff8000113a1764: 94000000 bl 0 ffff8000113a1764: R_AARCH64_CALL26 sscanf ffff8000113a1768: 34ffff00 cbz w0, ffff8000113a1748 if (i < 0 || i >= max_netdevices) ffff8000113a176c: b94067a3 ldr w3, [x29,#100] ffff8000113a1770: 6b19007f cmp w3, w25 ffff8000113a1774: 54fffea8 b.hi ffff8000113a1748 snprintf(buf, IFNAMSIZ, name, i); ffff8000113a1778: aa1403e2 mov x2, x20 ffff8000113a177c: d2800201 mov x1, #0x10 // #16 ffff8000113a1780: aa1603e0 mov x0, x22 ffff8000113a1784: 94000000 bl 0 ffff8000113a1784: R_AARCH64_CALL26 snprintf if (!strncmp(buf, d->name, IFNAMSIZ)) ffff8000113a1788: aa1603e0 mov x0, x22 ffff8000113a178c: aa1303e1 mov x1, x19 ffff8000113a1790: d2800202 mov x2, #0x10 // #16 ffff8000113a1794: 94000000 bl 0 ffff8000113a1794: R_AARCH64_CALL26 strncmp ffff8000113a1798: 35fffd80 cbnz w0, ffff8000113a1748 set_bit(i, inuse); ffff8000113a179c: b94067a1 ldr w1, [x29,#100] p += BIT_WORD(nr); ffff8000113a17a0: d3467c20 ubfx x0, x1, #6, #26 ATOMIC64_OPS(or, orr, L) ffff8000113a17a4: 8b000ee4 add x4, x23, x0, lsl #3 atomic_long_or(BIT_MASK(nr), (atomic_long_t *)p); ffff8000113a17a8: 9ac12381 lsl x1, x28, x1 ffff8000113a17ac: f9800091 prfm pstl1strm, [x4] ffff8000113a17b0: c85f7c82 ldxr x2, [x4] ffff8000113a17b4: aa010042 orr x2, x2, x1 ffff8000113a17b8: c8037c82 stxr w3, x2, [x4] ffff8000113a17bc: 35ffffa3 cbnz w3, ffff8000113a17b0 for_each_netdev(net, d) { ffff8000113a17c0: f9402673 ldr x19, [x19,#72] ffff8000113a17c4: eb1302bf cmp x21, x19 ffff8000113a17c8: d1012273 sub x19, x19, #0x48 ffff8000113a17cc: 54fffc61 b.ne ffff8000113a1758 i = find_first_zero_bit(inuse, max_netdevices); ffff8000113a17d0: d2a00101 mov x1, #0x80000 // #524288 ffff8000113a17d4: aa1703e0 mov x0, x23 ffff8000113a17d8: d2800002 mov x2, #0x0 // #0 ffff8000113a17dc: 94000000 bl 0 ffff8000113a17dc: R_AARCH64_CALL26 find_next_zero_bit ffff8000113a17e0: b90067a0 str w0, [x29,#100] free_page((unsigned long) inuse); ffff8000113a17e4: 52800001 mov w1, #0x0 // #0 ffff8000113a17e8: aa1703e0 mov x0, x23 ffff8000113a17ec: 94000000 bl 0 ffff8000113a17ec: R_AARCH64_CALL26 free_pages snprintf(buf, IFNAMSIZ, name, i); ffff8000113a17f0: b94067a3 ldr w3, [x29,#100] ffff8000113a17f4: d2800201 mov x1, #0x10 // #16 ffff8000113a17f8: aa1403e2 mov x2, x20 ffff8000113a17fc: aa1603e0 mov x0, x22 ffff8000113a1800: 94000000 bl 0 ffff8000113a1800: R_AARCH64_CALL26 snprintf node_name = netdev_name_node_lookup(net, name); ffff8000113a1804: aa1803e0 mov x0, x24 ffff8000113a1808: aa1603e1 mov x1, x22 ffff8000113a180c: 97fff799 bl ffff80001139f670 return node_name ? node_name->dev : NULL; ffff8000113a1810: b4000060 cbz x0, ffff8000113a181c if (!__dev_get_by_name(net, buf)) ffff8000113a1814: f9401000 ldr x0, [x0,#32] ffff8000113a1818: b50003a0 cbnz x0, ffff8000113a188c return i; ffff8000113a181c: b94067b4 ldr w20, [x29,#100] if (ret >= 0) ffff8000113a1820: 37f801b4 tbnz w20, #31, ffff8000113a1854 __kernel_size_t ret = __real_strnlen(p, maxlen < p_size ? maxlen : p_size); ffff8000113a1824: aa1603e0 mov x0, x22 ffff8000113a1828: d2800201 mov x1, #0x10 // #16 ffff8000113a182c: 94000000 bl 0 ffff8000113a182c: R_AARCH64_CALL26 strnlen if (p_size <= ret && maxlen != ret) ffff8000113a1830: f100401f cmp x0, #0x10 __kernel_size_t ret = __real_strnlen(p, maxlen < p_size ? maxlen : p_size); ffff8000113a1834: aa0003f3 mov x19, x0 if (p_size <= ret && maxlen != ret) ffff8000113a1838: 54000368 b.hi ffff8000113a18a4 if (p_size <= ret) ffff8000113a183c: 540003c0 b.eq ffff8000113a18b4 __builtin_memcpy(p, q, len); ffff8000113a1840: aa1b03e0 mov x0, x27 ffff8000113a1844: aa1603e1 mov x1, x22 ffff8000113a1848: aa1303e2 mov x2, x19 ffff8000113a184c: 94000000 bl 0 ffff8000113a184c: R_AARCH64_CALL26 memcpy p[len] = '\0'; ffff8000113a1850: 38336b7f strb wzr, [x27,x19] } ffff8000113a1854: f9403fa2 ldr x2, [x29,#120] ffff8000113a1858: f9400341 ldr x1, [x26] ffff8000113a1858: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a185c: 2a1403e0 mov w0, w20 ffff8000113a1860: eb01005f cmp x2, x1 ffff8000113a1864: 540001c1 b.ne ffff8000113a189c ffff8000113a1868: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a186c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a1870: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a1874: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a1878: a94573fb ldp x27, x28, [sp,#80] ffff8000113a187c: a8c87bfd ldp x29, x30, [sp],#128 ffff8000113a1880: d65f03c0 ret return -EINVAL; ffff8000113a1884: 128002b4 mov w20, #0xffffffea // #-22 ffff8000113a1888: 17fffff3 b ffff8000113a1854 return -ENFILE; ffff8000113a188c: 128002d4 mov w20, #0xffffffe9 // #-23 ffff8000113a1890: 17fffff1 b ffff8000113a1854 return -ENOMEM; ffff8000113a1894: 12800174 mov w20, #0xfffffff4 // #-12 ffff8000113a1898: 17ffffef b ffff8000113a1854 } ffff8000113a189c: 94000000 bl 0 <__stack_chk_fail> ffff8000113a189c: R_AARCH64_CALL26 __stack_chk_fail BUG_ON(!net); ffff8000113a18a0: d4210000 brk #0x800 fortify_panic(__func__); ffff8000113a18a4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a18a4: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x90 ffff8000113a18a8: 91000000 add x0, x0, #0x0 ffff8000113a18a8: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x90 ffff8000113a18ac: 91044000 add x0, x0, #0x110 ffff8000113a18b0: 94000000 bl 0 ffff8000113a18b0: R_AARCH64_CALL26 fortify_panic fortify_panic(__func__); ffff8000113a18b4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a18b4: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a18b8: 91000000 add x0, x0, #0x0 ffff8000113a18b8: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a18bc: 91002000 add x0, x0, #0x8 ffff8000113a18c0: 94000000 bl 0 ffff8000113a18c0: R_AARCH64_CALL26 fortify_panic ffff8000113a18c4 : { ffff8000113a18c4: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a18c8: 910003fd mov x29, sp ffff8000113a18cc: f9000bf3 str x19, [sp,#16] ffff8000113a18d0: aa0003f3 mov x19, x0 ffff8000113a18d4: aa1e03e0 mov x0, x30 ffff8000113a18d8: f90017a1 str x1, [x29,#40] ffff8000113a18dc: 94000000 bl 0 <_mcount> ffff8000113a18dc: R_AARCH64_CALL26 _mcount return dev_alloc_name_ns(dev_net(dev), dev, name); ffff8000113a18e0: f94017a2 ldr x2, [x29,#40] ffff8000113a18e4: f9427a60 ldr x0, [x19,#1264] ffff8000113a18e8: aa1303e1 mov x1, x19 ffff8000113a18ec: 97ffff69 bl ffff8000113a1690 } ffff8000113a18f0: f9400bf3 ldr x19, [sp,#16] ffff8000113a18f4: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a18f8: d65f03c0 ret ffff8000113a18fc <__list_del_entry>: { ffff8000113a18fc: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a1900: 910003fd mov x29, sp ffff8000113a1904: f9000bf3 str x19, [sp,#16] ffff8000113a1908: aa0003f3 mov x19, x0 if (!__list_del_entry_valid(entry)) ffff8000113a190c: 94000000 bl 0 <__list_del_entry_valid> ffff8000113a190c: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113a1910: 53001c00 uxtb w0, w0 ffff8000113a1914: 340000a0 cbz w0, ffff8000113a1928 <__list_del_entry+0x2c> __list_del(entry->prev, entry->next); ffff8000113a1918: f9400660 ldr x0, [x19,#8] ffff8000113a191c: f9400261 ldr x1, [x19] next->prev = prev; ffff8000113a1920: f9000420 str x0, [x1,#8] ffff8000113a1924: f9000001 str x1, [x0] } ffff8000113a1928: f9400bf3 ldr x19, [sp,#16] ffff8000113a192c: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a1930: d65f03c0 ret ffff8000113a1934 : define_netdev_printk_level(netdev_warn, KERN_WARNING); define_netdev_printk_level(netdev_notice, KERN_NOTICE); define_netdev_printk_level(netdev_info, KERN_INFO); static void __net_exit netdev_exit(struct net *net) { ffff8000113a1934: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a1938: 910003fd mov x29, sp ffff8000113a193c: f9000bf3 str x19, [sp,#16] ffff8000113a1940: aa0003f3 mov x19, x0 ffff8000113a1944: aa1e03e0 mov x0, x30 ffff8000113a1948: 94000000 bl 0 <_mcount> ffff8000113a1948: R_AARCH64_CALL26 _mcount kfree(net->dev_name_head); ffff8000113a194c: f9409660 ldr x0, [x19,#296] ffff8000113a1950: 94000000 bl 0 ffff8000113a1950: R_AARCH64_CALL26 kfree kfree(net->dev_index_head); ffff8000113a1954: f9409a60 ldr x0, [x19,#304] ffff8000113a1958: 94000000 bl 0 ffff8000113a1958: R_AARCH64_CALL26 kfree if (net != &init_net) ffff8000113a195c: 90000000 adrp x0, 0 ffff8000113a195c: R_AARCH64_ADR_PREL_PG_HI21 init_net ffff8000113a1960: 91000000 add x0, x0, #0x0 ffff8000113a1960: R_AARCH64_ADD_ABS_LO12_NC init_net ffff8000113a1964: eb00027f cmp x19, x0 ffff8000113a1968: 54000080 b.eq ffff8000113a1978 __READ_ONCE_SIZE; ffff8000113a196c: f8490e60 ldr x0, [x19,#144]! WARN_ON_ONCE(!list_empty(&net->dev_base_head)); ffff8000113a1970: eb00027f cmp x19, x0 ffff8000113a1974: 54000081 b.ne ffff8000113a1984 } ffff8000113a1978: f9400bf3 ldr x19, [sp,#16] ffff8000113a197c: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a1980: d65f03c0 ret WARN_ON_ONCE(!list_empty(&net->dev_base_head)); ffff8000113a1984: d4210000 brk #0x800 ffff8000113a1988: 17fffffc b ffff8000113a1978 ffff8000113a198c : static inline const char *netdev_name(const struct net_device *dev) ffff8000113a198c: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a1990: 910003fd mov x29, sp if (!dev->name[0] || strchr(dev->name, '%')) ffff8000113a1994: 528004a1 mov w1, #0x25 // #37 static inline const char *netdev_name(const struct net_device *dev) ffff8000113a1998: f9000bf3 str x19, [sp,#16] ffff8000113a199c: aa0003f3 mov x19, x0 if (!dev->name[0] || strchr(dev->name, '%')) ffff8000113a19a0: 94000000 bl 0 ffff8000113a19a0: R_AARCH64_CALL26 strchr ffff8000113a19a4: b40000c0 cbz x0, ffff8000113a19bc return "(unnamed net_device)"; ffff8000113a19a8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a19a8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x158 ffff8000113a19ac: 91000000 add x0, x0, #0x0 ffff8000113a19ac: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x158 } ffff8000113a19b0: f9400bf3 ldr x19, [sp,#16] ffff8000113a19b4: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a19b8: d65f03c0 ret return dev->name; ffff8000113a19bc: aa1303e0 mov x0, x19 } ffff8000113a19c0: f9400bf3 ldr x19, [sp,#16] ffff8000113a19c4: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a19c8: d65f03c0 ret ffff8000113a19cc : { ffff8000113a19cc: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a19d0: 910003fd mov x29, sp ffff8000113a19d4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a19d8: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a19dc: aa0003f3 mov x19, x0 ffff8000113a19e0: aa1e03e0 mov x0, x30 ffff8000113a19e4: 94000000 bl 0 <_mcount> ffff8000113a19e4: R_AARCH64_CALL26 _mcount if (skb->ip_summed == CHECKSUM_COMPLETE) ffff8000113a19e8: 39420260 ldrb w0, [x19,#128] ffff8000113a19ec: d3451800 ubfx x0, x0, #5, #2 ffff8000113a19f0: 7100081f cmp w0, #0x2 ffff8000113a19f4: 54000600 b.eq ffff8000113a1ab4 int skb_checksum_help(struct sk_buff *skb) ffff8000113a19f8: f9406274 ldr x20, [x19,#192] return skb->head + skb->end; ffff8000113a19fc: b940be60 ldr w0, [x19,#188] ffff8000113a1a00: 8b000280 add x0, x20, x0 if (unlikely(skb_shinfo(skb)->gso_size)) { ffff8000113a1a04: 79400801 ldrh w1, [x0,#4] ffff8000113a1a08: 350007a1 cbnz w1, ffff8000113a1afc static inline bool skb_has_shared_frag(const struct sk_buff *skb) ffff8000113a1a0c: b9407661 ldr w1, [x19,#116] return skb_is_nonlinear(skb) && ffff8000113a1a10: 35000621 cbnz w1, ffff8000113a1ad4 return skb->data - skb->head; ffff8000113a1a14: f9406663 ldr x3, [x19,#200] return skb->csum_start - skb_headroom(skb); ffff8000113a1a18: 79411260 ldrh w0, [x19,#136] int skb_checksum_help(struct sk_buff *skb) ffff8000113a1a1c: b9407262 ldr w2, [x19,#112] return skb->data - skb->head; ffff8000113a1a20: cb140074 sub x20, x3, x20 return skb->csum_start - skb_headroom(skb); ffff8000113a1a24: 4b140014 sub w20, w0, w20 return skb->len - skb->data_len; ffff8000113a1a28: 4b010041 sub w1, w2, w1 BUG_ON(offset >= skb_headlen(skb)); ffff8000113a1a2c: 6b01029f cmp w20, w1 ffff8000113a1a30: 54000702 b.cs ffff8000113a1b10 csum = skb_checksum(skb, offset, skb->len - offset, 0); ffff8000113a1a34: 2a1403e1 mov w1, w20 ffff8000113a1a38: 4b140042 sub w2, w2, w20 ffff8000113a1a3c: 52800003 mov w3, #0x0 // #0 ffff8000113a1a40: aa1303e0 mov x0, x19 ffff8000113a1a44: 94000000 bl 0 ffff8000113a1a44: R_AARCH64_CALL26 skb_checksum offset += skb->csum_offset; ffff8000113a1a48: 79411661 ldrh w1, [x19,#138] ffff8000113a1a4c: b9407263 ldr w3, [x19,#112] ffff8000113a1a50: 0b140034 add w20, w1, w20 ffff8000113a1a54: b9407661 ldr w1, [x19,#116] BUG_ON(offset + sizeof(__sum16) > skb_headlen(skb)); ffff8000113a1a58: 93407e95 sxtw x21, w20 ffff8000113a1a5c: 91000aa2 add x2, x21, #0x2 ffff8000113a1a60: 4b010061 sub w1, w3, w1 ffff8000113a1a64: eb01005f cmp x2, x1 csum = skb_checksum(skb, offset, skb->len - offset, 0); ffff8000113a1a68: 2a0003f6 mov w22, w0 BUG_ON(offset + sizeof(__sum16) > skb_headlen(skb)); ffff8000113a1a6c: 54000508 b.hi ffff8000113a1b0c ret = skb_ensure_writable(skb, offset + sizeof(__sum16)); ffff8000113a1a70: aa1303e0 mov x0, x19 ffff8000113a1a74: 11000a81 add w1, w20, #0x2 ffff8000113a1a78: 94000000 bl 0 ffff8000113a1a78: R_AARCH64_CALL26 skb_ensure_writable if (ret) ffff8000113a1a7c: 340000a0 cbz w0, ffff8000113a1a90 } ffff8000113a1a80: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1a84: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a1a88: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a1a8c: d65f03c0 ret __u32 len, __u8 proto, __wsum sum); static inline __sum16 csum_fold(__wsum csum) { u32 sum = (__force u32)csum; sum += (sum >> 16) | (sum << 16); ffff8000113a1a90: 139642c0 ror w0, w22, #16 ffff8000113a1a94: 0b160016 add w22, w0, w22 return ~(__force __sum16)(sum >> 16); ffff8000113a1a98: 2a7643f6 mvn w22, w22, lsr #16 ffff8000113a1a9c: 53003ed6 uxth w22, w22 *(__sum16 *)(skb->data + offset) = csum_fold(csum) ?: CSUM_MANGLED_0; ffff8000113a1aa0: f9406660 ldr x0, [x19,#200] ffff8000113a1aa4: 6b1f02df cmp w22, wzr ffff8000113a1aa8: 529fffe1 mov w1, #0xffff // #65535 ffff8000113a1aac: 1a8112d6 csel w22, w22, w1, ne ffff8000113a1ab0: 78356816 strh w22, [x0,x21] skb->ip_summed = CHECKSUM_NONE; ffff8000113a1ab4: 39420261 ldrb w1, [x19,#128] ffff8000113a1ab8: 52800000 mov w0, #0x0 // #0 ffff8000113a1abc: 12197421 and w1, w1, #0xffffff9f ffff8000113a1ac0: 39020261 strb w1, [x19,#128] } ffff8000113a1ac4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1ac8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a1acc: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a1ad0: d65f03c0 ret skb_shinfo(skb)->tx_flags & SKBTX_SHARED_FRAG; ffff8000113a1ad4: 39400c00 ldrb w0, [x0,#3] return skb_is_nonlinear(skb) && ffff8000113a1ad8: 362ff9e0 tbz w0, #5, ffff8000113a1a14 return __pskb_pull_tail(skb, skb->data_len) ? 0 : -ENOMEM; ffff8000113a1adc: aa1303e0 mov x0, x19 ffff8000113a1ae0: 94000000 bl 0 <__pskb_pull_tail> ffff8000113a1ae0: R_AARCH64_CALL26 __pskb_pull_tail ffff8000113a1ae4: b4000080 cbz x0, ffff8000113a1af4 ffff8000113a1ae8: b9407661 ldr w1, [x19,#116] ffff8000113a1aec: f9406274 ldr x20, [x19,#192] ffff8000113a1af0: 17ffffc9 b ffff8000113a1a14 ffff8000113a1af4: 12800160 mov w0, #0xfffffff4 // #-12 ffff8000113a1af8: 17ffffe2 b ffff8000113a1a80 skb_warn_bad_offload(skb); ffff8000113a1afc: aa1303e0 mov x0, x19 ffff8000113a1b00: 94000000 bl ffff80001139e37c <__my_cpu_offset> ffff8000113a1b00: R_AARCH64_CALL26 .text.unlikely+0xa4 return -EINVAL; ffff8000113a1b04: 128002a0 mov w0, #0xffffffea // #-22 ffff8000113a1b08: 17ffffde b ffff8000113a1a80 BUG_ON(offset + sizeof(__sum16) > skb_headlen(skb)); ffff8000113a1b0c: d4210000 brk #0x800 BUG_ON(offset >= skb_headlen(skb)); ffff8000113a1b10: d4210000 brk #0x800 ffff8000113a1b14 : { ffff8000113a1b14: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a1b18: 910003fd mov x29, sp ffff8000113a1b1c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a1b20: f90013f5 str x21, [sp,#32] ffff8000113a1b24: aa0003f4 mov x20, x0 ffff8000113a1b28: aa1e03e0 mov x0, x30 ffff8000113a1b2c: aa0103f5 mov x21, x1 ffff8000113a1b30: aa0203f3 mov x19, x2 ffff8000113a1b34: 94000000 bl 0 <_mcount> ffff8000113a1b34: R_AARCH64_CALL26 _mcount BUG_ON(!net); ffff8000113a1b38: b4000514 cbz x20, ffff8000113a1bd8 if (!dev_valid_name(name)) ffff8000113a1b3c: aa1303e0 mov x0, x19 ffff8000113a1b40: 94000000 bl ffff8000113a15b0 ffff8000113a1b40: R_AARCH64_CALL26 dev_valid_name ffff8000113a1b44: 53001c00 uxtb w0, w0 ffff8000113a1b48: 340003c0 cbz w0, ffff8000113a1bc0 if (strchr(name, '%')) ffff8000113a1b4c: aa1303e0 mov x0, x19 ffff8000113a1b50: 528004a1 mov w1, #0x25 // #37 ffff8000113a1b54: 94000000 bl 0 ffff8000113a1b54: R_AARCH64_CALL26 strchr ffff8000113a1b58: b4000120 cbz x0, ffff8000113a1b7c return dev_alloc_name_ns(net, dev, name); ffff8000113a1b5c: aa1403e0 mov x0, x20 ffff8000113a1b60: aa1503e1 mov x1, x21 ffff8000113a1b64: aa1303e2 mov x2, x19 ffff8000113a1b68: 97fffeca bl ffff8000113a1690 } ffff8000113a1b6c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1b70: f94013f5 ldr x21, [sp,#32] ffff8000113a1b74: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a1b78: d65f03c0 ret node_name = netdev_name_node_lookup(net, name); ffff8000113a1b7c: aa1403e0 mov x0, x20 ffff8000113a1b80: aa1303e1 mov x1, x19 ffff8000113a1b84: 97fff6bb bl ffff80001139f670 return node_name ? node_name->dev : NULL; ffff8000113a1b88: b4000060 cbz x0, ffff8000113a1b94 else if (__dev_get_by_name(net, name)) ffff8000113a1b8c: f9401000 ldr x0, [x0,#32] ffff8000113a1b90: b50001c0 cbnz x0, ffff8000113a1bc8 else if (dev->name != name) ffff8000113a1b94: eb15027f cmp x19, x21 ffff8000113a1b98: 540001c0 b.eq ffff8000113a1bd0 return __real_strlcpy(p, q, size); ffff8000113a1b9c: aa1303e1 mov x1, x19 ffff8000113a1ba0: aa1503e0 mov x0, x21 ffff8000113a1ba4: d2800202 mov x2, #0x10 // #16 ffff8000113a1ba8: 94000000 bl 0 ffff8000113a1ba8: R_AARCH64_CALL26 strlcpy return 0; ffff8000113a1bac: 52800000 mov w0, #0x0 // #0 } ffff8000113a1bb0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1bb4: f94013f5 ldr x21, [sp,#32] ffff8000113a1bb8: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a1bbc: d65f03c0 ret return -EINVAL; ffff8000113a1bc0: 128002a0 mov w0, #0xffffffea // #-22 ffff8000113a1bc4: 17ffffea b ffff8000113a1b6c return -EEXIST; ffff8000113a1bc8: 12800200 mov w0, #0xffffffef // #-17 ffff8000113a1bcc: 17ffffe8 b ffff8000113a1b6c return 0; ffff8000113a1bd0: 52800000 mov w0, #0x0 // #0 ffff8000113a1bd4: 17ffffe6 b ffff8000113a1b6c BUG_ON(!net); ffff8000113a1bd8: d4210000 brk #0x800 ffff8000113a1bdc : static bool remove_xps_queue_cpu(struct net_device *dev, ffff8000113a1bdc: a9b97bfd stp x29, x30, [sp,#-112]! ffff8000113a1be0: 910003fd mov x29, sp ffff8000113a1be4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a1be8: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a1bec: a90363f7 stp x23, x24, [sp,#48] ffff8000113a1bf0: a9046bf9 stp x25, x26, [sp,#64] ffff8000113a1bf4: a90573fb stp x27, x28, [sp,#80] ffff8000113a1bf8: 13003c1b sxth w27, w0 ffff8000113a1bfc: aa1e03e0 mov x0, x30 ffff8000113a1c00: f90033a2 str x2, [x29,#96] ffff8000113a1c04: aa0103f5 mov x21, x1 ffff8000113a1c08: 53003c7c uxth w28, w3 ffff8000113a1c0c: 53003c98 uxth w24, w4 ffff8000113a1c10: 94000000 bl 0 <_mcount> ffff8000113a1c10: R_AARCH64_CALL26 _mcount int num_tc = dev->num_tc ? : 1; ffff8000113a1c14: f94033a2 ldr x2, [x29,#96] ffff8000113a1c18: 3500053b cbnz w27, ffff8000113a1cbc ffff8000113a1c1c: 2a1b03f9 mov w25, w27 ffff8000113a1c20: 5280003b mov w27, #0x1 // #1 ffff8000113a1c24: 2a1903f9 mov w25, w25 for (tci = cpu * num_tc; num_tc--; tci++) { ffff8000113a1c28: d2800016 mov x22, #0x0 // #0 ffff8000113a1c2c: 91000739 add x25, x25, #0x1 ffff8000113a1c30: 1b027f7b mul w27, w27, w2 ffff8000113a1c34: 5100071a sub w26, w24, #0x1 ffff8000113a1c38: f90037b9 str x25, [x29,#104] bool active = false; ffff8000113a1c3c: 2a1603f7 mov w23, w22 ffff8000113a1c40: 0b160374 add w20, w27, w22 for (i = count, j = offset; i--; j++) { ffff8000113a1c44: 2a1c03f3 mov w19, w28 ffff8000113a1c48: 2a1a03f9 mov w25, w26 ffff8000113a1c4c: 350000d8 cbnz w24, ffff8000113a1c64 ffff8000113a1c50: 14000019 b ffff8000113a1cb4 ffff8000113a1c54: 51000739 sub w25, w25, #0x1 ffff8000113a1c58: 3100073f cmn w25, #0x1 ffff8000113a1c5c: 53003e73 uxth w19, w19 ffff8000113a1c60: 540002a0 b.eq ffff8000113a1cb4 if (!remove_xps_queue(dev_maps, tci, j)) ffff8000113a1c64: 2a1303e2 mov w2, w19 ffff8000113a1c68: aa1503e0 mov x0, x21 ffff8000113a1c6c: 2a1403e1 mov w1, w20 ffff8000113a1c70: 97fff8eb bl ffff8000113a001c ffff8000113a1c74: 53001c00 uxtb w0, w0 ffff8000113a1c78: 11000673 add w19, w19, #0x1 ffff8000113a1c7c: 35fffec0 cbnz w0, ffff8000113a1c54 ffff8000113a1c80: 2a597ef7 orr w23, w23, w25, lsr #31 for (tci = cpu * num_tc; num_tc--; tci++) { ffff8000113a1c84: f94037a0 ldr x0, [x29,#104] ffff8000113a1c88: 910006d6 add x22, x22, #0x1 ffff8000113a1c8c: eb0002df cmp x22, x0 ffff8000113a1c90: 54fffd81 b.ne ffff8000113a1c40 } ffff8000113a1c94: 2a1703e0 mov w0, w23 ffff8000113a1c98: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1c9c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a1ca0: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a1ca4: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a1ca8: a94573fb ldp x27, x28, [sp,#80] ffff8000113a1cac: a8c77bfd ldp x29, x30, [sp],#112 ffff8000113a1cb0: d65f03c0 ret if (!remove_xps_queue(dev_maps, tci, j)) ffff8000113a1cb4: 52800037 mov w23, #0x1 // #1 ffff8000113a1cb8: 17fffff3 b ffff8000113a1c84 ffff8000113a1cbc: 51000779 sub w25, w27, #0x1 ffff8000113a1cc0: 17ffffd9 b ffff8000113a1c24 ffff8000113a1cc4 : { ffff8000113a1cc4: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a1cc8: 910003fd mov x29, sp ffff8000113a1ccc: a90153f3 stp x19, x20, [sp,#16] ffff8000113a1cd0: aa0003f4 mov x20, x0 ffff8000113a1cd4: aa1e03e0 mov x0, x30 ffff8000113a1cd8: 94000000 bl 0 <_mcount> ffff8000113a1cd8: R_AARCH64_CALL26 _mcount ffff8000113a1cdc: 90000013 adrp x19, 0 <__stack_chk_guard> ffff8000113a1cdc: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a1ce0: f9400261 ldr x1, [x19] ffff8000113a1ce0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard if (dev->flags & IFF_UP) { ffff8000113a1ce4: b9422a80 ldr w0, [x20,#552] { ffff8000113a1ce8: f9001fa1 str x1, [x29,#56] if (dev->flags & IFF_UP) { ffff8000113a1cec: 36000180 tbz w0, #0, ffff8000113a1d1c struct netdev_notifier_change_info change_info = { ffff8000113a1cf0: a9027fbf stp xzr, xzr, [x29,#32] call_netdevice_notifiers_info(NETDEV_CHANGE, ffff8000113a1cf4: 910083a1 add x1, x29, #0x20 ffff8000113a1cf8: d2800080 mov x0, #0x4 // #4 struct netdev_notifier_change_info change_info = { ffff8000113a1cfc: f9001bbf str xzr, [x29,#48] ffff8000113a1d00: f90013b4 str x20, [x29,#32] call_netdevice_notifiers_info(NETDEV_CHANGE, ffff8000113a1d04: 97fff8fd bl ffff8000113a00f8 rtmsg_ifinfo(RTM_NEWLINK, dev, 0, GFP_KERNEL); ffff8000113a1d08: 52800200 mov w0, #0x10 // #16 ffff8000113a1d0c: aa1403e1 mov x1, x20 ffff8000113a1d10: 52800002 mov w2, #0x0 // #0 ffff8000113a1d14: 52819803 mov w3, #0xcc0 // #3264 ffff8000113a1d18: 94000000 bl 0 ffff8000113a1d18: R_AARCH64_CALL26 rtmsg_ifinfo } ffff8000113a1d1c: f9401fa1 ldr x1, [x29,#56] ffff8000113a1d20: f9400260 ldr x0, [x19] ffff8000113a1d20: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a1d24: eb00003f cmp x1, x0 ffff8000113a1d28: 54000081 b.ne ffff8000113a1d38 ffff8000113a1d2c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1d30: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a1d34: d65f03c0 ret ffff8000113a1d38: 94000000 bl 0 <__stack_chk_fail> ffff8000113a1d38: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a1d3c : { ffff8000113a1d3c: a9b97bfd stp x29, x30, [sp,#-112]! ffff8000113a1d40: 910003fd mov x29, sp ffff8000113a1d44: a90153f3 stp x19, x20, [sp,#16] ffff8000113a1d48: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a1d4c: f9001bf7 str x23, [sp,#48] ffff8000113a1d50: aa0003f3 mov x19, x0 ffff8000113a1d54: aa1e03e0 mov x0, x30 ffff8000113a1d58: aa0103f5 mov x21, x1 ffff8000113a1d5c: f90027a2 str x2, [x29,#72] ffff8000113a1d60: 90000016 adrp x22, 0 <__stack_chk_guard> ffff8000113a1d60: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a1d64: 94000000 bl 0 <_mcount> ffff8000113a1d64: R_AARCH64_CALL26 _mcount const struct net_device_ops *ops = dev->netdev_ops; ffff8000113a1d68: f940fa77 ldr x23, [x19,#496] { ffff8000113a1d6c: f94002c1 ldr x1, [x22] ffff8000113a1d6c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard if (!ops->ndo_set_mac_address) ffff8000113a1d70: f94026e0 ldr x0, [x23,#72] { ffff8000113a1d74: f90037a1 str x1, [x29,#104] if (!ops->ndo_set_mac_address) ffff8000113a1d78: f94027a2 ldr x2, [x29,#72] ffff8000113a1d7c: b4000560 cbz x0, ffff8000113a1e28 if (sa->sa_family != dev->type) ffff8000113a1d80: 794002a1 ldrh w1, [x21] ffff8000113a1d84: 79448a60 ldrh w0, [x19,#580] ffff8000113a1d88: 6b00003f cmp w1, w0 ffff8000113a1d8c: 54000461 b.ne ffff8000113a1e18 ffff8000113a1d90: f9402260 ldr x0, [x19,#64] if (!netif_device_present(dev)) ffff8000113a1d94: 36080460 tbz w0, #1, ffff8000113a1e20 err = dev_pre_changeaddr_notify(dev, sa->sa_data, extack); ffff8000113a1d98: aa1303e0 mov x0, x19 ffff8000113a1d9c: 91000aa1 add x1, x21, #0x2 ffff8000113a1da0: 94000000 bl ffff8000113a0380 ffff8000113a1da0: R_AARCH64_CALL26 dev_pre_changeaddr_notify ffff8000113a1da4: 2a0003f4 mov w20, w0 if (err) ffff8000113a1da8: 34000160 cbz w0, ffff8000113a1dd4 } ffff8000113a1dac: f94037a2 ldr x2, [x29,#104] ffff8000113a1db0: f94002c1 ldr x1, [x22] ffff8000113a1db0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a1db4: 2a1403e0 mov w0, w20 ffff8000113a1db8: eb01005f cmp x2, x1 ffff8000113a1dbc: 540003a1 b.ne ffff8000113a1e30 ffff8000113a1dc0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1dc4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a1dc8: f9401bf7 ldr x23, [sp,#48] ffff8000113a1dcc: a8c77bfd ldp x29, x30, [sp],#112 ffff8000113a1dd0: d65f03c0 ret err = ops->ndo_set_mac_address(dev, sa); ffff8000113a1dd4: f94026e2 ldr x2, [x23,#72] ffff8000113a1dd8: aa1303e0 mov x0, x19 ffff8000113a1ddc: aa1503e1 mov x1, x21 ffff8000113a1de0: d63f0040 blr x2 ffff8000113a1de4: 2a0003f4 mov w20, w0 if (err) ffff8000113a1de8: 35fffe20 cbnz w0, ffff8000113a1dac dev->addr_assign_type = NET_ADDR_SET; ffff8000113a1dec: 52800060 mov w0, #0x3 // #3 return call_netdevice_notifiers_info(val, &info); ffff8000113a1df0: 910163a1 add x1, x29, #0x58 dev->addr_assign_type = NET_ADDR_SET; ffff8000113a1df4: 3909ba60 strb w0, [x19,#622] return call_netdevice_notifiers_info(val, &info); ffff8000113a1df8: d2800100 mov x0, #0x8 // #8 struct netdev_notifier_info info = { ffff8000113a1dfc: f9002fb3 str x19, [x29,#88] ffff8000113a1e00: f90033bf str xzr, [x29,#96] return call_netdevice_notifiers_info(val, &info); ffff8000113a1e04: 97fff8bd bl ffff8000113a00f8 add_device_randomness(dev->dev_addr, dev->addr_len); ffff8000113a1e08: f9418e60 ldr x0, [x19,#792] ffff8000113a1e0c: 3949be61 ldrb w1, [x19,#623] ffff8000113a1e10: 94000000 bl 0 ffff8000113a1e10: R_AARCH64_CALL26 add_device_randomness ffff8000113a1e14: 17ffffe6 b ffff8000113a1dac return -EINVAL; ffff8000113a1e18: 128002b4 mov w20, #0xffffffea // #-22 ffff8000113a1e1c: 17ffffe4 b ffff8000113a1dac return -ENODEV; ffff8000113a1e20: 12800254 mov w20, #0xffffffed // #-19 ffff8000113a1e24: 17ffffe2 b ffff8000113a1dac return -EOPNOTSUPP; ffff8000113a1e28: 12800bd4 mov w20, #0xffffffa1 // #-95 ffff8000113a1e2c: 17ffffe0 b ffff8000113a1dac } ffff8000113a1e30: 94000000 bl 0 <__stack_chk_fail> ffff8000113a1e30: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a1e34 <__unregister_netdevice_notifier_net>: { ffff8000113a1e34: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a1e38: 910003fd mov x29, sp ffff8000113a1e3c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a1e40: f90013f5 str x21, [sp,#32] ffff8000113a1e44: aa0003f4 mov x20, x0 ffff8000113a1e48: aa1e03e0 mov x0, x30 ffff8000113a1e4c: aa0103f5 mov x21, x1 ffff8000113a1e50: 94000000 bl 0 <_mcount> ffff8000113a1e50: R_AARCH64_CALL26 _mcount err = raw_notifier_chain_unregister(&net->netdev_chain, nb); ffff8000113a1e54: 9104e280 add x0, x20, #0x138 ffff8000113a1e58: aa1503e1 mov x1, x21 ffff8000113a1e5c: 94000000 bl 0 ffff8000113a1e5c: R_AARCH64_CALL26 raw_notifier_chain_unregister if (err) ffff8000113a1e60: 350001a0 cbnz w0, ffff8000113a1e94 <__unregister_netdevice_notifier_net+0x60> for_each_netdev(net, dev) ffff8000113a1e64: f8490e93 ldr x19, [x20,#144]! ffff8000113a1e68: eb13029f cmp x20, x19 ffff8000113a1e6c: d1012273 sub x19, x19, #0x48 ffff8000113a1e70: 54000100 b.eq ffff8000113a1e90 <__unregister_netdevice_notifier_net+0x5c> call_netdevice_unregister_notifiers(nb, dev); ffff8000113a1e74: aa1303e1 mov x1, x19 ffff8000113a1e78: aa1503e0 mov x0, x21 ffff8000113a1e7c: 97fff1b1 bl ffff80001139e540 for_each_netdev(net, dev) ffff8000113a1e80: f9402673 ldr x19, [x19,#72] ffff8000113a1e84: eb13029f cmp x20, x19 ffff8000113a1e88: d1012273 sub x19, x19, #0x48 ffff8000113a1e8c: 54ffff41 b.ne ffff8000113a1e74 <__unregister_netdevice_notifier_net+0x40> ffff8000113a1e90: 52800000 mov w0, #0x0 // #0 } ffff8000113a1e94: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1e98: f94013f5 ldr x21, [sp,#32] ffff8000113a1e9c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a1ea0: d65f03c0 ret ffff8000113a1ea4 : { ffff8000113a1ea4: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a1ea8: 910003fd mov x29, sp ffff8000113a1eac: f9000bf3 str x19, [sp,#16] ffff8000113a1eb0: aa0003f3 mov x19, x0 ffff8000113a1eb4: aa1e03e0 mov x0, x30 ffff8000113a1eb8: f90017a1 str x1, [x29,#40] ffff8000113a1ebc: 94000000 bl 0 <_mcount> ffff8000113a1ebc: R_AARCH64_CALL26 _mcount rtnl_lock(); ffff8000113a1ec0: 94000000 bl 0 ffff8000113a1ec0: R_AARCH64_CALL26 rtnl_lock err = __unregister_netdevice_notifier_net(net, nb); ffff8000113a1ec4: f94017a1 ldr x1, [x29,#40] ffff8000113a1ec8: aa1303e0 mov x0, x19 ffff8000113a1ecc: 97ffffda bl ffff8000113a1e34 <__unregister_netdevice_notifier_net> rtnl_unlock(); ffff8000113a1ed0: f90017a0 str x0, [x29,#40] ffff8000113a1ed4: 94000000 bl 0 ffff8000113a1ed4: R_AARCH64_CALL26 rtnl_unlock } ffff8000113a1ed8: f94017a0 ldr x0, [x29,#40] ffff8000113a1edc: f9400bf3 ldr x19, [sp,#16] ffff8000113a1ee0: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a1ee4: d65f03c0 ret ffff8000113a1ee8 : { ffff8000113a1ee8: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a1eec: 910003fd mov x29, sp ffff8000113a1ef0: a90153f3 stp x19, x20, [sp,#16] ffff8000113a1ef4: aa0003f3 mov x19, x0 ffff8000113a1ef8: aa1e03e0 mov x0, x30 ffff8000113a1efc: aa0103f4 mov x20, x1 ffff8000113a1f00: 94000000 bl 0 <_mcount> ffff8000113a1f00: R_AARCH64_CALL26 _mcount if (net_ratelimit()) { ffff8000113a1f04: 94000000 bl 0 ffff8000113a1f04: R_AARCH64_CALL26 net_ratelimit ffff8000113a1f08: 35000080 cbnz w0, ffff8000113a1f18 } ffff8000113a1f0c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1f10: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a1f14: d65f03c0 ret pr_err("%s: hw csum failure\n", dev ? dev->name : ""); ffff8000113a1f18: b4000193 cbz x19, ffff8000113a1f48 ffff8000113a1f1c: aa1303e1 mov x1, x19 ffff8000113a1f20: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a1f20: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x210 ffff8000113a1f24: 91000000 add x0, x0, #0x0 ffff8000113a1f24: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x210 ffff8000113a1f28: 94000000 bl 0 ffff8000113a1f28: R_AARCH64_CALL26 printk skb_dump(KERN_ERR, skb, true); ffff8000113a1f2c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a1f2c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x1e8 ffff8000113a1f30: 91000000 add x0, x0, #0x0 ffff8000113a1f30: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x1e8 ffff8000113a1f34: aa1403e1 mov x1, x20 ffff8000113a1f38: 52800022 mov w2, #0x1 // #1 ffff8000113a1f3c: 94000000 bl 0 ffff8000113a1f3c: R_AARCH64_CALL26 skb_dump dump_stack(); ffff8000113a1f40: 94000000 bl 0 ffff8000113a1f40: R_AARCH64_CALL26 dump_stack ffff8000113a1f44: 17fffff2 b ffff8000113a1f0c pr_err("%s: hw csum failure\n", dev ? dev->name : ""); ffff8000113a1f48: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a1f48: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x200 ffff8000113a1f4c: 91000021 add x1, x1, #0x0 ffff8000113a1f4c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x200 ffff8000113a1f50: 17fffff4 b ffff8000113a1f20 ffff8000113a1f54 <__skb_gro_checksum_complete>: { ffff8000113a1f54: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a1f58: 910003fd mov x29, sp ffff8000113a1f5c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a1f60: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a1f64: aa0003f4 mov x20, x0 return NAPI_GRO_CB(skb)->data_offset; ffff8000113a1f68: 9100a013 add x19, x0, #0x28 ffff8000113a1f6c: aa1e03e0 mov x0, x30 ffff8000113a1f70: 94000000 bl 0 <_mcount> ffff8000113a1f70: R_AARCH64_CALL26 _mcount ffff8000113a1f74: b9400e61 ldr w1, [x19,#12] return skb->len - NAPI_GRO_CB(skb)->data_offset; ffff8000113a1f78: b9407282 ldr w2, [x20,#112] wsum = skb_checksum(skb, skb_gro_offset(skb), skb_gro_len(skb), 0); ffff8000113a1f7c: aa1403e0 mov x0, x20 ffff8000113a1f80: 4b010042 sub w2, w2, w1 ffff8000113a1f84: 52800003 mov w3, #0x0 // #0 ffff8000113a1f88: 94000000 bl 0 ffff8000113a1f88: R_AARCH64_CALL26 skb_checksum #ifndef HAVE_ARCH_CSUM_ADD static inline __wsum csum_add(__wsum csum, __wsum addend) { u32 res = (__force u32)csum; res += (__force u32)addend; ffff8000113a1f8c: b9402676 ldr w22, [x19,#36] ffff8000113a1f90: 2a0003f5 mov w21, w0 ffff8000113a1f94: 0b160016 add w22, w0, w22 return (__force __wsum)(res + (res < (__force u32)addend)); ffff8000113a1f98: 6b16001f cmp w0, w22 ffff8000113a1f9c: 1a9696d6 cinc w22, w22, hi sum += (sum >> 16) | (sum << 16); ffff8000113a1fa0: 139642c0 ror w0, w22, #16 ffff8000113a1fa4: 0b160016 add w22, w0, w22 return ~(__force __sum16)(sum >> 16); ffff8000113a1fa8: 2a7643f6 mvn w22, w22, lsr #16 ffff8000113a1fac: 53003ed6 uxth w22, w22 if (likely(!sum)) { ffff8000113a1fb0: 350000b6 cbnz w22, ffff8000113a1fc4 <__skb_gro_checksum_complete+0x70> if (unlikely(skb->ip_summed == CHECKSUM_COMPLETE) && ffff8000113a1fb4: 39420280 ldrb w0, [x20,#128] ffff8000113a1fb8: d3451800 ubfx x0, x0, #5, #2 ffff8000113a1fbc: 7100081f cmp w0, #0x2 ffff8000113a1fc0: 54000140 b.eq ffff8000113a1fe8 <__skb_gro_checksum_complete+0x94> NAPI_GRO_CB(skb)->csum_valid = 1; ffff8000113a1fc4: 39408a60 ldrb w0, [x19,#34] NAPI_GRO_CB(skb)->csum = wsum; ffff8000113a1fc8: b9002675 str w21, [x19,#36] NAPI_GRO_CB(skb)->csum_valid = 1; ffff8000113a1fcc: 321e0000 orr w0, w0, #0x4 ffff8000113a1fd0: 39008a60 strb w0, [x19,#34] } ffff8000113a1fd4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a1fd8: 2a1603e0 mov w0, w22 ffff8000113a1fdc: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a1fe0: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a1fe4: d65f03c0 ret !skb->csum_complete_sw) ffff8000113a1fe8: 39420a80 ldrb w0, [x20,#130] if (unlikely(skb->ip_summed == CHECKSUM_COMPLETE) && ffff8000113a1fec: 370ffec0 tbnz w0, #1, ffff8000113a1fc4 <__skb_gro_checksum_complete+0x70> netdev_rx_csum_fault(skb->dev, skb); ffff8000113a1ff0: f9400a80 ldr x0, [x20,#16] ffff8000113a1ff4: aa1403e1 mov x1, x20 ffff8000113a1ff8: 94000000 bl ffff8000113a1ee8 ffff8000113a1ff8: R_AARCH64_CALL26 netdev_rx_csum_fault ffff8000113a1ffc: 17fffff2 b ffff8000113a1fc4 <__skb_gro_checksum_complete+0x70> ffff8000113a2000 : { ffff8000113a2000: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a2004: 910003fd mov x29, sp ffff8000113a2008: f9000bf3 str x19, [sp,#16] ffff8000113a200c: aa0003f3 mov x19, x0 ffff8000113a2010: aa1e03e0 mov x0, x30 ffff8000113a2014: 94000000 bl 0 <_mcount> ffff8000113a2014: R_AARCH64_CALL26 _mcount struct sk_buff *skb = napi->skb; ffff8000113a2018: f9408260 ldr x0, [x19,#256] if (!skb) { ffff8000113a201c: b4000080 cbz x0, ffff8000113a202c } ffff8000113a2020: f9400bf3 ldr x19, [sp,#16] ffff8000113a2024: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a2028: d65f03c0 ret return __napi_alloc_skb(napi, length, GFP_ATOMIC); ffff8000113a202c: aa1303e0 mov x0, x19 ffff8000113a2030: 52802601 mov w1, #0x130 // #304 ffff8000113a2034: 52814402 mov w2, #0xa20 // #2592 ffff8000113a2038: 94000000 bl 0 <__napi_alloc_skb> ffff8000113a2038: R_AARCH64_CALL26 __napi_alloc_skb if (skb) { ffff8000113a203c: b4ffff20 cbz x0, ffff8000113a2020 struct sk_buff *napi_get_frags(struct napi_struct *napi) ffff8000113a2040: b9418261 ldr w1, [x19,#384] napi->skb = skb; ffff8000113a2044: f9008260 str x0, [x19,#256] /* used in the NIC receive handler to mark the skb */ static inline void skb_mark_napi_id(struct sk_buff *skb, struct napi_struct *napi) { #ifdef CONFIG_NET_RX_BUSY_POLL skb->napi_id = napi->napi_id; ffff8000113a2048: b9009c01 str w1, [x0,#156] ffff8000113a204c: 17fffff5 b ffff8000113a2020 ffff8000113a2050 <__dev_forward_skb>: { ffff8000113a2050: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a2054: 910003fd mov x29, sp ffff8000113a2058: a90153f3 stp x19, x20, [sp,#16] ffff8000113a205c: aa0003f4 mov x20, x0 ffff8000113a2060: aa0103f3 mov x19, x1 ffff8000113a2064: aa1e03e0 mov x0, x30 ffff8000113a2068: 94000000 bl 0 <_mcount> ffff8000113a2068: R_AARCH64_CALL26 _mcount bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113a206c: b40000d3 cbz x19, ffff8000113a2084 <__dev_forward_skb+0x34> return skb->head + skb->end; ffff8000113a2070: f9406261 ldr x1, [x19,#192] ffff8000113a2074: b940be60 ldr w0, [x19,#188] ffff8000113a2078: 8b000020 add x0, x1, x0 bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113a207c: 39400c01 ldrb w1, [x0,#3] ffff8000113a2080: 37180341 tbnz w1, #3, ffff8000113a20e8 <__dev_forward_skb+0x98> unlikely(!is_skb_forwardable(dev, skb))) { ffff8000113a2084: aa1403e0 mov x0, x20 ffff8000113a2088: aa1303e1 mov x1, x19 ffff8000113a208c: 94000000 bl ffff8000113a1540 ffff8000113a208c: R_AARCH64_CALL26 is_skb_forwardable ffff8000113a2090: 53001c00 uxtb w0, w0 if (skb_orphan_frags(skb, GFP_ATOMIC) || ffff8000113a2094: 34000420 cbz w0, ffff8000113a2118 <__dev_forward_skb+0xc8> skb_scrub_packet(skb, true); ffff8000113a2098: aa1303e0 mov x0, x19 ffff8000113a209c: 52800021 mov w1, #0x1 // #1 ffff8000113a20a0: 94000000 bl 0 ffff8000113a20a0: R_AARCH64_CALL26 skb_scrub_packet skb->protocol = eth_type_trans(skb, dev); ffff8000113a20a4: aa1403e1 mov x1, x20 ffff8000113a20a8: aa1303e0 mov x0, x19 skb->priority = 0; ffff8000113a20ac: b9008e7f str wzr, [x19,#140] ffff8000113a20b0: 94000000 bl 0 ffff8000113a20b0: R_AARCH64_CALL26 eth_type_trans if (skb->ip_summed == CHECKSUM_COMPLETE) ffff8000113a20b4: 39420262 ldrb w2, [x19,#128] ffff8000113a20b8: 79016260 strh w0, [x19,#176] ffff8000113a20bc: d3451841 ubfx x1, x2, #5, #2 ffff8000113a20c0: 7100083f cmp w1, #0x2 #define _LINUX_IF_ETHER_H #include #include static inline struct ethhdr *eth_hdr(const struct sk_buff *skb) ffff8000113a20c4: 79416e60 ldrh w0, [x19,#182] ffff8000113a20c8: f9406263 ldr x3, [x19,#192] ffff8000113a20cc: 540004e0 b.eq ffff8000113a2168 <__dev_forward_skb+0x118> else if (skb->ip_summed == CHECKSUM_PARTIAL && ffff8000113a20d0: 71000c3f cmp w1, #0x3 return 0; ffff8000113a20d4: 52800000 mov w0, #0x0 // #0 ffff8000113a20d8: 54000340 b.eq ffff8000113a2140 <__dev_forward_skb+0xf0> } ffff8000113a20dc: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a20e0: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a20e4: d65f03c0 ret return is_zcopy ? skb_uarg(skb) : NULL; ffff8000113a20e8: f9401400 ldr x0, [x0,#40] if (likely(!skb_zcopy(skb))) ffff8000113a20ec: b4fffcc0 cbz x0, ffff8000113a2084 <__dev_forward_skb+0x34> if (!skb_zcopy_is_nouarg(skb) && ffff8000113a20f0: 370000c0 tbnz w0, #0, ffff8000113a2108 <__dev_forward_skb+0xb8> ffff8000113a20f4: f9400001 ldr x1, [x0] ffff8000113a20f8: 90000000 adrp x0, 0 ffff8000113a20f8: R_AARCH64_ADR_PREL_PG_HI21 sock_zerocopy_callback ffff8000113a20fc: 91000000 add x0, x0, #0x0 ffff8000113a20fc: R_AARCH64_ADD_ABS_LO12_NC sock_zerocopy_callback ffff8000113a2100: eb00003f cmp x1, x0 ffff8000113a2104: 54fffc00 b.eq ffff8000113a2084 <__dev_forward_skb+0x34> return skb_copy_ubufs(skb, gfp_mask); ffff8000113a2108: aa1303e0 mov x0, x19 ffff8000113a210c: 52814401 mov w1, #0xa20 // #2592 ffff8000113a2110: 94000000 bl 0 ffff8000113a2110: R_AARCH64_CALL26 skb_copy_ubufs if (skb_orphan_frags(skb, GFP_ATOMIC) || ffff8000113a2114: 34fffb80 cbz w0, ffff8000113a2084 <__dev_forward_skb+0x34> ATOMIC64_OPS(add, add, I) ffff8000113a2118: 91070282 add x2, x20, #0x1c0 ffff8000113a211c: f9800051 prfm pstl1strm, [x2] ffff8000113a2120: c85f7c40 ldxr x0, [x2] ffff8000113a2124: 91000400 add x0, x0, #0x1 ffff8000113a2128: c8017c40 stxr w1, x0, [x2] ffff8000113a212c: 35ffffa1 cbnz w1, ffff8000113a2120 <__dev_forward_skb+0xd0> kfree_skb(skb); ffff8000113a2130: aa1303e0 mov x0, x19 ffff8000113a2134: 94000000 bl 0 ffff8000113a2134: R_AARCH64_CALL26 kfree_skb return NET_RX_DROP; ffff8000113a2138: 52800020 mov w0, #0x1 // #1 ffff8000113a213c: 17ffffe8 b ffff8000113a20dc <__dev_forward_skb+0x8c> return skb->csum_start - skb_headroom(skb); ffff8000113a2140: 79411264 ldrh w4, [x19,#136] return skb->data - skb->head; ffff8000113a2144: f9406661 ldr x1, [x19,#200] return skb->csum_start - skb_headroom(skb); ffff8000113a2148: 4b010081 sub w1, w4, w1 else if (skb->ip_summed == CHECKSUM_PARTIAL && ffff8000113a214c: 2b03003f cmn w1, w3 ffff8000113a2150: 54fffc65 b.pl ffff8000113a20dc <__dev_forward_skb+0x8c> skb->ip_summed = CHECKSUM_NONE; ffff8000113a2154: 12197442 and w2, w2, #0xffffff9f ffff8000113a2158: 39020262 strb w2, [x19,#128] ffff8000113a215c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a2160: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a2164: d65f03c0 ret skb->csum = csum_block_sub(skb->csum, ffff8000113a2168: 528001c1 mov w1, #0xe // #14 ffff8000113a216c: 8b202060 add x0, x3, w0, uxth ffff8000113a2170: 52800002 mov w2, #0x0 // #0 ffff8000113a2174: b9408a74 ldr w20, [x19,#136] ffff8000113a2178: 94000000 bl 0 ffff8000113a2178: R_AARCH64_CALL26 csum_partial } static inline __wsum csum_block_sub(__wsum csum, __wsum csum2, int offset) { return csum_block_add(csum, ~csum2, offset); ffff8000113a217c: 2a2003e0 mvn w0, w0 res += (__force u32)addend; ffff8000113a2180: 0b140001 add w1, w0, w20 return (__force __wsum)(res + (res < (__force u32)addend)); ffff8000113a2184: 6b01001f cmp w0, w1 ffff8000113a2188: 1a819421 cinc w1, w1, hi ffff8000113a218c: b9008a61 str w1, [x19,#136] return 0; ffff8000113a2190: 52800000 mov w0, #0x0 // #0 ffff8000113a2194: 17ffffd2 b ffff8000113a20dc <__dev_forward_skb+0x8c> ffff8000113a2198 : { ffff8000113a2198: a9bf7bfd stp x29, x30, [sp,#-16]! ffff8000113a219c: 910003fd mov x29, sp ffff8000113a21a0: aa1e03e0 mov x0, x30 ffff8000113a21a4: 94000000 bl 0 <_mcount> ffff8000113a21a4: R_AARCH64_CALL26 _mcount ffff8000113a21a8: 90000000 adrp x0, 0 ffff8000113a21a8: R_AARCH64_ADR_PREL_PG_HI21 kmalloc_caches+0x58 ffff8000113a21ac: f9400000 ldr x0, [x0] ffff8000113a21ac: R_AARCH64_LDST64_ABS_LO12_NC kmalloc_caches+0x58 ffff8000113a21b0: 52819801 mov w1, #0xcc0 // #3264 ffff8000113a21b4: d2810002 mov x2, #0x800 // #2048 ffff8000113a21b8: 94000000 bl 0 ffff8000113a21b8: R_AARCH64_CALL26 kmem_cache_alloc_trace if (hash != NULL) ffff8000113a21bc: d2800001 mov x1, #0x0 // #0 ffff8000113a21c0: b40000a0 cbz x0, ffff8000113a21d4 INIT_HLIST_HEAD(&hash[i]); ffff8000113a21c4: f821681f str xzr, [x0,x1] ffff8000113a21c8: 91002021 add x1, x1, #0x8 for (i = 0; i < NETDEV_HASHENTRIES; i++) ffff8000113a21cc: f120003f cmp x1, #0x800 ffff8000113a21d0: 54ffffa1 b.ne ffff8000113a21c4 } ffff8000113a21d4: a8c17bfd ldp x29, x30, [sp],#16 ffff8000113a21d8: d65f03c0 ret ffff8000113a21dc : { ffff8000113a21dc: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a21e0: 910003fd mov x29, sp ffff8000113a21e4: f9000bf3 str x19, [sp,#16] ffff8000113a21e8: aa0003f3 mov x19, x0 ffff8000113a21ec: aa1e03e0 mov x0, x30 ffff8000113a21f0: 94000000 bl 0 <_mcount> ffff8000113a21f0: R_AARCH64_CALL26 _mcount if (net != &init_net) ffff8000113a21f4: 90000000 adrp x0, 0 ffff8000113a21f4: R_AARCH64_ADR_PREL_PG_HI21 init_net ffff8000113a21f8: 91000000 add x0, x0, #0x0 ffff8000113a21f8: R_AARCH64_ADD_ABS_LO12_NC init_net ffff8000113a21fc: eb00027f cmp x19, x0 ffff8000113a2200: 54000080 b.eq ffff8000113a2210 INIT_LIST_HEAD(&net->dev_base_head); ffff8000113a2204: 91024260 add x0, x19, #0x90 case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a2208: f9004a60 str x0, [x19,#144] list->prev = list; ffff8000113a220c: f9004e60 str x0, [x19,#152] net->dev_name_head = netdev_create_hash(); ffff8000113a2210: 97ffffe2 bl ffff8000113a2198 ffff8000113a2214: f9009660 str x0, [x19,#296] if (net->dev_name_head == NULL) ffff8000113a2218: b4000120 cbz x0, ffff8000113a223c net->dev_index_head = netdev_create_hash(); ffff8000113a221c: 97ffffdf bl ffff8000113a2198 ffff8000113a2220: f9009a60 str x0, [x19,#304] if (net->dev_index_head == NULL) ffff8000113a2224: b4000100 cbz x0, ffff8000113a2244 RAW_INIT_NOTIFIER_HEAD(&net->netdev_chain); ffff8000113a2228: f9009e7f str xzr, [x19,#312] return 0; ffff8000113a222c: 52800000 mov w0, #0x0 // #0 } ffff8000113a2230: f9400bf3 ldr x19, [sp,#16] ffff8000113a2234: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a2238: d65f03c0 ret return -ENOMEM; ffff8000113a223c: 12800160 mov w0, #0xfffffff4 // #-12 ffff8000113a2240: 17fffffc b ffff8000113a2230 kfree(net->dev_name_head); ffff8000113a2244: f9409660 ldr x0, [x19,#296] ffff8000113a2248: 94000000 bl 0 ffff8000113a2248: R_AARCH64_CALL26 kfree return -ENOMEM; ffff8000113a224c: 12800160 mov w0, #0xfffffff4 // #-12 ffff8000113a2250: 17fffff8 b ffff8000113a2230 ffff8000113a2254 <__netdev_walk_all_lower_dev.constprop.156>: static int __netdev_walk_all_lower_dev(struct net_device *dev, ffff8000113a2254: a9b27bfd stp x29, x30, [sp,#-224]! ffff8000113a2258: 910003fd mov x29, sp ffff8000113a225c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a2260: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a2264: a90363f7 stp x23, x24, [sp,#48] ffff8000113a2268: aa0003f6 mov x22, x0 ffff8000113a226c: aa1e03e0 mov x0, x30 ffff8000113a2270: 94000000 bl 0 <_mcount> ffff8000113a2270: R_AARCH64_CALL26 _mcount ffff8000113a2274: 90000018 adrp x24, 0 <__stack_chk_guard> ffff8000113a2274: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a2278: f9400300 ldr x0, [x24] ffff8000113a2278: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard iter = &dev->adj_list.lower; ffff8000113a227c: 9102e2d3 add x19, x22, #0xb8 static int __netdev_walk_all_lower_dev(struct net_device *dev, ffff8000113a2280: f9006fa0 str x0, [x29,#216] iter = &dev->adj_list.lower; ffff8000113a2284: aa1303e3 mov x3, x19 now = dev; ffff8000113a2288: aa1603f4 mov x20, x22 int ret, cur = 0; ffff8000113a228c: 52800015 mov w21, #0x0 // #0 niter = iter_stack[cur]; ffff8000113a2290: 910243b7 add x23, x29, #0x90 lower = list_entry((*iter)->next, struct netdev_adjacent, list); ffff8000113a2294: f9400261 ldr x1, [x19] if (&lower->list == &dev->adj_list.lower) ffff8000113a2298: eb03003f cmp x1, x3 ffff8000113a229c: aa0103f3 mov x19, x1 ffff8000113a22a0: 540002c0 b.eq ffff8000113a22f8 <__netdev_walk_all_lower_dev.constprop.156+0xa4> return lower->dev; ffff8000113a22a4: f85e8022 ldur x2, [x1,#-24] *ignore = lower->ignore; ffff8000113a22a8: 385f1021 ldurb w1, [x1,#-15] if (!ldev) ffff8000113a22ac: b4000262 cbz x2, ffff8000113a22f8 <__netdev_walk_all_lower_dev.constprop.156+0xa4> if (ignore) ffff8000113a22b0: 35ffff21 cbnz w1, ffff8000113a2294 <__netdev_walk_all_lower_dev.constprop.156+0x40> dev_stack[cur] = now; ffff8000113a22b4: 910123a0 add x0, x29, #0x48 ffff8000113a22b8: f835d814 str x20, [x0,w21,sxtw #3] iter_stack[cur++] = iter; ffff8000113a22bc: f835daf3 str x19, [x23,w21,sxtw #3] return lower->dev; ffff8000113a22c0: aa0203f4 mov x20, x2 niter = &ldev->adj_list.lower; ffff8000113a22c4: 9102e053 add x19, x2, #0xb8 iter_stack[cur++] = iter; ffff8000113a22c8: 110006b5 add w21, w21, #0x1 if (now != dev) { ffff8000113a22cc: eb1402df cmp x22, x20 ffff8000113a22d0: 540000a0 b.eq ffff8000113a22e4 <__netdev_walk_all_lower_dev.constprop.156+0x90> ret = fn(now, data); ffff8000113a22d4: aa1403e0 mov x0, x20 ffff8000113a22d8: d2800001 mov x1, #0x0 // #0 ffff8000113a22dc: 97fff33d bl ffff80001139efd0 <__netdev_update_upper_level> if (ret) ffff8000113a22e0: 350001a0 cbnz w0, ffff8000113a2314 <__netdev_walk_all_lower_dev.constprop.156+0xc0> lower = list_entry((*iter)->next, struct netdev_adjacent, list); ffff8000113a22e4: f9400261 ldr x1, [x19] ffff8000113a22e8: 9102e283 add x3, x20, #0xb8 if (&lower->list == &dev->adj_list.lower) ffff8000113a22ec: eb03003f cmp x1, x3 ffff8000113a22f0: aa0103f3 mov x19, x1 ffff8000113a22f4: 54fffd81 b.ne ffff8000113a22a4 <__netdev_walk_all_lower_dev.constprop.156+0x50> if (!cur) ffff8000113a22f8: 340000d5 cbz w21, ffff8000113a2310 <__netdev_walk_all_lower_dev.constprop.156+0xbc> next = dev_stack[--cur]; ffff8000113a22fc: 510006b5 sub w21, w21, #0x1 ffff8000113a2300: 910123a0 add x0, x29, #0x48 ffff8000113a2304: f875d814 ldr x20, [x0,w21,sxtw #3] niter = iter_stack[cur]; ffff8000113a2308: f875daf3 ldr x19, [x23,w21,sxtw #3] ffff8000113a230c: 17fffff0 b ffff8000113a22cc <__netdev_walk_all_lower_dev.constprop.156+0x78> return 0; ffff8000113a2310: 2a1503e0 mov w0, w21 } ffff8000113a2314: f9406fa2 ldr x2, [x29,#216] ffff8000113a2318: f9400301 ldr x1, [x24] ffff8000113a2318: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a231c: eb01005f cmp x2, x1 ffff8000113a2320: 540000c1 b.ne ffff8000113a2338 <__netdev_walk_all_lower_dev.constprop.156+0xe4> ffff8000113a2324: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a2328: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a232c: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a2330: a8ce7bfd ldp x29, x30, [sp],#224 ffff8000113a2334: d65f03c0 ret ffff8000113a2338: 94000000 bl 0 <__stack_chk_fail> ffff8000113a2338: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a233c : { ffff8000113a233c: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a2340: 910003fd mov x29, sp ffff8000113a2344: f9000bf3 str x19, [sp,#16] ffff8000113a2348: aa0003f3 mov x19, x0 ffff8000113a234c: aa1e03e0 mov x0, x30 ffff8000113a2350: 94000000 bl 0 <_mcount> ffff8000113a2350: R_AARCH64_CALL26 _mcount for (i = 0; i < dev->num_tx_queues; i++) { ffff8000113a2354: b943ca60 ldr w0, [x19,#968] ffff8000113a2358: 52800002 mov w2, #0x0 // #0 return &dev->_tx[index]; ffff8000113a235c: 52802803 mov w3, #0x140 // #320 ffff8000113a2360: 340001c0 cbz w0, ffff8000113a2398 ffff8000113a2364: f941e261 ldr x1, [x19,#960] ffff8000113a2368: 9ba37c40 umull x0, w2, w3 ffff8000113a236c: 8b000021 add x1, x1, x0 ATOMIC64_OPS(or, orr, L) ffff8000113a2370: 91024025 add x5, x1, #0x90 ffff8000113a2374: f98000b1 prfm pstl1strm, [x5] ffff8000113a2378: c85f7ca0 ldxr x0, [x5] ffff8000113a237c: b2400000 orr x0, x0, #0x1 ffff8000113a2380: c8047ca0 stxr w4, x0, [x5] ffff8000113a2384: 35ffffa4 cbnz w4, ffff8000113a2378 ffff8000113a2388: b943ca60 ldr w0, [x19,#968] ffff8000113a238c: 11000442 add w2, w2, #0x1 ffff8000113a2390: 6b02001f cmp w0, w2 ffff8000113a2394: 54fffe88 b.hi ffff8000113a2364 } ffff8000113a2398: f9400bf3 ldr x19, [sp,#16] ffff8000113a239c: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a23a0: d65f03c0 ret ffff8000113a23a4 : { ffff8000113a23a4: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a23a8: 910003fd mov x29, sp ffff8000113a23ac: a90153f3 stp x19, x20, [sp,#16] ffff8000113a23b0: f90013f5 str x21, [sp,#32] ffff8000113a23b4: aa0003f3 mov x19, x0 ffff8000113a23b8: aa1e03e0 mov x0, x30 ffff8000113a23bc: 53003c34 uxth w20, w1 ffff8000113a23c0: 53003c75 uxth w21, w3 ffff8000113a23c4: f9001fa2 str x2, [x29,#56] ffff8000113a23c8: 94000000 bl 0 <_mcount> ffff8000113a23c8: R_AARCH64_CALL26 _mcount struct netdev_rx_queue *rxqueue = dev->_rx + rxq_index; ffff8000113a23cc: f9419260 ldr x0, [x19,#800] ffff8000113a23d0: d3783e94 ubfiz x20, x20, #8, #16 ffff8000113a23d4: 8b140014 add x20, x0, x20 __READ_ONCE_SIZE; ffff8000113a23d8: f9400681 ldr x1, [x20,#8] if (flow_table && flow_id <= flow_table->mask) { ffff8000113a23dc: f9401fa2 ldr x2, [x29,#56] ffff8000113a23e0: b40004c1 cbz x1, ffff8000113a2478 ffff8000113a23e4: b9400024 ldr w4, [x1] bool expire = true; ffff8000113a23e8: 52800020 mov w0, #0x1 // #1 if (flow_table && flow_id <= flow_table->mask) { ffff8000113a23ec: 6b02009f cmp w4, w2 ffff8000113a23f0: 54000143 b.cc ffff8000113a2418 rflow = &flow_table->flows[flow_id]; ffff8000113a23f4: 2a0203e2 mov w2, w2 ffff8000113a23f8: 91000842 add x2, x2, #0x2 ffff8000113a23fc: 8b020c21 add x1, x1, x2, lsl #3 if (rflow->filter == filter_id && cpu < nr_cpu_ids && ffff8000113a2400: 79401423 ldrh w3, [x1,#10] rflow = &flow_table->flows[flow_id]; ffff8000113a2404: 91002022 add x2, x1, #0x8 ffff8000113a2408: 79401021 ldrh w1, [x1,#8] if (rflow->filter == filter_id && cpu < nr_cpu_ids && ffff8000113a240c: 6b15007f cmp w3, w21 ffff8000113a2410: 53003c21 uxth w1, w1 ffff8000113a2414: 540000a0 b.eq ffff8000113a2428 } ffff8000113a2418: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a241c: f94013f5 ldr x21, [sp,#32] ffff8000113a2420: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a2424: d65f03c0 ret if (rflow->filter == filter_id && cpu < nr_cpu_ids && ffff8000113a2428: 90000003 adrp x3, 0 ffff8000113a2428: R_AARCH64_ADR_PREL_PG_HI21 nr_cpu_ids ffff8000113a242c: b9400063 ldr w3, [x3] ffff8000113a242c: R_AARCH64_LDST32_ABS_LO12_NC nr_cpu_ids ffff8000113a2430: 6b03003f cmp w1, w3 ffff8000113a2434: 54ffff22 b.cs ffff8000113a2418 ((int)(per_cpu(softnet_data, cpu).input_queue_head - ffff8000113a2438: 90000000 adrp x0, 0 <__per_cpu_offset> ffff8000113a2438: R_AARCH64_ADR_PREL_PG_HI21 __per_cpu_offset ffff8000113a243c: 91000000 add x0, x0, #0x0 ffff8000113a243c: R_AARCH64_ADD_ABS_LO12_NC __per_cpu_offset ffff8000113a2440: f8615801 ldr x1, [x0,w1,uxtw #3] ffff8000113a2444: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a2444: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned ffff8000113a2448: 91000000 add x0, x0, #0x0 ffff8000113a2448: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a244c: 8b010000 add x0, x0, x1 ffff8000113a2450: b9408001 ldr w1, [x0,#128] ffff8000113a2454: b9400440 ldr w0, [x2,#4] (int)(10 * flow_table->mask))) ffff8000113a2458: 0b040884 add w4, w4, w4, lsl #2 ((int)(per_cpu(softnet_data, cpu).input_queue_head - ffff8000113a245c: 4b000020 sub w0, w1, w0 if (rflow->filter == filter_id && cpu < nr_cpu_ids && ffff8000113a2460: 6b04041f cmp w0, w4, lsl #1 ffff8000113a2464: 1a9fb7e0 cset w0, ge } ffff8000113a2468: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a246c: f94013f5 ldr x21, [sp,#32] ffff8000113a2470: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a2474: d65f03c0 ret bool expire = true; ffff8000113a2478: 52800020 mov w0, #0x1 // #1 } ffff8000113a247c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a2480: f94013f5 ldr x21, [sp,#32] ffff8000113a2484: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a2488: d65f03c0 ret ffff8000113a248c : { ffff8000113a248c: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a2490: 910003fd mov x29, sp ffff8000113a2494: a90153f3 stp x19, x20, [sp,#16] ffff8000113a2498: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a249c: f9001bf7 str x23, [sp,#48] ffff8000113a24a0: aa0103f6 mov x22, x1 ffff8000113a24a4: aa0003f4 mov x20, x0 ffff8000113a24a8: aa1e03e0 mov x0, x30 ffff8000113a24ac: aa0203f5 mov x21, x2 ffff8000113a24b0: 94000000 bl 0 <_mcount> ffff8000113a24b0: R_AARCH64_CALL26 _mcount struct sock *sk = skb->sk; ffff8000113a24b4: f9400ed3 ldr x19, [x22,#24] sk->sk_tx_queue_mapping = NO_QUEUE_MAPPING; } static inline int sk_tx_queue_get(const struct sock *sk) { if (sk && sk->sk_tx_queue_mapping != NO_QUEUE_MAPPING) ffff8000113a24b8: b4000993 cbz x19, ffff8000113a25e8 ffff8000113a24bc: 7940f277 ldrh w23, [x19,#120] ffff8000113a24c0: 529fffe0 mov w0, #0xffff // #65535 return sk->sk_tx_queue_mapping; ffff8000113a24c4: 6b0002ff cmp w23, w0 ffff8000113a24c8: 5a9f12f7 csinv w23, w23, wzr, ne sb_dev = sb_dev ? : dev; ffff8000113a24cc: eb1f02bf cmp x21, xzr ffff8000113a24d0: 9a9412b5 csel x21, x21, x20, ne if (queue_index < 0 || skb->ooo_okay || ffff8000113a24d4: 310006ff cmn w23, #0x1 ffff8000113a24d8: 54000060 b.eq ffff8000113a24e4 ffff8000113a24dc: 394202c0 ldrb w0, [x22,#128] ffff8000113a24e0: 36380560 tbz w0, #7, ffff8000113a258c ffff8000113a24e4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a24e4: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a24e8: 91000000 add x0, x0, #0x0 ffff8000113a24e8: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a24ec: b9493801 ldr w1, [x0,#2360] static_key_initialized = true; } static __always_inline bool static_key_false(struct static_key *key) { if (unlikely(static_key_count(key) > 0)) ffff8000113a24f0: 6b1f003f cmp w1, wzr ffff8000113a24f4: 5400096c b.gt ffff8000113a2620 if (dev->num_tc) { ffff8000113a24f8: 79d09280 ldrsh w0, [x20,#2120] u16 qcount = dev->real_num_tx_queues; ffff8000113a24fc: b943ce81 ldr w1, [x20,#972] if (dev->num_tc) { ffff8000113a2500: 35000580 cbnz w0, ffff8000113a25b0 u16 qcount = dev->real_num_tx_queues; ffff8000113a2504: 53003c35 uxth w21, w1 u16 qoffset = 0; ffff8000113a2508: 2a0003f4 mov w20, w0 struct sk_buff *skb) ffff8000113a250c: 7940fac2 ldrh w2, [x22,#124] if (skb_rx_queue_recorded(skb)) { ffff8000113a2510: 34000702 cbz w2, ffff8000113a25f0 return skb->queue_mapping - 1; ffff8000113a2514: 51000442 sub w2, w2, #0x1 hash = skb_get_rx_queue(skb); ffff8000113a2518: 53003c42 uxth w2, w2 hash -= qoffset; ffff8000113a251c: 6b14005f cmp w2, w20 ffff8000113a2520: 4b140040 sub w0, w2, w20 ffff8000113a2524: 1a822002 csel w2, w0, w2, cs while (unlikely(hash >= qcount)) ffff8000113a2528: 6b0202bf cmp w21, w2 ffff8000113a252c: 54000b89 b.ls ffff8000113a269c return hash + qoffset; ffff8000113a2530: 0b020280 add w0, w20, w2 ffff8000113a2534: 53003c00 uxth w0, w0 if (queue_index != new_index && sk && ffff8000113a2538: 6b17001f cmp w0, w23 ffff8000113a253c: 540004a0 b.eq ffff8000113a25d0 ffff8000113a2540: b4000493 cbz x19, ffff8000113a25d0 /* This helper checks if a socket is a full socket, * ie _not_ a timewait or request socket. */ static inline bool sk_fullsock(const struct sock *sk) { return (1 << sk->sk_state) & ~(TCPF_TIME_WAIT | TCPF_NEW_SYN_RECV); ffff8000113a2544: 39404a61 ldrb w1, [x19,#18] ffff8000113a2548: 52800022 mov w2, #0x1 // #1 ffff8000113a254c: 1ac12042 lsl w2, w2, w1 ffff8000113a2550: 12820801 mov w1, #0xffffefbf // #-4161 ffff8000113a2554: 6a01005f tst w2, w1 ffff8000113a2558: 540003c0 b.eq ffff8000113a25d0 ffff8000113a255c: f9409e61 ldr x1, [x19,#312] if (WARN_ON_ONCE((unsigned short)tx_queue >= USHRT_MAX)) ffff8000113a2560: 53003c00 uxth w0, w0 sk_fullsock(sk) && ffff8000113a2564: b40000a1 cbz x1, ffff8000113a2578 ffff8000113a2568: 529fffe1 mov w1, #0xffff // #65535 ffff8000113a256c: 6b01001f cmp w0, w1 ffff8000113a2570: 54000920 b.eq ffff8000113a2694 sk->sk_tx_queue_mapping = tx_queue; ffff8000113a2574: 7900f260 strh w0, [x19,#120] } ffff8000113a2578: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a257c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a2580: f9401bf7 ldr x23, [sp,#48] ffff8000113a2584: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a2588: d65f03c0 ret if (queue_index < 0 || skb->ooo_okay || ffff8000113a258c: b943ce80 ldr w0, [x20,#972] ffff8000113a2590: 6b0002ff cmp w23, w0 ffff8000113a2594: 54fffa82 b.cs ffff8000113a24e4 ffff8000113a2598: 53003ee0 uxth w0, w23 } ffff8000113a259c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a25a0: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a25a4: f9401bf7 ldr x23, [sp,#48] ffff8000113a25a8: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a25ac: d65f03c0 ret return dev->prio_tc_map[prio & TC_BITMASK]; ffff8000113a25b0: b9408ec0 ldr w0, [x22,#140] ffff8000113a25b4: 92400c00 and x0, x0, #0xf ffff8000113a25b8: 8b000294 add x20, x20, x0 ffff8000113a25bc: 39622a80 ldrb w0, [x20,#2186] ffff8000113a25c0: 8b000ab5 add x21, x21, x0, lsl #2 qoffset = sb_dev->tc_to_txq[tc].offset; ffff8000113a25c4: 79509ab4 ldrh w20, [x21,#2124] qcount = sb_dev->tc_to_txq[tc].count; ffff8000113a25c8: 795096b5 ldrh w21, [x21,#2122] ffff8000113a25cc: 17ffffd0 b ffff8000113a250c ffff8000113a25d0: 53003c00 uxth w0, w0 } ffff8000113a25d4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a25d8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a25dc: f9401bf7 ldr x23, [sp,#48] ffff8000113a25e0: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a25e4: d65f03c0 ret return -1; ffff8000113a25e8: 12800017 mov w23, #0xffffffff // #-1 ffff8000113a25ec: 17ffffb8 b ffff8000113a24cc if (!skb->l4_hash && !skb->sw_hash) ffff8000113a25f0: 394206c0 ldrb w0, [x22,#129] ffff8000113a25f4: 12000400 and w0, w0, #0x3 ffff8000113a25f8: 340000e0 cbz w0, ffff8000113a2614 return skb->hash; ffff8000113a25fc: b94096c0 ldr w0, [x22,#148] ffff8000113a2600: 9bb57c00 umull x0, w0, w21 ffff8000113a2604: d360fc00 lsr x0, x0, #32 return (u16) reciprocal_scale(skb_get_hash(skb), qcount) + qoffset; ffff8000113a2608: 0b000280 add w0, w20, w0 ffff8000113a260c: 53003c00 uxth w0, w0 ffff8000113a2610: 17ffffca b ffff8000113a2538 __skb_get_hash(skb); ffff8000113a2614: aa1603e0 mov x0, x22 ffff8000113a2618: 94000000 bl 0 <__skb_get_hash> ffff8000113a2618: R_AARCH64_CALL26 __skb_get_hash ffff8000113a261c: 17fffff8 b ffff8000113a25fc ffff8000113a2620: b9494001 ldr w1, [x0,#2368] ffff8000113a2624: 12800000 mov w0, #0xffffffff // #-1 ffff8000113a2628: 6b1f003f cmp w1, wzr ffff8000113a262c: 5400014c b.gt ffff8000113a2654 ffff8000113a2630: f941f6a2 ldr x2, [x21,#1000] if (dev_maps) { ffff8000113a2634: b40000c2 cbz x2, ffff8000113a264c unsigned int tci = skb->sender_cpu - 1; ffff8000113a2638: b9409ec3 ldr w3, [x22,#156] queue_index = __get_xps_queue_idx(dev, skb, dev_maps, ffff8000113a263c: aa1403e0 mov x0, x20 ffff8000113a2640: aa1603e1 mov x1, x22 ffff8000113a2644: 51000463 sub w3, w3, #0x1 ffff8000113a2648: 97fff95e bl ffff8000113a0bc0 <__get_xps_queue_idx> if (new_index < 0) ffff8000113a264c: 36fff760 tbz w0, #31, ffff8000113a2538 ffff8000113a2650: 17ffffaa b ffff8000113a24f8 ffff8000113a2654: f941faa2 ldr x2, [x21,#1008] if (dev_maps) { ffff8000113a2658: b4fffec2 cbz x2, ffff8000113a2630 if (sk && sk->sk_rx_queue_mapping != NO_QUEUE_MAPPING) ffff8000113a265c: b4fffeb3 cbz x19, ffff8000113a2630 ffff8000113a2660: 7940f663 ldrh w3, [x19,#122] ffff8000113a2664: 529fffe1 mov w1, #0xffff // #65535 ffff8000113a2668: 6b01007f cmp w3, w1 ffff8000113a266c: 54fffe20 b.eq ffff8000113a2630 if (tci >= 0 && tci < dev->num_rx_queues) ffff8000113a2670: b9432a81 ldr w1, [x20,#808] ffff8000113a2674: 6b01007f cmp w3, w1 ffff8000113a2678: 54fffdc2 b.cs ffff8000113a2630 queue_index = __get_xps_queue_idx(dev, skb, dev_maps, ffff8000113a267c: aa1603e1 mov x1, x22 ffff8000113a2680: aa1403e0 mov x0, x20 ffff8000113a2684: 97fff94f bl ffff8000113a0bc0 <__get_xps_queue_idx> if (queue_index < 0) { ffff8000113a2688: 37fffd40 tbnz w0, #31, ffff8000113a2630 if (new_index < 0) ffff8000113a268c: 36fff560 tbz w0, #31, ffff8000113a2538 ffff8000113a2690: 17ffff9a b ffff8000113a24f8 if (WARN_ON_ONCE((unsigned short)tx_queue >= USHRT_MAX)) ffff8000113a2694: d4210000 brk #0x800 ffff8000113a2698: 17ffffb8 b ffff8000113a2578 hash -= qcount; ffff8000113a269c: 4b150042 sub w2, w2, w21 while (unlikely(hash >= qcount)) ffff8000113a26a0: 6b15005f cmp w2, w21 ffff8000113a26a4: 54fff463 b.cc ffff8000113a2530 ffff8000113a26a8: 17fffffd b ffff8000113a269c ffff8000113a26ac : { ffff8000113a26ac: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a26b0: 910003fd mov x29, sp ffff8000113a26b4: f9000bf3 str x19, [sp,#16] ffff8000113a26b8: aa0003f3 mov x19, x0 ffff8000113a26bc: aa1e03e0 mov x0, x30 ffff8000113a26c0: 94000000 bl 0 <_mcount> ffff8000113a26c0: R_AARCH64_CALL26 _mcount ffff8000113a26c4: f9400a61 ldr x1, [x19,#16] new = val | NAPIF_STATE_SCHED; ffff8000113a26c8: b2400022 orr x2, x1, #0x1 new |= (val & NAPIF_STATE_SCHED) / NAPIF_STATE_SCHED * ffff8000113a26cc: 92400020 and x0, x1, #0x1 ffff8000113a26d0: aa000442 orr x2, x2, x0, lsl #1 if (unlikely(val & NAPIF_STATE_DISABLE)) ffff8000113a26d4: 371001e1 tbnz w1, #2, ffff8000113a2710 __CMPXCHG_CASE(w, , rel_, 32, , , l, "memory", K) __CMPXCHG_CASE( , , rel_, 64, , , l, "memory", L) __CMPXCHG_CASE(w, b, mb_, 8, dmb ish, , l, "memory", K) __CMPXCHG_CASE(w, h, mb_, 16, dmb ish, , l, "memory", K) __CMPXCHG_CASE(w, , mb_, 32, dmb ish, , l, "memory", K) __CMPXCHG_CASE( , , mb_, 64, dmb ish, , l, "memory", L) ffff8000113a26d8: 91004265 add x5, x19, #0x10 ffff8000113a26dc: f98000b1 prfm pstl1strm, [x5] ffff8000113a26e0: c85f7ca3 ldxr x3, [x5] ffff8000113a26e4: ca010064 eor x4, x3, x1 ffff8000113a26e8: b5000084 cbnz x4, ffff8000113a26f8 ffff8000113a26ec: c804fca2 stlxr w4, x2, [x5] ffff8000113a26f0: 35ffff84 cbnz w4, ffff8000113a26e0 ffff8000113a26f4: d5033bbf dmb ish } while (cmpxchg(&n->state, val, new) != val); ffff8000113a26f8: eb03003f cmp x1, x3 ffff8000113a26fc: 54fffe41 b.ne ffff8000113a26c4 return !(val & NAPIF_STATE_SCHED); ffff8000113a2700: 52000000 eor w0, w0, #0x1 } ffff8000113a2704: f9400bf3 ldr x19, [sp,#16] ffff8000113a2708: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a270c: d65f03c0 ret return false; ffff8000113a2710: 52800000 mov w0, #0x0 // #0 ffff8000113a2714: 17fffffc b ffff8000113a2704 ffff8000113a2718 : { ffff8000113a2718: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a271c: 910003fd mov x29, sp ffff8000113a2720: f9000bf3 str x19, [sp,#16] ffff8000113a2724: aa0003f3 mov x19, x0 ffff8000113a2728: aa1e03e0 mov x0, x30 ffff8000113a272c: f90017a1 str x1, [x29,#40] ffff8000113a2730: 94000000 bl 0 <_mcount> ffff8000113a2730: R_AARCH64_CALL26 _mcount if (dev->num_tc) { ffff8000113a2734: 79d09262 ldrsh w2, [x19,#2120] return 0; ffff8000113a2738: 52800000 mov w0, #0x0 // #0 if (dev->num_tc) { ffff8000113a273c: f94017a1 ldr x1, [x29,#40] ffff8000113a2740: 340001a2 cbz w2, ffff8000113a2774 struct netdev_tc_txq *tc = &dev->tc_to_txq[0]; ffff8000113a2744: 91212a62 add x2, x19, #0x84a ffff8000113a2748: 91222a65 add x5, x19, #0x88a if ((txq - tc->offset) < tc->count) ffff8000113a274c: 79400444 ldrh w4, [x2,#2] ffff8000113a2750: 79400043 ldrh w3, [x2] ffff8000113a2754: 4b040024 sub w4, w1, w4 ffff8000113a2758: 6b03009f cmp w4, w3 for (i = 0; i < TC_MAX_QUEUE; i++, tc++) { ffff8000113a275c: 91001042 add x2, x2, #0x4 if ((txq - tc->offset) < tc->count) ffff8000113a2760: 540000a3 b.cc ffff8000113a2774 for (i = 0; i < TC_MAX_QUEUE; i++, tc++) { ffff8000113a2764: eb05005f cmp x2, x5 ffff8000113a2768: 11000400 add w0, w0, #0x1 ffff8000113a276c: 54ffff01 b.ne ffff8000113a274c return -1; ffff8000113a2770: 12800000 mov w0, #0xffffffff // #-1 } ffff8000113a2774: f9400bf3 ldr x19, [sp,#16] ffff8000113a2778: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a277c: d65f03c0 ret ffff8000113a2780 : { ffff8000113a2780: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a2784: 910003fd mov x29, sp ffff8000113a2788: f9000bf3 str x19, [sp,#16] ffff8000113a278c: aa0003f3 mov x19, x0 ffff8000113a2790: aa1e03e0 mov x0, x30 ffff8000113a2794: 94000000 bl 0 <_mcount> ffff8000113a2794: R_AARCH64_CALL26 _mcount * * Drops dst reference count if a reference was taken. */ static inline void skb_dst_drop(struct sk_buff *skb) { if (skb->_skb_refdst) { ffff8000113a2798: f9402e60 ldr x0, [x19,#88] ffff8000113a279c: b4000060 cbz x0, ffff8000113a27a8 if (!(refdst & SKB_DST_NOREF)) ffff8000113a27a0: 360001a0 tbz w0, #0, ffff8000113a27d4 refdst_drop(skb->_skb_refdst); skb->_skb_refdst = 0UL; ffff8000113a27a4: f9002e7f str xzr, [x19,#88] if (skb->active_extensions) ffff8000113a27a8: 3941fe60 ldrb w0, [x19,#127] ffff8000113a27ac: 34000060 cbz w0, ffff8000113a27b8 __skb_ext_put(skb->extensions); ffff8000113a27b0: f9406e60 ldr x0, [x19,#216] ffff8000113a27b4: 94000000 bl 0 <__skb_ext_put> ffff8000113a27b4: R_AARCH64_CALL26 __skb_ext_put kmem_cache_free(skbuff_head_cache, skb); ffff8000113a27b8: 90000000 adrp x0, 0 ffff8000113a27b8: R_AARCH64_ADR_PREL_PG_HI21 skbuff_head_cache ffff8000113a27bc: f9400000 ldr x0, [x0] ffff8000113a27bc: R_AARCH64_LDST64_ABS_LO12_NC skbuff_head_cache ffff8000113a27c0: aa1303e1 mov x1, x19 ffff8000113a27c4: 94000000 bl 0 ffff8000113a27c4: R_AARCH64_CALL26 kmem_cache_free } ffff8000113a27c8: f9400bf3 ldr x19, [sp,#16] ffff8000113a27cc: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a27d0: d65f03c0 ret dst_release((struct dst_entry *)(refdst & SKB_DST_PTRMASK)); ffff8000113a27d4: 927ff800 and x0, x0, #0xfffffffffffffffe ffff8000113a27d8: 94000000 bl 0 ffff8000113a27d8: R_AARCH64_CALL26 dst_release ffff8000113a27dc: 17fffff2 b ffff8000113a27a4 ffff8000113a27e0 : static void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb) ffff8000113a27e0: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a27e4: 910003fd mov x29, sp ffff8000113a27e8: a90153f3 stp x19, x20, [sp,#16] ffff8000113a27ec: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a27f0: aa0203f3 mov x19, x2 ffff8000113a27f4: aa0003f6 mov x22, x0 ffff8000113a27f8: aa1e03e0 mov x0, x30 ffff8000113a27fc: aa0103f5 mov x21, x1 ffff8000113a2800: 94000000 bl 0 <_mcount> ffff8000113a2800: R_AARCH64_CALL26 _mcount if (unlikely(skb->pfmemalloc)) { ffff8000113a2804: 3941fa74 ldrb w20, [x19,#126] ffff8000113a2808: d3461a94 ubfx x20, x20, #6, #1 ffff8000113a280c: 53001e82 uxtb w2, w20 ffff8000113a2810: 35000582 cbnz w2, ffff8000113a28c0 static void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb) ffff8000113a2814: b9407664 ldr w4, [x19,#116] return skb->len - skb->data_len; ffff8000113a2818: b9407266 ldr w6, [x19,#112] return skb->data += len; ffff8000113a281c: f9406660 ldr x0, [x19,#200] ffff8000113a2820: f9406263 ldr x3, [x19,#192] ffff8000113a2824: 4b0400c6 sub w6, w6, w4 ffff8000113a2828: 8b060006 add x6, x0, x6 skb->tail += len; ffff8000113a282c: b940ba61 ldr w1, [x19,#184] * * Clears the VLAN information from @skb */ static inline void __vlan_hwaccel_clear_tag(struct sk_buff *skb) { skb->vlan_present = 0; ffff8000113a2830: 39420a60 ldrb w0, [x19,#130] skb_reserve(skb, NET_SKB_PAD + NET_IP_ALIGN - skb_headroom(skb)); ffff8000113a2834: 4b060065 sub w5, w3, w6 ffff8000113a2838: 110100a5 add w5, w5, #0x40 skb->data += len; ffff8000113a283c: 8b25c0c6 add x6, x6, w5, sxtw ffff8000113a2840: 121f7800 and w0, w0, #0xfffffffe skb->tail += len; ffff8000113a2844: 0b050025 add w5, w1, w5 skb->pkt_type = PACKET_HOST; ffff8000113a2848: 39420267 ldrb w7, [x19,#128] skb->encapsulation = 0; ffff8000113a284c: 39420661 ldrb w1, [x19,#129] skb->len -= len; ffff8000113a2850: b9007264 str w4, [x19,#112] ffff8000113a2854: 39020a60 strb w0, [x19,#130] skb->data += len; ffff8000113a2858: f9006666 str x6, [x19,#200] skb->tail += len; ffff8000113a285c: b900ba65 str w5, [x19,#184] skb->dev = napi->dev; ffff8000113a2860: f94002c5 ldr x5, [x22] return skb->head + skb->end; ffff8000113a2864: b940be60 ldr w0, [x19,#188] skb->encapsulation = 0; ffff8000113a2868: 121a7821 and w1, w1, #0xffffffdf skb->pkt_type = PACKET_HOST; ffff8000113a286c: 121d70e4 and w4, w7, #0xfffffff8 skb->encapsulation = 0; ffff8000113a2870: 39020661 strb w1, [x19,#129] skb_shinfo(skb)->gso_type = 0; ffff8000113a2874: 8b000063 add x3, x3, x0 skb->dev = napi->dev; ffff8000113a2878: f9000a65 str x5, [x19,#16] skb->skb_iif = 0; ffff8000113a287c: b9009262 str w2, [x19,#144] skb->pkt_type = PACKET_HOST; ffff8000113a2880: 39020264 strb w4, [x19,#128] skb_shinfo(skb)->gso_type = 0; ffff8000113a2884: b9001862 str w2, [x3,#24] skb->truesize = SKB_TRUESIZE(skb_end_offset(skb)); ffff8000113a2888: b940be61 ldr w1, [x19,#188] if (unlikely(skb->active_extensions)) { ffff8000113a288c: 3941fe60 ldrb w0, [x19,#127] ffff8000113a2890: 11090021 add w1, w1, #0x240 ffff8000113a2894: b900d261 str w1, [x19,#208] ffff8000113a2898: 350000c0 cbnz w0, ffff8000113a28b0 napi->skb = skb; ffff8000113a289c: f90002b3 str x19, [x21] } ffff8000113a28a0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a28a4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a28a8: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a28ac: d65f03c0 ret __skb_ext_put(skb->extensions); ffff8000113a28b0: f9406e60 ldr x0, [x19,#216] ffff8000113a28b4: 94000000 bl 0 <__skb_ext_put> ffff8000113a28b4: R_AARCH64_CALL26 __skb_ext_put skb->active_extensions = 0; ffff8000113a28b8: 3901fe74 strb w20, [x19,#127] ffff8000113a28bc: 17fffff8 b ffff8000113a289c consume_skb(skb); ffff8000113a28c0: aa1303e0 mov x0, x19 ffff8000113a28c4: 94000000 bl 0 ffff8000113a28c4: R_AARCH64_CALL26 consume_skb ffff8000113a28c8: 17fffff6 b ffff8000113a28a0 ffff8000113a28cc : { ffff8000113a28cc: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a28d0: 910003fd mov x29, sp ffff8000113a28d4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a28d8: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a28dc: f9001bf7 str x23, [sp,#48] ffff8000113a28e0: aa0003f3 mov x19, x0 ffff8000113a28e4: aa1e03e0 mov x0, x30 ffff8000113a28e8: 94000000 bl 0 <_mcount> ffff8000113a28e8: R_AARCH64_CALL26 _mcount void dev_add_pack(struct packet_type *pt) ffff8000113a28ec: 79400260 ldrh w0, [x19] ffff8000113a28f0: f9400674 ldr x20, [x19,#8] if (pt->type == htons(ETH_P_ALL)) ffff8000113a28f4: 710c001f cmp w0, #0x300 ffff8000113a28f8: 54000480 b.eq ffff8000113a2988 return pt->dev ? &pt->dev->ptype_specific : ffff8000113a28fc: b40004d4 cbz x20, ffff8000113a2994 ffff8000113a2900: 91026294 add x20, x20, #0x98 __CMPXCHG_CASE(w, , acq_, 32, , a, , "memory", K) ffff8000113a2904: 90000017 adrp x23, ffff80001139e37c <__my_cpu_offset> ffff8000113a2904: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a2908: 910002e0 add x0, x23, #0x0 ffff8000113a2908: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a290c: 52800023 mov w3, #0x1 // #1 ffff8000113a2910: d2800002 mov x2, #0x0 // #0 ffff8000113a2914: 910c6005 add x5, x0, #0x318 ffff8000113a2918: f98000b1 prfm pstl1strm, [x5] ffff8000113a291c: 885ffca1 ldaxr w1, [x5] ffff8000113a2920: 4a020024 eor w4, w1, w2 ffff8000113a2924: 35000064 cbnz w4, ffff8000113a2930 ffff8000113a2928: 88047ca3 stxr w4, w3, [x5] ffff8000113a292c: 35ffff84 cbnz w4, ffff8000113a291c static inline bool atomic_try_cmpxchg_acquire(atomic_t *v, int *old, int new) { int r, o = *old; r = atomic_cmpxchg_acquire(v, o, new); if (unlikely(r != o)) ffff8000113a2930: 35000481 cbnz w1, ffff8000113a29c0 * the _rcu list-traversal primitives, such as * list_for_each_entry_rcu(). */ static inline void list_add_rcu(struct list_head *new, struct list_head *head) { __list_add_rcu(new, head, head->next); ffff8000113a2934: f9400295 ldr x21, [x20] list_add_rcu(&pt->list, head); ffff8000113a2938: 9100c276 add x22, x19, #0x30 if (!__list_add_valid(new, prev, next)) ffff8000113a293c: aa1603e0 mov x0, x22 ffff8000113a2940: aa1403e1 mov x1, x20 ffff8000113a2944: aa1503e2 mov x2, x21 ffff8000113a2948: 94000000 bl 0 <__list_add_valid> ffff8000113a2948: R_AARCH64_CALL26 __list_add_valid ffff8000113a294c: 53001c00 uxtb w0, w0 ffff8000113a2950: 340000a0 cbz w0, ffff8000113a2964 new->next = next; ffff8000113a2954: f9001a75 str x21, [x19,#48] new->prev = prev; ffff8000113a2958: f9001e74 str x20, [x19,#56] rcu_assign_pointer(list_next_rcu(prev), new); ffff8000113a295c: c89ffe96 stlr x22, [x20] next->prev = new; ffff8000113a2960: f90006b6 str x22, [x21,#8] static __always_inline void queued_spin_unlock(struct qspinlock *lock) { /* * unlock() needs release semantics: */ smp_store_release(&lock->locked, 0); ffff8000113a2964: 910002f7 add x23, x23, #0x0 ffff8000113a2964: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a2968: 52800000 mov w0, #0x0 // #0 ffff8000113a296c: 910c62f7 add x23, x23, #0x318 ffff8000113a2970: 089ffee0 stlrb w0, [x23] } ffff8000113a2974: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a2978: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a297c: f9401bf7 ldr x23, [sp,#48] ffff8000113a2980: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a2984: d65f03c0 ret return pt->dev ? &pt->dev->ptype_all : &ptype_all; ffff8000113a2988: b4000154 cbz x20, ffff8000113a29b0 ffff8000113a298c: 91022294 add x20, x20, #0x88 ffff8000113a2990: 17ffffdd b ffff8000113a2904 return pt->dev ? &pt->dev->ptype_specific : ffff8000113a2994: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113a2994: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a2998: 5ac00400 rev16 w0, w0 ffff8000113a299c: 91000294 add x20, x20, #0x0 ffff8000113a299c: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a29a0: d37c0c00 ubfiz x0, x0, #4, #4 ffff8000113a29a4: 9120c294 add x20, x20, #0x830 ffff8000113a29a8: 8b000294 add x20, x20, x0 ffff8000113a29ac: 17ffffd6 b ffff8000113a2904 return pt->dev ? &pt->dev->ptype_all : &ptype_all; ffff8000113a29b0: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113a29b0: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a29b4: 91000294 add x20, x20, #0x0 ffff8000113a29b4: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a29b8: 91200294 add x20, x20, #0x800 ffff8000113a29bc: 17ffffd2 b ffff8000113a2904 queued_spin_lock_slowpath(lock, val); ffff8000113a29c0: 910c6000 add x0, x0, #0x318 ffff8000113a29c4: 94000000 bl 0 ffff8000113a29c4: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113a29c8: 17ffffdb b ffff8000113a2934 ffff8000113a29cc : { ffff8000113a29cc: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a29d0: 910003fd mov x29, sp ffff8000113a29d4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a29d8: aa0003f3 mov x19, x0 ffff8000113a29dc: aa1e03e0 mov x0, x30 ffff8000113a29e0: 94000000 bl 0 <_mcount> ffff8000113a29e0: R_AARCH64_CALL26 _mcount ffff8000113a29e4: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113a29e4: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a29e8: f9400280 ldr x0, [x20] ffff8000113a29e8: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a29ec: f90017a0 str x0, [x29,#40] ffff8000113a29f0: f9402260 ldr x0, [x19,#64] { long old; unsigned long mask = BIT_MASK(nr); p += BIT_WORD(nr); if (!(READ_ONCE(*p) & mask)) ffff8000113a29f4: 36080180 tbz w0, #1, ffff8000113a2a24 ATOMIC64_OPS(andnot, bic, ) ffff8000113a29f8: d2800040 mov x0, #0x2 // #2 ffff8000113a29fc: 91010264 add x4, x19, #0x40 ffff8000113a2a00: f9800091 prfm pstl1strm, [x4] ffff8000113a2a04: c85f7c81 ldxr x1, [x4] ffff8000113a2a08: 8a200022 bic x2, x1, x0 ffff8000113a2a0c: c803fc82 stlxr w3, x2, [x4] ffff8000113a2a10: 35ffffa3 cbnz w3, ffff8000113a2a04 ffff8000113a2a14: d5033bbf dmb ish if (test_and_clear_bit(__LINK_STATE_PRESENT, &dev->state) && ffff8000113a2a18: 36080061 tbz w1, #1, ffff8000113a2a24 ffff8000113a2a1c: f9402260 ldr x0, [x19,#64] ffff8000113a2a20: 37000100 tbnz w0, #0, ffff8000113a2a40 } ffff8000113a2a24: f94017a1 ldr x1, [x29,#40] ffff8000113a2a28: f9400280 ldr x0, [x20] ffff8000113a2a28: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a2a2c: eb00003f cmp x1, x0 ffff8000113a2a30: 540000e1 b.ne ffff8000113a2a4c ffff8000113a2a34: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a2a38: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a2a3c: d65f03c0 ret netif_tx_stop_all_queues(dev); ffff8000113a2a40: aa1303e0 mov x0, x19 ffff8000113a2a44: 94000000 bl ffff8000113a233c ffff8000113a2a44: R_AARCH64_CALL26 netif_tx_stop_all_queues ffff8000113a2a48: 17fffff7 b ffff8000113a2a24 } ffff8000113a2a4c: 94000000 bl 0 <__stack_chk_fail> ffff8000113a2a4c: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a2a50 : { ffff8000113a2a50: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a2a54: 910003fd mov x29, sp ffff8000113a2a58: a90153f3 stp x19, x20, [sp,#16] ffff8000113a2a5c: f90013f5 str x21, [sp,#32] ffff8000113a2a60: aa0003f3 mov x19, x0 ffff8000113a2a64: aa1e03e0 mov x0, x30 ffff8000113a2a68: 94000000 bl 0 <_mcount> ffff8000113a2a68: R_AARCH64_CALL26 _mcount ffff8000113a2a6c: 90000015 adrp x21, 0 <__stack_chk_guard> ffff8000113a2a6c: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a2a70: f94002a0 ldr x0, [x21] ffff8000113a2a70: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a2a74: f9001fa0 str x0, [x29,#56] __CMPXCHG_CASE(w, , acq_, 32, , a, , "memory", K) ffff8000113a2a78: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113a2a78: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a2a7c: 91000280 add x0, x20, #0x0 ffff8000113a2a7c: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a2a80: 52800023 mov w3, #0x1 // #1 ffff8000113a2a84: d2800002 mov x2, #0x0 // #0 ffff8000113a2a88: 910c8005 add x5, x0, #0x320 ffff8000113a2a8c: f98000b1 prfm pstl1strm, [x5] ffff8000113a2a90: 885ffca1 ldaxr w1, [x5] ffff8000113a2a94: 4a020024 eor w4, w1, w2 ffff8000113a2a98: 35000064 cbnz w4, ffff8000113a2aa4 ffff8000113a2a9c: 88047ca3 stxr w4, w3, [x5] ffff8000113a2aa0: 35ffff84 cbnz w4, ffff8000113a2a90 ffff8000113a2aa4: 35000481 cbnz w1, ffff8000113a2b34 ffff8000113a2aa8: f9400a60 ldr x0, [x19,#16] ffff8000113a2aac: 362003e0 tbz w0, #4, ffff8000113a2b28 ATOMIC64_OPS(andnot, bic, ) ffff8000113a2ab0: d2800200 mov x0, #0x10 // #16 ffff8000113a2ab4: 8b000264 add x4, x19, x0 ffff8000113a2ab8: f9800091 prfm pstl1strm, [x4] ffff8000113a2abc: c85f7c81 ldxr x1, [x4] ffff8000113a2ac0: 8a200022 bic x2, x1, x0 ffff8000113a2ac4: c803fc82 stlxr w3, x2, [x4] ffff8000113a2ac8: 35ffffa3 cbnz w3, ffff8000113a2abc ffff8000113a2acc: d5033bbf dmb ish if (test_and_clear_bit(NAPI_STATE_HASHED, &napi->state)) { ffff8000113a2ad0: 362002c1 tbz w1, #4, ffff8000113a2b28 return !READ_ONCE(h->first); } static inline void __hlist_del(struct hlist_node *n) { struct hlist_node *next = n->next; ffff8000113a2ad4: f940ba60 ldr x0, [x19,#368] struct hlist_node **pprev = n->pprev; ffff8000113a2ad8: f940be61 ldr x1, [x19,#376] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a2adc: f9000020 str x0, [x1] WRITE_ONCE(*pprev, next); if (next) ffff8000113a2ae0: b4000040 cbz x0, ffff8000113a2ae8 ffff8000113a2ae4: f9000401 str x1, [x0,#8] ffff8000113a2ae8: d2802440 mov x0, #0x122 // #290 ffff8000113a2aec: f2fbd5a0 movk x0, #0xdead, lsl #48 ffff8000113a2af0: f900be60 str x0, [x19,#376] rcu_sync_needed = true; ffff8000113a2af4: 52800020 mov w0, #0x1 // #1 smp_store_release(&lock->locked, 0); ffff8000113a2af8: 91000294 add x20, x20, #0x0 ffff8000113a2af8: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a2afc: 52800001 mov w1, #0x0 // #0 ffff8000113a2b00: 910c8294 add x20, x20, #0x320 ffff8000113a2b04: 089ffe81 stlrb w1, [x20] } ffff8000113a2b08: f9401fa2 ldr x2, [x29,#56] ffff8000113a2b0c: f94002a1 ldr x1, [x21] ffff8000113a2b0c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a2b10: eb01005f cmp x2, x1 ffff8000113a2b14: 540000e1 b.ne ffff8000113a2b30 ffff8000113a2b18: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a2b1c: f94013f5 ldr x21, [sp,#32] ffff8000113a2b20: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a2b24: d65f03c0 ret bool rcu_sync_needed = false; ffff8000113a2b28: 52800000 mov w0, #0x0 // #0 ffff8000113a2b2c: 17fffff3 b ffff8000113a2af8 } ffff8000113a2b30: 94000000 bl 0 <__stack_chk_fail> ffff8000113a2b30: R_AARCH64_CALL26 __stack_chk_fail queued_spin_lock_slowpath(lock, val); ffff8000113a2b34: 910c8000 add x0, x0, #0x320 ffff8000113a2b38: 94000000 bl 0 ffff8000113a2b38: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113a2b3c: 17ffffdb b ffff8000113a2aa8 ffff8000113a2b40 : { ffff8000113a2b40: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a2b44: 910003fd mov x29, sp ffff8000113a2b48: a90153f3 stp x19, x20, [sp,#16] ffff8000113a2b4c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a2b50: f9001bf7 str x23, [sp,#48] ffff8000113a2b54: aa0003f4 mov x20, x0 ffff8000113a2b58: aa1e03e0 mov x0, x30 ffff8000113a2b5c: 94000000 bl 0 <_mcount> ffff8000113a2b5c: R_AARCH64_CALL26 _mcount __CMPXCHG_CASE(w, , acq_, 32, , a, , "memory", K) ffff8000113a2b60: 90000017 adrp x23, ffff80001139e37c <__my_cpu_offset> ffff8000113a2b60: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a2b64: 910002e2 add x2, x23, #0x0 ffff8000113a2b64: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a2b68: 52800023 mov w3, #0x1 // #1 ffff8000113a2b6c: d2800000 mov x0, #0x0 // #0 ffff8000113a2b70: 910ca045 add x5, x2, #0x328 ffff8000113a2b74: f98000b1 prfm pstl1strm, [x5] ffff8000113a2b78: 885ffca1 ldaxr w1, [x5] ffff8000113a2b7c: 4a000024 eor w4, w1, w0 ffff8000113a2b80: 35000064 cbnz w4, ffff8000113a2b8c ffff8000113a2b84: 88047ca3 stxr w4, w3, [x5] ffff8000113a2b88: 35ffff84 cbnz w4, ffff8000113a2b78 ffff8000113a2b8c: 35000541 cbnz w1, ffff8000113a2c34 list_for_each_entry(elem, &offload_base, list) { ffff8000113a2b90: 90000004 adrp x4, ffff80001139e37c <__my_cpu_offset> ffff8000113a2b90: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a2b94: 91000084 add x4, x4, #0x0 ffff8000113a2b94: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a2b98: f9440880 ldr x0, [x4,#2064] ffff8000113a2b9c: 91204084 add x4, x4, #0x810 ffff8000113a2ba0: eb00009f cmp x4, x0 ffff8000113a2ba4: d1008002 sub x2, x0, #0x20 ffff8000113a2ba8: 540001a0 b.eq ffff8000113a2bdc if (po->priority < elem->priority) ffff8000113a2bac: 79400683 ldrh w3, [x20,#2] ffff8000113a2bb0: 785e2000 ldurh w0, [x0,#-30] ffff8000113a2bb4: 6b03001f cmp w0, w3 ffff8000113a2bb8: 540000a9 b.ls ffff8000113a2bcc ffff8000113a2bbc: 14000008 b ffff8000113a2bdc ffff8000113a2bc0: 785e2021 ldurh w1, [x1,#-30] ffff8000113a2bc4: 6b03003f cmp w1, w3 ffff8000113a2bc8: 540000a8 b.hi ffff8000113a2bdc list_for_each_entry(elem, &offload_base, list) { ffff8000113a2bcc: f9401041 ldr x1, [x2,#32] ffff8000113a2bd0: eb01009f cmp x4, x1 ffff8000113a2bd4: d1008022 sub x2, x1, #0x20 ffff8000113a2bd8: 54ffff41 b.ne ffff8000113a2bc0 list_add_rcu(&po->list, elem->list.prev); ffff8000113a2bdc: f9401453 ldr x19, [x2,#40] ffff8000113a2be0: 91008296 add x22, x20, #0x20 __list_add_rcu(new, head, head->next); ffff8000113a2be4: f9400275 ldr x21, [x19] if (!__list_add_valid(new, prev, next)) ffff8000113a2be8: aa1603e0 mov x0, x22 ffff8000113a2bec: aa1303e1 mov x1, x19 ffff8000113a2bf0: aa1503e2 mov x2, x21 ffff8000113a2bf4: 94000000 bl 0 <__list_add_valid> ffff8000113a2bf4: R_AARCH64_CALL26 __list_add_valid ffff8000113a2bf8: 53001c00 uxtb w0, w0 ffff8000113a2bfc: 340000a0 cbz w0, ffff8000113a2c10 new->next = next; ffff8000113a2c00: f9001295 str x21, [x20,#32] new->prev = prev; ffff8000113a2c04: f9001693 str x19, [x20,#40] rcu_assign_pointer(list_next_rcu(prev), new); ffff8000113a2c08: c89ffe76 stlr x22, [x19] next->prev = new; ffff8000113a2c0c: f90006b6 str x22, [x21,#8] smp_store_release(&lock->locked, 0); ffff8000113a2c10: 910002f7 add x23, x23, #0x0 ffff8000113a2c10: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a2c14: 52800000 mov w0, #0x0 // #0 ffff8000113a2c18: 910ca2f7 add x23, x23, #0x328 ffff8000113a2c1c: 089ffee0 stlrb w0, [x23] } ffff8000113a2c20: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a2c24: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a2c28: f9401bf7 ldr x23, [sp,#48] ffff8000113a2c2c: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a2c30: d65f03c0 ret queued_spin_lock_slowpath(lock, val); ffff8000113a2c34: 910ca040 add x0, x2, #0x328 ffff8000113a2c38: 94000000 bl 0 ffff8000113a2c38: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113a2c3c: 17ffffd5 b ffff8000113a2b90 ffff8000113a2c40 : { ffff8000113a2c40: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a2c44: 910003fd mov x29, sp ffff8000113a2c48: a90153f3 stp x19, x20, [sp,#16] ffff8000113a2c4c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a2c50: a90363f7 stp x23, x24, [sp,#48] ffff8000113a2c54: aa0003f3 mov x19, x0 ffff8000113a2c58: aa1e03e0 mov x0, x30 ffff8000113a2c5c: aa0103f5 mov x21, x1 ffff8000113a2c60: 94000000 bl 0 <_mcount> ffff8000113a2c60: R_AARCH64_CALL26 _mcount if (!dev->netdev_ops || !dev->netdev_ops->ndo_fill_metadata_dst) ffff8000113a2c64: f940fa60 ldr x0, [x19,#496] ffff8000113a2c68: b4000a00 cbz x0, ffff8000113a2da8 ffff8000113a2c6c: f9411c00 ldr x0, [x0,#568] ffff8000113a2c70: b40009c0 cbz x0, ffff8000113a2da8 return (struct dst_entry *)(skb->_skb_refdst & SKB_DST_PTRMASK); ffff8000113a2c74: f9402eb4 ldr x20, [x21,#88] ffff8000113a2c78: 927ffa94 and x20, x20, #0xfffffffffffffffe static inline struct metadata_dst *skb_metadata_dst(const struct sk_buff *skb) { struct metadata_dst *md_dst = (struct metadata_dst *) skb_dst(skb); if (md_dst && md_dst->dst.flags & DST_METADATA) ffff8000113a2c7c: b4000074 cbz x20, ffff8000113a2c88 ffff8000113a2c80: 79407280 ldrh w0, [x20,#56] ffff8000113a2c84: 373800e0 tbnz w0, #7, ffff8000113a2ca0 return -ENOMEM; ffff8000113a2c88: 12800160 mov w0, #0xfffffff4 // #-12 } ffff8000113a2c8c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a2c90: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a2c94: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a2c98: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a2c9c: d65f03c0 ret { struct metadata_dst *md_dst = skb_metadata_dst(skb); int md_size; struct metadata_dst *new_md; if (!md_dst || md_dst->type != METADATA_IP_TUNNEL) ffff8000113a2ca0: b9407281 ldr w1, [x20,#112] ffff8000113a2ca4: 35ffff21 cbnz w1, ffff8000113a2c88 return ERR_PTR(-EINVAL); md_size = md_dst->u.tun_info.options_len; ffff8000113a2ca8: 39430298 ldrb w24, [x20,#192] new_md = metadata_dst_alloc(md_size, METADATA_IP_TUNNEL, GFP_ATOMIC); ffff8000113a2cac: 52814402 mov w2, #0xa20 // #2592 ffff8000113a2cb0: 2a1803e0 mov w0, w24 ffff8000113a2cb4: 94000000 bl 0 ffff8000113a2cb4: R_AARCH64_CALL26 metadata_dst_alloc ffff8000113a2cb8: aa0003f6 mov x22, x0 if (!new_md) ffff8000113a2cbc: b4fffe60 cbz x0, ffff8000113a2c88 return __builtin_memcpy(p, q, size); ffff8000113a2cc0: 9101e017 add x23, x0, #0x78 return ERR_PTR(-ENOMEM); memcpy(&new_md->u.tun_info, &md_dst->u.tun_info, ffff8000113a2cc4: 53001f02 uxtb w2, w24 ffff8000113a2cc8: aa1703e0 mov x0, x23 ffff8000113a2ccc: 9101e281 add x1, x20, #0x78 ffff8000113a2cd0: 91014042 add x2, x2, #0x50 ffff8000113a2cd4: 94000000 bl 0 ffff8000113a2cd4: R_AARCH64_CALL26 memcpy if (skb->_skb_refdst) { ffff8000113a2cd8: f9402ea0 ldr x0, [x21,#88] ffff8000113a2cdc: b4000060 cbz x0, ffff8000113a2ce8 if (!(refdst & SKB_DST_NOREF)) ffff8000113a2ce0: 360003e0 tbz w0, #0, ffff8000113a2d5c skb->_skb_refdst = 0UL; ffff8000113a2ce4: f9002ebf str xzr, [x21,#88] __READ_ONCE_SIZE; ffff8000113a2ce8: b94042c0 ldr w0, [x22,#64] atomic_fetch_add_unless(atomic_t *v, int a, int u) { int c = atomic_read(v); do { if (unlikely(c == u)) ffff8000113a2cec: 340005a0 cbz w0, ffff8000113a2da0 #if !defined(arch_atomic_cmpxchg_relaxed) || defined(arch_atomic_cmpxchg) static inline int atomic_cmpxchg(atomic_t *v, int old, int new) { kasan_check_write(v, sizeof(*v)); return arch_atomic_cmpxchg(v, old, new); ffff8000113a2cf0: 910102c2 add x2, x22, #0x40 __CMPXCHG_CASE(rel_, 16) __CMPXCHG_CASE(rel_, 32) __CMPXCHG_CASE(rel_, 64) __CMPXCHG_CASE(mb_, 8) __CMPXCHG_CASE(mb_, 16) __CMPXCHG_CASE(mb_, 32) ffff8000113a2cf4: 2a0003e1 mov w1, w0 break; } while (!atomic_try_cmpxchg(v, &c, c + a)); ffff8000113a2cf8: 11000403 add w3, w0, #0x1 ffff8000113a2cfc: f9800051 prfm pstl1strm, [x2] ffff8000113a2d00: 885f7c46 ldxr w6, [x2] ffff8000113a2d04: 4a0100c4 eor w4, w6, w1 ffff8000113a2d08: 35000084 cbnz w4, ffff8000113a2d18 ffff8000113a2d0c: 8804fc43 stlxr w4, w3, [x2] ffff8000113a2d10: 35ffff84 cbnz w4, ffff8000113a2d00 ffff8000113a2d14: d5033bbf dmb ish if (unlikely(r != o)) ffff8000113a2d18: 6b06001f cmp w0, w6 ffff8000113a2d1c: 540003c1 b.ne ffff8000113a2d94 skb->_skb_refdst = (unsigned long)dst; ffff8000113a2d20: f9002eb6 str x22, [x21,#88] static inline struct ip_tunnel_info *skb_tunnel_info_unclone(struct sk_buff *skb) { struct metadata_dst *dst; dst = tun_dst_unclone(skb); if (IS_ERR(dst)) ffff8000113a2d24: b14006df cmn x22, #0x1, lsl #12 ffff8000113a2d28: 54fffb08 b.hi ffff8000113a2c88 if (unlikely(!(info->mode & IP_TUNNEL_INFO_TX))) ffff8000113a2d2c: 394126e0 ldrb w0, [x23,#73] ffff8000113a2d30: 360003c0 tbz w0, #0, ffff8000113a2da8 return dev->netdev_ops->ndo_fill_metadata_dst(dev, skb); ffff8000113a2d34: f940fa61 ldr x1, [x19,#496] ffff8000113a2d38: aa1303e0 mov x0, x19 ffff8000113a2d3c: f9411c22 ldr x2, [x1,#568] ffff8000113a2d40: aa1503e1 mov x1, x21 ffff8000113a2d44: d63f0040 blr x2 } ffff8000113a2d48: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a2d4c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a2d50: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a2d54: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a2d58: d65f03c0 ret dst_release((struct dst_entry *)(refdst & SKB_DST_PTRMASK)); ffff8000113a2d5c: 927ff800 and x0, x0, #0xfffffffffffffffe ffff8000113a2d60: 94000000 bl 0 ffff8000113a2d60: R_AARCH64_CALL26 dst_release skb->_skb_refdst = 0UL; ffff8000113a2d64: f9002ebf str xzr, [x21,#88] ffff8000113a2d68: 17ffffe0 b ffff8000113a2ce8 __CMPXCHG_CASE(w, , mb_, 32, dmb ish, , l, "memory", K) ffff8000113a2d6c: f9800051 prfm pstl1strm, [x2] ffff8000113a2d70: 885f7c45 ldxr w5, [x2] ffff8000113a2d74: 4a0400a7 eor w7, w5, w4 ffff8000113a2d78: 35000087 cbnz w7, ffff8000113a2d88 ffff8000113a2d7c: 8807fc43 stlxr w7, w3, [x2] ffff8000113a2d80: 35ffff87 cbnz w7, ffff8000113a2d70 ffff8000113a2d84: d5033bbf dmb ish ffff8000113a2d88: 6b0500df cmp w6, w5 ffff8000113a2d8c: 54fffca0 b.eq ffff8000113a2d20 ffff8000113a2d90: 2a0503e6 mov w6, w5 ffff8000113a2d94: 2a0603e4 mov w4, w6 } while (!atomic_try_cmpxchg(v, &c, c + a)); ffff8000113a2d98: 110004c3 add w3, w6, #0x1 if (unlikely(c == u)) ffff8000113a2d9c: 35fffe86 cbnz w6, ffff8000113a2d6c WARN_ON(atomic_inc_not_zero(&dst->__refcnt) == 0); ffff8000113a2da0: d4210000 brk #0x800 ffff8000113a2da4: 17ffffdf b ffff8000113a2d20 return -EINVAL; ffff8000113a2da8: 128002a0 mov w0, #0xffffffea // #-22 ffff8000113a2dac: 17ffffb8 b ffff8000113a2c8c ffff8000113a2db0 : { ffff8000113a2db0: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a2db4: 910003fd mov x29, sp ffff8000113a2db8: a90153f3 stp x19, x20, [sp,#16] ffff8000113a2dbc: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a2dc0: f9001bf7 str x23, [sp,#48] ffff8000113a2dc4: aa0003f3 mov x19, x0 ffff8000113a2dc8: aa1e03e0 mov x0, x30 ffff8000113a2dcc: aa0103f6 mov x22, x1 ffff8000113a2dd0: aa0203f5 mov x21, x2 ffff8000113a2dd4: 94000000 bl 0 <_mcount> ffff8000113a2dd4: R_AARCH64_CALL26 _mcount rtnl_lock(); ffff8000113a2dd8: 94000000 bl 0 ffff8000113a2dd8: R_AARCH64_CALL26 rtnl_lock err = __register_netdevice_notifier_net(dev_net(dev), nb, false); ffff8000113a2ddc: f9427a60 ldr x0, [x19,#1264] ffff8000113a2de0: aa1603e1 mov x1, x22 ffff8000113a2de4: 52800002 mov w2, #0x0 // #0 ffff8000113a2de8: 97fff674 bl ffff8000113a07b8 <__register_netdevice_notifier_net> ffff8000113a2dec: 2a0003f4 mov w20, w0 if (!err) { ffff8000113a2df0: 34000100 cbz w0, ffff8000113a2e10 rtnl_unlock(); ffff8000113a2df4: 94000000 bl 0 ffff8000113a2df4: R_AARCH64_CALL26 rtnl_unlock } ffff8000113a2df8: 2a1403e0 mov w0, w20 ffff8000113a2dfc: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a2e00: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a2e04: f9401bf7 ldr x23, [sp,#48] ffff8000113a2e08: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a2e0c: d65f03c0 ret nn->nb = nb; ffff8000113a2e10: f9000ab6 str x22, [x21,#16] __list_add(new, head, head->next); ffff8000113a2e14: f9446276 ldr x22, [x19,#2240] list_add(&nn->list, &dev->net_notifier_list); ffff8000113a2e18: 91230277 add x23, x19, #0x8c0 if (!__list_add_valid(new, prev, next)) ffff8000113a2e1c: aa1503e0 mov x0, x21 ffff8000113a2e20: aa1703e1 mov x1, x23 ffff8000113a2e24: aa1603e2 mov x2, x22 ffff8000113a2e28: 94000000 bl 0 <__list_add_valid> ffff8000113a2e28: R_AARCH64_CALL26 __list_add_valid ffff8000113a2e2c: 53001c00 uxtb w0, w0 ffff8000113a2e30: 34fffe20 cbz w0, ffff8000113a2df4 next->prev = new; ffff8000113a2e34: f90006d5 str x21, [x22,#8] new->prev = prev; ffff8000113a2e38: f90006b7 str x23, [x21,#8] new->next = next; ffff8000113a2e3c: f90002b6 str x22, [x21] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a2e40: f9046275 str x21, [x19,#2240] rtnl_unlock(); ffff8000113a2e44: 94000000 bl 0 ffff8000113a2e44: R_AARCH64_CALL26 rtnl_unlock } ffff8000113a2e48: 2a1403e0 mov w0, w20 ffff8000113a2e4c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a2e50: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a2e54: f9401bf7 ldr x23, [sp,#48] ffff8000113a2e58: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a2e5c: d65f03c0 ret ffff8000113a2e60 : { ffff8000113a2e60: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a2e64: 910003fd mov x29, sp ffff8000113a2e68: a90153f3 stp x19, x20, [sp,#16] ffff8000113a2e6c: aa0203e3 mov x3, x2 ffff8000113a2e70: aa0003f3 mov x19, x0 ffff8000113a2e74: aa0103f4 mov x20, x1 bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113a2e78: b40000c0 cbz x0, ffff8000113a2e90 return skb->head + skb->end; ffff8000113a2e7c: f9406002 ldr x2, [x0,#192] ffff8000113a2e80: b940bc01 ldr w1, [x0,#188] ffff8000113a2e84: 8b010041 add x1, x2, x1 bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113a2e88: 39400c22 ldrb w2, [x1,#3] ffff8000113a2e8c: 371802c2 tbnz w2, #3, ffff8000113a2ee4 refcount_inc(&skb->users); ffff8000113a2e90: 91035260 add x0, x19, #0xd4 ATOMIC_OPS(add, add, I) ffff8000113a2e94: f9800011 prfm pstl1strm, [x0] ffff8000113a2e98: 885f7c01 ldxr w1, [x0] ffff8000113a2e9c: 11000422 add w2, w1, #0x1 ffff8000113a2ea0: 88047c02 stxr w4, w2, [x0] ffff8000113a2ea4: 35ffffa4 cbnz w4, ffff8000113a2e98 */ static inline void refcount_add(int i, refcount_t *r) { int old = atomic_fetch_add_relaxed(i, &r->refs); if (unlikely(!old)) ffff8000113a2ea8: 6b1f003f cmp w1, wzr ffff8000113a2eac: 54000380 b.eq ffff8000113a2f1c refcount_warn_saturate(r, REFCOUNT_ADD_UAF); else if (unlikely(old < 0 || old + i < 0)) ffff8000113a2eb0: 540002cb b.lt ffff8000113a2f08 ffff8000113a2eb4: 3100043f cmn w1, #0x1 ffff8000113a2eb8: 54000284 b.mi ffff8000113a2f08 return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); ffff8000113a2ebc: f9400a84 ldr x4, [x20,#16] ffff8000113a2ec0: f9400a61 ldr x1, [x19,#16] ffff8000113a2ec4: aa1303e0 mov x0, x19 ffff8000113a2ec8: aa1403e2 mov x2, x20 ffff8000113a2ecc: d63f0080 blr x4 ffff8000113a2ed0: 2a0003e4 mov w4, w0 } ffff8000113a2ed4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a2ed8: 2a0403e0 mov w0, w4 ffff8000113a2edc: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a2ee0: d65f03c0 ret if (likely(!skb_zcopy(skb))) ffff8000113a2ee4: f9401421 ldr x1, [x1,#40] ffff8000113a2ee8: b4fffd41 cbz x1, ffff8000113a2e90 return skb_copy_ubufs(skb, gfp_mask); ffff8000113a2eec: 52814401 mov w1, #0xa20 // #2592 ffff8000113a2ef0: f90017a3 str x3, [x29,#40] ffff8000113a2ef4: 94000000 bl 0 ffff8000113a2ef4: R_AARCH64_CALL26 skb_copy_ubufs return -ENOMEM; ffff8000113a2ef8: 12800164 mov w4, #0xfffffff4 // #-12 if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) ffff8000113a2efc: f94017a3 ldr x3, [x29,#40] ffff8000113a2f00: 35fffea0 cbnz w0, ffff8000113a2ed4 ffff8000113a2f04: 17ffffe3 b ffff8000113a2e90 refcount_warn_saturate(r, REFCOUNT_ADD_OVF); ffff8000113a2f08: 52800021 mov w1, #0x1 // #1 ffff8000113a2f0c: f90017a3 str x3, [x29,#40] ffff8000113a2f10: 94000000 bl 0 ffff8000113a2f10: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113a2f14: f94017a3 ldr x3, [x29,#40] ffff8000113a2f18: 17ffffe9 b ffff8000113a2ebc refcount_warn_saturate(r, REFCOUNT_ADD_UAF); ffff8000113a2f1c: 52800041 mov w1, #0x2 // #2 ffff8000113a2f20: f90017a3 str x3, [x29,#40] ffff8000113a2f24: 94000000 bl 0 ffff8000113a2f24: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113a2f28: f94017a3 ldr x3, [x29,#40] ffff8000113a2f2c: 17ffffe4 b ffff8000113a2ebc ffff8000113a2f30 : { ffff8000113a2f30: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a2f34: 910003fd mov x29, sp ffff8000113a2f38: a90153f3 stp x19, x20, [sp,#16] ffff8000113a2f3c: f90013f5 str x21, [sp,#32] ffff8000113a2f40: aa0003f3 mov x19, x0 ffff8000113a2f44: aa1e03e0 mov x0, x30 ffff8000113a2f48: 94000000 bl 0 <_mcount> ffff8000113a2f48: R_AARCH64_CALL26 _mcount __list_add(new, head->prev, head); ffff8000113a2f4c: f9400675 ldr x21, [x19,#8] list_add_tail(&napi->poll_list, &sd->poll_list); ffff8000113a2f50: 91044274 add x20, x19, #0x110 if (!__list_add_valid(new, prev, next)) ffff8000113a2f54: aa1403e0 mov x0, x20 ffff8000113a2f58: aa1503e1 mov x1, x21 ffff8000113a2f5c: aa1303e2 mov x2, x19 ffff8000113a2f60: 94000000 bl 0 <__list_add_valid> ffff8000113a2f60: R_AARCH64_CALL26 __list_add_valid ffff8000113a2f64: 53001c00 uxtb w0, w0 ffff8000113a2f68: 340000a0 cbz w0, ffff8000113a2f7c next->prev = new; ffff8000113a2f6c: f9000674 str x20, [x19,#8] new->next = next; ffff8000113a2f70: f9008a73 str x19, [x19,#272] new->prev = prev; ffff8000113a2f74: f9008e75 str x21, [x19,#280] ffff8000113a2f78: f90002b4 str x20, [x21] __raise_softirq_irqoff(NET_RX_SOFTIRQ); ffff8000113a2f7c: 52800060 mov w0, #0x3 // #3 ffff8000113a2f80: 94000000 bl 0 <__raise_softirq_irqoff> ffff8000113a2f80: R_AARCH64_CALL26 __raise_softirq_irqoff sd->received_rps++; ffff8000113a2f84: b9403260 ldr w0, [x19,#48] ffff8000113a2f88: 11000400 add w0, w0, #0x1 ffff8000113a2f8c: b9003260 str w0, [x19,#48] } ffff8000113a2f90: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a2f94: f94013f5 ldr x21, [sp,#32] ffff8000113a2f98: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a2f9c: d65f03c0 ret ffff8000113a2fa0 : { ffff8000113a2fa0: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a2fa4: 910003fd mov x29, sp ffff8000113a2fa8: a90153f3 stp x19, x20, [sp,#16] ffff8000113a2fac: f90013f5 str x21, [sp,#32] ffff8000113a2fb0: aa0103f3 mov x19, x1 ffff8000113a2fb4: aa0003f5 mov x21, x0 ffff8000113a2fb8: aa1e03e0 mov x0, x30 ffff8000113a2fbc: 94000000 bl 0 <_mcount> ffff8000113a2fbc: R_AARCH64_CALL26 _mcount hlist_add_head_rcu(&name_node->hlist, ffff8000113a2fc0: f9401674 ldr x20, [x19,#40] __kernel_size_t ret = __real_strnlen(p, maxlen < p_size ? maxlen : p_size); ffff8000113a2fc4: d2800201 mov x1, #0x10 // #16 ffff8000113a2fc8: aa1403e0 mov x0, x20 ffff8000113a2fcc: 94000000 bl 0 ffff8000113a2fcc: R_AARCH64_CALL26 strnlen if (p_size <= ret && maxlen != ret) ffff8000113a2fd0: b100041f cmn x0, #0x1 __kernel_size_t ret = __real_strnlen(p, maxlen < p_size ? maxlen : p_size); ffff8000113a2fd4: aa0003e2 mov x2, x0 if (p_size <= ret && maxlen != ret) ffff8000113a2fd8: 540002a0 b.eq ffff8000113a302c unsigned int hash = full_name_hash(net, name, strnlen(name, IFNAMSIZ)); ffff8000113a2fdc: aa1403e1 mov x1, x20 ffff8000113a2fe0: aa1503e0 mov x0, x21 ffff8000113a2fe4: 94000000 bl 0 ffff8000113a2fe4: R_AARCH64_CALL26 full_name_hash ffff8000113a2fe8: 5290c8e1 mov w1, #0x8647 // #34375 ffff8000113a2fec: 72ac3901 movk w1, #0x61c8, lsl #16 ffff8000113a2ff0: 1b017c00 mul w0, w0, w1 return &net->dev_name_head[hash_32(hash, NETDEV_HASHBITS)]; ffff8000113a2ff4: f94096a2 ldr x2, [x21,#296] ffff8000113a2ff8: d3587c00 ubfx x0, x0, #24, #8 ffff8000113a2ffc: d37df000 lsl x0, x0, #3 * list-traversal primitive must be guarded by rcu_read_lock(). */ static inline void hlist_add_head_rcu(struct hlist_node *n, struct hlist_head *h) { struct hlist_node *first = h->first; ffff8000113a3000: f8606841 ldr x1, [x2,x0] ffff8000113a3004: 8b000040 add x0, x2, x0 n->next = first; ffff8000113a3008: f9000261 str x1, [x19] ffff8000113a300c: f9000660 str x0, [x19,#8] WRITE_ONCE(n->pprev, &h->first); rcu_assign_pointer(hlist_first_rcu(h), n); ffff8000113a3010: c89ffc13 stlr x19, [x0] if (first) ffff8000113a3014: b4000041 cbz x1, ffff8000113a301c ffff8000113a3018: f9000433 str x19, [x1,#8] } ffff8000113a301c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a3020: f94013f5 ldr x21, [sp,#32] ffff8000113a3024: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a3028: d65f03c0 ret fortify_panic(__func__); ffff8000113a302c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a302c: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x90 ffff8000113a3030: 91000000 add x0, x0, #0x0 ffff8000113a3030: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x90 ffff8000113a3034: 91044000 add x0, x0, #0x110 ffff8000113a3038: 94000000 bl 0 ffff8000113a3038: R_AARCH64_CALL26 fortify_panic ffff8000113a303c : { ffff8000113a303c: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a3040: 910003fd mov x29, sp ffff8000113a3044: a90153f3 stp x19, x20, [sp,#16] ffff8000113a3048: f90013f5 str x21, [sp,#32] ffff8000113a304c: aa0003f4 mov x20, x0 ffff8000113a3050: aa1e03e0 mov x0, x30 ffff8000113a3054: 94000000 bl 0 <_mcount> ffff8000113a3054: R_AARCH64_CALL26 _mcount ffff8000113a3058: 90000015 adrp x21, 0 <__stack_chk_guard> ffff8000113a3058: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a305c: f94002a0 ldr x0, [x21] ffff8000113a305c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard p += BIT_WORD(nr); ffff8000113a3060: 91004293 add x19, x20, #0x10 ffff8000113a3064: f9001fa0 str x0, [x29,#56] might_sleep(); ffff8000113a3068: 94000000 bl 0 <_cond_resched> ffff8000113a3068: R_AARCH64_CALL26 _cond_resched ATOMIC64_OPS(or, orr, L) ffff8000113a306c: f9800271 prfm pstl1strm, [x19] ffff8000113a3070: c85f7e60 ldxr x0, [x19] ffff8000113a3074: b27e0000 orr x0, x0, #0x4 ffff8000113a3078: c8017e60 stxr w1, x0, [x19] ffff8000113a307c: 35ffffa1 cbnz w1, ffff8000113a3070 ffff8000113a3080: 14000003 b ffff8000113a308c msleep(1); ffff8000113a3084: 52800020 mov w0, #0x1 // #1 ffff8000113a3088: 94000000 bl 0 ffff8000113a3088: R_AARCH64_CALL26 msleep __READ_ONCE_SIZE; ffff8000113a308c: f9400a80 ldr x0, [x20,#16] if (READ_ONCE(*p) & mask) ffff8000113a3090: 3707ffa0 tbnz w0, #0, ffff8000113a3084 ffff8000113a3094: f9800271 prfm pstl1strm, [x19] ffff8000113a3098: c85f7e60 ldxr x0, [x19] ffff8000113a309c: b2400001 orr x1, x0, #0x1 ffff8000113a30a0: c802fe61 stlxr w2, x1, [x19] ffff8000113a30a4: 35ffffa2 cbnz w2, ffff8000113a3098 ffff8000113a30a8: d5033bbf dmb ish while (test_and_set_bit(NAPI_STATE_SCHED, &n->state)) ffff8000113a30ac: 3707fec0 tbnz w0, #0, ffff8000113a3084 ffff8000113a30b0: f9400a80 ldr x0, [x20,#16] ffff8000113a30b4: 361800a0 tbz w0, #3, ffff8000113a30c8 msleep(1); ffff8000113a30b8: 52800020 mov w0, #0x1 // #1 ffff8000113a30bc: 94000000 bl 0 ffff8000113a30bc: R_AARCH64_CALL26 msleep ffff8000113a30c0: f9400a80 ldr x0, [x20,#16] ffff8000113a30c4: 371fffa0 tbnz w0, #3, ffff8000113a30b8 ffff8000113a30c8: f9800271 prfm pstl1strm, [x19] ffff8000113a30cc: c85f7e60 ldxr x0, [x19] ffff8000113a30d0: b27d0001 orr x1, x0, #0x8 ffff8000113a30d4: c802fe61 stlxr w2, x1, [x19] ffff8000113a30d8: 35ffffa2 cbnz w2, ffff8000113a30cc ffff8000113a30dc: d5033bbf dmb ish while (test_and_set_bit(NAPI_STATE_NPSVC, &n->state)) ffff8000113a30e0: 371ffec0 tbnz w0, #3, ffff8000113a30b8 hrtimer_cancel(&n->timer); ffff8000113a30e4: 91048280 add x0, x20, #0x120 ffff8000113a30e8: 94000000 bl 0 ffff8000113a30e8: R_AARCH64_CALL26 hrtimer_cancel ATOMIC64_OPS(andnot, bic, ) ffff8000113a30ec: d2800080 mov x0, #0x4 // #4 ffff8000113a30f0: 91004284 add x4, x20, #0x10 ffff8000113a30f4: f9800091 prfm pstl1strm, [x4] ffff8000113a30f8: c85f7c81 ldxr x1, [x4] ffff8000113a30fc: 8a200021 bic x1, x1, x0 ffff8000113a3100: c8027c81 stxr w2, x1, [x4] ffff8000113a3104: 35ffffa2 cbnz w2, ffff8000113a30f8 } ffff8000113a3108: f9401fa1 ldr x1, [x29,#56] ffff8000113a310c: f94002a0 ldr x0, [x21] ffff8000113a310c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a3110: eb00003f cmp x1, x0 ffff8000113a3114: 540000a1 b.ne ffff8000113a3128 ffff8000113a3118: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a311c: f94013f5 ldr x21, [sp,#32] ffff8000113a3120: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a3124: d65f03c0 ret ffff8000113a3128: 94000000 bl 0 <__stack_chk_fail> ffff8000113a3128: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a312c <__netdev_name_node_alt_destroy>: { ffff8000113a312c: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a3130: 910003fd mov x29, sp ffff8000113a3134: f9000bf3 str x19, [sp,#16] ffff8000113a3138: aa0003f3 mov x19, x0 ffff8000113a313c: aa1e03e0 mov x0, x30 ffff8000113a3140: 94000000 bl 0 <_mcount> ffff8000113a3140: R_AARCH64_CALL26 _mcount if (!__list_del_entry_valid(entry)) ffff8000113a3144: 91004260 add x0, x19, #0x10 ffff8000113a3148: 94000000 bl 0 <__list_del_entry_valid> ffff8000113a3148: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113a314c: 53001c00 uxtb w0, w0 ffff8000113a3150: 340000a0 cbz w0, ffff8000113a3164 <__netdev_name_node_alt_destroy+0x38> __list_del(entry->prev, entry->next); ffff8000113a3154: f9400e60 ldr x0, [x19,#24] ffff8000113a3158: f9400a61 ldr x1, [x19,#16] next->prev = prev; ffff8000113a315c: f9000420 str x0, [x1,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a3160: f9000001 str x1, [x0] entry->next = LIST_POISON1; ffff8000113a3164: d2802002 mov x2, #0x100 // #256 entry->prev = LIST_POISON2; ffff8000113a3168: d2802441 mov x1, #0x122 // #290 entry->next = LIST_POISON1; ffff8000113a316c: f2fbd5a2 movk x2, #0xdead, lsl #48 entry->prev = LIST_POISON2; ffff8000113a3170: f2fbd5a1 movk x1, #0xdead, lsl #48 struct hlist_node *next = n->next; ffff8000113a3174: f9400260 ldr x0, [x19] struct hlist_node **pprev = n->pprev; ffff8000113a3178: f9400663 ldr x3, [x19,#8] entry->next = LIST_POISON1; ffff8000113a317c: f9000a62 str x2, [x19,#16] entry->prev = LIST_POISON2; ffff8000113a3180: f9000e61 str x1, [x19,#24] ffff8000113a3184: f9000060 str x0, [x3] if (next) ffff8000113a3188: b4000040 cbz x0, ffff8000113a3190 <__netdev_name_node_alt_destroy+0x64> ffff8000113a318c: f9000403 str x3, [x0,#8] ffff8000113a3190: d2802441 mov x1, #0x122 // #290 ffff8000113a3194: f2fbd5a1 movk x1, #0xdead, lsl #48 kfree(name_node->name); ffff8000113a3198: f9401660 ldr x0, [x19,#40] ffff8000113a319c: f9000661 str x1, [x19,#8] ffff8000113a31a0: 94000000 bl 0 ffff8000113a31a0: R_AARCH64_CALL26 kfree kfree(name_node); ffff8000113a31a4: aa1303e0 mov x0, x19 ffff8000113a31a8: 94000000 bl 0 ffff8000113a31a8: R_AARCH64_CALL26 kfree } ffff8000113a31ac: f9400bf3 ldr x19, [sp,#16] ffff8000113a31b0: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a31b4: d65f03c0 ret ffff8000113a31b8 : { ffff8000113a31b8: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a31bc: 910003fd mov x29, sp ffff8000113a31c0: f9000bf3 str x19, [sp,#16] ffff8000113a31c4: aa0003f3 mov x19, x0 ffff8000113a31c8: aa1e03e0 mov x0, x30 ffff8000113a31cc: f90017a1 str x1, [x29,#40] ffff8000113a31d0: 94000000 bl 0 <_mcount> ffff8000113a31d0: R_AARCH64_CALL26 _mcount name_node = netdev_name_node_lookup(net, name); ffff8000113a31d4: f9427a60 ldr x0, [x19,#1264] ffff8000113a31d8: f94017a1 ldr x1, [x29,#40] ffff8000113a31dc: 97fff125 bl ffff80001139f670 if (!name_node) ffff8000113a31e0: b4000200 cbz x0, ffff8000113a3220 if (name_node == dev->name_node || name_node->dev != dev) ffff8000113a31e4: f9400a62 ldr x2, [x19,#16] ffff8000113a31e8: eb00005f cmp x2, x0 ffff8000113a31ec: 54000120 b.eq ffff8000113a3210 ffff8000113a31f0: f9401001 ldr x1, [x0,#32] ffff8000113a31f4: eb13003f cmp x1, x19 ffff8000113a31f8: 540000c1 b.ne ffff8000113a3210 __netdev_name_node_alt_destroy(name_node); ffff8000113a31fc: 97ffffcc bl ffff8000113a312c <__netdev_name_node_alt_destroy> return 0; ffff8000113a3200: 52800000 mov w0, #0x0 // #0 } ffff8000113a3204: f9400bf3 ldr x19, [sp,#16] ffff8000113a3208: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a320c: d65f03c0 ret ffff8000113a3210: f9400bf3 ldr x19, [sp,#16] return -EINVAL; ffff8000113a3214: 128002a0 mov w0, #0xffffffea // #-22 } ffff8000113a3218: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a321c: d65f03c0 ret return -ENOENT; ffff8000113a3220: 12800020 mov w0, #0xfffffffe // #-2 ffff8000113a3224: 17fffff8 b ffff8000113a3204 ffff8000113a3228 : { ffff8000113a3228: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a322c: 910003fd mov x29, sp ffff8000113a3230: a90153f3 stp x19, x20, [sp,#16] ffff8000113a3234: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a3238: a90363f7 stp x23, x24, [sp,#48] ffff8000113a323c: aa0003f4 mov x20, x0 ffff8000113a3240: aa1e03e0 mov x0, x30 ffff8000113a3244: aa0103f3 mov x19, x1 ffff8000113a3248: 94000000 bl 0 <_mcount> ffff8000113a3248: R_AARCH64_CALL26 _mcount ffff8000113a324c: f9427a95 ldr x21, [x20,#1264] name_node = netdev_name_node_lookup(net, name); ffff8000113a3250: aa1303e1 mov x1, x19 ffff8000113a3254: aa1503e0 mov x0, x21 ffff8000113a3258: 97fff106 bl ffff80001139f670 ffff8000113a325c: aa0003f6 mov x22, x0 if (name_node) ffff8000113a3260: b50003a0 cbnz x0, ffff8000113a32d4 name_node = netdev_name_node_alloc(dev, name); ffff8000113a3264: aa1303e1 mov x1, x19 ffff8000113a3268: aa1403e0 mov x0, x20 ffff8000113a326c: 97fff135 bl ffff80001139f740 ffff8000113a3270: aa0003f3 mov x19, x0 if (!name_node) ffff8000113a3274: b40003c0 cbz x0, ffff8000113a32ec netdev_name_node_add(net, name_node); ffff8000113a3278: aa1503e0 mov x0, x21 ffff8000113a327c: aa1303e1 mov x1, x19 ffff8000113a3280: 97ffff48 bl ffff8000113a2fa0 list_add_tail(&name_node->list, &dev->name_node->list); ffff8000113a3284: f9400a94 ldr x20, [x20,#16] ffff8000113a3288: 91004277 add x23, x19, #0x10 __list_add(new, head->prev, head); ffff8000113a328c: f9400e95 ldr x21, [x20,#24] ffff8000113a3290: 91004298 add x24, x20, #0x10 if (!__list_add_valid(new, prev, next)) ffff8000113a3294: aa1503e1 mov x1, x21 ffff8000113a3298: aa1703e0 mov x0, x23 ffff8000113a329c: aa1803e2 mov x2, x24 ffff8000113a32a0: 94000000 bl 0 <__list_add_valid> ffff8000113a32a0: R_AARCH64_CALL26 __list_add_valid ffff8000113a32a4: 53001c01 uxtb w1, w0 return 0; ffff8000113a32a8: 2a1603e0 mov w0, w22 ffff8000113a32ac: 340000a1 cbz w1, ffff8000113a32c0 next->prev = new; ffff8000113a32b0: f9000e97 str x23, [x20,#24] new->next = next; ffff8000113a32b4: f9000a78 str x24, [x19,#16] new->prev = prev; ffff8000113a32b8: f9000e75 str x21, [x19,#24] ffff8000113a32bc: f90002b7 str x23, [x21] } ffff8000113a32c0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a32c4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a32c8: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a32cc: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a32d0: d65f03c0 ret return -EEXIST; ffff8000113a32d4: 12800200 mov w0, #0xffffffef // #-17 } ffff8000113a32d8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a32dc: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a32e0: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a32e4: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a32e8: d65f03c0 ret return -ENOMEM; ffff8000113a32ec: 12800160 mov w0, #0xfffffff4 // #-12 ffff8000113a32f0: 17fffff4 b ffff8000113a32c0 ffff8000113a32f4 : { ffff8000113a32f4: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a32f8: 910003fd mov x29, sp ffff8000113a32fc: a90153f3 stp x19, x20, [sp,#16] ffff8000113a3300: aa0003f4 mov x20, x0 ffff8000113a3304: aa1e03e0 mov x0, x30 ffff8000113a3308: aa0203f3 mov x19, x2 ffff8000113a330c: f90017a1 str x1, [x29,#40] ffff8000113a3310: 94000000 bl 0 <_mcount> ffff8000113a3310: R_AARCH64_CALL26 _mcount rtnl_lock(); ffff8000113a3314: 94000000 bl 0 ffff8000113a3314: R_AARCH64_CALL26 rtnl_lock if (!__list_del_entry_valid(entry)) ffff8000113a3318: aa1303e0 mov x0, x19 ffff8000113a331c: 94000000 bl 0 <__list_del_entry_valid> ffff8000113a331c: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113a3320: 53001c00 uxtb w0, w0 ffff8000113a3324: f94017a1 ldr x1, [x29,#40] ffff8000113a3328: 340000a0 cbz w0, ffff8000113a333c __list_del(entry->prev, entry->next); ffff8000113a332c: f9400660 ldr x0, [x19,#8] ffff8000113a3330: f9400262 ldr x2, [x19] next->prev = prev; ffff8000113a3334: f9000440 str x0, [x2,#8] ffff8000113a3338: f9000002 str x2, [x0] entry->next = LIST_POISON1; ffff8000113a333c: d2802003 mov x3, #0x100 // #256 entry->prev = LIST_POISON2; ffff8000113a3340: d2802442 mov x2, #0x122 // #290 entry->next = LIST_POISON1; ffff8000113a3344: f2fbd5a3 movk x3, #0xdead, lsl #48 entry->prev = LIST_POISON2; ffff8000113a3348: f2fbd5a2 movk x2, #0xdead, lsl #48 entry->next = LIST_POISON1; ffff8000113a334c: f9000263 str x3, [x19] entry->prev = LIST_POISON2; ffff8000113a3350: f9000662 str x2, [x19,#8] err = __unregister_netdevice_notifier_net(dev_net(dev), nb); ffff8000113a3354: f9427a80 ldr x0, [x20,#1264] ffff8000113a3358: 97fffab7 bl ffff8000113a1e34 <__unregister_netdevice_notifier_net> rtnl_unlock(); ffff8000113a335c: f90017a0 str x0, [x29,#40] ffff8000113a3360: 94000000 bl 0 ffff8000113a3360: R_AARCH64_CALL26 rtnl_unlock } ffff8000113a3364: f94017a0 ldr x0, [x29,#40] ffff8000113a3368: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a336c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a3370: d65f03c0 ret ffff8000113a3374 : { ffff8000113a3374: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113a3378: 910003fd mov x29, sp ffff8000113a337c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a3380: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a3384: a90363f7 stp x23, x24, [sp,#48] ffff8000113a3388: f90023f9 str x25, [sp,#64] ffff8000113a338c: aa0003f3 mov x19, x0 ffff8000113a3390: aa1e03e0 mov x0, x30 ffff8000113a3394: aa1e03f7 mov x23, x30 ffff8000113a3398: 94000000 bl 0 <_mcount> ffff8000113a3398: R_AARCH64_CALL26 _mcount ffff8000113a339c: f9427a74 ldr x20, [x19,#1264] ASSERT_RTNL(); ffff8000113a33a0: 94000000 bl 0 ffff8000113a33a0: R_AARCH64_CALL26 rtnl_is_locked ffff8000113a33a4: 340007a0 cbz w0, ffff8000113a3498 */ static __always_inline struct task_struct *get_current(void) { unsigned long sp_el0; asm ("mrs %0, sp_el0" : "=r" (sp_el0)); ffff8000113a33a8: d5384100 mrs x0, sp_el0 __READ_ONCE_SIZE; ffff8000113a33ac: b9401801 ldr w1, [x0,#24] } static inline void __preempt_count_add(int val) { u32 pc = READ_ONCE(current_thread_info()->preempt.count); pc += val; ffff8000113a33b0: 11080021 add w1, w1, #0x200 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113a33b4: b9001801 str w1, [x0,#24] __CMPXCHG_CASE(w, , acq_, 32, , a, , "memory", K) ffff8000113a33b8: 90000018 adrp x24, ffff80001139e37c <__my_cpu_offset> ffff8000113a33b8: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a33bc: 91000301 add x1, x24, #0x0 ffff8000113a33bc: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a33c0: 910cc020 add x0, x1, #0x330 ffff8000113a33c4: 52801fe3 mov w3, #0xff // #255 ffff8000113a33c8: d2800002 mov x2, #0x0 // #0 ffff8000113a33cc: f9800011 prfm pstl1strm, [x0] ffff8000113a33d0: 885ffc04 ldaxr w4, [x0] ffff8000113a33d4: 4a020085 eor w5, w4, w2 ffff8000113a33d8: 35000065 cbnz w5, ffff8000113a33e4 ffff8000113a33dc: 88057c03 stxr w5, w3, [x0] ffff8000113a33e0: 35ffff85 cbnz w5, ffff8000113a33d0 */ static inline void queued_write_lock(struct qrwlock *lock) { u32 cnts = 0; /* Optimize for the unfair lock case where the fair flag is 0. */ if (likely(atomic_try_cmpxchg_acquire(&lock->cnts, &cnts, _QW_LOCKED))) ffff8000113a33e4: 35000764 cbnz w4, ffff8000113a34d0 __list_add_rcu(new, head->prev, head); ffff8000113a33e8: f9404e96 ldr x22, [x20,#152] list_add_tail_rcu(&dev->dev_list, &net->dev_base_head); ffff8000113a33ec: 91012275 add x21, x19, #0x48 ffff8000113a33f0: 91024299 add x25, x20, #0x90 if (!__list_add_valid(new, prev, next)) ffff8000113a33f4: aa1503e0 mov x0, x21 ffff8000113a33f8: aa1603e1 mov x1, x22 ffff8000113a33fc: aa1903e2 mov x2, x25 ffff8000113a3400: 94000000 bl 0 <__list_add_valid> ffff8000113a3400: R_AARCH64_CALL26 __list_add_valid ffff8000113a3404: 53001c00 uxtb w0, w0 ffff8000113a3408: 340000a0 cbz w0, ffff8000113a341c new->next = next; ffff8000113a340c: f9002679 str x25, [x19,#72] new->prev = prev; ffff8000113a3410: f90006b6 str x22, [x21,#8] rcu_assign_pointer(list_next_rcu(prev), new); ffff8000113a3414: c89ffed5 stlr x21, [x22] next->prev = new; ffff8000113a3418: f9004e95 str x21, [x20,#152] netdev_name_node_add(net, dev->name_node); ffff8000113a341c: f9400a61 ldr x1, [x19,#16] ffff8000113a3420: aa1403e0 mov x0, x20 ffff8000113a3424: 97fffedf bl ffff8000113a2fa0 return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; ffff8000113a3428: 39440260 ldrb w0, [x19,#256] ffff8000113a342c: f9409a82 ldr x2, [x20,#304] ffff8000113a3430: d37df000 lsl x0, x0, #3 struct hlist_node *first = h->first; ffff8000113a3434: f8606841 ldr x1, [x2,x0] ffff8000113a3438: 8b000040 add x0, x2, x0 n->next = first; ffff8000113a343c: f901ca61 str x1, [x19,#912] ffff8000113a3440: 910e4262 add x2, x19, #0x390 case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a3444: f901ce60 str x0, [x19,#920] rcu_assign_pointer(hlist_first_rcu(h), n); ffff8000113a3448: c89ffc02 stlr x2, [x0] if (first) ffff8000113a344c: b4000041 cbz x1, ffff8000113a3454 ffff8000113a3450: f9000422 str x2, [x1,#8] * queued_write_unlock - release write lock of a queue rwlock * @lock : Pointer to queue rwlock structure */ static inline void queued_write_unlock(struct qrwlock *lock) { smp_store_release(&lock->wlocked, 0); ffff8000113a3454: 91000318 add x24, x24, #0x0 ffff8000113a3454: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a3458: 52800000 mov w0, #0x0 // #0 ffff8000113a345c: 910cc318 add x24, x24, #0x330 ffff8000113a3460: 089fff00 stlrb w0, [x24] static inline void __raw_write_unlock_bh(rwlock_t *lock) { rwlock_release(&lock->dep_map, _RET_IP_); do_raw_write_unlock(lock); __local_bh_enable_ip(_RET_IP_, SOFTIRQ_LOCK_OFFSET); ffff8000113a3464: 52804001 mov w1, #0x200 // #512 ffff8000113a3468: aa1703e0 mov x0, x23 ffff8000113a346c: 94000000 bl 0 <__local_bh_enable_ip> ffff8000113a346c: R_AARCH64_CALL26 __local_bh_enable_ip ffff8000113a3470: b9401281 ldr w1, [x20,#16] while (++net->dev_base_seq == 0) ffff8000113a3474: 31000421 adds w1, w1, #0x1 ffff8000113a3478: 54ffffe0 b.eq ffff8000113a3474 ffff8000113a347c: b9001281 str w1, [x20,#16] } ffff8000113a3480: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a3484: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a3488: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a348c: f94023f9 ldr x25, [sp,#64] ffff8000113a3490: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a3494: d65f03c0 ret ASSERT_RTNL(); ffff8000113a3498: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113a3498: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113a349c: 91000063 add x3, x3, #0x0 ffff8000113a349c: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113a34a0: 39403860 ldrb w0, [x3,#14] ffff8000113a34a4: 35fff820 cbnz w0, ffff8000113a33a8 ffff8000113a34a8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a34a8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113a34ac: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a34ac: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113a34b0: 52800024 mov w4, #0x1 // #1 ffff8000113a34b4: 91000000 add x0, x0, #0x0 ffff8000113a34b4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113a34b8: 91000021 add x1, x1, #0x0 ffff8000113a34b8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113a34bc: 52802cc2 mov w2, #0x166 // #358 ffff8000113a34c0: 39003864 strb w4, [x3,#14] ffff8000113a34c4: 94000000 bl 0 <__warn_printk> ffff8000113a34c4: R_AARCH64_CALL26 __warn_printk ffff8000113a34c8: d4210000 brk #0x800 ffff8000113a34cc: 17ffffb7 b ffff8000113a33a8 queued_write_lock_slowpath(lock); ffff8000113a34d0: 94000000 bl 0 ffff8000113a34d0: R_AARCH64_CALL26 queued_write_lock_slowpath ffff8000113a34d4: 17ffffc5 b ffff8000113a33e8 ffff8000113a34d8 : { ffff8000113a34d8: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a34dc: 910003fd mov x29, sp ffff8000113a34e0: f9000bf3 str x19, [sp,#16] ffff8000113a34e4: aa1e03e0 mov x0, x30 ffff8000113a34e8: 94000000 bl 0 <_mcount> ffff8000113a34e8: R_AARCH64_CALL26 _mcount atomic_inc(&key->enabled); } static inline void static_key_slow_dec(struct static_key *key) { STATIC_KEY_CHECK_USE(key); ffff8000113a34ec: 90000000 adrp x0, 0 ffff8000113a34ec: R_AARCH64_ADR_PREL_PG_HI21 static_key_initialized ffff8000113a34f0: 39400000 ldrb w0, [x0] ffff8000113a34f0: R_AARCH64_LDST8_ABS_LO12_NC static_key_initialized ffff8000113a34f4: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff8000113a34f4: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a34f8: 34000180 cbz w0, ffff8000113a3528 ATOMIC_OPS(sub, sub, J) ffff8000113a34fc: 91000260 add x0, x19, #0x0 ffff8000113a34fc: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a3500: 52800021 mov w1, #0x1 // #1 ffff8000113a3504: 910ce004 add x4, x0, #0x338 ffff8000113a3508: f9800091 prfm pstl1strm, [x4] ffff8000113a350c: 885f7c82 ldxr w2, [x4] ffff8000113a3510: 4b010042 sub w2, w2, w1 ffff8000113a3514: 88037c82 stxr w3, w2, [x4] ffff8000113a3518: 35ffffa3 cbnz w3, ffff8000113a350c } ffff8000113a351c: f9400bf3 ldr x19, [sp,#16] ffff8000113a3520: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a3524: d65f03c0 ret ffff8000113a3528: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a3528: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a352c: 91000262 add x2, x19, #0x0 ffff8000113a352c: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a3530: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a3530: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x238 ffff8000113a3534: 91000021 add x1, x1, #0x0 ffff8000113a3534: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a3538: 91000000 add x0, x0, #0x0 ffff8000113a3538: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x238 ffff8000113a353c: 91004021 add x1, x1, #0x10 ffff8000113a3540: 910ce042 add x2, x2, #0x338 ffff8000113a3544: 94000000 bl 0 <__warn_printk> ffff8000113a3544: R_AARCH64_CALL26 __warn_printk ffff8000113a3548: d4210000 brk #0x800 ffff8000113a354c: 17ffffec b ffff8000113a34fc ffff8000113a3550 : { ffff8000113a3550: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a3554: 910003fd mov x29, sp ffff8000113a3558: f9000bf3 str x19, [sp,#16] ffff8000113a355c: aa1e03e0 mov x0, x30 ffff8000113a3560: 94000000 bl 0 <_mcount> ffff8000113a3560: R_AARCH64_CALL26 _mcount ffff8000113a3564: 90000000 adrp x0, 0 ffff8000113a3564: R_AARCH64_ADR_PREL_PG_HI21 static_key_initialized ffff8000113a3568: 39400000 ldrb w0, [x0] ffff8000113a3568: R_AARCH64_LDST8_ABS_LO12_NC static_key_initialized ffff8000113a356c: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff8000113a356c: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a3570: 34000180 cbz w0, ffff8000113a35a0 ffff8000113a3574: 91000260 add x0, x19, #0x0 ffff8000113a3574: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a3578: 52800021 mov w1, #0x1 // #1 ffff8000113a357c: 910d0004 add x4, x0, #0x340 ffff8000113a3580: f9800091 prfm pstl1strm, [x4] ffff8000113a3584: 885f7c82 ldxr w2, [x4] ffff8000113a3588: 4b010042 sub w2, w2, w1 ffff8000113a358c: 88037c82 stxr w3, w2, [x4] ffff8000113a3590: 35ffffa3 cbnz w3, ffff8000113a3584 } ffff8000113a3594: f9400bf3 ldr x19, [sp,#16] ffff8000113a3598: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a359c: d65f03c0 ret ffff8000113a35a0: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a35a0: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a35a4: 91000262 add x2, x19, #0x0 ffff8000113a35a4: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a35a8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a35a8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x238 ffff8000113a35ac: 91000021 add x1, x1, #0x0 ffff8000113a35ac: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a35b0: 91000000 add x0, x0, #0x0 ffff8000113a35b0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x238 ffff8000113a35b4: 91004021 add x1, x1, #0x10 ffff8000113a35b8: 910d0042 add x2, x2, #0x340 ffff8000113a35bc: 94000000 bl 0 <__warn_printk> ffff8000113a35bc: R_AARCH64_CALL26 __warn_printk ffff8000113a35c0: d4210000 brk #0x800 ffff8000113a35c4: 17ffffec b ffff8000113a3574 ffff8000113a35c8 : { ffff8000113a35c8: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a35cc: 910003fd mov x29, sp ffff8000113a35d0: f9000bf3 str x19, [sp,#16] ffff8000113a35d4: aa1e03e0 mov x0, x30 ffff8000113a35d8: 94000000 bl 0 <_mcount> ffff8000113a35d8: R_AARCH64_CALL26 _mcount ffff8000113a35dc: 90000000 adrp x0, 0 ffff8000113a35dc: R_AARCH64_ADR_PREL_PG_HI21 static_key_initialized ffff8000113a35e0: 39400000 ldrb w0, [x0] ffff8000113a35e0: R_AARCH64_LDST8_ABS_LO12_NC static_key_initialized ffff8000113a35e4: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff8000113a35e4: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a35e8: 34000180 cbz w0, ffff8000113a3618 ffff8000113a35ec: 91000260 add x0, x19, #0x0 ffff8000113a35ec: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a35f0: 52800021 mov w1, #0x1 // #1 ffff8000113a35f4: 910d2004 add x4, x0, #0x348 ffff8000113a35f8: f9800091 prfm pstl1strm, [x4] ffff8000113a35fc: 885f7c82 ldxr w2, [x4] ffff8000113a3600: 4b010042 sub w2, w2, w1 ffff8000113a3604: 88037c82 stxr w3, w2, [x4] ffff8000113a3608: 35ffffa3 cbnz w3, ffff8000113a35fc } ffff8000113a360c: f9400bf3 ldr x19, [sp,#16] ffff8000113a3610: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a3614: d65f03c0 ret ffff8000113a3618: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a3618: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a361c: 91000262 add x2, x19, #0x0 ffff8000113a361c: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a3620: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a3620: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x238 ffff8000113a3624: 91000021 add x1, x1, #0x0 ffff8000113a3624: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a3628: 91000000 add x0, x0, #0x0 ffff8000113a3628: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x238 ffff8000113a362c: 91004021 add x1, x1, #0x10 ffff8000113a3630: 910d2042 add x2, x2, #0x348 ffff8000113a3634: 94000000 bl 0 <__warn_printk> ffff8000113a3634: R_AARCH64_CALL26 __warn_printk ffff8000113a3638: d4210000 brk #0x800 ffff8000113a363c: 17ffffec b ffff8000113a35ec ffff8000113a3640 : { ffff8000113a3640: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a3644: 910003fd mov x29, sp ffff8000113a3648: f9000bf3 str x19, [sp,#16] ffff8000113a364c: aa1e03e0 mov x0, x30 ffff8000113a3650: 94000000 bl 0 <_mcount> ffff8000113a3650: R_AARCH64_CALL26 _mcount STATIC_KEY_CHECK_USE(key); ffff8000113a3654: 90000000 adrp x0, 0 ffff8000113a3654: R_AARCH64_ADR_PREL_PG_HI21 static_key_initialized ffff8000113a3658: 39400000 ldrb w0, [x0] ffff8000113a3658: R_AARCH64_LDST8_ABS_LO12_NC static_key_initialized ffff8000113a365c: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff8000113a365c: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a3660: 34000160 cbz w0, ffff8000113a368c ATOMIC_OPS(add, add, I) ffff8000113a3664: 91000260 add x0, x19, #0x0 ffff8000113a3664: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a3668: 910ce003 add x3, x0, #0x338 ffff8000113a366c: f9800071 prfm pstl1strm, [x3] ffff8000113a3670: 885f7c61 ldxr w1, [x3] ffff8000113a3674: 11000421 add w1, w1, #0x1 ffff8000113a3678: 88027c61 stxr w2, w1, [x3] ffff8000113a367c: 35ffffa2 cbnz w2, ffff8000113a3670 } ffff8000113a3680: f9400bf3 ldr x19, [sp,#16] ffff8000113a3684: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a3688: d65f03c0 ret ffff8000113a368c: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a368c: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a3690: 91000262 add x2, x19, #0x0 ffff8000113a3690: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a3694: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a3694: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x238 ffff8000113a3698: 91000021 add x1, x1, #0x0 ffff8000113a3698: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a369c: 91000000 add x0, x0, #0x0 ffff8000113a369c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x238 ffff8000113a36a0: 9100a021 add x1, x1, #0x28 ffff8000113a36a4: 910ce042 add x2, x2, #0x338 ffff8000113a36a8: 94000000 bl 0 <__warn_printk> ffff8000113a36a8: R_AARCH64_CALL26 __warn_printk ffff8000113a36ac: d4210000 brk #0x800 ffff8000113a36b0: 17ffffed b ffff8000113a3664 ffff8000113a36b4 : { ffff8000113a36b4: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a36b8: 910003fd mov x29, sp ffff8000113a36bc: f9000bf3 str x19, [sp,#16] ffff8000113a36c0: aa1e03e0 mov x0, x30 ffff8000113a36c4: 94000000 bl 0 <_mcount> ffff8000113a36c4: R_AARCH64_CALL26 _mcount ffff8000113a36c8: 90000000 adrp x0, 0 ffff8000113a36c8: R_AARCH64_ADR_PREL_PG_HI21 static_key_initialized ffff8000113a36cc: 39400000 ldrb w0, [x0] ffff8000113a36cc: R_AARCH64_LDST8_ABS_LO12_NC static_key_initialized ffff8000113a36d0: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff8000113a36d0: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a36d4: 34000160 cbz w0, ffff8000113a3700 ffff8000113a36d8: 91000260 add x0, x19, #0x0 ffff8000113a36d8: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a36dc: 910d0003 add x3, x0, #0x340 ffff8000113a36e0: f9800071 prfm pstl1strm, [x3] ffff8000113a36e4: 885f7c61 ldxr w1, [x3] ffff8000113a36e8: 11000421 add w1, w1, #0x1 ffff8000113a36ec: 88027c61 stxr w2, w1, [x3] ffff8000113a36f0: 35ffffa2 cbnz w2, ffff8000113a36e4 } ffff8000113a36f4: f9400bf3 ldr x19, [sp,#16] ffff8000113a36f8: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a36fc: d65f03c0 ret ffff8000113a3700: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a3700: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a3704: 91000262 add x2, x19, #0x0 ffff8000113a3704: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a3708: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a3708: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x238 ffff8000113a370c: 91000021 add x1, x1, #0x0 ffff8000113a370c: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a3710: 91000000 add x0, x0, #0x0 ffff8000113a3710: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x238 ffff8000113a3714: 9100a021 add x1, x1, #0x28 ffff8000113a3718: 910d0042 add x2, x2, #0x340 ffff8000113a371c: 94000000 bl 0 <__warn_printk> ffff8000113a371c: R_AARCH64_CALL26 __warn_printk ffff8000113a3720: d4210000 brk #0x800 ffff8000113a3724: 17ffffed b ffff8000113a36d8 ffff8000113a3728 : { ffff8000113a3728: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a372c: 910003fd mov x29, sp ffff8000113a3730: f9000bf3 str x19, [sp,#16] ffff8000113a3734: aa1e03e0 mov x0, x30 ffff8000113a3738: 94000000 bl 0 <_mcount> ffff8000113a3738: R_AARCH64_CALL26 _mcount ffff8000113a373c: 90000000 adrp x0, 0 ffff8000113a373c: R_AARCH64_ADR_PREL_PG_HI21 static_key_initialized ffff8000113a3740: 39400000 ldrb w0, [x0] ffff8000113a3740: R_AARCH64_LDST8_ABS_LO12_NC static_key_initialized ffff8000113a3744: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff8000113a3744: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a3748: 34000160 cbz w0, ffff8000113a3774 ffff8000113a374c: 91000260 add x0, x19, #0x0 ffff8000113a374c: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a3750: 910d2003 add x3, x0, #0x348 ffff8000113a3754: f9800071 prfm pstl1strm, [x3] ffff8000113a3758: 885f7c61 ldxr w1, [x3] ffff8000113a375c: 11000421 add w1, w1, #0x1 ffff8000113a3760: 88027c61 stxr w2, w1, [x3] ffff8000113a3764: 35ffffa2 cbnz w2, ffff8000113a3758 } ffff8000113a3768: f9400bf3 ldr x19, [sp,#16] ffff8000113a376c: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a3770: d65f03c0 ret ffff8000113a3774: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a3774: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a3778: 91000262 add x2, x19, #0x0 ffff8000113a3778: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a377c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a377c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x238 ffff8000113a3780: 91000021 add x1, x1, #0x0 ffff8000113a3780: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a3784: 91000000 add x0, x0, #0x0 ffff8000113a3784: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x238 ffff8000113a3788: 9100a021 add x1, x1, #0x28 ffff8000113a378c: 910d2042 add x2, x2, #0x348 ffff8000113a3790: 94000000 bl 0 <__warn_printk> ffff8000113a3790: R_AARCH64_CALL26 __warn_printk ffff8000113a3794: d4210000 brk #0x800 ffff8000113a3798: 17ffffed b ffff8000113a374c ffff8000113a379c : { ffff8000113a379c: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a37a0: 910003fd mov x29, sp ffff8000113a37a4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a37a8: f90013f5 str x21, [sp,#32] ffff8000113a37ac: aa0003f5 mov x21, x0 ffff8000113a37b0: aa1e03e0 mov x0, x30 ffff8000113a37b4: aa0103f3 mov x19, x1 ffff8000113a37b8: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113a37b8: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a37bc: 94000000 bl 0 <_mcount> ffff8000113a37bc: R_AARCH64_CALL26 _mcount ffff8000113a37c0: f9400281 ldr x1, [x20] ffff8000113a37c0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard if (rootdev->operstate == IF_OPER_DORMANT) ffff8000113a37c4: 3948d2a0 ldrb w0, [x21,#564] { ffff8000113a37c8: f9001fa1 str x1, [x29,#56] if (rootdev->operstate == IF_OPER_DORMANT) ffff8000113a37cc: 7100141f cmp w0, #0x5 __READ_ONCE_SIZE; ffff8000113a37d0: f9402260 ldr x0, [x19,#64] ffff8000113a37d4: 54000380 b.eq ffff8000113a3844 if (!(READ_ONCE(*p) & mask)) ffff8000113a37d8: 36200180 tbz w0, #4, ffff8000113a3808 ATOMIC64_OPS(andnot, bic, ) ffff8000113a37dc: d2800200 mov x0, #0x10 // #16 ffff8000113a37e0: 91010264 add x4, x19, #0x40 ffff8000113a37e4: f9800091 prfm pstl1strm, [x4] ffff8000113a37e8: c85f7c81 ldxr x1, [x4] ffff8000113a37ec: 8a200022 bic x2, x1, x0 ffff8000113a37f0: c803fc82 stlxr w3, x2, [x4] ffff8000113a37f4: 35ffffa3 cbnz w3, ffff8000113a37e8 ffff8000113a37f8: d5033bbf dmb ish if (test_and_clear_bit(__LINK_STATE_DORMANT, &dev->state)) ffff8000113a37fc: 36200061 tbz w1, #4, ffff8000113a3808 linkwatch_fire_event(dev); ffff8000113a3800: aa1303e0 mov x0, x19 ffff8000113a3804: 94000000 bl 0 ffff8000113a3804: R_AARCH64_CALL26 linkwatch_fire_event ffff8000113a3808: f94022a0 ldr x0, [x21,#64] if (netif_carrier_ok(rootdev)) ffff8000113a380c: 36100160 tbz w0, #2, ffff8000113a3838 netif_carrier_off(dev); ffff8000113a3810: aa1303e0 mov x0, x19 ffff8000113a3814: 94000000 bl 0 ffff8000113a3814: R_AARCH64_CALL26 netif_carrier_off } ffff8000113a3818: f9401fa1 ldr x1, [x29,#56] ffff8000113a381c: f9400280 ldr x0, [x20] ffff8000113a381c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a3820: eb00003f cmp x1, x0 ffff8000113a3824: 54000241 b.ne ffff8000113a386c ffff8000113a3828: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a382c: f94013f5 ldr x21, [sp,#32] ffff8000113a3830: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a3834: d65f03c0 ret netif_carrier_on(dev); ffff8000113a3838: aa1303e0 mov x0, x19 ffff8000113a383c: 94000000 bl 0 ffff8000113a383c: R_AARCH64_CALL26 netif_carrier_on ffff8000113a3840: 17fffff6 b ffff8000113a3818 if (READ_ONCE(*p) & mask) ffff8000113a3844: 3727fe20 tbnz w0, #4, ffff8000113a3808 ATOMIC64_OPS(or, orr, L) ffff8000113a3848: 91010263 add x3, x19, #0x40 ffff8000113a384c: f9800071 prfm pstl1strm, [x3] ffff8000113a3850: c85f7c60 ldxr x0, [x3] ffff8000113a3854: b27c0001 orr x1, x0, #0x10 ffff8000113a3858: c802fc61 stlxr w2, x1, [x3] ffff8000113a385c: 35ffffa2 cbnz w2, ffff8000113a3850 ffff8000113a3860: d5033bbf dmb ish if (!test_and_set_bit(__LINK_STATE_DORMANT, &dev->state)) ffff8000113a3864: 3627fce0 tbz w0, #4, ffff8000113a3800 ffff8000113a3868: 17ffffe8 b ffff8000113a3808 } ffff8000113a386c: 94000000 bl 0 <__stack_chk_fail> ffff8000113a386c: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a3870 : { ffff8000113a3870: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a3874: 910003fd mov x29, sp ffff8000113a3878: a90153f3 stp x19, x20, [sp,#16] ffff8000113a387c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a3880: aa0003f3 mov x19, x0 ffff8000113a3884: aa1e03e0 mov x0, x30 ffff8000113a3888: aa1e03f5 mov x21, x30 ffff8000113a388c: 94000000 bl 0 <_mcount> ffff8000113a388c: R_AARCH64_CALL26 _mcount ASSERT_RTNL(); ffff8000113a3890: 94000000 bl 0 ffff8000113a3890: R_AARCH64_CALL26 rtnl_is_locked ffff8000113a3894: 340007c0 cbz w0, ffff8000113a398c ffff8000113a3898: d5384100 mrs x0, sp_el0 ffff8000113a389c: b9401801 ldr w1, [x0,#24] ffff8000113a38a0: 11080021 add w1, w1, #0x200 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113a38a4: b9001801 str w1, [x0,#24] __CMPXCHG_CASE(w, , acq_, 32, , a, , "memory", K) ffff8000113a38a8: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113a38a8: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a38ac: 910002c1 add x1, x22, #0x0 ffff8000113a38ac: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a38b0: 910cc020 add x0, x1, #0x330 ffff8000113a38b4: 52801fe3 mov w3, #0xff // #255 ffff8000113a38b8: d2800002 mov x2, #0x0 // #0 ffff8000113a38bc: f9800011 prfm pstl1strm, [x0] ffff8000113a38c0: 885ffc04 ldaxr w4, [x0] ffff8000113a38c4: 4a020085 eor w5, w4, w2 ffff8000113a38c8: 35000065 cbnz w5, ffff8000113a38d4 ffff8000113a38cc: 88057c03 stxr w5, w3, [x0] ffff8000113a38d0: 35ffff85 cbnz w5, ffff8000113a38c0 if (likely(atomic_try_cmpxchg_acquire(&lock->cnts, &cnts, _QW_LOCKED))) ffff8000113a38d4: 35000784 cbnz w4, ffff8000113a39c4 list_del_rcu(&dev->dev_list); ffff8000113a38d8: 91012274 add x20, x19, #0x48 if (!__list_del_entry_valid(entry)) ffff8000113a38dc: aa1403e0 mov x0, x20 ffff8000113a38e0: 94000000 bl 0 <__list_del_entry_valid> ffff8000113a38e0: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113a38e4: 53001c00 uxtb w0, w0 ffff8000113a38e8: 340000a0 cbz w0, ffff8000113a38fc __list_del(entry->prev, entry->next); ffff8000113a38ec: f9400680 ldr x0, [x20,#8] ffff8000113a38f0: f9402661 ldr x1, [x19,#72] next->prev = prev; ffff8000113a38f4: f9000420 str x0, [x1,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a38f8: f9000001 str x1, [x0] entry->prev = LIST_POISON2; ffff8000113a38fc: d2802440 mov x0, #0x122 // #290 ffff8000113a3900: f2fbd5a0 movk x0, #0xdead, lsl #48 ffff8000113a3904: f9000680 str x0, [x20,#8] netdev_name_node_del(dev->name_node); ffff8000113a3908: f9400a61 ldr x1, [x19,#16] struct hlist_node *next = n->next; ffff8000113a390c: f9400022 ldr x2, [x1] struct hlist_node **pprev = n->pprev; ffff8000113a3910: f9400420 ldr x0, [x1,#8] ffff8000113a3914: f9000002 str x2, [x0] if (next) ffff8000113a3918: b4000042 cbz x2, ffff8000113a3920 ffff8000113a391c: f9000440 str x0, [x2,#8] ffff8000113a3920: d2802440 mov x0, #0x122 // #290 ffff8000113a3924: f2fbd5a0 movk x0, #0xdead, lsl #48 ffff8000113a3928: f9000420 str x0, [x1,#8] struct hlist_node *next = n->next; ffff8000113a392c: f941ca61 ldr x1, [x19,#912] struct hlist_node **pprev = n->pprev; ffff8000113a3930: f941ce60 ldr x0, [x19,#920] ffff8000113a3934: f9000001 str x1, [x0] if (next) ffff8000113a3938: b4000041 cbz x1, ffff8000113a3940 ffff8000113a393c: f9000420 str x0, [x1,#8] ffff8000113a3940: d2802440 mov x0, #0x122 // #290 ffff8000113a3944: f2fbd5a0 movk x0, #0xdead, lsl #48 smp_store_release(&lock->wlocked, 0); ffff8000113a3948: 910002d6 add x22, x22, #0x0 ffff8000113a3948: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a394c: f901ce60 str x0, [x19,#920] ffff8000113a3950: 910cc2d6 add x22, x22, #0x330 ffff8000113a3954: 52800000 mov w0, #0x0 // #0 ffff8000113a3958: 089ffec0 stlrb w0, [x22] ffff8000113a395c: 52804001 mov w1, #0x200 // #512 ffff8000113a3960: aa1503e0 mov x0, x21 ffff8000113a3964: 94000000 bl 0 <__local_bh_enable_ip> ffff8000113a3964: R_AARCH64_CALL26 __local_bh_enable_ip ffff8000113a3968: f9427a61 ldr x1, [x19,#1264] ffff8000113a396c: b9401020 ldr w0, [x1,#16] while (++net->dev_base_seq == 0) ffff8000113a3970: 31000400 adds w0, w0, #0x1 ffff8000113a3974: 54ffffe0 b.eq ffff8000113a3970 ffff8000113a3978: b9001020 str w0, [x1,#16] } ffff8000113a397c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a3980: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a3984: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a3988: d65f03c0 ret ASSERT_RTNL(); ffff8000113a398c: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113a398c: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113a3990: 91000063 add x3, x3, #0x0 ffff8000113a3990: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113a3994: 39403c60 ldrb w0, [x3,#15] ffff8000113a3998: 35fff800 cbnz w0, ffff8000113a3898 ffff8000113a399c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a399c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113a39a0: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a39a0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113a39a4: 52800024 mov w4, #0x1 // #1 ffff8000113a39a8: 91000000 add x0, x0, #0x0 ffff8000113a39a8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113a39ac: 91000021 add x1, x1, #0x0 ffff8000113a39ac: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113a39b0: 52802ee2 mov w2, #0x177 // #375 ffff8000113a39b4: 39003c64 strb w4, [x3,#15] ffff8000113a39b8: 94000000 bl 0 <__warn_printk> ffff8000113a39b8: R_AARCH64_CALL26 __warn_printk ffff8000113a39bc: d4210000 brk #0x800 ffff8000113a39c0: 17ffffb6 b ffff8000113a3898 queued_write_lock_slowpath(lock); ffff8000113a39c4: 94000000 bl 0 ffff8000113a39c4: R_AARCH64_CALL26 queued_write_lock_slowpath ffff8000113a39c8: 17ffffc4 b ffff8000113a38d8 ffff8000113a39cc <__dev_remove_pack>: { ffff8000113a39cc: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a39d0: 910003fd mov x29, sp ffff8000113a39d4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a39d8: f90013f5 str x21, [sp,#32] ffff8000113a39dc: aa0003f3 mov x19, x0 ffff8000113a39e0: aa1e03e0 mov x0, x30 ffff8000113a39e4: 94000000 bl 0 <_mcount> ffff8000113a39e4: R_AARCH64_CALL26 _mcount void __dev_remove_pack(struct packet_type *pt) ffff8000113a39e8: 79400260 ldrh w0, [x19] ffff8000113a39ec: f9400674 ldr x20, [x19,#8] if (pt->type == htons(ETH_P_ALL)) ffff8000113a39f0: 710c001f cmp w0, #0x300 ffff8000113a39f4: 540005a0 b.eq ffff8000113a3aa8 <__dev_remove_pack+0xdc> return pt->dev ? &pt->dev->ptype_specific : ffff8000113a39f8: b40005f4 cbz x20, ffff8000113a3ab4 <__dev_remove_pack+0xe8> ffff8000113a39fc: 91026294 add x20, x20, #0x98 ffff8000113a3a00: 90000015 adrp x21, ffff80001139e37c <__my_cpu_offset> ffff8000113a3a00: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a3a04: 910002a0 add x0, x21, #0x0 ffff8000113a3a04: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a3a08: 52800023 mov w3, #0x1 // #1 ffff8000113a3a0c: d2800002 mov x2, #0x0 // #0 ffff8000113a3a10: 910c6005 add x5, x0, #0x318 ffff8000113a3a14: f98000b1 prfm pstl1strm, [x5] ffff8000113a3a18: 885ffca1 ldaxr w1, [x5] ffff8000113a3a1c: 4a020024 eor w4, w1, w2 ffff8000113a3a20: 35000064 cbnz w4, ffff8000113a3a2c <__dev_remove_pack+0x60> ffff8000113a3a24: 88047ca3 stxr w4, w3, [x5] ffff8000113a3a28: 35ffff84 cbnz w4, ffff8000113a3a18 <__dev_remove_pack+0x4c> if (unlikely(r != o)) ffff8000113a3a2c: 35000641 cbnz w1, ffff8000113a3af4 <__dev_remove_pack+0x128> list_for_each_entry(pt1, head, list) { ffff8000113a3a30: f9400282 ldr x2, [x20] ffff8000113a3a34: eb02029f cmp x20, x2 ffff8000113a3a38: d100c042 sub x2, x2, #0x30 ffff8000113a3a3c: 540000c1 b.ne ffff8000113a3a54 <__dev_remove_pack+0x88> ffff8000113a3a40: 14000028 b ffff8000113a3ae0 <__dev_remove_pack+0x114> ffff8000113a3a44: f9401842 ldr x2, [x2,#48] ffff8000113a3a48: eb02029f cmp x20, x2 ffff8000113a3a4c: d100c042 sub x2, x2, #0x30 ffff8000113a3a50: 54000480 b.eq ffff8000113a3ae0 <__dev_remove_pack+0x114> if (pt == pt1) { ffff8000113a3a54: eb02027f cmp x19, x2 ffff8000113a3a58: 54ffff61 b.ne ffff8000113a3a44 <__dev_remove_pack+0x78> if (!__list_del_entry_valid(entry)) ffff8000113a3a5c: 9100c260 add x0, x19, #0x30 ffff8000113a3a60: 94000000 bl 0 <__list_del_entry_valid> ffff8000113a3a60: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113a3a64: 53001c00 uxtb w0, w0 ffff8000113a3a68: 340000a0 cbz w0, ffff8000113a3a7c <__dev_remove_pack+0xb0> __list_del(entry->prev, entry->next); ffff8000113a3a6c: f9401e60 ldr x0, [x19,#56] ffff8000113a3a70: f9401a61 ldr x1, [x19,#48] next->prev = prev; ffff8000113a3a74: f9000420 str x0, [x1,#8] ffff8000113a3a78: f9000001 str x1, [x0] ffff8000113a3a7c: d2802440 mov x0, #0x122 // #290 ffff8000113a3a80: f2fbd5a0 movk x0, #0xdead, lsl #48 ffff8000113a3a84: f9001e60 str x0, [x19,#56] smp_store_release(&lock->locked, 0); ffff8000113a3a88: 910002b5 add x21, x21, #0x0 ffff8000113a3a88: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a3a8c: 52800000 mov w0, #0x0 // #0 ffff8000113a3a90: 910c62b5 add x21, x21, #0x318 ffff8000113a3a94: 089ffea0 stlrb w0, [x21] } ffff8000113a3a98: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a3a9c: f94013f5 ldr x21, [sp,#32] ffff8000113a3aa0: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a3aa4: d65f03c0 ret return pt->dev ? &pt->dev->ptype_all : &ptype_all; ffff8000113a3aa8: b4000154 cbz x20, ffff8000113a3ad0 <__dev_remove_pack+0x104> ffff8000113a3aac: 91022294 add x20, x20, #0x88 ffff8000113a3ab0: 17ffffd4 b ffff8000113a3a00 <__dev_remove_pack+0x34> return pt->dev ? &pt->dev->ptype_specific : ffff8000113a3ab4: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113a3ab4: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a3ab8: 5ac00400 rev16 w0, w0 ffff8000113a3abc: 91000294 add x20, x20, #0x0 ffff8000113a3abc: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a3ac0: d37c0c00 ubfiz x0, x0, #4, #4 ffff8000113a3ac4: 9120c294 add x20, x20, #0x830 ffff8000113a3ac8: 8b000294 add x20, x20, x0 ffff8000113a3acc: 17ffffcd b ffff8000113a3a00 <__dev_remove_pack+0x34> return pt->dev ? &pt->dev->ptype_all : &ptype_all; ffff8000113a3ad0: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113a3ad0: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a3ad4: 91000294 add x20, x20, #0x0 ffff8000113a3ad4: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a3ad8: 91200294 add x20, x20, #0x800 ffff8000113a3adc: 17ffffc9 b ffff8000113a3a00 <__dev_remove_pack+0x34> pr_warn("dev_remove_pack: %p not found\n", pt); ffff8000113a3ae0: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a3ae0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x278 ffff8000113a3ae4: aa1303e1 mov x1, x19 ffff8000113a3ae8: 91000000 add x0, x0, #0x0 ffff8000113a3ae8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x278 ffff8000113a3aec: 94000000 bl 0 ffff8000113a3aec: R_AARCH64_CALL26 printk ffff8000113a3af0: 17ffffe6 b ffff8000113a3a88 <__dev_remove_pack+0xbc> queued_spin_lock_slowpath(lock, val); ffff8000113a3af4: 910c6000 add x0, x0, #0x318 ffff8000113a3af8: 94000000 bl 0 ffff8000113a3af8: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113a3afc: 17ffffcd b ffff8000113a3a30 <__dev_remove_pack+0x64> ffff8000113a3b00 : { ffff8000113a3b00: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a3b04: 910003fd mov x29, sp ffff8000113a3b08: f9000bf3 str x19, [sp,#16] ffff8000113a3b0c: aa0003f3 mov x19, x0 ffff8000113a3b10: aa1e03e0 mov x0, x30 ffff8000113a3b14: 94000000 bl 0 <_mcount> ffff8000113a3b14: R_AARCH64_CALL26 _mcount __dev_remove_pack(pt); ffff8000113a3b18: aa1303e0 mov x0, x19 ffff8000113a3b1c: 94000000 bl ffff8000113a39cc <__dev_remove_pack> ffff8000113a3b1c: R_AARCH64_CALL26 __dev_remove_pack synchronize_net(); ffff8000113a3b20: 94000000 bl ffff8000113a1384 ffff8000113a3b20: R_AARCH64_CALL26 synchronize_net } ffff8000113a3b24: f9400bf3 ldr x19, [sp,#16] ffff8000113a3b28: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a3b2c: d65f03c0 ret ffff8000113a3b30 : { ffff8000113a3b30: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a3b34: 910003fd mov x29, sp ffff8000113a3b38: a90153f3 stp x19, x20, [sp,#16] ffff8000113a3b3c: aa0003f3 mov x19, x0 ffff8000113a3b40: aa1e03e0 mov x0, x30 ffff8000113a3b44: aa0103f4 mov x20, x1 ffff8000113a3b48: 94000000 bl 0 <_mcount> ffff8000113a3b48: R_AARCH64_CALL26 _mcount __kernel_size_t ret = __real_strnlen(p, maxlen < p_size ? maxlen : p_size); ffff8000113a3b4c: aa1403e0 mov x0, x20 ffff8000113a3b50: d2800201 mov x1, #0x10 // #16 ffff8000113a3b54: 94000000 bl 0 ffff8000113a3b54: R_AARCH64_CALL26 strnlen if (p_size <= ret && maxlen != ret) ffff8000113a3b58: b100041f cmn x0, #0x1 __kernel_size_t ret = __real_strnlen(p, maxlen < p_size ? maxlen : p_size); ffff8000113a3b5c: aa0003e2 mov x2, x0 if (p_size <= ret && maxlen != ret) ffff8000113a3b60: 540002c0 b.eq ffff8000113a3bb8 unsigned int hash = full_name_hash(net, name, strnlen(name, IFNAMSIZ)); ffff8000113a3b64: aa1303e0 mov x0, x19 ffff8000113a3b68: aa1403e1 mov x1, x20 ffff8000113a3b6c: 94000000 bl 0 ffff8000113a3b6c: R_AARCH64_CALL26 full_name_hash ffff8000113a3b70: 5290c8e1 mov w1, #0x8647 // #34375 ffff8000113a3b74: 72ac3901 movk w1, #0x61c8, lsl #16 ffff8000113a3b78: 1b017c00 mul w0, w0, w1 return &net->dev_name_head[hash_32(hash, NETDEV_HASHBITS)]; ffff8000113a3b7c: d3587c01 ubfx x1, x0, #24, #8 ffff8000113a3b80: f9409660 ldr x0, [x19,#296] ffff8000113a3b84: d37df021 lsl x1, x1, #3 __READ_ONCE_SIZE; ffff8000113a3b88: f8616813 ldr x19, [x0,x1] hlist_for_each_entry_rcu(name_node, head, hlist) ffff8000113a3b8c: b40000f3 cbz x19, ffff8000113a3ba8 if (!strcmp(name_node->name, name)) ffff8000113a3b90: f9401660 ldr x0, [x19,#40] ffff8000113a3b94: aa1403e1 mov x1, x20 ffff8000113a3b98: 94000000 bl 0 ffff8000113a3b98: R_AARCH64_CALL26 strcmp ffff8000113a3b9c: 34000060 cbz w0, ffff8000113a3ba8 ffff8000113a3ba0: f9400273 ldr x19, [x19] hlist_for_each_entry_rcu(name_node, head, hlist) ffff8000113a3ba4: b5ffff73 cbnz x19, ffff8000113a3b90 } ffff8000113a3ba8: aa1303e0 mov x0, x19 ffff8000113a3bac: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a3bb0: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a3bb4: d65f03c0 ret fortify_panic(__func__); ffff8000113a3bb8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a3bb8: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x90 ffff8000113a3bbc: 91000000 add x0, x0, #0x0 ffff8000113a3bbc: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x90 ffff8000113a3bc0: 91044000 add x0, x0, #0x110 ffff8000113a3bc4: 94000000 bl 0 ffff8000113a3bc4: R_AARCH64_CALL26 fortify_panic ffff8000113a3bc8 : { ffff8000113a3bc8: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a3bcc: 910003fd mov x29, sp ffff8000113a3bd0: f9000bf3 str x19, [sp,#16] ffff8000113a3bd4: aa0003f3 mov x19, x0 ffff8000113a3bd8: aa1e03e0 mov x0, x30 ffff8000113a3bdc: f90017a1 str x1, [x29,#40] ffff8000113a3be0: 94000000 bl 0 <_mcount> ffff8000113a3be0: R_AARCH64_CALL26 _mcount node_name = netdev_name_node_lookup_rcu(net, name); ffff8000113a3be4: f94017a1 ldr x1, [x29,#40] ffff8000113a3be8: aa1303e0 mov x0, x19 ffff8000113a3bec: 97ffffd1 bl ffff8000113a3b30 return node_name ? node_name->dev : NULL; ffff8000113a3bf0: b4000040 cbz x0, ffff8000113a3bf8 ffff8000113a3bf4: f9401000 ldr x0, [x0,#32] } ffff8000113a3bf8: f9400bf3 ldr x19, [sp,#16] ffff8000113a3bfc: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a3c00: d65f03c0 ret ffff8000113a3c04 : { ffff8000113a3c04: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a3c08: 910003fd mov x29, sp ffff8000113a3c0c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a3c10: aa0003f3 mov x19, x0 ffff8000113a3c14: aa1e03e0 mov x0, x30 ffff8000113a3c18: 94000000 bl 0 <_mcount> ffff8000113a3c18: R_AARCH64_CALL26 _mcount ffff8000113a3c1c: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113a3c1c: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a3c20: 91000280 add x0, x20, #0x0 ffff8000113a3c20: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a3c24: 52800023 mov w3, #0x1 // #1 ffff8000113a3c28: d2800002 mov x2, #0x0 // #0 ffff8000113a3c2c: 910ca005 add x5, x0, #0x328 ffff8000113a3c30: f98000b1 prfm pstl1strm, [x5] ffff8000113a3c34: 885ffca1 ldaxr w1, [x5] ffff8000113a3c38: 4a020024 eor w4, w1, w2 ffff8000113a3c3c: 35000064 cbnz w4, ffff8000113a3c48 ffff8000113a3c40: 88047ca3 stxr w4, w3, [x5] ffff8000113a3c44: 35ffff84 cbnz w4, ffff8000113a3c34 ffff8000113a3c48: 350004e1 cbnz w1, ffff8000113a3ce4 list_for_each_entry(po1, head, list) { ffff8000113a3c4c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a3c4c: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a3c50: 91000000 add x0, x0, #0x0 ffff8000113a3c50: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a3c54: f9440802 ldr x2, [x0,#2064] ffff8000113a3c58: 91204000 add x0, x0, #0x810 ffff8000113a3c5c: eb02001f cmp x0, x2 ffff8000113a3c60: d1008042 sub x2, x2, #0x20 ffff8000113a3c64: 540000c1 b.ne ffff8000113a3c7c ffff8000113a3c68: 1400001a b ffff8000113a3cd0 ffff8000113a3c6c: f9401042 ldr x2, [x2,#32] ffff8000113a3c70: eb02001f cmp x0, x2 ffff8000113a3c74: d1008042 sub x2, x2, #0x20 ffff8000113a3c78: 540002c0 b.eq ffff8000113a3cd0 if (po == po1) { ffff8000113a3c7c: eb02027f cmp x19, x2 ffff8000113a3c80: 54ffff61 b.ne ffff8000113a3c6c if (!__list_del_entry_valid(entry)) ffff8000113a3c84: 91008260 add x0, x19, #0x20 ffff8000113a3c88: 94000000 bl 0 <__list_del_entry_valid> ffff8000113a3c88: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113a3c8c: 53001c00 uxtb w0, w0 ffff8000113a3c90: 340000a0 cbz w0, ffff8000113a3ca4 __list_del(entry->prev, entry->next); ffff8000113a3c94: f9401660 ldr x0, [x19,#40] ffff8000113a3c98: f9401261 ldr x1, [x19,#32] next->prev = prev; ffff8000113a3c9c: f9000420 str x0, [x1,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a3ca0: f9000001 str x1, [x0] ffff8000113a3ca4: d2802440 mov x0, #0x122 // #290 ffff8000113a3ca8: f2fbd5a0 movk x0, #0xdead, lsl #48 ffff8000113a3cac: f9001660 str x0, [x19,#40] smp_store_release(&lock->locked, 0); ffff8000113a3cb0: 91000294 add x20, x20, #0x0 ffff8000113a3cb0: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a3cb4: 52800000 mov w0, #0x0 // #0 ffff8000113a3cb8: 910ca294 add x20, x20, #0x328 ffff8000113a3cbc: 089ffe80 stlrb w0, [x20] synchronize_net(); ffff8000113a3cc0: 94000000 bl ffff8000113a1384 ffff8000113a3cc0: R_AARCH64_CALL26 synchronize_net } ffff8000113a3cc4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a3cc8: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a3ccc: d65f03c0 ret pr_warn("dev_remove_offload: %p not found\n", po); ffff8000113a3cd0: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a3cd0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x2a0 ffff8000113a3cd4: aa1303e1 mov x1, x19 ffff8000113a3cd8: 91000000 add x0, x0, #0x0 ffff8000113a3cd8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x2a0 ffff8000113a3cdc: 94000000 bl 0 ffff8000113a3cdc: R_AARCH64_CALL26 printk ffff8000113a3ce0: 17fffff4 b ffff8000113a3cb0 queued_spin_lock_slowpath(lock, val); ffff8000113a3ce4: 910ca000 add x0, x0, #0x328 ffff8000113a3ce8: 94000000 bl 0 ffff8000113a3ce8: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113a3cec: 17ffffd8 b ffff8000113a3c4c ffff8000113a3cf0 : { ffff8000113a3cf0: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113a3cf4: 910003fd mov x29, sp ffff8000113a3cf8: a90153f3 stp x19, x20, [sp,#16] ffff8000113a3cfc: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a3d00: a90363f7 stp x23, x24, [sp,#48] ffff8000113a3d04: aa0003f6 mov x22, x0 ffff8000113a3d08: aa1e03e0 mov x0, x30 ffff8000113a3d0c: 53001c37 uxtb w23, w1 ffff8000113a3d10: 94000000 bl 0 <_mcount> ffff8000113a3d10: R_AARCH64_CALL26 _mcount list_for_each_entry_safe(dev, tmp, head, close_list) ffff8000113a3d14: f94002d3 ldr x19, [x22] { ffff8000113a3d18: 90000018 adrp x24, 0 <__stack_chk_guard> ffff8000113a3d18: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a3d1c: f9400300 ldr x0, [x24] ffff8000113a3d1c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard list_for_each_entry_safe(dev, tmp, head, close_list) ffff8000113a3d20: aa1303f4 mov x20, x19 ffff8000113a3d24: f8588695 ldr x21, [x20],#-120 { ffff8000113a3d28: f9002fa0 str x0, [x29,#88] list_for_each_entry_safe(dev, tmp, head, close_list) ffff8000113a3d2c: eb16027f cmp x19, x22 ffff8000113a3d30: d101e2b5 sub x21, x21, #0x78 ffff8000113a3d34: 54000121 b.ne ffff8000113a3d58 ffff8000113a3d38: 1400001a b ffff8000113a3da0 ffff8000113a3d3c: aa1503f3 mov x19, x21 ffff8000113a3d40: f8478e60 ldr x0, [x19,#120]! ffff8000113a3d44: eb16027f cmp x19, x22 ffff8000113a3d48: d101e000 sub x0, x0, #0x78 ffff8000113a3d4c: 540002a0 b.eq ffff8000113a3da0 ffff8000113a3d50: aa1503f4 mov x20, x21 ffff8000113a3d54: aa0003f5 mov x21, x0 if (!(dev->flags & IFF_UP)) ffff8000113a3d58: b9422a80 ldr w0, [x20,#552] ffff8000113a3d5c: 3707ff00 tbnz w0, #0, ffff8000113a3d3c if (!__list_del_entry_valid(entry)) ffff8000113a3d60: aa1303e0 mov x0, x19 ffff8000113a3d64: 94000000 bl 0 <__list_del_entry_valid> ffff8000113a3d64: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113a3d68: 53001c00 uxtb w0, w0 ffff8000113a3d6c: 9101e281 add x1, x20, #0x78 ffff8000113a3d70: 340000a0 cbz w0, ffff8000113a3d84 __list_del(entry->prev, entry->next); ffff8000113a3d74: f9400420 ldr x0, [x1,#8] ffff8000113a3d78: f9403e82 ldr x2, [x20,#120] next->prev = prev; ffff8000113a3d7c: f9000440 str x0, [x2,#8] ffff8000113a3d80: f9000002 str x2, [x0] ffff8000113a3d84: f9003e93 str x19, [x20,#120] list->prev = list; ffff8000113a3d88: f9000433 str x19, [x1,#8] list_for_each_entry_safe(dev, tmp, head, close_list) ffff8000113a3d8c: aa1503f3 mov x19, x21 ffff8000113a3d90: f8478e60 ldr x0, [x19,#120]! ffff8000113a3d94: eb16027f cmp x19, x22 ffff8000113a3d98: d101e000 sub x0, x0, #0x78 ffff8000113a3d9c: 54fffda1 b.ne ffff8000113a3d50 __dev_close_many(head); ffff8000113a3da0: aa1603e0 mov x0, x22 ffff8000113a3da4: 97fff1b7 bl ffff8000113a0480 <__dev_close_many> list_for_each_entry_safe(dev, tmp, head, close_list) { ffff8000113a3da8: f94002d3 ldr x19, [x22] ffff8000113a3dac: aa1303f4 mov x20, x19 ffff8000113a3db0: f8588695 ldr x21, [x20],#-120 ffff8000113a3db4: eb16027f cmp x19, x22 ffff8000113a3db8: d101e2b5 sub x21, x21, #0x78 ffff8000113a3dbc: 54000121 b.ne ffff8000113a3de0 ffff8000113a3dc0: 14000023 b ffff8000113a3e4c ffff8000113a3dc4: aa1503f3 mov x19, x21 ffff8000113a3dc8: f8478e60 ldr x0, [x19,#120]! ffff8000113a3dcc: eb16027f cmp x19, x22 ffff8000113a3dd0: d101e000 sub x0, x0, #0x78 ffff8000113a3dd4: 540003c0 b.eq ffff8000113a3e4c ffff8000113a3dd8: aa1503f4 mov x20, x21 ffff8000113a3ddc: aa0003f5 mov x21, x0 rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_UP|IFF_RUNNING, GFP_KERNEL); ffff8000113a3de0: 52800200 mov w0, #0x10 // #16 ffff8000113a3de4: aa1403e1 mov x1, x20 ffff8000113a3de8: 52800822 mov w2, #0x41 // #65 ffff8000113a3dec: 52819803 mov w3, #0xcc0 // #3264 ffff8000113a3df0: 94000000 bl 0 ffff8000113a3df0: R_AARCH64_CALL26 rtmsg_ifinfo return call_netdevice_notifiers_info(val, &info); ffff8000113a3df4: d2800040 mov x0, #0x2 // #2 ffff8000113a3df8: 910123a1 add x1, x29, #0x48 struct netdev_notifier_info info = { ffff8000113a3dfc: f90027b4 str x20, [x29,#72] ffff8000113a3e00: f9002bbf str xzr, [x29,#80] return call_netdevice_notifiers_info(val, &info); ffff8000113a3e04: 97fff0bd bl ffff8000113a00f8 if (unlink) ffff8000113a3e08: 34fffdf7 cbz w23, ffff8000113a3dc4 if (!__list_del_entry_valid(entry)) ffff8000113a3e0c: aa1303e0 mov x0, x19 ffff8000113a3e10: 94000000 bl 0 <__list_del_entry_valid> ffff8000113a3e10: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113a3e14: 53001c00 uxtb w0, w0 ffff8000113a3e18: 9101e281 add x1, x20, #0x78 ffff8000113a3e1c: 340000a0 cbz w0, ffff8000113a3e30 __list_del(entry->prev, entry->next); ffff8000113a3e20: f9400420 ldr x0, [x1,#8] ffff8000113a3e24: f9403e82 ldr x2, [x20,#120] next->prev = prev; ffff8000113a3e28: f9000440 str x0, [x2,#8] ffff8000113a3e2c: f9000002 str x2, [x0] ffff8000113a3e30: f9003e93 str x19, [x20,#120] list->prev = list; ffff8000113a3e34: f9000433 str x19, [x1,#8] list_for_each_entry_safe(dev, tmp, head, close_list) { ffff8000113a3e38: aa1503f3 mov x19, x21 ffff8000113a3e3c: f8478e60 ldr x0, [x19,#120]! ffff8000113a3e40: eb16027f cmp x19, x22 ffff8000113a3e44: d101e000 sub x0, x0, #0x78 ffff8000113a3e48: 54fffc81 b.ne ffff8000113a3dd8 } ffff8000113a3e4c: f9402fa1 ldr x1, [x29,#88] ffff8000113a3e50: f9400300 ldr x0, [x24] ffff8000113a3e50: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a3e54: eb00003f cmp x1, x0 ffff8000113a3e58: 540000c1 b.ne ffff8000113a3e70 ffff8000113a3e5c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a3e60: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a3e64: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a3e68: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113a3e6c: d65f03c0 ret ffff8000113a3e70: 94000000 bl 0 <__stack_chk_fail> ffff8000113a3e70: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a3e74 : void dev_close(struct net_device *dev) ffff8000113a3e74: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113a3e78: 910003fd mov x29, sp ffff8000113a3e7c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a3e80: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a3e84: aa0003f6 mov x22, x0 ffff8000113a3e88: aa1e03e0 mov x0, x30 ffff8000113a3e8c: 94000000 bl 0 <_mcount> ffff8000113a3e8c: R_AARCH64_CALL26 _mcount ffff8000113a3e90: 90000015 adrp x21, 0 <__stack_chk_guard> ffff8000113a3e90: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard LIST_HEAD(single); ffff8000113a3e94: 9100e3b3 add x19, x29, #0x38 void dev_close(struct net_device *dev) ffff8000113a3e98: f94002a3 ldr x3, [x21] ffff8000113a3e98: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard list_add(&dev->close_list, &single); ffff8000113a3e9c: 9101e2d4 add x20, x22, #0x78 if (!__list_add_valid(new, prev, next)) ffff8000113a3ea0: aa1403e0 mov x0, x20 ffff8000113a3ea4: aa1303e1 mov x1, x19 ffff8000113a3ea8: aa1303e2 mov x2, x19 void dev_close(struct net_device *dev) ffff8000113a3eac: f90027a3 str x3, [x29,#72] LIST_HEAD(single); ffff8000113a3eb0: f9001fb3 str x19, [x29,#56] ffff8000113a3eb4: f90023b3 str x19, [x29,#64] ffff8000113a3eb8: 94000000 bl 0 <__list_add_valid> ffff8000113a3eb8: R_AARCH64_CALL26 __list_add_valid ffff8000113a3ebc: 53001c00 uxtb w0, w0 ffff8000113a3ec0: 340000a0 cbz w0, ffff8000113a3ed4 new->next = next; ffff8000113a3ec4: f9003ed3 str x19, [x22,#120] next->prev = new; ffff8000113a3ec8: f90023b4 str x20, [x29,#64] new->prev = prev; ffff8000113a3ecc: f90042d3 str x19, [x22,#128] ffff8000113a3ed0: f9001fb4 str x20, [x29,#56] dev_close_many(&single, true); ffff8000113a3ed4: 52800021 mov w1, #0x1 // #1 ffff8000113a3ed8: aa1303e0 mov x0, x19 ffff8000113a3edc: 94000000 bl ffff8000113a3cf0 ffff8000113a3edc: R_AARCH64_CALL26 dev_close_many if (!__list_del_entry_valid(entry)) ffff8000113a3ee0: aa1303e0 mov x0, x19 ffff8000113a3ee4: 94000000 bl 0 <__list_del_entry_valid> ffff8000113a3ee4: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113a3ee8: 53001c00 uxtb w0, w0 ffff8000113a3eec: 340000a0 cbz w0, ffff8000113a3f00 __list_del(entry->prev, entry->next); ffff8000113a3ef0: f94023a0 ldr x0, [x29,#64] ffff8000113a3ef4: f9401fa1 ldr x1, [x29,#56] next->prev = prev; ffff8000113a3ef8: f9000420 str x0, [x1,#8] ffff8000113a3efc: f9000001 str x1, [x0] } ffff8000113a3f00: f94027a1 ldr x1, [x29,#72] ffff8000113a3f04: f94002a0 ldr x0, [x21] ffff8000113a3f04: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a3f08: eb00003f cmp x1, x0 ffff8000113a3f0c: 540000a1 b.ne ffff8000113a3f20 ffff8000113a3f10: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a3f14: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a3f18: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a3f1c: d65f03c0 ret ffff8000113a3f20: 94000000 bl 0 <__stack_chk_fail> ffff8000113a3f20: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a3f24 : { ffff8000113a3f24: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a3f28: 910003fd mov x29, sp ffff8000113a3f2c: f9000bf3 str x19, [sp,#16] ffff8000113a3f30: aa0003f3 mov x19, x0 ffff8000113a3f34: aa1e03e0 mov x0, x30 ffff8000113a3f38: 94000000 bl 0 <_mcount> ffff8000113a3f38: R_AARCH64_CALL26 _mcount if (dev->flags & IFF_UP) { ffff8000113a3f3c: b9422a60 ldr w0, [x19,#552] ffff8000113a3f40: 36000060 tbz w0, #0, ffff8000113a3f4c ffff8000113a3f44: aa1303e0 mov x0, x19 ffff8000113a3f48: 97ffffcb bl ffff8000113a3e74 } ffff8000113a3f4c: f9400bf3 ldr x19, [sp,#16] ffff8000113a3f50: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a3f54: d65f03c0 ret ffff8000113a3f58 : { ffff8000113a3f58: a9b87bfd stp x29, x30, [sp,#-128]! ffff8000113a3f5c: 910003fd mov x29, sp ffff8000113a3f60: a90153f3 stp x19, x20, [sp,#16] ffff8000113a3f64: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a3f68: a90363f7 stp x23, x24, [sp,#48] ffff8000113a3f6c: a9046bf9 stp x25, x26, [sp,#64] ffff8000113a3f70: a90573fb stp x27, x28, [sp,#80] ffff8000113a3f74: aa0003f4 mov x20, x0 ffff8000113a3f78: aa1e03e0 mov x0, x30 ffff8000113a3f7c: 90000017 adrp x23, 0 <__stack_chk_guard> ffff8000113a3f7c: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a3f80: aa0103f6 mov x22, x1 ffff8000113a3f84: aa0203f3 mov x19, x2 ffff8000113a3f88: 94000000 bl 0 <_mcount> ffff8000113a3f88: R_AARCH64_CALL26 _mcount ffff8000113a3f8c: f94002e0 ldr x0, [x23] ffff8000113a3f8c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a3f90: f9427a98 ldr x24, [x20,#1264] ffff8000113a3f94: f9003fa0 str x0, [x29,#120] ASSERT_RTNL(); ffff8000113a3f98: 94000000 bl 0 ffff8000113a3f98: R_AARCH64_CALL26 rtnl_is_locked ffff8000113a3f9c: 34001b20 cbz w0, ffff8000113a4300 if (dev->features & NETIF_F_NETNS_LOCAL) ffff8000113a3fa0: f9406680 ldr x0, [x20,#200] ffff8000113a3fa4: 92730000 and x0, x0, #0x2000 ffff8000113a3fa8: b50019e0 cbnz x0, ffff8000113a42e4 if (dev->reg_state != NETREG_REGISTERED) ffff8000113a3fac: 39536281 ldrb w1, [x20,#1240] ffff8000113a3fb0: 7100043f cmp w1, #0x1 ffff8000113a3fb4: 54001981 b.ne ffff8000113a42e4 if (net_eq(net_old, net)) ffff8000113a3fb8: eb1802df cmp x22, x24 ffff8000113a3fbc: 54001300 b.eq ffff8000113a421c node_name = netdev_name_node_lookup(net, name); ffff8000113a3fc0: aa1603e0 mov x0, x22 ffff8000113a3fc4: aa1403e1 mov x1, x20 ffff8000113a3fc8: 97ffedaa bl ffff80001139f670 return node_name ? node_name->dev : NULL; ffff8000113a3fcc: b4000120 cbz x0, ffff8000113a3ff0 if (__dev_get_by_name(net, dev->name)) { ffff8000113a3fd0: f9401000 ldr x0, [x0,#32] ffff8000113a3fd4: b40000e0 cbz x0, ffff8000113a3ff0 if (!pat) ffff8000113a3fd8: b40018b3 cbz x19, ffff8000113a42ec err = dev_get_valid_name(net, dev, pat); ffff8000113a3fdc: aa1403e1 mov x1, x20 ffff8000113a3fe0: aa1603e0 mov x0, x22 ffff8000113a3fe4: aa1303e2 mov x2, x19 ffff8000113a3fe8: 97fff6cb bl ffff8000113a1b14 if (err < 0) ffff8000113a3fec: 37f81180 tbnz w0, #31, ffff8000113a421c if (dev->flags & IFF_UP) { ffff8000113a3ff0: b9422a80 ldr w0, [x20,#552] ffff8000113a3ff4: 37001720 tbnz w0, #0, ffff8000113a42d8 unlist_netdevice(dev); ffff8000113a3ff8: aa1403e0 mov x0, x20 ffff8000113a3ffc: 97fffe1d bl ffff8000113a3870 synchronize_net(); ffff8000113a4000: 94000000 bl ffff8000113a1384 ffff8000113a4000: R_AARCH64_CALL26 synchronize_net dev_shutdown(dev); ffff8000113a4004: aa1403e0 mov x0, x20 ffff8000113a4008: 94000000 bl 0 ffff8000113a4008: R_AARCH64_CALL26 dev_shutdown return call_netdevice_notifiers_info(val, &info); ffff8000113a400c: 9101a3a1 add x1, x29, #0x68 ffff8000113a4010: d28000c0 mov x0, #0x6 // #6 struct netdev_notifier_info info = { ffff8000113a4014: f90037b4 str x20, [x29,#104] ffff8000113a4018: f9003bbf str xzr, [x29,#112] return call_netdevice_notifiers_info(val, &info); ffff8000113a401c: 97fff037 bl ffff8000113a00f8 rcu_barrier(); ffff8000113a4020: 94000000 bl 0 ffff8000113a4020: R_AARCH64_CALL26 rcu_barrier new_nsid = peernet2id_alloc(dev_net(dev), net, GFP_KERNEL); ffff8000113a4024: f9427a80 ldr x0, [x20,#1264] ffff8000113a4028: aa1603e1 mov x1, x22 ffff8000113a402c: 52819802 mov w2, #0xcc0 // #3264 ffff8000113a4030: 94000000 bl 0 ffff8000113a4030: R_AARCH64_CALL26 peernet2id_alloc if (__dev_get_by_index(net, dev->ifindex)) ffff8000113a4034: b9410299 ldr w25, [x20,#256] hlist_for_each_entry(dev, head, index_hlist) ffff8000113a4038: f9409ac1 ldr x1, [x22,#304] new_nsid = peernet2id_alloc(dev_net(dev), net, GFP_KERNEL); ffff8000113a403c: b90067a0 str w0, [x29,#100] return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; ffff8000113a4040: d37d1f20 ubfiz x0, x25, #3, #8 hlist_for_each_entry(dev, head, index_hlist) ffff8000113a4044: f8606823 ldr x3, [x1,x0] ffff8000113a4048: b4000043 cbz x3, ffff8000113a4050 ffff8000113a404c: d10e4063 sub x3, x3, #0x390 ffff8000113a4050: b40000c3 cbz x3, ffff8000113a4068 if (dev->ifindex == ifindex) ffff8000113a4054: b9410060 ldr w0, [x3,#256] ffff8000113a4058: 6b00033f cmp w25, w0 ffff8000113a405c: 54001360 b.eq ffff8000113a42c8 hlist_for_each_entry(dev, head, index_hlist) ffff8000113a4060: f941c863 ldr x3, [x3,#912] ffff8000113a4064: b5ffff43 cbnz x3, ffff8000113a404c rtmsg_ifinfo_newnet(RTM_DELLINK, dev, ~0U, GFP_KERNEL, &new_nsid, ffff8000113a4068: aa1403e1 mov x1, x20 ffff8000113a406c: 12800002 mov w2, #0xffffffff // #-1 ffff8000113a4070: 52819803 mov w3, #0xcc0 // #3264 ffff8000113a4074: 910193a4 add x4, x29, #0x64 ffff8000113a4078: 2a1903e5 mov w5, w25 ffff8000113a407c: 52800220 mov w0, #0x11 // #17 ffff8000113a4080: 94000000 bl 0 ffff8000113a4080: R_AARCH64_CALL26 rtmsg_ifinfo_newnet dev_uc_flush(dev); ffff8000113a4084: aa1403e0 mov x0, x20 ffff8000113a4088: 94000000 bl 0 ffff8000113a4088: R_AARCH64_CALL26 dev_uc_flush dev_mc_flush(dev); ffff8000113a408c: aa1403e0 mov x0, x20 ffff8000113a4090: 94000000 bl 0 ffff8000113a4090: R_AARCH64_CALL26 dev_mc_flush kobject_uevent(&dev->dev.kobj, KOBJ_REMOVE); ffff8000113a4094: 9114429a add x26, x20, #0x510 list_for_each_entry(iter, &dev->adj_list.upper, list) { ffff8000113a4098: aa1403fb mov x27, x20 kobject_uevent(&dev->dev.kobj, KOBJ_REMOVE); ffff8000113a409c: aa1a03e0 mov x0, x26 ffff8000113a40a0: 52800021 mov w1, #0x1 // #1 ffff8000113a40a4: 94000000 bl 0 ffff8000113a40a4: R_AARCH64_CALL26 kobject_uevent list_for_each_entry(iter, &dev->adj_list.upper, list) { ffff8000113a40a8: f84a8f73 ldr x19, [x27,#168]! ffff8000113a40ac: f9427a9c ldr x28, [x20,#1264] ffff8000113a40b0: eb13037f cmp x27, x19 ffff8000113a40b4: d1006273 sub x19, x19, #0x18 ffff8000113a40b8: 54000120 b.eq ffff8000113a40dc if (!net_eq(net, dev_net(iter->dev))) ffff8000113a40bc: f9400260 ldr x0, [x19] ffff8000113a40c0: f9427801 ldr x1, [x0,#1264] ffff8000113a40c4: eb01039f cmp x28, x1 ffff8000113a40c8: 54000f00 b.eq ffff8000113a42a8 list_for_each_entry(iter, &dev->adj_list.upper, list) { ffff8000113a40cc: f9400e73 ldr x19, [x19,#24] ffff8000113a40d0: eb13037f cmp x27, x19 ffff8000113a40d4: d1006273 sub x19, x19, #0x18 ffff8000113a40d8: 54ffff21 b.ne ffff8000113a40bc list_for_each_entry(iter, &dev->adj_list.lower, list) { ffff8000113a40dc: aa1403f5 mov x21, x20 ffff8000113a40e0: f84b8eb3 ldr x19, [x21,#184]! ffff8000113a40e4: eb1302bf cmp x21, x19 ffff8000113a40e8: d1006273 sub x19, x19, #0x18 ffff8000113a40ec: 54000120 b.eq ffff8000113a4110 if (!net_eq(net, dev_net(iter->dev))) ffff8000113a40f0: f9400260 ldr x0, [x19] ffff8000113a40f4: f9427801 ldr x1, [x0,#1264] ffff8000113a40f8: eb01039f cmp x28, x1 ffff8000113a40fc: 54000c60 b.eq ffff8000113a4288 list_for_each_entry(iter, &dev->adj_list.lower, list) { ffff8000113a4100: f9400e73 ldr x19, [x19,#24] ffff8000113a4104: eb1302bf cmp x21, x19 ffff8000113a4108: d1006273 sub x19, x19, #0x18 ffff8000113a410c: 54ffff21 b.ne ffff8000113a40f0 list_for_each_entry(nn, &dev->net_notifier_list, list) { ffff8000113a4110: f9446293 ldr x19, [x20,#2240] ffff8000113a4114: 9123029c add x28, x20, #0x8c0 ffff8000113a4118: eb1c027f cmp x19, x28 ffff8000113a411c: 54000160 b.eq ffff8000113a4148 __unregister_netdevice_notifier_net(dev_net(dev), nn->nb); ffff8000113a4120: f9400a61 ldr x1, [x19,#16] ffff8000113a4124: f9427a80 ldr x0, [x20,#1264] ffff8000113a4128: 97fff743 bl ffff8000113a1e34 <__unregister_netdevice_notifier_net> __register_netdevice_notifier_net(net, nn->nb, true); ffff8000113a412c: f9400a61 ldr x1, [x19,#16] ffff8000113a4130: aa1603e0 mov x0, x22 ffff8000113a4134: 52800022 mov w2, #0x1 // #1 ffff8000113a4138: 97fff1a0 bl ffff8000113a07b8 <__register_netdevice_notifier_net> list_for_each_entry(nn, &dev->net_notifier_list, list) { ffff8000113a413c: f9400273 ldr x19, [x19] ffff8000113a4140: eb13039f cmp x28, x19 ffff8000113a4144: 54fffee1 b.ne ffff8000113a4120 dev->ifindex = new_ifindex; ffff8000113a4148: b9010299 str w25, [x20,#256] pnet->net = net; ffff8000113a414c: f9027a96 str x22, [x20,#1264] kobject_uevent(&dev->dev.kobj, KOBJ_ADD); ffff8000113a4150: aa1a03e0 mov x0, x26 ffff8000113a4154: 52800001 mov w1, #0x0 // #0 ffff8000113a4158: 94000000 bl 0 ffff8000113a4158: R_AARCH64_CALL26 kobject_uevent list_for_each_entry(iter, &dev->adj_list.upper, list) { ffff8000113a415c: f9405693 ldr x19, [x20,#168] return pnet->net; ffff8000113a4160: f9427a99 ldr x25, [x20,#1264] ffff8000113a4164: eb13037f cmp x27, x19 ffff8000113a4168: d1006273 sub x19, x19, #0x18 ffff8000113a416c: 54000120 b.eq ffff8000113a4190 if (!net_eq(net, dev_net(iter->dev))) ffff8000113a4170: f9400260 ldr x0, [x19] ffff8000113a4174: f9427801 ldr x1, [x0,#1264] ffff8000113a4178: eb01033f cmp x25, x1 ffff8000113a417c: 54000760 b.eq ffff8000113a4268 list_for_each_entry(iter, &dev->adj_list.upper, list) { ffff8000113a4180: f9400e73 ldr x19, [x19,#24] ffff8000113a4184: eb13037f cmp x27, x19 ffff8000113a4188: d1006273 sub x19, x19, #0x18 ffff8000113a418c: 54ffff21 b.ne ffff8000113a4170 list_for_each_entry(iter, &dev->adj_list.lower, list) { ffff8000113a4190: f9405e93 ldr x19, [x20,#184] ffff8000113a4194: eb1302bf cmp x21, x19 ffff8000113a4198: d1006273 sub x19, x19, #0x18 ffff8000113a419c: 54000120 b.eq ffff8000113a41c0 if (!net_eq(net, dev_net(iter->dev))) ffff8000113a41a0: f9400260 ldr x0, [x19] ffff8000113a41a4: f9427801 ldr x1, [x0,#1264] ffff8000113a41a8: eb01033f cmp x25, x1 ffff8000113a41ac: 540004e0 b.eq ffff8000113a4248 list_for_each_entry(iter, &dev->adj_list.lower, list) { ffff8000113a41b0: f9400e73 ldr x19, [x19,#24] ffff8000113a41b4: eb1302bf cmp x21, x19 ffff8000113a41b8: d1006273 sub x19, x19, #0x18 ffff8000113a41bc: 54ffff21 b.ne ffff8000113a41a0 err = device_rename(&dev->dev, dev->name); ffff8000113a41c0: aa1a03e0 mov x0, x26 ffff8000113a41c4: aa1403e1 mov x1, x20 ffff8000113a41c8: 94000000 bl 0 ffff8000113a41c8: R_AARCH64_CALL26 device_rename WARN_ON(err); ffff8000113a41cc: 35000b60 cbnz w0, ffff8000113a4338 err = netdev_change_owner(dev, net_old, net); ffff8000113a41d0: aa1403e0 mov x0, x20 ffff8000113a41d4: aa1803e1 mov x1, x24 ffff8000113a41d8: aa1603e2 mov x2, x22 ffff8000113a41dc: 94000000 bl 0 ffff8000113a41dc: R_AARCH64_CALL26 netdev_change_owner WARN_ON(err); ffff8000113a41e0: 350008c0 cbnz w0, ffff8000113a42f8 list_netdevice(dev); ffff8000113a41e4: aa1403e0 mov x0, x20 ffff8000113a41e8: 97fffc63 bl ffff8000113a3374 return call_netdevice_notifiers_info(val, &info); ffff8000113a41ec: 9101a3a1 add x1, x29, #0x68 ffff8000113a41f0: d28000a0 mov x0, #0x5 // #5 struct netdev_notifier_info info = { ffff8000113a41f4: f90037b4 str x20, [x29,#104] ffff8000113a41f8: f9003bbf str xzr, [x29,#112] return call_netdevice_notifiers_info(val, &info); ffff8000113a41fc: 97ffefbf bl ffff8000113a00f8 rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U, GFP_KERNEL); ffff8000113a4200: 52800200 mov w0, #0x10 // #16 ffff8000113a4204: aa1403e1 mov x1, x20 ffff8000113a4208: 12800002 mov w2, #0xffffffff // #-1 ffff8000113a420c: 52819803 mov w3, #0xcc0 // #3264 ffff8000113a4210: 94000000 bl 0 ffff8000113a4210: R_AARCH64_CALL26 rtmsg_ifinfo synchronize_net(); ffff8000113a4214: 94000000 bl ffff8000113a1384 ffff8000113a4214: R_AARCH64_CALL26 synchronize_net err = 0; ffff8000113a4218: 52800000 mov w0, #0x0 // #0 } ffff8000113a421c: f9403fa2 ldr x2, [x29,#120] ffff8000113a4220: f94002e1 ldr x1, [x23] ffff8000113a4220: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a4224: eb01005f cmp x2, x1 ffff8000113a4228: 54000661 b.ne ffff8000113a42f4 ffff8000113a422c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a4230: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a4234: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a4238: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a423c: a94573fb ldp x27, x28, [sp,#80] ffff8000113a4240: a8c87bfd ldp x29, x30, [sp],#128 ffff8000113a4244: d65f03c0 ret netdev_adjacent_sysfs_add(iter->dev, dev, ffff8000113a4248: aa1403e1 mov x1, x20 ffff8000113a424c: 9102a002 add x2, x0, #0xa8 ffff8000113a4250: 97fff32e bl ffff8000113a0f08 netdev_adjacent_sysfs_add(dev, iter->dev, ffff8000113a4254: f9400261 ldr x1, [x19] ffff8000113a4258: aa1403e0 mov x0, x20 ffff8000113a425c: aa1503e2 mov x2, x21 ffff8000113a4260: 97fff32a bl ffff8000113a0f08 ffff8000113a4264: 17ffffd3 b ffff8000113a41b0 netdev_adjacent_sysfs_add(iter->dev, dev, ffff8000113a4268: aa1403e1 mov x1, x20 ffff8000113a426c: 9102e002 add x2, x0, #0xb8 ffff8000113a4270: 97fff326 bl ffff8000113a0f08 netdev_adjacent_sysfs_add(dev, iter->dev, ffff8000113a4274: f9400261 ldr x1, [x19] ffff8000113a4278: aa1403e0 mov x0, x20 ffff8000113a427c: aa1b03e2 mov x2, x27 ffff8000113a4280: 97fff322 bl ffff8000113a0f08 ffff8000113a4284: 17ffffbf b ffff8000113a4180 netdev_adjacent_sysfs_del(iter->dev, dev->name, ffff8000113a4288: aa1403e1 mov x1, x20 ffff8000113a428c: 9102a002 add x2, x0, #0xa8 ffff8000113a4290: 97fff343 bl ffff8000113a0f9c netdev_adjacent_sysfs_del(dev, iter->dev->name, ffff8000113a4294: f9400261 ldr x1, [x19] ffff8000113a4298: aa1403e0 mov x0, x20 ffff8000113a429c: aa1503e2 mov x2, x21 ffff8000113a42a0: 97fff33f bl ffff8000113a0f9c ffff8000113a42a4: 17ffff97 b ffff8000113a4100 netdev_adjacent_sysfs_del(iter->dev, dev->name, ffff8000113a42a8: aa1403e1 mov x1, x20 ffff8000113a42ac: 9102e002 add x2, x0, #0xb8 ffff8000113a42b0: 97fff33b bl ffff8000113a0f9c netdev_adjacent_sysfs_del(dev, iter->dev->name, ffff8000113a42b4: f9400261 ldr x1, [x19] ffff8000113a42b8: aa1403e0 mov x0, x20 ffff8000113a42bc: aa1b03e2 mov x2, x27 ffff8000113a42c0: 97fff337 bl ffff8000113a0f9c ffff8000113a42c4: 17ffff82 b ffff8000113a40cc new_ifindex = dev_new_index(net); ffff8000113a42c8: aa1603e0 mov x0, x22 ffff8000113a42cc: 97ffec6e bl ffff80001139f484 ffff8000113a42d0: 2a0003f9 mov w25, w0 ffff8000113a42d4: 17ffff65 b ffff8000113a4068 ffff8000113a42d8: aa1403e0 mov x0, x20 ffff8000113a42dc: 97fffee6 bl ffff8000113a3e74 ffff8000113a42e0: 17ffff46 b ffff8000113a3ff8 err = -EINVAL; ffff8000113a42e4: 128002a0 mov w0, #0xffffffea // #-22 ffff8000113a42e8: 17ffffcd b ffff8000113a421c err = -EEXIST; ffff8000113a42ec: 12800200 mov w0, #0xffffffef // #-17 ffff8000113a42f0: 17ffffcb b ffff8000113a421c } ffff8000113a42f4: 94000000 bl 0 <__stack_chk_fail> ffff8000113a42f4: R_AARCH64_CALL26 __stack_chk_fail WARN_ON(err); ffff8000113a42f8: d4210000 brk #0x800 ffff8000113a42fc: 17ffffba b ffff8000113a41e4 ASSERT_RTNL(); ffff8000113a4300: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113a4300: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113a4304: 91000063 add x3, x3, #0x0 ffff8000113a4304: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113a4308: 39404060 ldrb w0, [x3,#16] ffff8000113a430c: 35ffe4a0 cbnz w0, ffff8000113a3fa0 ffff8000113a4310: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a4310: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113a4314: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a4314: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113a4318: 52800024 mov w4, #0x1 // #1 ffff8000113a431c: 91000000 add x0, x0, #0x0 ffff8000113a431c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113a4320: 91000021 add x1, x1, #0x0 ffff8000113a4320: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113a4324: 5284e642 mov w2, #0x2732 // #10034 ffff8000113a4328: 39004064 strb w4, [x3,#16] ffff8000113a432c: 94000000 bl 0 <__warn_printk> ffff8000113a432c: R_AARCH64_CALL26 __warn_printk ffff8000113a4330: d4210000 brk #0x800 ffff8000113a4334: 17ffff1b b ffff8000113a3fa0 WARN_ON(err); ffff8000113a4338: d4210000 brk #0x800 ffff8000113a433c: 17ffffa5 b ffff8000113a41d0 ffff8000113a4340 : .init = netdev_init, .exit = netdev_exit, }; static void __net_exit default_device_exit(struct net *net) { ffff8000113a4340: a9b97bfd stp x29, x30, [sp,#-112]! ffff8000113a4344: 910003fd mov x29, sp ffff8000113a4348: a90153f3 stp x19, x20, [sp,#16] ffff8000113a434c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a4350: a90363f7 stp x23, x24, [sp,#48] ffff8000113a4354: f90023f9 str x25, [sp,#64] ffff8000113a4358: aa0003f9 mov x25, x0 ffff8000113a435c: aa1e03e0 mov x0, x30 ffff8000113a4360: 94000000 bl 0 <_mcount> ffff8000113a4360: R_AARCH64_CALL26 _mcount ffff8000113a4364: 90000015 adrp x21, 0 <__stack_chk_guard> ffff8000113a4364: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a4368: f94002a0 ldr x0, [x21] ffff8000113a4368: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a436c: f90037a0 str x0, [x29,#104] struct net_device *dev, *aux; /* * Push all migratable network devices back to the * initial network namespace */ rtnl_lock(); ffff8000113a4370: 94000000 bl 0 ffff8000113a4370: R_AARCH64_CALL26 rtnl_lock for_each_netdev_safe(net, dev, aux) { ffff8000113a4374: f8490f20 ldr x0, [x25,#144]! ffff8000113a4378: aa0003f4 mov x20, x0 ffff8000113a437c: f85b8693 ldr x19, [x20],#-72 ffff8000113a4380: eb00033f cmp x25, x0 ffff8000113a4384: d1012273 sub x19, x19, #0x48 ffff8000113a4388: 54000260 b.eq ffff8000113a43d4 /* Leave virtual devices for the generic cleanup */ if (dev->rtnl_link_ops) continue; /* Push remaining network devices to init_net */ snprintf(fb_name, IFNAMSIZ, "dev%d", dev->ifindex); ffff8000113a438c: 90000017 adrp x23, ffff80001139e37c <__my_cpu_offset> ffff8000113a438c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x2c8 node_name = netdev_name_node_lookup(net, name); ffff8000113a4390: 90000016 adrp x22, 0 ffff8000113a4390: R_AARCH64_ADR_PREL_PG_HI21 init_net if (__dev_get_by_name(&init_net, fb_name)) snprintf(fb_name, IFNAMSIZ, "dev%%d"); ffff8000113a4394: 90000018 adrp x24, ffff80001139e37c <__my_cpu_offset> ffff8000113a4394: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x2d0 snprintf(fb_name, IFNAMSIZ, "dev%d", dev->ifindex); ffff8000113a4398: 910002f7 add x23, x23, #0x0 ffff8000113a4398: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x2c8 node_name = netdev_name_node_lookup(net, name); ffff8000113a439c: 910002d6 add x22, x22, #0x0 ffff8000113a439c: R_AARCH64_ADD_ABS_LO12_NC init_net snprintf(fb_name, IFNAMSIZ, "dev%%d"); ffff8000113a43a0: 91000318 add x24, x24, #0x0 ffff8000113a43a0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x2d0 ffff8000113a43a4: 14000003 b ffff8000113a43b0 ffff8000113a43a8: aa1303f4 mov x20, x19 for_each_netdev_safe(net, dev, aux) { ffff8000113a43ac: aa0403f3 mov x19, x4 if (dev->features & NETIF_F_NETNS_LOCAL) ffff8000113a43b0: f9406683 ldr x3, [x20,#200] ffff8000113a43b4: 37680063 tbnz w3, #13, ffff8000113a43c0 if (dev->rtnl_link_ops) ffff8000113a43b8: f9441a80 ldr x0, [x20,#2096] ffff8000113a43bc: b4000220 cbz x0, ffff8000113a4400 for_each_netdev_safe(net, dev, aux) { ffff8000113a43c0: aa1303e3 mov x3, x19 ffff8000113a43c4: f8448c64 ldr x4, [x3,#72]! ffff8000113a43c8: eb03033f cmp x25, x3 ffff8000113a43cc: d1012084 sub x4, x4, #0x48 ffff8000113a43d0: 54fffec1 b.ne ffff8000113a43a8 pr_emerg("%s: failed to move %s to init_net: %d\n", __func__, dev->name, err); BUG(); } } rtnl_unlock(); ffff8000113a43d4: 94000000 bl 0 ffff8000113a43d4: R_AARCH64_CALL26 rtnl_unlock } ffff8000113a43d8: f94037a1 ldr x1, [x29,#104] ffff8000113a43dc: f94002a0 ldr x0, [x21] ffff8000113a43dc: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a43e0: eb00003f cmp x1, x0 ffff8000113a43e4: 54000481 b.ne ffff8000113a4474 ffff8000113a43e8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a43ec: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a43f0: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a43f4: f94023f9 ldr x25, [sp,#64] ffff8000113a43f8: a8c77bfd ldp x29, x30, [sp],#112 ffff8000113a43fc: d65f03c0 ret snprintf(fb_name, IFNAMSIZ, "dev%d", dev->ifindex); ffff8000113a4400: b9410283 ldr w3, [x20,#256] ffff8000113a4404: d2800201 mov x1, #0x10 // #16 ffff8000113a4408: aa1703e2 mov x2, x23 ffff8000113a440c: 910163a0 add x0, x29, #0x58 ffff8000113a4410: 94000000 bl 0 ffff8000113a4410: R_AARCH64_CALL26 snprintf node_name = netdev_name_node_lookup(net, name); ffff8000113a4414: aa1603e0 mov x0, x22 ffff8000113a4418: 910163a1 add x1, x29, #0x58 ffff8000113a441c: 97ffec95 bl ffff80001139f670 return node_name ? node_name->dev : NULL; ffff8000113a4420: b40000e0 cbz x0, ffff8000113a443c if (__dev_get_by_name(&init_net, fb_name)) ffff8000113a4424: f9401000 ldr x0, [x0,#32] ffff8000113a4428: b40000a0 cbz x0, ffff8000113a443c snprintf(fb_name, IFNAMSIZ, "dev%%d"); ffff8000113a442c: 910163a0 add x0, x29, #0x58 ffff8000113a4430: d2800201 mov x1, #0x10 // #16 ffff8000113a4434: aa1803e2 mov x2, x24 ffff8000113a4438: 94000000 bl 0 ffff8000113a4438: R_AARCH64_CALL26 snprintf err = dev_change_net_namespace(dev, &init_net, fb_name); ffff8000113a443c: aa1403e0 mov x0, x20 ffff8000113a4440: aa1603e1 mov x1, x22 ffff8000113a4444: 910163a2 add x2, x29, #0x58 ffff8000113a4448: 94000000 bl ffff8000113a3f58 ffff8000113a4448: R_AARCH64_CALL26 dev_change_net_namespace ffff8000113a444c: 2a0003e3 mov w3, w0 if (err) { ffff8000113a4450: 34fffb80 cbz w0, ffff8000113a43c0 pr_emerg("%s: failed to move %s to init_net: %d\n", ffff8000113a4454: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a4454: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a4458: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a4458: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x2d8 ffff8000113a445c: 91000021 add x1, x1, #0x0 ffff8000113a445c: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a4460: 91010021 add x1, x1, #0x40 ffff8000113a4464: aa1403e2 mov x2, x20 ffff8000113a4468: 91000000 add x0, x0, #0x0 ffff8000113a4468: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x2d8 ffff8000113a446c: 94000000 bl 0 ffff8000113a446c: R_AARCH64_CALL26 printk BUG(); ffff8000113a4470: d4210000 brk #0x800 } ffff8000113a4474: 94000000 bl 0 <__stack_chk_fail> ffff8000113a4474: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a4478 : { ffff8000113a4478: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113a447c: 910003fd mov x29, sp ffff8000113a4480: a90153f3 stp x19, x20, [sp,#16] ffff8000113a4484: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a4488: a90363f7 stp x23, x24, [sp,#48] ffff8000113a448c: aa0003f5 mov x21, x0 ffff8000113a4490: aa1e03e0 mov x0, x30 ffff8000113a4494: aa0103f3 mov x19, x1 ffff8000113a4498: aa0203f7 mov x23, x2 ffff8000113a449c: 2a0303f6 mov w22, w3 ffff8000113a44a0: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113a44a0: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a44a4: 94000000 bl 0 <_mcount> ffff8000113a44a4: R_AARCH64_CALL26 _mcount ffff8000113a44a8: f9400280 ldr x0, [x20] ffff8000113a44a8: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard list->prev = list; ffff8000113a44ac: f9000673 str x19, [x19,#8] ffff8000113a44b0: f90027a0 str x0, [x29,#72] ffff8000113a44b4: f9000273 str x19, [x19] hrtimer_init(&napi->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED); ffff8000113a44b8: 91048260 add x0, x19, #0x120 ffff8000113a44bc: 52800021 mov w1, #0x1 // #1 ffff8000113a44c0: 52800062 mov w2, #0x3 // #3 ffff8000113a44c4: 94000000 bl 0 ffff8000113a44c4: R_AARCH64_CALL26 hrtimer_init napi->timer.function = napi_watchdog; ffff8000113a44c8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a44c8: R_AARCH64_ADR_PREL_PG_HI21 .text+0x73f8 ffff8000113a44cc: 91000000 add x0, x0, #0x0 ffff8000113a44cc: R_AARCH64_ADD_ABS_LO12_NC .text+0x73f8 ffff8000113a44d0: f900a660 str x0, [x19,#328] ffff8000113a44d4: 91010265 add x5, x19, #0x40 for (i = 0; i < GRO_HASH_BUCKETS; i++) { ffff8000113a44d8: 52800006 mov w6, #0x0 // #0 ffff8000113a44dc: 110004c6 add w6, w6, #0x1 ffff8000113a44e0: f90000a5 str x5, [x5] ffff8000113a44e4: f90004a5 str x5, [x5,#8] napi->gro_hash[i].count = 0; ffff8000113a44e8: b90010bf str wzr, [x5,#16] for (i = 0; i < GRO_HASH_BUCKETS; i++) { ffff8000113a44ec: 710020df cmp w6, #0x8 ffff8000113a44f0: 910060a5 add x5, x5, #0x18 ffff8000113a44f4: 54ffff41 b.ne ffff8000113a44dc INIT_LIST_HEAD(&napi->rx_list); ffff8000113a44f8: 91042260 add x0, x19, #0x108 napi->gro_bitmask = 0; ffff8000113a44fc: f900127f str xzr, [x19,#32] napi->skb = NULL; ffff8000113a4500: f900827f str xzr, [x19,#256] ffff8000113a4504: f9008660 str x0, [x19,#264] ffff8000113a4508: f9000400 str x0, [x0,#8] napi->rx_count = 0; ffff8000113a450c: b9011a7f str wzr, [x19,#280] napi->poll = poll; ffff8000113a4510: f9001677 str x23, [x19,#40] if (weight > NAPI_POLL_WEIGHT) ffff8000113a4514: 710102df cmp w22, #0x40 ffff8000113a4518: 540000ad b.le ffff8000113a452c netdev_err_once(dev, "%s() called with weight %d\n", __func__, ffff8000113a451c: 90000005 adrp x5, ffff80001139e37c <__my_cpu_offset> ffff8000113a451c: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a4520: 910000a5 add x5, x5, #0x0 ffff8000113a4520: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a4524: 396510a0 ldrb w0, [x5,#2372] ffff8000113a4528: 34000ca0 cbz w0, ffff8000113a46bc napi->weight = weight; ffff8000113a452c: b9001a76 str w22, [x19,#24] __list_add(new, head, head->next); ffff8000113a4530: f9402eb7 ldr x23, [x21,#88] list_add(&napi->dev_list, &dev->napi_list); ffff8000113a4534: 91058276 add x22, x19, #0x160 ffff8000113a4538: 910162b8 add x24, x21, #0x58 if (!__list_add_valid(new, prev, next)) ffff8000113a453c: aa1603e0 mov x0, x22 ffff8000113a4540: aa1803e1 mov x1, x24 ffff8000113a4544: aa1703e2 mov x2, x23 ffff8000113a4548: 94000000 bl 0 <__list_add_valid> ffff8000113a4548: R_AARCH64_CALL26 __list_add_valid ffff8000113a454c: 53001c00 uxtb w0, w0 ffff8000113a4550: 340000a0 cbz w0, ffff8000113a4564 next->prev = new; ffff8000113a4554: f90006f6 str x22, [x23,#8] new->next = next; ffff8000113a4558: f900b277 str x23, [x19,#352] new->prev = prev; ffff8000113a455c: f900b678 str x24, [x19,#360] ffff8000113a4560: f9002eb6 str x22, [x21,#88] napi->poll_owner = -1; ffff8000113a4564: 12800000 mov w0, #0xffffffff // #-1 ATOMIC64_OPS(or, orr, L) ffff8000113a4568: 91004262 add x2, x19, #0x10 napi->dev = dev; ffff8000113a456c: f9001e75 str x21, [x19,#56] napi->poll_owner = -1; ffff8000113a4570: b9003260 str w0, [x19,#48] ffff8000113a4574: aa0203e3 mov x3, x2 ffff8000113a4578: f9800051 prfm pstl1strm, [x2] ffff8000113a457c: c85f7c40 ldxr x0, [x2] ffff8000113a4580: b2400000 orr x0, x0, #0x1 ffff8000113a4584: c8017c40 stxr w1, x0, [x2] ffff8000113a4588: 35ffffa1 cbnz w1, ffff8000113a457c ffff8000113a458c: f9400a60 ldr x0, [x19,#16] if (test_bit(NAPI_STATE_NO_BUSY_POLL, &napi->state) || ffff8000113a4590: 36280140 tbz w0, #5, ffff8000113a45b8 } ffff8000113a4594: f94027a1 ldr x1, [x29,#72] ffff8000113a4598: f9400280 ldr x0, [x20] ffff8000113a4598: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a459c: eb00003f cmp x1, x0 ffff8000113a45a0: 54000a81 b.ne ffff8000113a46f0 ffff8000113a45a4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a45a8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a45ac: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a45b0: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a45b4: d65f03c0 ret __READ_ONCE_SIZE; ffff8000113a45b8: f9400a60 ldr x0, [x19,#16] ffff8000113a45bc: 3727fec0 tbnz w0, #4, ffff8000113a4594 ffff8000113a45c0: f9800071 prfm pstl1strm, [x3] ffff8000113a45c4: c85f7c62 ldxr x2, [x3] ffff8000113a45c8: b27c0040 orr x0, x2, #0x10 ffff8000113a45cc: c801fc60 stlxr w1, x0, [x3] ffff8000113a45d0: 35ffffa1 cbnz w1, ffff8000113a45c4 ffff8000113a45d4: d5033bbf dmb ish return !!(old & mask); ffff8000113a45d8: 927c0042 and x2, x2, #0x10 if (test_bit(NAPI_STATE_NO_BUSY_POLL, &napi->state) || ffff8000113a45dc: b5fffdc2 cbnz x2, ffff8000113a4594 __CMPXCHG_CASE(w, , acq_, 32, , a, , "memory", K) ffff8000113a45e0: 90000015 adrp x21, ffff80001139e37c <__my_cpu_offset> ffff8000113a45e0: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a45e4: 910002a0 add x0, x21, #0x0 ffff8000113a45e4: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a45e8: 52800023 mov w3, #0x1 // #1 ffff8000113a45ec: 910c8005 add x5, x0, #0x320 ffff8000113a45f0: f98000b1 prfm pstl1strm, [x5] ffff8000113a45f4: 885ffca1 ldaxr w1, [x5] ffff8000113a45f8: 4a020024 eor w4, w1, w2 ffff8000113a45fc: 35000064 cbnz w4, ffff8000113a4608 ffff8000113a4600: 88047ca3 stxr w4, w3, [x5] ffff8000113a4604: 35ffff84 cbnz w4, ffff8000113a45f4 ffff8000113a4608: 35000541 cbnz w1, ffff8000113a46b0 ffff8000113a460c: 90000004 adrp x4, ffff80001139e37c <__my_cpu_offset> ffff8000113a460c: R_AARCH64_ADR_PREL_PG_HI21 .data ffff8000113a4610: 91000080 add x0, x4, #0x0 ffff8000113a4610: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113a4614: 90000005 adrp x5, ffff80001139e37c <__my_cpu_offset> ffff8000113a4614: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a4618: b9408803 ldr w3, [x0,#136] hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) ffff8000113a461c: 910000a6 add x6, x5, #0x0 ffff8000113a461c: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly if (unlikely(++napi_gen_id < MIN_NAPI_ID)) ffff8000113a4620: 11000463 add w3, w3, #0x1 ffff8000113a4624: 7140047f cmp w3, #0x1, lsl #12 ffff8000113a4628: 54000669 b.ls ffff8000113a46f4 ffff8000113a462c: 12001c61 and w1, w3, #0xff hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) ffff8000113a4630: 2a0103e1 mov w1, w1 ffff8000113a4634: d37df020 lsl x0, x1, #3 ffff8000113a4638: f86068c0 ldr x0, [x6,x0] ffff8000113a463c: b4000040 cbz x0, ffff8000113a4644 ffff8000113a4640: d105c000 sub x0, x0, #0x170 ffff8000113a4644: b4000300 cbz x0, ffff8000113a46a4 if (napi->napi_id == napi_id) ffff8000113a4648: b9418002 ldr w2, [x0,#384] ffff8000113a464c: 6b03005f cmp w2, w3 ffff8000113a4650: 54fffe80 b.eq ffff8000113a4620 ffff8000113a4654: f940b800 ldr x0, [x0,#368] hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) ffff8000113a4658: b5ffff40 cbnz x0, ffff8000113a4640 ffff8000113a465c: 91000080 add x0, x4, #0x0 ffff8000113a465c: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113a4660: b9008803 str w3, [x0,#136] hlist_add_head_rcu(&napi->napi_hash_node, ffff8000113a4664: 910000a2 add x2, x5, #0x0 ffff8000113a4664: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a4668: d37df021 lsl x1, x1, #3 napi->napi_id = napi_gen_id; ffff8000113a466c: b9018263 str w3, [x19,#384] struct hlist_node *first = h->first; ffff8000113a4670: f8616840 ldr x0, [x2,x1] hlist_add_head_rcu(&napi->napi_hash_node, ffff8000113a4674: 8b010041 add x1, x2, x1 n->next = first; ffff8000113a4678: f900ba60 str x0, [x19,#368] ffff8000113a467c: 9105c262 add x2, x19, #0x170 case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a4680: f900be61 str x1, [x19,#376] rcu_assign_pointer(hlist_first_rcu(h), n); ffff8000113a4684: c89ffc22 stlr x2, [x1] if (first) ffff8000113a4688: b4000040 cbz x0, ffff8000113a4690 ffff8000113a468c: f9000402 str x2, [x0,#8] smp_store_release(&lock->locked, 0); ffff8000113a4690: 910002b5 add x21, x21, #0x0 ffff8000113a4690: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a4694: 52800000 mov w0, #0x0 // #0 ffff8000113a4698: 910c82b5 add x21, x21, #0x320 ffff8000113a469c: 089ffea0 stlrb w0, [x21] static inline void __raw_spin_unlock(raw_spinlock_t *lock) { spin_release(&lock->dep_map, _RET_IP_); do_raw_spin_unlock(lock); preempt_enable(); ffff8000113a46a0: 17ffffbd b ffff8000113a4594 ffff8000113a46a4: 91000084 add x4, x4, #0x0 ffff8000113a46a4: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113a46a8: b9008883 str w3, [x4,#136] ffff8000113a46ac: 17ffffee b ffff8000113a4664 queued_spin_lock_slowpath(lock, val); ffff8000113a46b0: 910c8000 add x0, x0, #0x320 ffff8000113a46b4: 94000000 bl 0 ffff8000113a46b4: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113a46b8: 17ffffd5 b ffff8000113a460c netdev_err_once(dev, "%s() called with weight %d\n", __func__, ffff8000113a46bc: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113a46bc: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a46c0: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a46c0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x1e8 ffff8000113a46c4: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113a46c4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x308 ffff8000113a46c8: 91000063 add x3, x3, #0x0 ffff8000113a46c8: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a46cc: 52800026 mov w6, #0x1 // #1 ffff8000113a46d0: 91000000 add x0, x0, #0x0 ffff8000113a46d0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x1e8 ffff8000113a46d4: aa1503e1 mov x1, x21 ffff8000113a46d8: 91000042 add x2, x2, #0x0 ffff8000113a46d8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x308 ffff8000113a46dc: 91016063 add x3, x3, #0x58 ffff8000113a46e0: 2a1603e4 mov w4, w22 ffff8000113a46e4: 392510a6 strb w6, [x5,#2372] ffff8000113a46e8: 94000000 bl ffff80001139e618 ffff8000113a46e8: R_AARCH64_CALL26 netdev_printk ffff8000113a46ec: 17ffff90 b ffff8000113a452c } ffff8000113a46f0: 94000000 bl 0 <__stack_chk_fail> ffff8000113a46f0: R_AARCH64_CALL26 __stack_chk_fail if (unlikely(++napi_gen_id < MIN_NAPI_ID)) ffff8000113a46f4: 52800021 mov w1, #0x1 // #1 ffff8000113a46f8: 52820023 mov w3, #0x1001 // #4097 ffff8000113a46fc: 17ffffcd b ffff8000113a4630 ffff8000113a4700 : { ffff8000113a4700: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a4704: 910003fd mov x29, sp ffff8000113a4708: a90153f3 stp x19, x20, [sp,#16] ffff8000113a470c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a4710: aa0003f6 mov x22, x0 ffff8000113a4714: 53001c54 uxtb w20, w2 ffff8000113a4718: aa1e03e0 mov x0, x30 ffff8000113a471c: aa0103f3 mov x19, x1 ffff8000113a4720: 94000000 bl 0 <_mcount> ffff8000113a4720: R_AARCH64_CALL26 _mcount if (is_rxqs_map) { ffff8000113a4724: 350002d4 cbnz w20, ffff8000113a477c ffff8000113a4728: f901f6df str xzr, [x22,#1000] ffff8000113a472c: 90000015 adrp x21, 0 ffff8000113a472c: R_AARCH64_ADR_PREL_PG_HI21 static_key_initialized ffff8000113a4730: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113a4730: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly STATIC_KEY_CHECK_USE(key); ffff8000113a4734: 394002a0 ldrb w0, [x21] ffff8000113a4734: R_AARCH64_LDST8_ABS_LO12_NC static_key_initialized ffff8000113a4738: 340003e0 cbz w0, ffff8000113a47b4 ATOMIC_OPS(sub, sub, J) ffff8000113a473c: 91000282 add x2, x20, #0x0 ffff8000113a473c: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a4740: 52800023 mov w3, #0x1 // #1 ffff8000113a4744: 9124e044 add x4, x2, #0x938 ffff8000113a4748: f9800091 prfm pstl1strm, [x4] ffff8000113a474c: 885f7c80 ldxr w0, [x4] ffff8000113a4750: 4b030000 sub w0, w0, w3 ffff8000113a4754: 88017c80 stxr w1, w0, [x4] ffff8000113a4758: 35ffffa1 cbnz w1, ffff8000113a474c kfree_rcu(dev_maps, rcu); ffff8000113a475c: b4000093 cbz x19, ffff8000113a476c ffff8000113a4760: aa1303e0 mov x0, x19 ffff8000113a4764: d2800001 mov x1, #0x0 // #0 ffff8000113a4768: 94000000 bl 0 ffff8000113a4768: R_AARCH64_CALL26 kfree_call_rcu } ffff8000113a476c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a4770: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a4774: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a4778: d65f03c0 ret ffff8000113a477c: 90000015 adrp x21, 0 ffff8000113a477c: R_AARCH64_ADR_PREL_PG_HI21 static_key_initialized ffff8000113a4780: 394002a0 ldrb w0, [x21] ffff8000113a4780: R_AARCH64_LDST8_ABS_LO12_NC static_key_initialized ffff8000113a4784: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113a4784: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a4788: 340002a0 cbz w0, ffff8000113a47dc ffff8000113a478c: 91000280 add x0, x20, #0x0 ffff8000113a478c: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a4790: 52800021 mov w1, #0x1 // #1 ffff8000113a4794: 91250004 add x4, x0, #0x940 ffff8000113a4798: f9800091 prfm pstl1strm, [x4] ffff8000113a479c: 885f7c82 ldxr w2, [x4] ffff8000113a47a0: 4b010042 sub w2, w2, w1 ffff8000113a47a4: 88037c82 stxr w3, w2, [x4] ffff8000113a47a8: 35ffffa3 cbnz w3, ffff8000113a479c ffff8000113a47ac: f901fadf str xzr, [x22,#1008] ffff8000113a47b0: 17ffffe1 b ffff8000113a4734 ffff8000113a47b4: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a47b4: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a47b8: 91000282 add x2, x20, #0x0 ffff8000113a47b8: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a47bc: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a47bc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x238 ffff8000113a47c0: 91000021 add x1, x1, #0x0 ffff8000113a47c0: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a47c4: 91000000 add x0, x0, #0x0 ffff8000113a47c4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x238 ffff8000113a47c8: 91004021 add x1, x1, #0x10 ffff8000113a47cc: 9124e042 add x2, x2, #0x938 ffff8000113a47d0: 94000000 bl 0 <__warn_printk> ffff8000113a47d0: R_AARCH64_CALL26 __warn_printk ffff8000113a47d4: d4210000 brk #0x800 ffff8000113a47d8: 17ffffd9 b ffff8000113a473c ffff8000113a47dc: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a47dc: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a47e0: 91000282 add x2, x20, #0x0 ffff8000113a47e0: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a47e4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a47e4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x238 ffff8000113a47e8: 91000021 add x1, x1, #0x0 ffff8000113a47e8: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a47ec: 91000000 add x0, x0, #0x0 ffff8000113a47ec: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x238 ffff8000113a47f0: 91004021 add x1, x1, #0x10 ffff8000113a47f4: 91250042 add x2, x2, #0x940 ffff8000113a47f8: 94000000 bl 0 <__warn_printk> ffff8000113a47f8: R_AARCH64_CALL26 __warn_printk ffff8000113a47fc: d4210000 brk #0x800 ffff8000113a4800: 17ffffe3 b ffff8000113a478c ffff8000113a4804 : { ffff8000113a4804: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113a4808: 910003fd mov x29, sp ffff8000113a480c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a4810: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a4814: a90363f7 stp x23, x24, [sp,#48] ffff8000113a4818: a9046bf9 stp x25, x26, [sp,#64] ffff8000113a481c: a90573fb stp x27, x28, [sp,#80] __READ_ONCE_SIZE; ffff8000113a4820: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff8000113a4820: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a4824: aa0003f4 mov x20, x0 ffff8000113a4828: aa1e03e0 mov x0, x30 ffff8000113a482c: 53003c38 uxth w24, w1 ffff8000113a4830: 53003c57 uxth w23, w2 ffff8000113a4834: 91000273 add x19, x19, #0x0 ffff8000113a4834: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a4838: 94000000 bl 0 <_mcount> ffff8000113a4838: R_AARCH64_CALL26 _mcount ffff8000113a483c: b9493a60 ldr w0, [x19,#2360] if (unlikely(static_key_count(key) > 0)) ffff8000113a4840: 6b1f001f cmp w0, wzr ffff8000113a4844: 5400010c b.gt ffff8000113a4864 } ffff8000113a4848: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a484c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a4850: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a4854: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a4858: a94573fb ldp x27, x28, [sp,#80] ffff8000113a485c: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113a4860: d65f03c0 ret cpus_read_lock(); ffff8000113a4864: 94000000 bl 0 ffff8000113a4864: R_AARCH64_CALL26 cpus_read_lock mutex_lock(&xps_map_mutex); ffff8000113a4868: 9000001b adrp x27, ffff80001139e37c <__my_cpu_offset> ffff8000113a4868: R_AARCH64_ADR_PREL_PG_HI21 .data ffff8000113a486c: 91000360 add x0, x27, #0x0 ffff8000113a486c: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113a4870: 91024000 add x0, x0, #0x90 ffff8000113a4874: 94000000 bl 0 ffff8000113a4874: R_AARCH64_CALL26 mutex_lock ffff8000113a4878: b9494260 ldr w0, [x19,#2368] ffff8000113a487c: 6b1f001f cmp w0, wzr ffff8000113a4880: 5400090c b.gt ffff8000113a49a0 dev_maps = xmap_dereference(dev->xps_cpus_map); ffff8000113a4884: f941f699 ldr x25, [x20,#1000] if (!dev_maps) ffff8000113a4888: b40006f9 cbz x25, ffff8000113a4964 static __always_inline int bitmap_weight(const unsigned long *src, unsigned int nbits) { if (small_const_nbits(nbits)) return hweight_long(*src & BITMAP_LAST_WORD_MASK(nbits)); return __bitmap_weight(src, nbits); ffff8000113a488c: 90000015 adrp x21, 0 <__cpu_possible_mask> ffff8000113a488c: R_AARCH64_ADR_PREL_PG_HI21 __cpu_possible_mask ffff8000113a4890: 910002b5 add x21, x21, #0x0 ffff8000113a4890: R_AARCH64_ADD_ABS_LO12_NC __cpu_possible_mask ffff8000113a4894: aa1503e0 mov x0, x21 ffff8000113a4898: 52820001 mov w1, #0x1000 // #4096 ffff8000113a489c: 94000000 bl 0 <__bitmap_weight> ffff8000113a489c: R_AARCH64_CALL26 __bitmap_weight nr_ids = nr_cpu_ids; ffff8000113a48a0: 90000001 adrp x1, 0 ffff8000113a48a0: R_AARCH64_ADR_PREL_PG_HI21 nr_cpu_ids ffff8000113a48a4: b940003a ldr w26, [x1] ffff8000113a48a4: R_AARCH64_LDST32_ABS_LO12_NC nr_cpu_ids const unsigned long *possible_mask = NULL; ffff8000113a48a8: 7100041f cmp w0, #0x1 ffff8000113a48ac: 9a9f82b5 csel x21, x21, xzr, hi for (j = -1; j = netif_attrmask_next(j, mask, nr_ids), ffff8000113a48b0: 12800013 mov w19, #0xffffffff // #-1 bool active = false; ffff8000113a48b4: 52800016 mov w22, #0x0 // #0 return find_next_bit(srcp, nr_bits, n + 1); ffff8000113a48b8: 2a1a03fc mov w28, w26 ffff8000113a48bc: 1400000d b ffff8000113a48f0 ffff8000113a48c0: 94000000 bl 0 ffff8000113a48c0: R_AARCH64_CALL26 find_next_bit for (j = -1; j = netif_attrmask_next(j, mask, nr_ids), ffff8000113a48c4: 6b00035f cmp w26, w0 active |= remove_xps_queue_cpu(dev, dev_maps, j, offset, ffff8000113a48c8: aa1903e1 mov x1, x25 ffff8000113a48cc: 2a1803e3 mov w3, w24 ffff8000113a48d0: 2a1703e4 mov w4, w23 for (j = -1; j = netif_attrmask_next(j, mask, nr_ids), ffff8000113a48d4: 2a0003f3 mov w19, w0 active |= remove_xps_queue_cpu(dev, dev_maps, j, offset, ffff8000113a48d8: 2a0003e2 mov w2, w0 for (j = -1; j = netif_attrmask_next(j, mask, nr_ids), ffff8000113a48dc: 54000249 b.ls ffff8000113a4924 active |= remove_xps_queue_cpu(dev, dev_maps, j, offset, ffff8000113a48e0: 79509280 ldrh w0, [x20,#2120] ffff8000113a48e4: 97fff4be bl ffff8000113a1bdc ffff8000113a48e8: 53001c00 uxtb w0, w0 ffff8000113a48ec: 2a160016 orr w22, w0, w22 ffff8000113a48f0: 11000662 add w2, w19, #0x1 ffff8000113a48f4: aa1503e0 mov x0, x21 ffff8000113a48f8: aa1c03e1 mov x1, x28 ffff8000113a48fc: 93407c42 sxtw x2, w2 if (srcp) ffff8000113a4900: b5fffe15 cbnz x21, ffff8000113a48c0 return n + 1; ffff8000113a4904: 11000660 add w0, w19, #0x1 for (j = -1; j = netif_attrmask_next(j, mask, nr_ids), ffff8000113a4908: 6b00035f cmp w26, w0 active |= remove_xps_queue_cpu(dev, dev_maps, j, offset, ffff8000113a490c: aa1903e1 mov x1, x25 ffff8000113a4910: 2a1803e3 mov w3, w24 ffff8000113a4914: 2a1703e4 mov w4, w23 for (j = -1; j = netif_attrmask_next(j, mask, nr_ids), ffff8000113a4918: 2a0003f3 mov w19, w0 active |= remove_xps_queue_cpu(dev, dev_maps, j, offset, ffff8000113a491c: 2a0003e2 mov w2, w0 for (j = -1; j = netif_attrmask_next(j, mask, nr_ids), ffff8000113a4920: 54fffe08 b.hi ffff8000113a48e0 if (!active) ffff8000113a4924: 34000376 cbz w22, ffff8000113a4990 for (i = offset + (count - 1); count--; i--) { ffff8000113a4928: 510006e5 sub w5, w23, #0x1 ffff8000113a492c: 0b050301 add w1, w24, w5 ffff8000113a4930: 53003ca5 uxth w5, w5 ffff8000113a4934: 34000197 cbz w23, ffff8000113a4964 ffff8000113a4938: 2a2503e5 mvn w5, w5 ffff8000113a493c: 0b0100a5 add w5, w5, w1 return &dev->_tx[index]; ffff8000113a4940: 52802804 mov w4, #0x140 // #320 q->numa_node = node; ffff8000113a4944: 12800003 mov w3, #0xffffffff // #-1 ffff8000113a4948: f941e282 ldr x2, [x20,#960] return &dev->_tx[index]; ffff8000113a494c: 9ba47c20 umull x0, w1, w4 q->numa_node = node; ffff8000113a4950: 8b000040 add x0, x2, x0 ffff8000113a4954: 51000421 sub w1, w1, #0x1 ffff8000113a4958: b9005803 str w3, [x0,#88] ffff8000113a495c: 6b05003f cmp w1, w5 ffff8000113a4960: 54ffff41 b.ne ffff8000113a4948 mutex_unlock(&xps_map_mutex); ffff8000113a4964: 91000360 add x0, x27, #0x0 ffff8000113a4964: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113a4968: 91024000 add x0, x0, #0x90 ffff8000113a496c: 94000000 bl 0 ffff8000113a496c: R_AARCH64_CALL26 mutex_unlock cpus_read_unlock(); ffff8000113a4970: 94000000 bl 0 ffff8000113a4970: R_AARCH64_CALL26 cpus_read_unlock } ffff8000113a4974: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a4978: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a497c: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a4980: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a4984: a94573fb ldp x27, x28, [sp,#80] ffff8000113a4988: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113a498c: d65f03c0 ret reset_xps_maps(dev, dev_maps, is_rxqs_map); ffff8000113a4990: aa1403e0 mov x0, x20 ffff8000113a4994: 2a1603e2 mov w2, w22 ffff8000113a4998: 97ffff5a bl ffff8000113a4700 ffff8000113a499c: 17ffffe3 b ffff8000113a4928 dev_maps = xmap_dereference(dev->xps_rxqs_map); ffff8000113a49a0: f941fa99 ldr x25, [x20,#1008] if (dev_maps) { ffff8000113a49a4: b4fff719 cbz x25, ffff8000113a4884 nr_ids = dev->num_rx_queues; ffff8000113a49a8: b9432a96 ldr w22, [x20,#808] for (j = -1; j = netif_attrmask_next(j, mask, nr_ids), ffff8000113a49ac: 52800013 mov w19, #0x0 // #0 bool active = false; ffff8000113a49b0: 2a1303f5 mov w21, w19 for (j = -1; j = netif_attrmask_next(j, mask, nr_ids), ffff8000113a49b4: 340001b6 cbz w22, ffff8000113a49e8 active |= remove_xps_queue_cpu(dev, dev_maps, j, offset, ffff8000113a49b8: 79509280 ldrh w0, [x20,#2120] ffff8000113a49bc: 2a1303e2 mov w2, w19 ffff8000113a49c0: aa1903e1 mov x1, x25 ffff8000113a49c4: 2a1803e3 mov w3, w24 ffff8000113a49c8: 2a1703e4 mov w4, w23 ffff8000113a49cc: 97fff484 bl ffff8000113a1bdc ffff8000113a49d0: 11000673 add w19, w19, #0x1 ffff8000113a49d4: 53001c00 uxtb w0, w0 for (j = -1; j = netif_attrmask_next(j, mask, nr_ids), ffff8000113a49d8: 6b16027f cmp w19, w22 active |= remove_xps_queue_cpu(dev, dev_maps, j, offset, ffff8000113a49dc: 2a0002b5 orr w21, w21, w0 for (j = -1; j = netif_attrmask_next(j, mask, nr_ids), ffff8000113a49e0: 54fffec1 b.ne ffff8000113a49b8 if (!active) ffff8000113a49e4: 35fff515 cbnz w21, ffff8000113a4884 reset_xps_maps(dev, dev_maps, is_rxqs_map); ffff8000113a49e8: aa1403e0 mov x0, x20 ffff8000113a49ec: aa1903e1 mov x1, x25 ffff8000113a49f0: 52800022 mov w2, #0x1 // #1 ffff8000113a49f4: 97ffff43 bl ffff8000113a4700 ffff8000113a49f8: 17ffffa3 b ffff8000113a4884 ffff8000113a49fc : { ffff8000113a49fc: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a4a00: 910003fd mov x29, sp ffff8000113a4a04: a90153f3 stp x19, x20, [sp,#16] ffff8000113a4a08: f90013f5 str x21, [sp,#32] ffff8000113a4a0c: aa0003f5 mov x21, x0 ffff8000113a4a10: aa1e03e0 mov x0, x30 ffff8000113a4a14: aa0103f3 mov x19, x1 ffff8000113a4a18: 94000000 bl 0 <_mcount> ffff8000113a4a18: R_AARCH64_CALL26 _mcount struct netdev_queue *txq = &dev->_tx[dev->num_tx_queues]; ffff8000113a4a1c: b943cab4 ldr w20, [x21,#968] ffff8000113a4a20: f941e2a3 ldr x3, [x21,#960] netif_reset_xps_queues(dev, index, dev->num_tx_queues - index); ffff8000113a4a24: 79479262 ldrh w2, [x19,#968] struct netdev_queue *txq = &dev->_tx[dev->num_tx_queues]; ffff8000113a4a28: 52802800 mov w0, #0x140 // #320 ffff8000113a4a2c: 9ba07e94 umull x20, w20, w0 netif_reset_xps_queues(dev, index, dev->num_tx_queues - index); ffff8000113a4a30: 52800001 mov w1, #0x0 // #0 ffff8000113a4a34: aa1303e0 mov x0, x19 struct netdev_queue *txq = &dev->_tx[dev->num_tx_queues]; ffff8000113a4a38: 8b140074 add x20, x3, x20 netif_reset_xps_queues(dev, index, dev->num_tx_queues - index); ffff8000113a4a3c: 97ffff72 bl ffff8000113a4804 return __builtin_memset(p, c, size); ffff8000113a4a40: 91212a60 add x0, x19, #0x84a ffff8000113a4a44: a9007c1f stp xzr, xzr, [x0] ffff8000113a4a48: a9017c1f stp xzr, xzr, [x0,#16] ffff8000113a4a4c: a9027c1f stp xzr, xzr, [x0,#32] ffff8000113a4a50: a9037c1f stp xzr, xzr, [x0,#48] ffff8000113a4a54: 91222a60 add x0, x19, #0x88a ffff8000113a4a58: a9007c1f stp xzr, xzr, [x0] ffff8000113a4a5c: f941e2a1 ldr x1, [x21,#960] ffff8000113a4a60: aa1403e2 mov x2, x20 ffff8000113a4a64: d1050285 sub x5, x20, #0x140 ffff8000113a4a68: cb140043 sub x3, x2, x20 while (txq-- != &dev->_tx[0]) { ffff8000113a4a6c: eb02003f cmp x1, x2 ffff8000113a4a70: 8b050063 add x3, x3, x5 ffff8000113a4a74: 54000160 b.eq ffff8000113a4aa0 if (txq->sb_dev == sb_dev) ffff8000113a4a78: f9403864 ldr x4, [x3,#112] ffff8000113a4a7c: d1050042 sub x2, x2, #0x140 ffff8000113a4a80: eb13009f cmp x4, x19 ffff8000113a4a84: 54ffff21 b.ne ffff8000113a4a68 txq->sb_dev = NULL; ffff8000113a4a88: f900387f str xzr, [x3,#112] ffff8000113a4a8c: f941e2a1 ldr x1, [x21,#960] ffff8000113a4a90: cb140043 sub x3, x2, x20 while (txq-- != &dev->_tx[0]) { ffff8000113a4a94: eb02003f cmp x1, x2 ffff8000113a4a98: 8b050063 add x3, x3, x5 ffff8000113a4a9c: 54fffee1 b.ne ffff8000113a4a78 } ffff8000113a4aa0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a4aa4: f94013f5 ldr x21, [sp,#32] ffff8000113a4aa8: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a4aac: d65f03c0 ret ffff8000113a4ab0 : { ffff8000113a4ab0: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a4ab4: 910003fd mov x29, sp ffff8000113a4ab8: a90153f3 stp x19, x20, [sp,#16] ffff8000113a4abc: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a4ac0: aa0003f4 mov x20, x0 ffff8000113a4ac4: aa1e03e0 mov x0, x30 ffff8000113a4ac8: 94000000 bl 0 <_mcount> ffff8000113a4ac8: R_AARCH64_CALL26 _mcount struct netdev_queue *txq = &dev->_tx[dev->num_tx_queues]; ffff8000113a4acc: b943ca95 ldr w21, [x20,#968] ffff8000113a4ad0: f941e283 ldr x3, [x20,#960] ffff8000113a4ad4: 52802800 mov w0, #0x140 // #320 ffff8000113a4ad8: 9ba07eb5 umull x21, w21, w0 ffff8000113a4adc: 8b150075 add x21, x3, x21 ffff8000113a4ae0: aa1503e1 mov x1, x21 while (txq-- != &dev->_tx[0]) { ffff8000113a4ae4: d1050033 sub x19, x1, #0x140 ffff8000113a4ae8: d10502b6 sub x22, x21, #0x140 ffff8000113a4aec: eb03003f cmp x1, x3 ffff8000113a4af0: cb150261 sub x1, x19, x21 netdev_unbind_sb_channel(dev, txq->sb_dev); ffff8000113a4af4: aa1403e0 mov x0, x20 ffff8000113a4af8: 8b160021 add x1, x1, x22 while (txq-- != &dev->_tx[0]) { ffff8000113a4afc: 540001a0 b.eq ffff8000113a4b30 if (txq->sb_dev) ffff8000113a4b00: f940d822 ldr x2, [x1,#432] netdev_unbind_sb_channel(dev, txq->sb_dev); ffff8000113a4b04: aa0203e1 mov x1, x2 if (txq->sb_dev) ffff8000113a4b08: b4000062 cbz x2, ffff8000113a4b14 netdev_unbind_sb_channel(dev, txq->sb_dev); ffff8000113a4b0c: 94000000 bl ffff8000113a49fc ffff8000113a4b0c: R_AARCH64_CALL26 netdev_unbind_sb_channel ffff8000113a4b10: f941e283 ldr x3, [x20,#960] ffff8000113a4b14: aa1303e1 mov x1, x19 while (txq-- != &dev->_tx[0]) { ffff8000113a4b18: d1050033 sub x19, x1, #0x140 ffff8000113a4b1c: eb03003f cmp x1, x3 ffff8000113a4b20: cb150261 sub x1, x19, x21 netdev_unbind_sb_channel(dev, txq->sb_dev); ffff8000113a4b24: aa1403e0 mov x0, x20 ffff8000113a4b28: 8b160021 add x1, x1, x22 while (txq-- != &dev->_tx[0]) { ffff8000113a4b2c: 54fffea1 b.ne ffff8000113a4b00 } ffff8000113a4b30: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a4b34: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a4b38: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a4b3c: d65f03c0 ret ffff8000113a4b40 : { ffff8000113a4b40: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a4b44: 910003fd mov x29, sp ffff8000113a4b48: f9000bf3 str x19, [sp,#16] ffff8000113a4b4c: aa0003f3 mov x19, x0 ffff8000113a4b50: aa1e03e0 mov x0, x30 ffff8000113a4b54: 94000000 bl 0 <_mcount> ffff8000113a4b54: R_AARCH64_CALL26 _mcount netif_reset_xps_queues(dev, index, dev->num_tx_queues - index); ffff8000113a4b58: 79479262 ldrh w2, [x19,#968] ffff8000113a4b5c: aa1303e0 mov x0, x19 ffff8000113a4b60: 52800001 mov w1, #0x0 // #0 ffff8000113a4b64: 97ffff28 bl ffff8000113a4804 netdev_unbind_all_sb_channels(dev); ffff8000113a4b68: aa1303e0 mov x0, x19 ffff8000113a4b6c: 97ffffd1 bl ffff8000113a4ab0 ffff8000113a4b70: 91212a60 add x0, x19, #0x84a dev->num_tc = 0; ffff8000113a4b74: 7910927f strh wzr, [x19,#2120] ffff8000113a4b78: a9007c1f stp xzr, xzr, [x0] ffff8000113a4b7c: a9017c1f stp xzr, xzr, [x0,#16] ffff8000113a4b80: a9027c1f stp xzr, xzr, [x0,#32] ffff8000113a4b84: a9037c1f stp xzr, xzr, [x0,#48] ffff8000113a4b88: 91222a73 add x19, x19, #0x88a ffff8000113a4b8c: a9007e7f stp xzr, xzr, [x19] } ffff8000113a4b90: f9400bf3 ldr x19, [sp,#16] ffff8000113a4b94: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a4b98: d65f03c0 ret ffff8000113a4b9c : { ffff8000113a4b9c: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a4ba0: 910003fd mov x29, sp ffff8000113a4ba4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a4ba8: aa0003f3 mov x19, x0 ffff8000113a4bac: aa1e03e0 mov x0, x30 ffff8000113a4bb0: 53001c34 uxtb w20, w1 ffff8000113a4bb4: 94000000 bl 0 <_mcount> ffff8000113a4bb4: R_AARCH64_CALL26 _mcount if (num_tc > TC_MAX_QUEUE) ffff8000113a4bb8: 7100429f cmp w20, #0x10 ffff8000113a4bbc: 54000188 b.hi ffff8000113a4bec netif_reset_xps_queues(dev, index, dev->num_tx_queues - index); ffff8000113a4bc0: 79479262 ldrh w2, [x19,#968] ffff8000113a4bc4: 52800001 mov w1, #0x0 // #0 ffff8000113a4bc8: aa1303e0 mov x0, x19 ffff8000113a4bcc: 97ffff0e bl ffff8000113a4804 netdev_unbind_all_sb_channels(dev); ffff8000113a4bd0: aa1303e0 mov x0, x19 ffff8000113a4bd4: 97ffffb7 bl ffff8000113a4ab0 return 0; ffff8000113a4bd8: 52800000 mov w0, #0x0 // #0 dev->num_tc = num_tc; ffff8000113a4bdc: 79109274 strh w20, [x19,#2120] } ffff8000113a4be0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a4be4: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a4be8: d65f03c0 ret return -EINVAL; ffff8000113a4bec: 128002a0 mov w0, #0xffffffea // #-22 ffff8000113a4bf0: 17fffffc b ffff8000113a4be0 ffff8000113a4bf4 : { ffff8000113a4bf4: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a4bf8: 910003fd mov x29, sp ffff8000113a4bfc: a90153f3 stp x19, x20, [sp,#16] ffff8000113a4c00: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a4c04: aa0003f3 mov x19, x0 ffff8000113a4c08: aa1e03e0 mov x0, x30 ffff8000113a4c0c: 53001c34 uxtb w20, w1 ffff8000113a4c10: 53003c56 uxth w22, w2 ffff8000113a4c14: 53003c75 uxth w21, w3 ffff8000113a4c18: 94000000 bl 0 <_mcount> ffff8000113a4c18: R_AARCH64_CALL26 _mcount if (tc >= dev->num_tc) ffff8000113a4c1c: 79d09260 ldrsh w0, [x19,#2120] ffff8000113a4c20: 6b00029f cmp w20, w0 ffff8000113a4c24: 540001aa b.ge ffff8000113a4c58 netif_reset_xps_queues(dev, offset, count); ffff8000113a4c28: aa1303e0 mov x0, x19 ffff8000113a4c2c: 2a1503e1 mov w1, w21 ffff8000113a4c30: 2a1603e2 mov w2, w22 ffff8000113a4c34: 97fffef4 bl ffff8000113a4804 ffff8000113a4c38: 8b340a73 add x19, x19, w20, uxtb #2 dev->tc_to_txq[tc].count = count; ffff8000113a4c3c: 79109676 strh w22, [x19,#2122] dev->tc_to_txq[tc].offset = offset; ffff8000113a4c40: 79109a75 strh w21, [x19,#2124] return 0; ffff8000113a4c44: 52800000 mov w0, #0x0 // #0 } ffff8000113a4c48: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a4c4c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a4c50: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a4c54: d65f03c0 ret return -EINVAL; ffff8000113a4c58: 128002a0 mov w0, #0xffffffea // #-22 ffff8000113a4c5c: 17fffffb b ffff8000113a4c48 ffff8000113a4c60 : { ffff8000113a4c60: a9b97bfd stp x29, x30, [sp,#-112]! ffff8000113a4c64: 910003fd mov x29, sp ffff8000113a4c68: a90153f3 stp x19, x20, [sp,#16] ffff8000113a4c6c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a4c70: a90363f7 stp x23, x24, [sp,#48] ffff8000113a4c74: a9046bf9 stp x25, x26, [sp,#64] ffff8000113a4c78: a90573fb stp x27, x28, [sp,#80] ffff8000113a4c7c: aa0003f3 mov x19, x0 ffff8000113a4c80: 2a0103f4 mov w20, w1 ffff8000113a4c84: aa1e03e0 mov x0, x30 ffff8000113a4c88: aa1e03f5 mov x21, x30 ffff8000113a4c8c: 94000000 bl 0 <_mcount> ffff8000113a4c8c: R_AARCH64_CALL26 _mcount disabling = txq < dev->real_num_tx_queues; ffff8000113a4c90: b943ce76 ldr w22, [x19,#972] if (txq < 1 || txq > dev->num_tx_queues) ffff8000113a4c94: 340009b4 cbz w20, ffff8000113a4dc8 ffff8000113a4c98: b943ca60 ldr w0, [x19,#968] ffff8000113a4c9c: 6b00029f cmp w20, w0 ffff8000113a4ca0: 54000948 b.hi ffff8000113a4dc8 if (dev->reg_state == NETREG_REGISTERED || ffff8000113a4ca4: 39536260 ldrb w0, [x19,#1240] ffff8000113a4ca8: 51000400 sub w0, w0, #0x1 ffff8000113a4cac: 53001c00 uxtb w0, w0 ffff8000113a4cb0: 7100041f cmp w0, #0x1 ffff8000113a4cb4: 54000149 b.ls ffff8000113a4cdc dev->real_num_tx_queues = txq; ffff8000113a4cb8: b903ce74 str w20, [x19,#972] return 0; ffff8000113a4cbc: 52800000 mov w0, #0x0 // #0 } ffff8000113a4cc0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a4cc4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a4cc8: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a4ccc: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a4cd0: a94573fb ldp x27, x28, [sp,#80] ffff8000113a4cd4: a8c77bfd ldp x29, x30, [sp],#112 ffff8000113a4cd8: d65f03c0 ret ASSERT_RTNL(); ffff8000113a4cdc: 94000000 bl 0 ffff8000113a4cdc: R_AARCH64_CALL26 rtnl_is_locked ffff8000113a4ce0: 34000c40 cbz w0, ffff8000113a4e68 rc = netdev_queue_update_kobjects(dev, dev->real_num_tx_queues, ffff8000113a4ce4: b943ce61 ldr w1, [x19,#972] ffff8000113a4ce8: aa1303e0 mov x0, x19 ffff8000113a4cec: 2a1403e2 mov w2, w20 ffff8000113a4cf0: 94000000 bl 0 ffff8000113a4cf0: R_AARCH64_CALL26 netdev_queue_update_kobjects ffff8000113a4cf4: 2a0003f9 mov w25, w0 if (rc) ffff8000113a4cf8: 35fffe59 cbnz w25, ffff8000113a4cc0 if (dev->num_tc) ffff8000113a4cfc: 79d09260 ldrsh w0, [x19,#2120] ffff8000113a4d00: 35000680 cbnz w0, ffff8000113a4dd0 dev->real_num_tx_queues = txq; ffff8000113a4d04: b903ce74 str w20, [x19,#972] if (disabling) { ffff8000113a4d08: 6b1402df cmp w22, w20 return 0; ffff8000113a4d0c: 52800000 mov w0, #0x0 // #0 if (disabling) { ffff8000113a4d10: 54fffd89 b.ls ffff8000113a4cc0 synchronize_net(); ffff8000113a4d14: f90037a0 str x0, [x29,#104] ffff8000113a4d18: 94000000 bl ffff8000113a1384 ffff8000113a4d18: R_AARCH64_CALL26 synchronize_net /* Reset all TX qdiscs greater than index of a device. */ static inline void qdisc_reset_all_tx_gt(struct net_device *dev, unsigned int i) { struct Qdisc *qdisc; for (; i < dev->num_tx_queues; i++) { ffff8000113a4d1c: b943ca62 ldr w2, [x19,#968] ffff8000113a4d20: f94037a0 ldr x0, [x29,#104] ffff8000113a4d24: 6b02029f cmp w20, w2 ffff8000113a4d28: 54000442 b.cs ffff8000113a4db0 ffff8000113a4d2c: 2a1403f7 mov w23, w20 return &dev->_tx[index]; ffff8000113a4d30: 5280281a mov w26, #0x140 // #320 __CMPXCHG_CASE(w, , acq_, 32, , a, , "memory", K) ffff8000113a4d34: d2800019 mov x25, #0x0 // #0 ffff8000113a4d38: 52800038 mov w24, #0x1 // #1 smp_store_release(&lock->locked, 0); ffff8000113a4d3c: 2a0003fb mov w27, w0 ffff8000113a4d40: d538411c mrs x28, sp_el0 qdisc = rtnl_dereference(netdev_get_tx_queue(dev, i)->qdisc); ffff8000113a4d44: f941e261 ldr x1, [x19,#960] ffff8000113a4d48: 9bba7ee0 umull x0, w23, w26 ffff8000113a4d4c: 8b000021 add x1, x1, x0 ffff8000113a4d50: f9400436 ldr x22, [x1,#8] if (qdisc) { ffff8000113a4d54: b4000296 cbz x22, ffff8000113a4da4 ffff8000113a4d58: b9401b80 ldr w0, [x28,#24] ffff8000113a4d5c: 11080000 add w0, w0, #0x200 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113a4d60: b9001b80 str w0, [x28,#24] extern void do_raw_spin_unlock(raw_spinlock_t *lock) __releases(lock); #else static inline void do_raw_spin_lock(raw_spinlock_t *lock) __acquires(lock) { __acquire(lock); arch_spin_lock(&lock->raw_lock); ffff8000113a4d64: 9102b2c0 add x0, x22, #0xac ffff8000113a4d68: f9800011 prfm pstl1strm, [x0] ffff8000113a4d6c: 885ffc01 ldaxr w1, [x0] ffff8000113a4d70: 4a190022 eor w2, w1, w25 ffff8000113a4d74: 35000062 cbnz w2, ffff8000113a4d80 ffff8000113a4d78: 88027c18 stxr w2, w24, [x0] ffff8000113a4d7c: 35ffff82 cbnz w2, ffff8000113a4d6c ffff8000113a4d80: 35000661 cbnz w1, ffff8000113a4e4c spin_lock_bh(qdisc_lock(qdisc)); qdisc_reset(qdisc); ffff8000113a4d84: aa1603e0 mov x0, x22 ffff8000113a4d88: 94000000 bl 0 ffff8000113a4d88: R_AARCH64_CALL26 qdisc_reset ffff8000113a4d8c: 9102b2d6 add x22, x22, #0xac ffff8000113a4d90: 089ffedb stlrb w27, [x22] static inline void __raw_spin_unlock_bh(raw_spinlock_t *lock) { spin_release(&lock->dep_map, _RET_IP_); do_raw_spin_unlock(lock); __local_bh_enable_ip(_RET_IP_, SOFTIRQ_LOCK_OFFSET); ffff8000113a4d94: 52804001 mov w1, #0x200 // #512 ffff8000113a4d98: aa1503e0 mov x0, x21 ffff8000113a4d9c: 94000000 bl 0 <__local_bh_enable_ip> ffff8000113a4d9c: R_AARCH64_CALL26 __local_bh_enable_ip ffff8000113a4da0: b943ca62 ldr w2, [x19,#968] for (; i < dev->num_tx_queues; i++) { ffff8000113a4da4: 110006f7 add w23, w23, #0x1 ffff8000113a4da8: 6b0202ff cmp w23, w2 ffff8000113a4dac: 54fffcc3 b.cc ffff8000113a4d44 netif_reset_xps_queues_gt(dev, txq); ffff8000113a4db0: 53003e81 uxth w1, w20 netif_reset_xps_queues(dev, index, dev->num_tx_queues - index); ffff8000113a4db4: aa1303e0 mov x0, x19 ffff8000113a4db8: 4b010042 sub w2, w2, w1 ffff8000113a4dbc: 97fffe92 bl ffff8000113a4804 return 0; ffff8000113a4dc0: 52800000 mov w0, #0x0 // #0 ffff8000113a4dc4: 17ffffbf b ffff8000113a4cc0 return -EINVAL; ffff8000113a4dc8: 128002a0 mov w0, #0xffffffea // #-22 ffff8000113a4dcc: 17ffffbd b ffff8000113a4cc0 if (tc->offset + tc->count > txq) { ffff8000113a4dd0: 79509a61 ldrh w1, [x19,#2124] ffff8000113a4dd4: 79509660 ldrh w0, [x19,#2122] ffff8000113a4dd8: aa1303f8 mov x24, x19 ffff8000113a4ddc: 0b000020 add w0, w1, w0 ffff8000113a4de0: 6b00029f cmp w20, w0 pr_warn("Number of in use tx queues changed. Priority %i to tc mapping %i is no longer valid. Setting map to 0\n", ffff8000113a4de4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a4de4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x398 if (tc->offset + tc->count > txq) { ffff8000113a4de8: 52800037 mov w23, #0x1 // #1 pr_warn("Number of in use tx queues changed. Priority %i to tc mapping %i is no longer valid. Setting map to 0\n", ffff8000113a4dec: 9100001a add x26, x0, #0x0 ffff8000113a4dec: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x398 if (tc->offset + tc->count > txq) { ffff8000113a4df0: 540000a2 b.cs ffff8000113a4e04 ffff8000113a4df4: 14000018 b ffff8000113a4e54 for (i = 1; i < TC_BITMASK + 1; i++) { ffff8000113a4df8: 110006f7 add w23, w23, #0x1 ffff8000113a4dfc: 710042ff cmp w23, #0x10 ffff8000113a4e00: 54fff820 b.eq ffff8000113a4d04 return dev->prio_tc_map[prio & TC_BITMASK]; ffff8000113a4e04: 39622f02 ldrb w2, [x24,#2187] ffff8000113a4e08: 91000718 add x24, x24, #0x1 tc = &dev->tc_to_txq[q]; ffff8000113a4e0c: 8b22ca61 add x1, x19, w2, sxtw #2 if (tc->offset + tc->count > txq) { ffff8000113a4e10: 79509823 ldrh w3, [x1,#2124] tc = &dev->tc_to_txq[q]; ffff8000113a4e14: 91210021 add x1, x1, #0x840 if (tc->offset + tc->count > txq) { ffff8000113a4e18: 79401421 ldrh w1, [x1,#10] ffff8000113a4e1c: 0b010061 add w1, w3, w1 ffff8000113a4e20: 6b01029f cmp w20, w1 ffff8000113a4e24: 54fffea2 b.cs ffff8000113a4df8 pr_warn("Number of in use tx queues changed. Priority %i to tc mapping %i is no longer valid. Setting map to 0\n", ffff8000113a4e28: 2a1703e1 mov w1, w23 ffff8000113a4e2c: aa1a03e0 mov x0, x26 ffff8000113a4e30: 94000000 bl 0 ffff8000113a4e30: R_AARCH64_CALL26 printk if (tc >= dev->num_tc) ffff8000113a4e34: 79d09261 ldrsh w1, [x19,#2120] dev->prio_tc_map[prio & TC_BITMASK] = tc & TC_BITMASK; ffff8000113a4e38: 8b37c260 add x0, x19, w23, sxtw if (tc >= dev->num_tc) ffff8000113a4e3c: 6b1f003f cmp w1, wzr ffff8000113a4e40: 54fffdcd b.le ffff8000113a4df8 dev->prio_tc_map[prio & TC_BITMASK] = tc & TC_BITMASK; ffff8000113a4e44: 3922281f strb wzr, [x0,#2186] ffff8000113a4e48: 17ffffec b ffff8000113a4df8 queued_spin_lock_slowpath(lock, val); ffff8000113a4e4c: 94000000 bl 0 ffff8000113a4e4c: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113a4e50: 17ffffcd b ffff8000113a4d84 pr_warn("Number of in use tx queues changed invalidating tc mappings. Priority traffic classification disabled!\n"); ffff8000113a4e54: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a4e54: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x328 ffff8000113a4e58: 91000000 add x0, x0, #0x0 ffff8000113a4e58: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x328 ffff8000113a4e5c: 94000000 bl 0 ffff8000113a4e5c: R_AARCH64_CALL26 printk dev->num_tc = 0; ffff8000113a4e60: 79109279 strh w25, [x19,#2120] ffff8000113a4e64: 17ffffa8 b ffff8000113a4d04 ASSERT_RTNL(); ffff8000113a4e68: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113a4e68: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113a4e6c: 91000063 add x3, x3, #0x0 ffff8000113a4e6c: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113a4e70: 39404460 ldrb w0, [x3,#17] ffff8000113a4e74: 35fff380 cbnz w0, ffff8000113a4ce4 ffff8000113a4e78: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a4e78: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113a4e7c: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a4e7c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113a4e80: 52800024 mov w4, #0x1 // #1 ffff8000113a4e84: 91000000 add x0, x0, #0x0 ffff8000113a4e84: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113a4e88: 91000021 add x1, x1, #0x0 ffff8000113a4e88: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113a4e8c: 52816662 mov w2, #0xb33 // #2867 ffff8000113a4e90: 39004464 strb w4, [x3,#17] ffff8000113a4e94: 94000000 bl 0 <__warn_printk> ffff8000113a4e94: R_AARCH64_CALL26 __warn_printk ffff8000113a4e98: d4210000 brk #0x800 ffff8000113a4e9c: 17ffff92 b ffff8000113a4ce4 ffff8000113a4ea0 : { ffff8000113a4ea0: a9b97bfd stp x29, x30, [sp,#-112]! ffff8000113a4ea4: 910003fd mov x29, sp ffff8000113a4ea8: a90153f3 stp x19, x20, [sp,#16] ffff8000113a4eac: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a4eb0: a90363f7 stp x23, x24, [sp,#48] ffff8000113a4eb4: a9046bf9 stp x25, x26, [sp,#64] ffff8000113a4eb8: a90573fb stp x27, x28, [sp,#80] ffff8000113a4ebc: aa0003f5 mov x21, x0 ffff8000113a4ec0: aa1e03e0 mov x0, x30 ffff8000113a4ec4: aa0103f8 mov x24, x1 ffff8000113a4ec8: 94000000 bl 0 <_mcount> ffff8000113a4ec8: R_AARCH64_CALL26 _mcount struct list_head *ptype_list = &ptype_all; ffff8000113a4ecc: 9000001b adrp x27, ffff80001139e37c <__my_cpu_offset> ffff8000113a4ecc: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a4ed0: 9100037b add x27, x27, #0x0 ffff8000113a4ed0: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a4ed4: 9120037b add x27, x27, #0x800 struct packet_type *pt_prev = NULL; ffff8000113a4ed8: d280001c mov x28, #0x0 // #0 net_crit_ratelimited("protocol %04x is buggy, dev %s\n", ffff8000113a4edc: 9000001a adrp x26, ffff80001139e37c <__my_cpu_offset> ffff8000113a4edc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x408 struct sk_buff *skb2 = NULL; ffff8000113a4ee0: aa1c03f4 mov x20, x28 __READ_ONCE_SIZE; ffff8000113a4ee4: 90000019 adrp x25, ffff80001139e37c <__my_cpu_offset> ffff8000113a4ee4: R_AARCH64_ADR_PREL_PG_HI21 .bss net_crit_ratelimited("protocol %04x is buggy, dev %s\n", ffff8000113a4ee8: 9100035a add x26, x26, #0x0 ffff8000113a4ee8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x408 if (ptype_list == &ptype_all) { ffff8000113a4eec: aa1b03f7 mov x23, x27 ffff8000113a4ef0: f9400373 ldr x19, [x27] list_for_each_entry_rcu(ptype, ptype_list, list) { ffff8000113a4ef4: eb13037f cmp x27, x19 ffff8000113a4ef8: d100c273 sub x19, x19, #0x30 ffff8000113a4efc: 54000640 b.eq ffff8000113a4fc4 skb2->pkt_type = PACKET_OUTGOING; ffff8000113a4f00: 52800096 mov w22, #0x4 // #4 ffff8000113a4f04: 14000005 b ffff8000113a4f18 ffff8000113a4f08: f9401a73 ldr x19, [x19,#48] list_for_each_entry_rcu(ptype, ptype_list, list) { ffff8000113a4f0c: eb13037f cmp x27, x19 ffff8000113a4f10: d100c273 sub x19, x19, #0x30 ffff8000113a4f14: 54000580 b.eq ffff8000113a4fc4 if (ptype->ignore_outgoing) ffff8000113a4f18: 39400a63 ldrb w3, [x19,#2] ffff8000113a4f1c: 35ffff63 cbnz w3, ffff8000113a4f08 if (!ptype->af_packet_priv || !skb->sk) ffff8000113a4f20: f9401663 ldr x3, [x19,#40] ffff8000113a4f24: b4000123 cbz x3, ffff8000113a4f48 ffff8000113a4f28: f9400ea1 ldr x1, [x21,#24] ffff8000113a4f2c: b40000e1 cbz x1, ffff8000113a4f48 if (ptype->id_match) ffff8000113a4f30: f9401264 ldr x4, [x19,#32] ffff8000113a4f34: b4000504 cbz x4, ffff8000113a4fd4 return ptype->id_match(ptype, skb->sk); ffff8000113a4f38: aa1303e0 mov x0, x19 ffff8000113a4f3c: d63f0080 blr x4 ffff8000113a4f40: 53001c00 uxtb w0, w0 if (skb_loop_sk(ptype, skb)) ffff8000113a4f44: 35fffe20 cbnz w0, ffff8000113a4f08 if (pt_prev) { ffff8000113a4f48: b40004dc cbz x28, ffff8000113a4fe0 deliver_skb(skb2, pt_prev, skb->dev); ffff8000113a4f4c: f9400aa3 ldr x3, [x21,#16] bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113a4f50: b4000114 cbz x20, ffff8000113a4f70 return skb->head + skb->end; ffff8000113a4f54: f9406281 ldr x1, [x20,#192] ffff8000113a4f58: b940be80 ldr w0, [x20,#188] ffff8000113a4f5c: 8b000020 add x0, x1, x0 bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113a4f60: 39400c01 ldrb w1, [x0,#3] ffff8000113a4f64: 36180061 tbz w1, #3, ffff8000113a4f70 if (likely(!skb_zcopy(skb))) ffff8000113a4f68: f9401400 ldr x0, [x0,#40] ffff8000113a4f6c: b5000f00 cbnz x0, ffff8000113a514c refcount_inc(&skb->users); ffff8000113a4f70: 91035280 add x0, x20, #0xd4 ATOMIC_OPS(add, add, I) ffff8000113a4f74: f9800011 prfm pstl1strm, [x0] ffff8000113a4f78: 885f7c01 ldxr w1, [x0] ffff8000113a4f7c: 11000422 add w2, w1, #0x1 ffff8000113a4f80: 88047c02 stxr w4, w2, [x0] ffff8000113a4f84: 35ffffa4 cbnz w4, ffff8000113a4f78 if (unlikely(!old)) ffff8000113a4f88: 6b1f003f cmp w1, wzr ffff8000113a4f8c: 54000d60 b.eq ffff8000113a5138 else if (unlikely(old < 0 || old + i < 0)) ffff8000113a4f90: 54000b4b b.lt ffff8000113a50f8 ffff8000113a4f94: 3100043f cmn w1, #0x1 ffff8000113a4f98: 54000b04 b.mi ffff8000113a50f8 return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); ffff8000113a4f9c: f9400b84 ldr x4, [x28,#16] ffff8000113a4fa0: f9400a81 ldr x1, [x20,#16] ffff8000113a4fa4: aa1c03e2 mov x2, x28 ffff8000113a4fa8: aa1403e0 mov x0, x20 ffff8000113a4fac: d63f0080 blr x4 ffff8000113a4fb0: aa1303fc mov x28, x19 ffff8000113a4fb4: f9401a73 ldr x19, [x19,#48] list_for_each_entry_rcu(ptype, ptype_list, list) { ffff8000113a4fb8: eb13037f cmp x27, x19 ffff8000113a4fbc: d100c273 sub x19, x19, #0x30 ffff8000113a4fc0: 54fffac1 b.ne ffff8000113a4f18 if (ptype_list == &ptype_all) { ffff8000113a4fc4: eb17037f cmp x27, x23 ffff8000113a4fc8: 54000521 b.ne ffff8000113a506c ptype_list = &dev->ptype_all; ffff8000113a4fcc: 9102231b add x27, x24, #0x88 goto again; ffff8000113a4fd0: 17ffffc8 b ffff8000113a4ef0 else if ((struct sock *)ptype->af_packet_priv == skb->sk) ffff8000113a4fd4: eb01007f cmp x3, x1 ffff8000113a4fd8: 54fff980 b.eq ffff8000113a4f08 if (pt_prev) { ffff8000113a4fdc: b5fffb9c cbnz x28, ffff8000113a4f4c skb2 = skb_clone(skb, GFP_ATOMIC); ffff8000113a4fe0: aa1503e0 mov x0, x21 ffff8000113a4fe4: 52814401 mov w1, #0xa20 // #2592 ffff8000113a4fe8: 94000000 bl 0 ffff8000113a4fe8: R_AARCH64_CALL26 skb_clone ffff8000113a4fec: aa0003f4 mov x20, x0 if (!skb2) ffff8000113a4ff0: b40005c0 cbz x0, ffff8000113a50a8 ffff8000113a4ff4: 91000320 add x0, x25, #0x0 ffff8000113a4ff4: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a4ff8: b9434800 ldr w0, [x0,#840] skb->tstamp = 0; ffff8000113a4ffc: f900129c str x28, [x20,#32] if (static_branch_unlikely(&netstamp_needed_key)) ffff8000113a5000: 6b1f001f cmp w0, wzr ffff8000113a5004: 5400092c b.gt ffff8000113a5128 skb->mac_header = skb->data - skb->head; ffff8000113a5008: f9406681 ldr x1, [x20,#200] ffff8000113a500c: f9406280 ldr x0, [x20,#192] struct sk_buff *skb2 = NULL; ffff8000113a5010: 79416a83 ldrh w3, [x20,#180] ffff8000113a5014: cb000024 sub x4, x1, x0 return skb->head + skb->network_header; ffff8000113a5018: 8b232002 add x2, x0, w3, uxth skb->mac_header = skb->data - skb->head; ffff8000113a501c: 79016e84 strh w4, [x20,#182] if (skb_network_header(skb2) < skb2->data || ffff8000113a5020: eb02003f cmp x1, x2 ffff8000113a5024: 540000a8 b.hi ffff8000113a5038 return skb->head + skb->tail; ffff8000113a5028: b940ba81 ldr w1, [x20,#184] ffff8000113a502c: 8b010000 add x0, x0, x1 ffff8000113a5030: eb00005f cmp x2, x0 ffff8000113a5034: 54000109 b.ls ffff8000113a5054 net_crit_ratelimited("protocol %04x is buggy, dev %s\n", ffff8000113a5038: 94000000 bl 0 ffff8000113a5038: R_AARCH64_CALL26 net_ratelimit ffff8000113a503c: 35000680 cbnz w0, ffff8000113a510c skb->network_header = skb->data - skb->head; ffff8000113a5040: f9406683 ldr x3, [x20,#200] ffff8000113a5044: f9406280 ldr x0, [x20,#192] ffff8000113a5048: cb000063 sub x3, x3, x0 ffff8000113a504c: 53003c63 uxth w3, w3 ffff8000113a5050: 79016a83 strh w3, [x20,#180] skb2->pkt_type = PACKET_OUTGOING; ffff8000113a5054: 39420280 ldrb w0, [x20,#128] skb2->transport_header = skb2->network_header; ffff8000113a5058: 79016683 strh w3, [x20,#178] skb2->pkt_type = PACKET_OUTGOING; ffff8000113a505c: 33000ac0 bfxil w0, w22, #0, #3 ffff8000113a5060: 39020280 strb w0, [x20,#128] ffff8000113a5064: aa1303fc mov x28, x19 ffff8000113a5068: 17ffffa8 b ffff8000113a4f08 if (pt_prev) { ffff8000113a506c: b40001fc cbz x28, ffff8000113a50a8 bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113a5070: b40002b4 cbz x20, ffff8000113a50c4 return skb->head + skb->end; ffff8000113a5074: f9406281 ldr x1, [x20,#192] ffff8000113a5078: b940be80 ldr w0, [x20,#188] ffff8000113a507c: 8b000020 add x0, x1, x0 bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113a5080: 39400c01 ldrb w1, [x0,#3] ffff8000113a5084: 36180201 tbz w1, #3, ffff8000113a50c4 if (likely(!skb_zcopy(skb))) ffff8000113a5088: f9401400 ldr x0, [x0,#40] ffff8000113a508c: b40001c0 cbz x0, ffff8000113a50c4 return skb_copy_ubufs(skb, gfp_mask); ffff8000113a5090: aa1403e0 mov x0, x20 ffff8000113a5094: 52814401 mov w1, #0xa20 // #2592 ffff8000113a5098: 94000000 bl 0 ffff8000113a5098: R_AARCH64_CALL26 skb_copy_ubufs if (!skb_orphan_frags_rx(skb2, GFP_ATOMIC)) ffff8000113a509c: 34000140 cbz w0, ffff8000113a50c4 kfree_skb(skb2); ffff8000113a50a0: aa1403e0 mov x0, x20 ffff8000113a50a4: 94000000 bl 0 ffff8000113a50a4: R_AARCH64_CALL26 kfree_skb } ffff8000113a50a8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a50ac: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a50b0: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a50b4: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a50b8: a94573fb ldp x27, x28, [sp,#80] ffff8000113a50bc: a8c77bfd ldp x29, x30, [sp],#112 ffff8000113a50c0: d65f03c0 ret pt_prev->func(skb2, skb->dev, pt_prev, skb->dev); ffff8000113a50c4: f9400aa1 ldr x1, [x21,#16] ffff8000113a50c8: f9400b84 ldr x4, [x28,#16] ffff8000113a50cc: aa1403e0 mov x0, x20 ffff8000113a50d0: aa1c03e2 mov x2, x28 ffff8000113a50d4: aa0103e3 mov x3, x1 ffff8000113a50d8: d63f0080 blr x4 } ffff8000113a50dc: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a50e0: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a50e4: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a50e8: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a50ec: a94573fb ldp x27, x28, [sp,#80] ffff8000113a50f0: a8c77bfd ldp x29, x30, [sp],#112 ffff8000113a50f4: d65f03c0 ret refcount_warn_saturate(r, REFCOUNT_ADD_OVF); ffff8000113a50f8: 52800021 mov w1, #0x1 // #1 ffff8000113a50fc: f90037a3 str x3, [x29,#104] ffff8000113a5100: 94000000 bl 0 ffff8000113a5100: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113a5104: f94037a3 ldr x3, [x29,#104] ffff8000113a5108: 17ffffa5 b ffff8000113a4f9c ffff8000113a510c: 79416281 ldrh w1, [x20,#176] net_crit_ratelimited("protocol %04x is buggy, dev %s\n", ffff8000113a5110: aa1a03e0 mov x0, x26 ffff8000113a5114: 5ac00421 rev16 w1, w1 ffff8000113a5118: 53003c21 uxth w1, w1 ffff8000113a511c: aa1803e2 mov x2, x24 ffff8000113a5120: 94000000 bl 0 ffff8000113a5120: R_AARCH64_CALL26 printk ffff8000113a5124: 17ffffc7 b ffff8000113a5040 /** * ktime_get_real - get the real (wall-) time in ktime_t format */ static inline ktime_t ktime_get_real(void) { return ktime_get_with_offset(TK_OFFS_REAL); ffff8000113a5128: 2a1c03e0 mov w0, w28 ffff8000113a512c: 94000000 bl 0 ffff8000113a512c: R_AARCH64_CALL26 ktime_get_with_offset skb->tstamp = ktime_get_real(); ffff8000113a5130: f9001280 str x0, [x20,#32] ffff8000113a5134: 17ffffb5 b ffff8000113a5008 refcount_warn_saturate(r, REFCOUNT_ADD_UAF); ffff8000113a5138: 52800041 mov w1, #0x2 // #2 ffff8000113a513c: f90037a3 str x3, [x29,#104] ffff8000113a5140: 94000000 bl 0 ffff8000113a5140: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113a5144: f94037a3 ldr x3, [x29,#104] ffff8000113a5148: 17ffff95 b ffff8000113a4f9c return skb_copy_ubufs(skb, gfp_mask); ffff8000113a514c: aa1403e0 mov x0, x20 ffff8000113a5150: 52814401 mov w1, #0xa20 // #2592 ffff8000113a5154: f90037a3 str x3, [x29,#104] ffff8000113a5158: 94000000 bl 0 ffff8000113a5158: R_AARCH64_CALL26 skb_copy_ubufs if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) ffff8000113a515c: f94037a3 ldr x3, [x29,#104] ffff8000113a5160: 34fff080 cbz w0, ffff8000113a4f70 ffff8000113a5164: aa1303fc mov x28, x19 ffff8000113a5168: 17ffff68 b ffff8000113a4f08 ffff8000113a516c : { ffff8000113a516c: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a5170: 910003fd mov x29, sp ffff8000113a5174: f9000bf3 str x19, [sp,#16] ffff8000113a5178: aa0003f3 mov x19, x0 ffff8000113a517c: aa1e03e0 mov x0, x30 ffff8000113a5180: 94000000 bl 0 <_mcount> ffff8000113a5180: R_AARCH64_CALL26 _mcount return (u16)raw_smp_processor_id() % dev->real_num_tx_queues; ffff8000113a5184: 90000001 adrp x1, 0 ffff8000113a5184: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113a5188: b943ce62 ldr w2, [x19,#972] asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff8000113a518c: d538d080 mrs x0, tpidr_el1 ffff8000113a5190: 91000021 add x1, x1, #0x0 ffff8000113a5190: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a5194: 78616800 ldrh w0, [x0,x1] } ffff8000113a5198: f9400bf3 ldr x19, [sp,#16] return (u16)raw_smp_processor_id() % dev->real_num_tx_queues; ffff8000113a519c: 1ac20801 udiv w1, w0, w2 ffff8000113a51a0: 1b028020 msub w0, w1, w2, w0 } ffff8000113a51a4: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a51a8: d65f03c0 ret ffff8000113a51ac : { ffff8000113a51ac: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a51b0: 910003fd mov x29, sp ffff8000113a51b4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a51b8: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a51bc: aa0003f6 mov x22, x0 ffff8000113a51c0: aa1e03e0 mov x0, x30 ffff8000113a51c4: 94000000 bl 0 <_mcount> ffff8000113a51c4: R_AARCH64_CALL26 _mcount might_sleep(); ffff8000113a51c8: 94000000 bl 0 <_cond_resched> ffff8000113a51c8: R_AARCH64_CALL26 _cond_resched if (napi_hash_del(napi)) ffff8000113a51cc: aa1603e0 mov x0, x22 ffff8000113a51d0: 94000000 bl ffff8000113a2a50 ffff8000113a51d0: R_AARCH64_CALL26 napi_hash_del ffff8000113a51d4: 53001c00 uxtb w0, w0 ffff8000113a51d8: 34000040 cbz w0, ffff8000113a51e0 synchronize_net(); ffff8000113a51dc: 94000000 bl ffff8000113a1384 ffff8000113a51dc: R_AARCH64_CALL26 synchronize_net list_del_init(&napi->dev_list); ffff8000113a51e0: 910582d3 add x19, x22, #0x160 if (!__list_del_entry_valid(entry)) ffff8000113a51e4: aa1303e0 mov x0, x19 ffff8000113a51e8: 94000000 bl 0 <__list_del_entry_valid> ffff8000113a51e8: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113a51ec: 53001c00 uxtb w0, w0 ffff8000113a51f0: 340000a0 cbz w0, ffff8000113a5204 __list_del(entry->prev, entry->next); ffff8000113a51f4: f9400660 ldr x0, [x19,#8] ffff8000113a51f8: f940b2c1 ldr x1, [x22,#352] next->prev = prev; ffff8000113a51fc: f9000420 str x0, [x1,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a5200: f9000001 str x1, [x0] ffff8000113a5204: f900b2d3 str x19, [x22,#352] list->prev = list; ffff8000113a5208: f9000673 str x19, [x19,#8] kfree_skb(napi->skb); ffff8000113a520c: f94082c0 ldr x0, [x22,#256] ffff8000113a5210: 910102d4 add x20, x22, #0x40 ffff8000113a5214: 94000000 bl 0 ffff8000113a5214: R_AARCH64_CALL26 kfree_skb for (i = 0; i < GRO_HASH_BUCKETS; i++) { ffff8000113a5218: 52800015 mov w21, #0x0 // #0 napi->skb = NULL; ffff8000113a521c: f90082df str xzr, [x22,#256] list_for_each_entry_safe(skb, n, &napi->gro_hash[i].list, list) ffff8000113a5220: f9400280 ldr x0, [x20] ffff8000113a5224: eb00029f cmp x20, x0 ffff8000113a5228: f9400013 ldr x19, [x0] ffff8000113a522c: 54000081 b.ne ffff8000113a523c ffff8000113a5230: 14000007 b ffff8000113a524c ffff8000113a5234: aa1303e0 mov x0, x19 ffff8000113a5238: aa0103f3 mov x19, x1 kfree_skb(skb); ffff8000113a523c: 94000000 bl 0 ffff8000113a523c: R_AARCH64_CALL26 kfree_skb list_for_each_entry_safe(skb, n, &napi->gro_hash[i].list, list) ffff8000113a5240: eb13029f cmp x20, x19 ffff8000113a5244: f9400261 ldr x1, [x19] ffff8000113a5248: 54ffff61 b.ne ffff8000113a5234 for (i = 0; i < GRO_HASH_BUCKETS; i++) { ffff8000113a524c: 110006b5 add w21, w21, #0x1 napi->gro_hash[i].count = 0; ffff8000113a5250: b900129f str wzr, [x20,#16] for (i = 0; i < GRO_HASH_BUCKETS; i++) { ffff8000113a5254: 710022bf cmp w21, #0x8 ffff8000113a5258: 91006294 add x20, x20, #0x18 ffff8000113a525c: 54fffe21 b.ne ffff8000113a5220 napi->gro_bitmask = 0; ffff8000113a5260: f90012df str xzr, [x22,#32] } ffff8000113a5264: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a5268: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a526c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a5270: d65f03c0 ret ffff8000113a5274 : { ffff8000113a5274: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a5278: 910003fd mov x29, sp ffff8000113a527c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a5280: f90013f5 str x21, [sp,#32] ffff8000113a5284: aa0003f4 mov x20, x0 ffff8000113a5288: aa1e03e0 mov x0, x30 ffff8000113a528c: 94000000 bl 0 <_mcount> ffff8000113a528c: R_AARCH64_CALL26 _mcount might_sleep(); ffff8000113a5290: 94000000 bl 0 <_cond_resched> ffff8000113a5290: R_AARCH64_CALL26 _cond_resched kvfree(dev->_tx); ffff8000113a5294: f941e280 ldr x0, [x20,#960] ffff8000113a5298: 94000000 bl 0 ffff8000113a5298: R_AARCH64_CALL26 kvfree if (!dev->_rx) ffff8000113a529c: f9419280 ldr x0, [x20,#800] void free_netdev(struct net_device *dev) ffff8000113a52a0: b9432a95 ldr w21, [x20,#808] if (!dev->_rx) ffff8000113a52a4: b40001c0 cbz x0, ffff8000113a52dc for (i = 0; i < count; i++) ffff8000113a52a8: 34000195 cbz w21, ffff8000113a52d8 ffff8000113a52ac: 510006b5 sub w21, w21, #0x1 ffff8000113a52b0: 910006b5 add x21, x21, #0x1 ffff8000113a52b4: d378deb5 lsl x21, x21, #8 ffff8000113a52b8: d2800013 mov x19, #0x0 // #0 xdp_rxq_info_unreg(&dev->_rx[i].xdp_rxq); ffff8000113a52bc: 8b130000 add x0, x0, x19 ffff8000113a52c0: 91020000 add x0, x0, #0x80 ffff8000113a52c4: 94000000 bl 0 ffff8000113a52c4: R_AARCH64_CALL26 xdp_rxq_info_unreg ffff8000113a52c8: 91040273 add x19, x19, #0x100 for (i = 0; i < count; i++) ffff8000113a52cc: eb15027f cmp x19, x21 ffff8000113a52d0: f9419280 ldr x0, [x20,#800] ffff8000113a52d4: 54ffff41 b.ne ffff8000113a52bc kvfree(dev->_rx); ffff8000113a52d8: 94000000 bl 0 ffff8000113a52d8: R_AARCH64_CALL26 kvfree kfree(rcu_dereference_protected(dev->ingress_queue, 1)); ffff8000113a52dc: f941ae80 ldr x0, [x20,#856] list_for_each_entry_safe(p, n, &dev->napi_list, dev_list) ffff8000113a52e0: aa1403f5 mov x21, x20 kfree(rcu_dereference_protected(dev->ingress_queue, 1)); ffff8000113a52e4: 94000000 bl 0 ffff8000113a52e4: R_AARCH64_CALL26 kfree dev_addr_flush(dev); ffff8000113a52e8: aa1403e0 mov x0, x20 ffff8000113a52ec: 94000000 bl 0 ffff8000113a52ec: R_AARCH64_CALL26 dev_addr_flush list_for_each_entry_safe(p, n, &dev->napi_list, dev_list) ffff8000113a52f0: f8458ea1 ldr x1, [x21,#88]! ffff8000113a52f4: d1058020 sub x0, x1, #0x160 ffff8000113a52f8: f940b013 ldr x19, [x0,#352] ffff8000113a52fc: eb0102bf cmp x21, x1 ffff8000113a5300: d1058273 sub x19, x19, #0x160 ffff8000113a5304: 54000081 b.ne ffff8000113a5314 ffff8000113a5308: 14000009 b ffff8000113a532c ffff8000113a530c: aa1303e0 mov x0, x19 ffff8000113a5310: aa0103f3 mov x19, x1 netif_napi_del(p); ffff8000113a5314: 94000000 bl ffff8000113a51ac ffff8000113a5314: R_AARCH64_CALL26 netif_napi_del list_for_each_entry_safe(p, n, &dev->napi_list, dev_list) ffff8000113a5318: 91058261 add x1, x19, #0x160 ffff8000113a531c: f940b260 ldr x0, [x19,#352] ffff8000113a5320: eb0102bf cmp x21, x1 ffff8000113a5324: d1058001 sub x1, x0, #0x160 ffff8000113a5328: 54ffff21 b.ne ffff8000113a530c free_percpu(dev->pcpu_refcnt); ffff8000113a532c: f9426280 ldr x0, [x20,#1216] ffff8000113a5330: 94000000 bl 0 ffff8000113a5330: R_AARCH64_CALL26 free_percpu free_percpu(dev->xdp_bulkq); ffff8000113a5334: f941f280 ldr x0, [x20,#992] dev->pcpu_refcnt = NULL; ffff8000113a5338: f902629f str xzr, [x20,#1216] free_percpu(dev->xdp_bulkq); ffff8000113a533c: 94000000 bl 0 ffff8000113a533c: R_AARCH64_CALL26 free_percpu if (dev->reg_state == NETREG_UNINITIALIZED) { ffff8000113a5340: 39536280 ldrb w0, [x20,#1240] dev->xdp_bulkq = NULL; ffff8000113a5344: f901f29f str xzr, [x20,#992] if (dev->reg_state == NETREG_UNINITIALIZED) { ffff8000113a5348: 34000160 cbz w0, ffff8000113a5374 BUG_ON(dev->reg_state != NETREG_UNREGISTERED); ffff8000113a534c: 71000c1f cmp w0, #0x3 ffff8000113a5350: 54000201 b.ne ffff8000113a5390 dev->reg_state = NETREG_RELEASED; ffff8000113a5354: 52800080 mov w0, #0x4 // #4 ffff8000113a5358: 39136280 strb w0, [x20,#1240] put_device(&dev->dev); ffff8000113a535c: 91144280 add x0, x20, #0x510 ffff8000113a5360: 94000000 bl 0 ffff8000113a5360: R_AARCH64_CALL26 put_device } ffff8000113a5364: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a5368: f94013f5 ldr x21, [sp,#32] ffff8000113a536c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a5370: d65f03c0 ret char *addr = (char *)dev - dev->padded; ffff8000113a5374: 79446680 ldrh w0, [x20,#562] kvfree(addr); ffff8000113a5378: cb000280 sub x0, x20, x0 ffff8000113a537c: 94000000 bl 0 ffff8000113a537c: R_AARCH64_CALL26 kvfree } ffff8000113a5380: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a5384: f94013f5 ldr x21, [sp,#32] ffff8000113a5388: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a538c: d65f03c0 ret BUG_ON(dev->reg_state != NETREG_UNREGISTERED); ffff8000113a5390: d4210000 brk #0x800 ffff8000113a5394 : { ffff8000113a5394: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113a5398: 910003fd mov x29, sp ffff8000113a539c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a53a0: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a53a4: a90363f7 stp x23, x24, [sp,#48] ffff8000113a53a8: f90023f9 str x25, [sp,#64] ffff8000113a53ac: 2a0003f3 mov w19, w0 ffff8000113a53b0: aa1e03e0 mov x0, x30 ffff8000113a53b4: aa0103f7 mov x23, x1 ffff8000113a53b8: 53001c58 uxtb w24, w2 ffff8000113a53bc: aa0303f5 mov x21, x3 ffff8000113a53c0: 2a0403f4 mov w20, w4 ffff8000113a53c4: 2a0503f6 mov w22, w5 ffff8000113a53c8: 94000000 bl 0 <_mcount> ffff8000113a53c8: R_AARCH64_CALL26 _mcount return __builtin_strlen(p); ffff8000113a53cc: aa1703e0 mov x0, x23 ffff8000113a53d0: 94000000 bl 0 ffff8000113a53d0: R_AARCH64_CALL26 strlen BUG_ON(strlen(name) >= sizeof(dev->name)); ffff8000113a53d4: f1003c1f cmp x0, #0xf ffff8000113a53d8: 540018a8 b.hi ffff8000113a56ec if (txqs < 1) { ffff8000113a53dc: 340017f4 cbz w20, ffff8000113a56d8 if (rxqs < 1) { ffff8000113a53e0: 34001896 cbz w22, ffff8000113a56f0 ffff8000113a53e4: 6b1f027f cmp w19, wzr ffff8000113a53e8: d28123e0 mov x0, #0x91f // #2335 ffff8000113a53ec: 11247e73 add w19, w19, #0x91f ffff8000113a53f0: 9a801260 csel x0, x19, x0, ne return kvmalloc_node(size, flags, NUMA_NO_NODE); ffff8000113a53f4: 5289b801 mov w1, #0x4dc0 // #19904 ffff8000113a53f8: 12800002 mov w2, #0xffffffff // #-1 ffff8000113a53fc: 94000000 bl 0 ffff8000113a53fc: R_AARCH64_CALL26 kvmalloc_node if (!p) ffff8000113a5400: b4001160 cbz x0, ffff8000113a562c dev = PTR_ALIGN(p, NETDEV_ALIGN); ffff8000113a5404: 91007c13 add x19, x0, #0x1f ffff8000113a5408: 927bea73 and x19, x19, #0xffffffffffffffe0 dev->padded = (char *)dev - (char *)p; ffff8000113a540c: cb000261 sub x1, x19, x0 dev->pcpu_refcnt = alloc_percpu(int); ffff8000113a5410: d2800080 mov x0, #0x4 // #4 dev->padded = (char *)dev - (char *)p; ffff8000113a5414: 79046661 strh w1, [x19,#562] dev->pcpu_refcnt = alloc_percpu(int); ffff8000113a5418: aa0003e1 mov x1, x0 ffff8000113a541c: 94000000 bl 0 <__alloc_percpu> ffff8000113a541c: R_AARCH64_CALL26 __alloc_percpu ffff8000113a5420: f9026260 str x0, [x19,#1216] if (!dev->pcpu_refcnt) ffff8000113a5424: b4001460 cbz x0, ffff8000113a56b0 if (dev_addr_init(dev)) ffff8000113a5428: aa1303e0 mov x0, x19 ffff8000113a542c: 94000000 bl 0 ffff8000113a542c: R_AARCH64_CALL26 dev_addr_init ffff8000113a5430: 350013c0 cbnz w0, ffff8000113a56a8 dev_mc_init(dev); ffff8000113a5434: aa1303e0 mov x0, x19 ffff8000113a5438: 94000000 bl 0 ffff8000113a5438: R_AARCH64_CALL26 dev_mc_init dev_uc_init(dev); ffff8000113a543c: aa1303e0 mov x0, x19 ffff8000113a5440: 94000000 bl 0 ffff8000113a5440: R_AARCH64_CALL26 dev_uc_init pnet->net = net; ffff8000113a5444: 90000002 adrp x2, 0 ffff8000113a5444: R_AARCH64_ADR_PREL_PG_HI21 init_net ffff8000113a5448: 91000042 add x2, x2, #0x0 ffff8000113a5448: R_AARCH64_ADD_ABS_LO12_NC init_net ffff8000113a544c: f9027a62 str x2, [x19,#1264] dev->gso_max_size = GSO_MAX_SIZE; ffff8000113a5450: 52a00022 mov w2, #0x10000 // #65536 ffff8000113a5454: b9083a62 str w2, [x19,#2104] dev->upper_level = 1; ffff8000113a5458: 52800021 mov w1, #0x1 // #1 INIT_LIST_HEAD(&dev->napi_list); ffff8000113a545c: 91016260 add x0, x19, #0x58 dev->gso_max_segs = GSO_MAX_SEGS; ffff8000113a5460: 12800002 mov w2, #0xffffffff // #-1 ffff8000113a5464: f9002e60 str x0, [x19,#88] dev->upper_level = 1; ffff8000113a5468: 3909c261 strb w1, [x19,#624] dev->lower_level = 1; ffff8000113a546c: 3909c661 strb w1, [x19,#625] dev->gso_max_segs = GSO_MAX_SEGS; ffff8000113a5470: 79107a62 strh w2, [x19,#2108] ffff8000113a5474: f9000400 str x0, [x0,#8] INIT_LIST_HEAD(&dev->unreg_list); ffff8000113a5478: 9101a260 add x0, x19, #0x68 ffff8000113a547c: f9003660 str x0, [x19,#104] ffff8000113a5480: f9000400 str x0, [x0,#8] INIT_LIST_HEAD(&dev->close_list); ffff8000113a5484: 9101e260 add x0, x19, #0x78 ffff8000113a5488: f9003e60 str x0, [x19,#120] ffff8000113a548c: f9000400 str x0, [x0,#8] INIT_LIST_HEAD(&dev->link_watch_list); ffff8000113a5490: 91132260 add x0, x19, #0x4c8 ffff8000113a5494: f9026660 str x0, [x19,#1224] ffff8000113a5498: f9000400 str x0, [x0,#8] INIT_LIST_HEAD(&dev->adj_list.upper); ffff8000113a549c: 9102a260 add x0, x19, #0xa8 ffff8000113a54a0: f9005660 str x0, [x19,#168] ffff8000113a54a4: f9000400 str x0, [x0,#8] INIT_LIST_HEAD(&dev->adj_list.lower); ffff8000113a54a8: 9102e260 add x0, x19, #0xb8 ffff8000113a54ac: f9005e60 str x0, [x19,#184] ffff8000113a54b0: f9000400 str x0, [x0,#8] INIT_LIST_HEAD(&dev->ptype_all); ffff8000113a54b4: 91022260 add x0, x19, #0x88 ffff8000113a54b8: f9004660 str x0, [x19,#136] ffff8000113a54bc: f9000400 str x0, [x0,#8] INIT_LIST_HEAD(&dev->ptype_specific); ffff8000113a54c0: 91026260 add x0, x19, #0x98 ffff8000113a54c4: f9004e60 str x0, [x19,#152] ffff8000113a54c8: f9000400 str x0, [x0,#8] INIT_LIST_HEAD(&dev->net_notifier_list); ffff8000113a54cc: 91230260 add x0, x19, #0x8c0 ffff8000113a54d0: f9046260 str x0, [x19,#2240] ffff8000113a54d4: f9000400 str x0, [x0,#8] hash_init(dev->qdisc_hash); ffff8000113a54d8: 91100261 add x1, x19, #0x400 ffff8000113a54dc: d2800006 mov x6, #0x0 // #0 static inline void __hash_init(struct hlist_head *ht, unsigned int sz) { unsigned int i; for (i = 0; i < sz; i++) INIT_HLIST_HEAD(&ht[i]); ffff8000113a54e0: f826683f str xzr, [x1,x6] ffff8000113a54e4: 910020c6 add x6, x6, #0x8 for (i = 0; i < sz; i++) ffff8000113a54e8: f10200df cmp x6, #0x80 ffff8000113a54ec: 54ffffa1 b.ne ffff8000113a54e0 dev->priv_flags = IFF_XMIT_DST_RELEASE | IFF_XMIT_DST_RELEASE_PERM; ffff8000113a54f0: 52800400 mov w0, #0x20 // #32 ffff8000113a54f4: 72a00040 movk w0, #0x2, lsl #16 ffff8000113a54f8: b9022e60 str w0, [x19,#556] setup(dev); ffff8000113a54fc: aa1303e0 mov x0, x19 ffff8000113a5500: d63f02a0 blr x21 if (!dev->tx_queue_len) { ffff8000113a5504: b943da60 ldr w0, [x19,#984] ffff8000113a5508: 340009e0 cbz w0, ffff8000113a5644 if (count < 1 || count > 0xffff) ffff8000113a550c: 529fffc0 mov w0, #0xfffe // #65534 ffff8000113a5510: 51000681 sub w1, w20, #0x1 size_t sz = count * sizeof(*tx); ffff8000113a5514: 52802819 mov w25, #0x140 // #320 if (count < 1 || count > 0xffff) ffff8000113a5518: 6b00003f cmp w1, w0 dev->num_tx_queues = txqs; ffff8000113a551c: b903ca74 str w20, [x19,#968] dev->real_num_tx_queues = txqs; ffff8000113a5520: b903ce74 str w20, [x19,#972] size_t sz = count * sizeof(*tx); ffff8000113a5524: 9bb97e80 umull x0, w20, w25 if (count < 1 || count > 0xffff) ffff8000113a5528: 540007c8 b.hi ffff8000113a5620 ffff8000113a552c: 5289b801 mov w1, #0x4dc0 // #19904 ffff8000113a5530: 12800002 mov w2, #0xffffffff // #-1 ffff8000113a5534: 94000000 bl 0 ffff8000113a5534: R_AARCH64_CALL26 kvmalloc_node if (!tx) ffff8000113a5538: b4000740 cbz x0, ffff8000113a5620 for (i = 0; i < dev->num_tx_queues; i++) ffff8000113a553c: b943ca61 ldr w1, [x19,#968] dev->_tx = tx; ffff8000113a5540: f901e260 str x0, [x19,#960] ffff8000113a5544: aa0003e4 mov x4, x0 ffff8000113a5548: 52800014 mov w20, #0x0 // #0 queue->xmit_lock_owner = -1; ffff8000113a554c: 12800015 mov w21, #0xffffffff // #-1 ffff8000113a5550: 35000061 cbnz w1, ffff8000113a555c ffff8000113a5554: 1400000f b ffff8000113a5590 ffff8000113a5558: f941e264 ldr x4, [x19,#960] f(dev, &dev->_tx[i], arg); ffff8000113a555c: 9bb97e80 umull x0, w20, w25 ffff8000113a5560: 8b000083 add x3, x4, x0 spin_lock_init(&queue->_xmit_lock); ffff8000113a5564: b900807f str wzr, [x3,#128] queue->xmit_lock_owner = -1; ffff8000113a5568: b9008475 str w21, [x3,#132] q->numa_node = node; ffff8000113a556c: b9005875 str w21, [x3,#88] queue->dev = dev; ffff8000113a5570: f8206893 str x19, [x4,x0] dql_init(&queue->dql, HZ); ffff8000113a5574: 52801f41 mov w1, #0xfa // #250 ffff8000113a5578: 91030060 add x0, x3, #0xc0 ffff8000113a557c: 94000000 bl 0 ffff8000113a557c: R_AARCH64_CALL26 dql_init for (i = 0; i < dev->num_tx_queues; i++) ffff8000113a5580: b943ca60 ldr w0, [x19,#968] ffff8000113a5584: 11000694 add w20, w20, #0x1 ffff8000113a5588: 6b00029f cmp w20, w0 ffff8000113a558c: 54fffe63 b.cc ffff8000113a5558 spin_lock_init(&dev->tx_global_lock); ffff8000113a5590: b903de7f str wzr, [x19,#988] dev->num_rx_queues = rxqs; ffff8000113a5594: b9032a76 str w22, [x19,#808] dev->real_num_rx_queues = rxqs; ffff8000113a5598: b9032e76 str w22, [x19,#812] ffff8000113a559c: d3787ec0 ubfiz x0, x22, #8, #32 ffff8000113a55a0: 5289b801 mov w1, #0x4dc0 // #19904 ffff8000113a55a4: 12800002 mov w2, #0xffffffff // #-1 ffff8000113a55a8: 94000000 bl 0 ffff8000113a55a8: R_AARCH64_CALL26 kvmalloc_node ffff8000113a55ac: aa0003f9 mov x25, x0 if (!rx) ffff8000113a55b0: b4000380 cbz x0, ffff8000113a5620 dev->_rx = rx; ffff8000113a55b4: f9019260 str x0, [x19,#800] ffff8000113a55b8: 91020015 add x21, x0, #0x80 for (i = 0; i < count; i++) { ffff8000113a55bc: 52800014 mov w20, #0x0 // #0 ffff8000113a55c0: 14000005 b ffff8000113a55d4 ffff8000113a55c4: 11000694 add w20, w20, #0x1 ffff8000113a55c8: 6b16029f cmp w20, w22 ffff8000113a55cc: 910402b5 add x21, x21, #0x100 ffff8000113a55d0: 54000460 b.eq ffff8000113a565c err = xdp_rxq_info_reg(&rx[i].xdp_rxq, dev, i); ffff8000113a55d4: aa1303e1 mov x1, x19 rx[i].dev = dev; ffff8000113a55d8: f81d02b3 stur x19, [x21,#-48] err = xdp_rxq_info_reg(&rx[i].xdp_rxq, dev, i); ffff8000113a55dc: aa1503e0 mov x0, x21 ffff8000113a55e0: 2a1403e2 mov w2, w20 ffff8000113a55e4: 94000000 bl 0 ffff8000113a55e4: R_AARCH64_CALL26 xdp_rxq_info_reg if (err < 0) ffff8000113a55e8: 36fffee0 tbz w0, #31, ffff8000113a55c4 while (i--) ffff8000113a55ec: 51000695 sub w21, w20, #0x1 ffff8000113a55f0: 35000074 cbnz w20, ffff8000113a55fc ffff8000113a55f4: 14000008 b ffff8000113a5614 ffff8000113a55f8: 2a0003f5 mov w21, w0 xdp_rxq_info_unreg(&rx[i].xdp_rxq); ffff8000113a55fc: d3787ea1 ubfiz x1, x21, #8, #32 ffff8000113a5600: 8b010320 add x0, x25, x1 ffff8000113a5604: 91020000 add x0, x0, #0x80 ffff8000113a5608: 94000000 bl 0 ffff8000113a5608: R_AARCH64_CALL26 xdp_rxq_info_unreg while (i--) ffff8000113a560c: 510006a0 sub w0, w21, #0x1 ffff8000113a5610: 35ffff55 cbnz w21, ffff8000113a55f8 kvfree(dev->_rx); ffff8000113a5614: f9419260 ldr x0, [x19,#800] ffff8000113a5618: 94000000 bl 0 ffff8000113a5618: R_AARCH64_CALL26 kvfree dev->_rx = NULL; ffff8000113a561c: f901927f str xzr, [x19,#800] free_netdev(dev); ffff8000113a5620: aa1303e0 mov x0, x19 ffff8000113a5624: 94000000 bl ffff8000113a5274 ffff8000113a5624: R_AARCH64_CALL26 free_netdev return NULL; ffff8000113a5628: d2800000 mov x0, #0x0 // #0 } ffff8000113a562c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a5630: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a5634: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a5638: f94023f9 ldr x25, [sp,#64] ffff8000113a563c: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a5640: d65f03c0 ret dev->priv_flags |= IFF_NO_QUEUE; ffff8000113a5644: b9422e60 ldr w0, [x19,#556] ffff8000113a5648: 320d0000 orr w0, w0, #0x80000 ffff8000113a564c: b9022e60 str w0, [x19,#556] dev->tx_queue_len = DEFAULT_TX_QUEUE_LEN; ffff8000113a5650: 52807d00 mov w0, #0x3e8 // #1000 ffff8000113a5654: b903da60 str w0, [x19,#984] ffff8000113a5658: 17ffffad b ffff8000113a550c __FORTIFY_INLINE char *strcpy(char *p, const char *q) { size_t p_size = __builtin_object_size(p, 0); size_t q_size = __builtin_object_size(q, 0); if (p_size == (size_t)-1 && q_size == (size_t)-1) return __builtin_strcpy(p, q); ffff8000113a565c: aa1303e0 mov x0, x19 ffff8000113a5660: aa1703e1 mov x1, x23 ffff8000113a5664: 94000000 bl 0 ffff8000113a5664: R_AARCH64_CALL26 strcpy if (!dev->ethtool_ops) ffff8000113a5668: f940fe60 ldr x0, [x19,#504] dev->name_assign_type = name_assign_type; ffff8000113a566c: 3909f278 strb w24, [x19,#636] dev->group = INIT_NETDEV_GROUP; ffff8000113a5670: b901067f str wzr, [x19,#260] if (!dev->ethtool_ops) ffff8000113a5674: b4000120 cbz x0, ffff8000113a5698 ffff8000113a5678: f901b27f str xzr, [x19,#864] return dev; ffff8000113a567c: aa1303e0 mov x0, x19 } ffff8000113a5680: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a5684: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a5688: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a568c: f94023f9 ldr x25, [sp,#64] ffff8000113a5690: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a5694: d65f03c0 ret dev->ethtool_ops = &default_ethtool_ops; ffff8000113a5698: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a5698: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a569c: 91000000 add x0, x0, #0x0 ffff8000113a569c: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a56a0: f900fe60 str x0, [x19,#504] ffff8000113a56a4: 17fffff5 b ffff8000113a5678 free_percpu(dev->pcpu_refcnt); ffff8000113a56a8: f9426260 ldr x0, [x19,#1216] ffff8000113a56ac: 94000000 bl 0 ffff8000113a56ac: R_AARCH64_CALL26 free_percpu char *addr = (char *)dev - dev->padded; ffff8000113a56b0: 79446660 ldrh w0, [x19,#562] kvfree(addr); ffff8000113a56b4: cb000260 sub x0, x19, x0 ffff8000113a56b8: 94000000 bl 0 ffff8000113a56b8: R_AARCH64_CALL26 kvfree return NULL; ffff8000113a56bc: d2800000 mov x0, #0x0 // #0 } ffff8000113a56c0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a56c4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a56c8: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a56cc: f94023f9 ldr x25, [sp,#64] ffff8000113a56d0: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a56d4: d65f03c0 ret pr_err("alloc_netdev: Unable to allocate device with zero queues\n"); ffff8000113a56d8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a56d8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x430 ffff8000113a56dc: 91000000 add x0, x0, #0x0 ffff8000113a56dc: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x430 ffff8000113a56e0: 94000000 bl 0 ffff8000113a56e0: R_AARCH64_CALL26 printk return NULL; ffff8000113a56e4: d2800000 mov x0, #0x0 // #0 ffff8000113a56e8: 17ffffd1 b ffff8000113a562c BUG_ON(strlen(name) >= sizeof(dev->name)); ffff8000113a56ec: d4210000 brk #0x800 pr_err("alloc_netdev: Unable to allocate device with zero RX queues\n"); ffff8000113a56f0: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a56f0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x470 ffff8000113a56f4: 91000000 add x0, x0, #0x0 ffff8000113a56f4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x470 ffff8000113a56f8: 94000000 bl 0 ffff8000113a56f8: R_AARCH64_CALL26 printk return NULL; ffff8000113a56fc: d2800000 mov x0, #0x0 // #0 ffff8000113a5700: 17ffffcb b ffff8000113a562c ffff8000113a5704 <__napi_schedule_irqoff>: { ffff8000113a5704: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a5708: 910003fd mov x29, sp ffff8000113a570c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a5710: f90013f5 str x21, [sp,#32] ____napi_schedule(this_cpu_ptr(&softnet_data), n); ffff8000113a5714: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113a5714: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned { ffff8000113a5718: aa0003f3 mov x19, x0 ffff8000113a571c: aa1e03e0 mov x0, x30 ffff8000113a5720: 94000000 bl 0 <_mcount> ffff8000113a5720: R_AARCH64_CALL26 _mcount ____napi_schedule(this_cpu_ptr(&softnet_data), n); ffff8000113a5724: 91000294 add x20, x20, #0x0 ffff8000113a5724: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a5728: d538d080 mrs x0, tpidr_el1 ffff8000113a572c: 8b140014 add x20, x0, x20 __list_add(new, head->prev, head); ffff8000113a5730: f9400695 ldr x21, [x20,#8] if (!__list_add_valid(new, prev, next)) ffff8000113a5734: aa1303e0 mov x0, x19 ffff8000113a5738: aa1503e1 mov x1, x21 ffff8000113a573c: aa1403e2 mov x2, x20 ffff8000113a5740: 94000000 bl 0 <__list_add_valid> ffff8000113a5740: R_AARCH64_CALL26 __list_add_valid ffff8000113a5744: 53001c00 uxtb w0, w0 ffff8000113a5748: 340000a0 cbz w0, ffff8000113a575c <__napi_schedule_irqoff+0x58> next->prev = new; ffff8000113a574c: f9000693 str x19, [x20,#8] new->next = next; ffff8000113a5750: f9000274 str x20, [x19] new->prev = prev; ffff8000113a5754: f9000675 str x21, [x19,#8] ffff8000113a5758: f90002b3 str x19, [x21] __raise_softirq_irqoff(NET_RX_SOFTIRQ); ffff8000113a575c: 52800060 mov w0, #0x3 // #3 ffff8000113a5760: 94000000 bl 0 <__raise_softirq_irqoff> ffff8000113a5760: R_AARCH64_CALL26 __raise_softirq_irqoff } ffff8000113a5764: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a5768: f94013f5 ldr x21, [sp,#32] ffff8000113a576c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a5770: d65f03c0 ret ffff8000113a5774 : { ffff8000113a5774: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a5778: 910003fd mov x29, sp ffff8000113a577c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a5780: aa0003f3 mov x19, x0 ffff8000113a5784: aa1e03e0 mov x0, x30 ffff8000113a5788: 94000000 bl 0 <_mcount> ffff8000113a5788: R_AARCH64_CALL26 _mcount ffff8000113a578c: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113a578c: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a5790: f9400280 ldr x0, [x20] ffff8000113a5790: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard if (napi->gro_bitmask && !napi_disable_pending(napi) && ffff8000113a5794: f8500261 ldur x1, [x19,#-256] { ffff8000113a5798: f90017a0 str x0, [x29,#40] if (napi->gro_bitmask && !napi_disable_pending(napi) && ffff8000113a579c: d1048260 sub x0, x19, #0x120 ffff8000113a57a0: b4000081 cbz x1, ffff8000113a57b0 ffff8000113a57a4: d1044273 sub x19, x19, #0x110 ffff8000113a57a8: f9400261 ldr x1, [x19] ffff8000113a57ac: 36100121 tbz w1, #2, ffff8000113a57d0 } ffff8000113a57b0: f94017a2 ldr x2, [x29,#40] ffff8000113a57b4: f9400281 ldr x1, [x20] ffff8000113a57b4: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a57b8: 52800000 mov w0, #0x0 // #0 ffff8000113a57bc: eb01005f cmp x2, x1 ffff8000113a57c0: 54000201 b.ne ffff8000113a5800 ffff8000113a57c4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a57c8: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a57cc: d65f03c0 ret __READ_ONCE_SIZE; ffff8000113a57d0: f9400261 ldr x1, [x19] if (READ_ONCE(*p) & mask) ffff8000113a57d4: 3707fee1 tbnz w1, #0, ffff8000113a57b0 ATOMIC64_OPS(or, orr, L) ffff8000113a57d8: 91004005 add x5, x0, #0x10 ffff8000113a57dc: f98000b1 prfm pstl1strm, [x5] ffff8000113a57e0: c85f7ca1 ldxr x1, [x5] ffff8000113a57e4: b2400022 orr x2, x1, #0x1 ffff8000113a57e8: c803fca2 stlxr w3, x2, [x5] ffff8000113a57ec: 35ffffa3 cbnz w3, ffff8000113a57e0 ffff8000113a57f0: d5033bbf dmb ish if (napi->gro_bitmask && !napi_disable_pending(napi) && ffff8000113a57f4: 3707fde1 tbnz w1, #0, ffff8000113a57b0 __napi_schedule_irqoff(napi); ffff8000113a57f8: 94000000 bl ffff8000113a5704 <__napi_schedule_irqoff> ffff8000113a57f8: R_AARCH64_CALL26 __napi_schedule_irqoff ffff8000113a57fc: 17ffffed b ffff8000113a57b0 } ffff8000113a5800: 94000000 bl 0 <__stack_chk_fail> ffff8000113a5800: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a5804 : { ffff8000113a5804: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a5808: 910003fd mov x29, sp ffff8000113a580c: f9000bf3 str x19, [sp,#16] ffff8000113a5810: aa0003f3 mov x19, x0 ffff8000113a5814: aa1e03e0 mov x0, x30 ffff8000113a5818: f90017a1 str x1, [x29,#40] ffff8000113a581c: 94000000 bl 0 <_mcount> ffff8000113a581c: R_AARCH64_CALL26 _mcount node_name = netdev_name_node_lookup_rcu(net, name); ffff8000113a5820: f94017a1 ldr x1, [x29,#40] ffff8000113a5824: aa1303e0 mov x0, x19 ffff8000113a5828: 97fff8c2 bl ffff8000113a3b30 return node_name ? node_name->dev : NULL; ffff8000113a582c: b4000160 cbz x0, ffff8000113a5858 ffff8000113a5830: f9401000 ldr x0, [x0,#32] if (dev) ffff8000113a5834: b4000120 cbz x0, ffff8000113a5858 PERCPU_RW_OPS(8) PERCPU_RW_OPS(16) PERCPU_RW_OPS(32) PERCPU_RW_OPS(64) PERCPU_OP(add, add, stadd) ffff8000113a5838: 52800023 mov w3, #0x1 // #1 this_cpu_inc(*dev->pcpu_refcnt); ffff8000113a583c: f9426001 ldr x1, [x0,#1216] asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff8000113a5840: d538d082 mrs x2, tpidr_el1 PERCPU_OP(add, add, stadd) ffff8000113a5844: 8b010046 add x6, x2, x1 ffff8000113a5848: 885f7cc5 ldxr w5, [x6] ffff8000113a584c: 0b0300a5 add w5, w5, w3 ffff8000113a5850: 88047cc5 stxr w4, w5, [x6] ffff8000113a5854: 35ffffa4 cbnz w4, ffff8000113a5848 } ffff8000113a5858: f9400bf3 ldr x19, [sp,#16] ffff8000113a585c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a5860: d65f03c0 ret ffff8000113a5864 <__napi_schedule>: { ffff8000113a5864: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a5868: 910003fd mov x29, sp ffff8000113a586c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a5870: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a5874: aa0003f3 mov x19, x0 ffff8000113a5878: aa1e03e0 mov x0, x30 ffff8000113a587c: 94000000 bl 0 <_mcount> ffff8000113a587c: R_AARCH64_CALL26 _mcount */ static inline unsigned long arch_local_save_flags(void) { unsigned long flags; asm volatile(ALTERNATIVE( ffff8000113a5880: d53b4236 mrs x22, daif static inline int arch_irqs_disabled_flags(unsigned long flags) { int res; asm volatile(ALTERNATIVE( ffff8000113a5884: 121902c0 and w0, w22, #0x80 /* * There are too many states with IRQs disabled, just keep the current * state if interrupts are already disabled/masked. */ if (!arch_irqs_disabled_flags(flags)) ffff8000113a5888: 35000060 cbnz w0, ffff8000113a5894 <__napi_schedule+0x30> asm volatile(ALTERNATIVE( ffff8000113a588c: d2800c00 mov x0, #0x60 // #96 ffff8000113a5890: d50342df msr daifset, #0x2 ____napi_schedule(this_cpu_ptr(&softnet_data), n); ffff8000113a5894: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113a5894: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff8000113a5898: d538d080 mrs x0, tpidr_el1 ffff8000113a589c: 91000294 add x20, x20, #0x0 ffff8000113a589c: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a58a0: 8b140014 add x20, x0, x20 __list_add(new, head->prev, head); ffff8000113a58a4: f9400695 ldr x21, [x20,#8] if (!__list_add_valid(new, prev, next)) ffff8000113a58a8: aa1303e0 mov x0, x19 ffff8000113a58ac: aa1503e1 mov x1, x21 ffff8000113a58b0: aa1403e2 mov x2, x20 ffff8000113a58b4: 94000000 bl 0 <__list_add_valid> ffff8000113a58b4: R_AARCH64_CALL26 __list_add_valid ffff8000113a58b8: 53001c00 uxtb w0, w0 ffff8000113a58bc: 340000a0 cbz w0, ffff8000113a58d0 <__napi_schedule+0x6c> next->prev = new; ffff8000113a58c0: f9000693 str x19, [x20,#8] new->next = next; ffff8000113a58c4: f9000274 str x20, [x19] new->prev = prev; ffff8000113a58c8: f9000675 str x21, [x19,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a58cc: f90002b3 str x19, [x21] __raise_softirq_irqoff(NET_RX_SOFTIRQ); ffff8000113a58d0: 52800060 mov w0, #0x3 // #3 ffff8000113a58d4: 94000000 bl 0 <__raise_softirq_irqoff> ffff8000113a58d4: R_AARCH64_CALL26 __raise_softirq_irqoff /* * restore saved IRQ state */ static inline void arch_local_irq_restore(unsigned long flags) { asm volatile(ALTERNATIVE( ffff8000113a58d8: d51b4236 msr daif, x22 } ffff8000113a58dc: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a58e0: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a58e4: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a58e8: d65f03c0 ret ffff8000113a58ec <__dev_kfree_skb_irq>: { ffff8000113a58ec: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a58f0: 910003fd mov x29, sp ffff8000113a58f4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a58f8: aa0003f3 mov x19, x0 ffff8000113a58fc: aa1e03e0 mov x0, x30 ffff8000113a5900: f90017a1 str x1, [x29,#40] ffff8000113a5904: 94000000 bl 0 <_mcount> ffff8000113a5904: R_AARCH64_CALL26 _mcount if (unlikely(!skb)) ffff8000113a5908: f94017a1 ldr x1, [x29,#40] ffff8000113a590c: b40002d3 cbz x19, ffff8000113a5964 <__dev_kfree_skb_irq+0x78> __READ_ONCE_SIZE; ffff8000113a5910: b940d660 ldr w0, [x19,#212] if (likely(refcount_read(&skb->users) == 1)) { ffff8000113a5914: 7100041f cmp w0, #0x1 ffff8000113a5918: 540002c1 b.ne ffff8000113a5970 <__dev_kfree_skb_irq+0x84> smp_rmb(); ffff8000113a591c: d50339bf dmb ishld case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113a5920: b900d67f str wzr, [x19,#212] get_kfree_skb_cb(skb)->reason = reason; ffff8000113a5924: b9002a61 str w1, [x19,#40] asm volatile(ALTERNATIVE( ffff8000113a5928: d53b4234 mrs x20, daif asm volatile(ALTERNATIVE( ffff8000113a592c: 12190280 and w0, w20, #0x80 if (!arch_irqs_disabled_flags(flags)) ffff8000113a5930: 35000060 cbnz w0, ffff8000113a593c <__dev_kfree_skb_irq+0x50> asm volatile(ALTERNATIVE( ffff8000113a5934: d2800c00 mov x0, #0x60 // #96 ffff8000113a5938: d50342df msr daifset, #0x2 skb->next = __this_cpu_read(softnet_data.completion_queue); ffff8000113a593c: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a593c: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned ffff8000113a5940: 91000021 add x1, x1, #0x0 ffff8000113a5940: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a5944: d538d082 mrs x2, tpidr_el1 ffff8000113a5948: 91016021 add x1, x1, #0x58 ffff8000113a594c: f8616843 ldr x3, [x2,x1] raise_softirq_irqoff(NET_TX_SOFTIRQ); ffff8000113a5950: 52800040 mov w0, #0x2 // #2 skb->next = __this_cpu_read(softnet_data.completion_queue); ffff8000113a5954: f9000263 str x3, [x19] __this_cpu_write(softnet_data.completion_queue, skb); ffff8000113a5958: f8216853 str x19, [x2,x1] raise_softirq_irqoff(NET_TX_SOFTIRQ); ffff8000113a595c: 94000000 bl 0 ffff8000113a595c: R_AARCH64_CALL26 raise_softirq_irqoff asm volatile(ALTERNATIVE( ffff8000113a5960: d51b4234 msr daif, x20 } ffff8000113a5964: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a5968: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a596c: d65f03c0 ret } else if (likely(!refcount_dec_and_test(&skb->users))) { ffff8000113a5970: 91035260 add x0, x19, #0xd4 ATOMIC_OPS(sub, sub, J) ffff8000113a5974: 52800022 mov w2, #0x1 // #1 ffff8000113a5978: f9800011 prfm pstl1strm, [x0] ffff8000113a597c: 885f7c03 ldxr w3, [x0] ffff8000113a5980: 4b020064 sub w4, w3, w2 ffff8000113a5984: 8805fc04 stlxr w5, w4, [x0] ffff8000113a5988: 35ffffa5 cbnz w5, ffff8000113a597c <__dev_kfree_skb_irq+0x90> */ static inline __must_check bool refcount_sub_and_test(int i, refcount_t *r) { int old = atomic_fetch_sub_release(i, &r->refs); if (old == i) { ffff8000113a598c: 6b02007f cmp w3, w2 ffff8000113a5990: 540000c0 b.eq ffff8000113a59a8 <__dev_kfree_skb_irq+0xbc> smp_acquire__after_ctrl_dep(); return true; } if (unlikely(old < 0 || old - i < 0)) ffff8000113a5994: 6b1f007f cmp w3, wzr ffff8000113a5998: 54fffe6c b.gt ffff8000113a5964 <__dev_kfree_skb_irq+0x78> refcount_warn_saturate(r, REFCOUNT_SUB_UAF); ffff8000113a599c: 52800061 mov w1, #0x3 // #3 ffff8000113a59a0: 94000000 bl 0 ffff8000113a59a0: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113a59a4: 17fffff0 b ffff8000113a5964 <__dev_kfree_skb_irq+0x78> smp_acquire__after_ctrl_dep(); ffff8000113a59a8: d50339bf dmb ishld ffff8000113a59ac: 17ffffde b ffff8000113a5924 <__dev_kfree_skb_irq+0x38> ffff8000113a59b0 <__dev_kfree_skb_any>: { ffff8000113a59b0: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a59b4: 910003fd mov x29, sp ffff8000113a59b8: f9000bf3 str x19, [sp,#16] ffff8000113a59bc: aa0003f3 mov x19, x0 ffff8000113a59c0: aa1e03e0 mov x0, x30 ffff8000113a59c4: f90017a1 str x1, [x29,#40] ffff8000113a59c8: 94000000 bl 0 <_mcount> ffff8000113a59c8: R_AARCH64_CALL26 _mcount ffff8000113a59cc: d5384102 mrs x2, sp_el0 __READ_ONCE_SIZE; ffff8000113a59d0: b9401842 ldr w2, [x2,#24] if (in_irq() || irqs_disabled()) ffff8000113a59d4: f94017a1 ldr x1, [x29,#40] ffff8000113a59d8: 72100c5f tst w2, #0xf0000 ffff8000113a59dc: 54000081 b.ne ffff8000113a59ec <__dev_kfree_skb_any+0x3c> asm volatile(ALTERNATIVE( ffff8000113a59e0: d53b4222 mrs x2, daif asm volatile(ALTERNATIVE( ffff8000113a59e4: 12190040 and w0, w2, #0x80 ffff8000113a59e8: 340000c0 cbz w0, ffff8000113a5a00 <__dev_kfree_skb_any+0x50> __dev_kfree_skb_irq(skb, reason); ffff8000113a59ec: aa1303e0 mov x0, x19 ffff8000113a59f0: 94000000 bl ffff8000113a58ec <__dev_kfree_skb_irq> ffff8000113a59f0: R_AARCH64_CALL26 __dev_kfree_skb_irq } ffff8000113a59f4: f9400bf3 ldr x19, [sp,#16] ffff8000113a59f8: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a59fc: d65f03c0 ret dev_kfree_skb(skb); ffff8000113a5a00: aa1303e0 mov x0, x19 ffff8000113a5a04: 94000000 bl 0 ffff8000113a5a04: R_AARCH64_CALL26 consume_skb } ffff8000113a5a08: f9400bf3 ldr x19, [sp,#16] ffff8000113a5a0c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a5a10: d65f03c0 ret ffff8000113a5a14 <__netif_schedule>: { ffff8000113a5a14: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a5a18: 910003fd mov x29, sp ffff8000113a5a1c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a5a20: f90013f5 str x21, [sp,#32] ffff8000113a5a24: aa0003f3 mov x19, x0 ffff8000113a5a28: aa1e03e0 mov x0, x30 ffff8000113a5a2c: 94000000 bl 0 <_mcount> ffff8000113a5a2c: R_AARCH64_CALL26 _mcount ffff8000113a5a30: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113a5a30: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a5a34: f9400280 ldr x0, [x20] ffff8000113a5a34: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a5a38: f9001fa0 str x0, [x29,#56] ffff8000113a5a3c: f9406e60 ldr x0, [x19,#216] ffff8000113a5a40: 37000340 tbnz w0, #0, ffff8000113a5aa8 <__netif_schedule+0x94> ATOMIC64_OPS(or, orr, L) ffff8000113a5a44: 91036263 add x3, x19, #0xd8 ffff8000113a5a48: f9800071 prfm pstl1strm, [x3] ffff8000113a5a4c: c85f7c60 ldxr x0, [x3] ffff8000113a5a50: b2400001 orr x1, x0, #0x1 ffff8000113a5a54: c802fc61 stlxr w2, x1, [x3] ffff8000113a5a58: 35ffffa2 cbnz w2, ffff8000113a5a4c <__netif_schedule+0x38> ffff8000113a5a5c: d5033bbf dmb ish if (!test_and_set_bit(__QDISC_STATE_SCHED, &q->state)) ffff8000113a5a60: 37000240 tbnz w0, #0, ffff8000113a5aa8 <__netif_schedule+0x94> asm volatile(ALTERNATIVE( ffff8000113a5a64: d53b4235 mrs x21, daif asm volatile(ALTERNATIVE( ffff8000113a5a68: 121902a0 and w0, w21, #0x80 if (!arch_irqs_disabled_flags(flags)) ffff8000113a5a6c: 35000060 cbnz w0, ffff8000113a5a78 <__netif_schedule+0x64> asm volatile(ALTERNATIVE( ffff8000113a5a70: d2800c00 mov x0, #0x60 // #96 ffff8000113a5a74: d50342df msr daifset, #0x2 sd = this_cpu_ptr(&softnet_data); ffff8000113a5a78: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a5a78: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned ffff8000113a5a7c: d538d081 mrs x1, tpidr_el1 ffff8000113a5a80: 91000000 add x0, x0, #0x0 ffff8000113a5a80: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned q->next_sched = NULL; ffff8000113a5a84: f900727f str xzr, [x19,#224] sd = this_cpu_ptr(&softnet_data); ffff8000113a5a88: 8b000020 add x0, x1, x0 *sd->output_queue_tailp = q; ffff8000113a5a8c: f9402802 ldr x2, [x0,#80] sd->output_queue_tailp = &q->next_sched; ffff8000113a5a90: 91038261 add x1, x19, #0xe0 *sd->output_queue_tailp = q; ffff8000113a5a94: f9000053 str x19, [x2] sd->output_queue_tailp = &q->next_sched; ffff8000113a5a98: f9002801 str x1, [x0,#80] raise_softirq_irqoff(NET_TX_SOFTIRQ); ffff8000113a5a9c: 52800040 mov w0, #0x2 // #2 ffff8000113a5aa0: 94000000 bl 0 ffff8000113a5aa0: R_AARCH64_CALL26 raise_softirq_irqoff asm volatile(ALTERNATIVE( ffff8000113a5aa4: d51b4235 msr daif, x21 } ffff8000113a5aa8: f9401fa1 ldr x1, [x29,#56] ffff8000113a5aac: f9400280 ldr x0, [x20] ffff8000113a5aac: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a5ab0: eb00003f cmp x1, x0 ffff8000113a5ab4: 540000a1 b.ne ffff8000113a5ac8 <__netif_schedule+0xb4> ffff8000113a5ab8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a5abc: f94013f5 ldr x21, [sp,#32] ffff8000113a5ac0: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a5ac4: d65f03c0 ret ffff8000113a5ac8: 94000000 bl 0 <__stack_chk_fail> ffff8000113a5ac8: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a5acc : { ffff8000113a5acc: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a5ad0: 910003fd mov x29, sp ffff8000113a5ad4: f9000bf3 str x19, [sp,#16] ffff8000113a5ad8: aa0003f3 mov x19, x0 ffff8000113a5adc: aa1e03e0 mov x0, x30 ffff8000113a5ae0: 94000000 bl 0 <_mcount> ffff8000113a5ae0: R_AARCH64_CALL26 _mcount return dev_queue->state & QUEUE_STATE_ANY_XOFF; ffff8000113a5ae4: f9404a60 ldr x0, [x19,#144] ffff8000113a5ae8: 92400400 and x0, x0, #0x3 if (!netif_xmit_stopped(txq)) { ffff8000113a5aec: b5000060 cbnz x0, ffff8000113a5af8 ffff8000113a5af0: f9400660 ldr x0, [x19,#8] __netif_schedule(q); ffff8000113a5af4: 94000000 bl ffff8000113a5a14 <__netif_schedule> ffff8000113a5af4: R_AARCH64_CALL26 __netif_schedule } ffff8000113a5af8: f9400bf3 ldr x19, [sp,#16] ffff8000113a5afc: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a5b00: d65f03c0 ret ffff8000113a5b04 : { ffff8000113a5b04: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a5b08: 910003fd mov x29, sp ffff8000113a5b0c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a5b10: aa0003f3 mov x19, x0 ffff8000113a5b14: aa1e03e0 mov x0, x30 ffff8000113a5b18: 94000000 bl 0 <_mcount> ffff8000113a5b18: R_AARCH64_CALL26 _mcount ffff8000113a5b1c: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113a5b1c: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a5b20: f9400280 ldr x0, [x20] ffff8000113a5b20: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a5b24: f90017a0 str x0, [x29,#40] ffff8000113a5b28: f9404a60 ldr x0, [x19,#144] if (!(READ_ONCE(*p) & mask)) ffff8000113a5b2c: 36000180 tbz w0, #0, ffff8000113a5b5c ATOMIC64_OPS(andnot, bic, ) ffff8000113a5b30: d2800020 mov x0, #0x1 // #1 ffff8000113a5b34: 91024264 add x4, x19, #0x90 ffff8000113a5b38: f9800091 prfm pstl1strm, [x4] ffff8000113a5b3c: c85f7c81 ldxr x1, [x4] ffff8000113a5b40: 8a200022 bic x2, x1, x0 ffff8000113a5b44: c803fc82 stlxr w3, x2, [x4] ffff8000113a5b48: 35ffffa3 cbnz w3, ffff8000113a5b3c ffff8000113a5b4c: d5033bbf dmb ish if (test_and_clear_bit(__QUEUE_STATE_DRV_XOFF, &dev_queue->state)) { ffff8000113a5b50: 36000061 tbz w1, #0, ffff8000113a5b5c ffff8000113a5b54: f9400660 ldr x0, [x19,#8] __netif_schedule(q); ffff8000113a5b58: 94000000 bl ffff8000113a5a14 <__netif_schedule> ffff8000113a5b58: R_AARCH64_CALL26 __netif_schedule } ffff8000113a5b5c: f94017a1 ldr x1, [x29,#40] ffff8000113a5b60: f9400280 ldr x0, [x20] ffff8000113a5b60: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a5b64: eb00003f cmp x1, x0 ffff8000113a5b68: 54000081 b.ne ffff8000113a5b78 ffff8000113a5b6c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a5b70: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a5b74: d65f03c0 ret ffff8000113a5b78: 94000000 bl 0 <__stack_chk_fail> ffff8000113a5b78: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a5b7c : { ffff8000113a5b7c: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a5b80: 910003fd mov x29, sp ffff8000113a5b84: a90153f3 stp x19, x20, [sp,#16] ffff8000113a5b88: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a5b8c: aa0003f3 mov x19, x0 ffff8000113a5b90: aa1e03e0 mov x0, x30 ffff8000113a5b94: 94000000 bl 0 <_mcount> ffff8000113a5b94: R_AARCH64_CALL26 _mcount ffff8000113a5b98: 90000015 adrp x21, 0 <__stack_chk_guard> ffff8000113a5b98: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a5b9c: f94002a0 ldr x0, [x21] ffff8000113a5b9c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a5ba0: f9001fa0 str x0, [x29,#56] ffff8000113a5ba4: f9402260 ldr x0, [x19,#64] if (READ_ONCE(*p) & mask) ffff8000113a5ba8: 37080180 tbnz w0, #1, ffff8000113a5bd8 ATOMIC64_OPS(or, orr, L) ffff8000113a5bac: 91010262 add x2, x19, #0x40 ffff8000113a5bb0: f9800051 prfm pstl1strm, [x2] ffff8000113a5bb4: c85f7c54 ldxr x20, [x2] ffff8000113a5bb8: b27f0280 orr x0, x20, #0x2 ffff8000113a5bbc: c801fc40 stlxr w1, x0, [x2] ffff8000113a5bc0: 35ffffa1 cbnz w1, ffff8000113a5bb4 ffff8000113a5bc4: d5033bbf dmb ish return !!(old & mask); ffff8000113a5bc8: 927f0294 and x20, x20, #0x2 if (!test_and_set_bit(__LINK_STATE_PRESENT, &dev->state) && ffff8000113a5bcc: b5000074 cbnz x20, ffff8000113a5bd8 ffff8000113a5bd0: f9402260 ldr x0, [x19,#64] ffff8000113a5bd4: 37000120 tbnz w0, #0, ffff8000113a5bf8 } ffff8000113a5bd8: f9401fa1 ldr x1, [x29,#56] ffff8000113a5bdc: f94002a0 ldr x0, [x21] ffff8000113a5bdc: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a5be0: eb00003f cmp x1, x0 ffff8000113a5be4: 54000261 b.ne ffff8000113a5c30 ffff8000113a5be8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a5bec: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a5bf0: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a5bf4: d65f03c0 ret for (i = 0; i < dev->num_tx_queues; i++) { ffff8000113a5bf8: b943ca60 ldr w0, [x19,#968] return &dev->_tx[index]; ffff8000113a5bfc: 52802816 mov w22, #0x140 // #320 for (i = 0; i < dev->num_tx_queues; i++) { ffff8000113a5c00: 34000120 cbz w0, ffff8000113a5c24 return &dev->_tx[index]; ffff8000113a5c04: f941e261 ldr x1, [x19,#960] ffff8000113a5c08: 9bb67e80 umull x0, w20, w22 netif_tx_wake_queue(txq); ffff8000113a5c0c: 8b000020 add x0, x1, x0 ffff8000113a5c10: 94000000 bl ffff8000113a5b04 ffff8000113a5c10: R_AARCH64_CALL26 netif_tx_wake_queue for (i = 0; i < dev->num_tx_queues; i++) { ffff8000113a5c14: b943ca60 ldr w0, [x19,#968] ffff8000113a5c18: 11000694 add w20, w20, #0x1 ffff8000113a5c1c: 6b00029f cmp w20, w0 ffff8000113a5c20: 54ffff23 b.cc ffff8000113a5c04 __netdev_watchdog_up(dev); ffff8000113a5c24: aa1303e0 mov x0, x19 ffff8000113a5c28: 94000000 bl 0 <__netdev_watchdog_up> ffff8000113a5c28: R_AARCH64_CALL26 __netdev_watchdog_up ffff8000113a5c2c: 17ffffeb b ffff8000113a5bd8 } ffff8000113a5c30: 94000000 bl 0 <__stack_chk_fail> ffff8000113a5c30: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a5c34 : { ffff8000113a5c34: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a5c38: 910003fd mov x29, sp ffff8000113a5c3c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a5c40: aa0003f4 mov x20, x0 ffff8000113a5c44: aa1e03e0 mov x0, x30 ffff8000113a5c48: 53003c33 uxth w19, w1 ffff8000113a5c4c: 94000000 bl 0 <_mcount> ffff8000113a5c4c: R_AARCH64_CALL26 _mcount ffff8000113a5c50: aa1403e3 mov x3, x20 ffff8000113a5c54: f8490c60 ldr x0, [x3,#144]! for_each_netdev_rcu(net, dev) ffff8000113a5c58: eb00007f cmp x3, x0 ffff8000113a5c5c: d1012000 sub x0, x0, #0x48 ffff8000113a5c60: 54000180 b.eq ffff8000113a5c90 if (dev->type == type) { ffff8000113a5c64: 79448801 ldrh w1, [x0,#580] ffff8000113a5c68: 6b13003f cmp w1, w19 ffff8000113a5c6c: 540000a1 b.ne ffff8000113a5c80 ffff8000113a5c70: 1400000c b ffff8000113a5ca0 ffff8000113a5c74: 79448802 ldrh w2, [x0,#580] ffff8000113a5c78: 6b13005f cmp w2, w19 ffff8000113a5c7c: 54000120 b.eq ffff8000113a5ca0 ffff8000113a5c80: f9402400 ldr x0, [x0,#72] for_each_netdev_rcu(net, dev) ffff8000113a5c84: eb00007f cmp x3, x0 ffff8000113a5c88: d1012000 sub x0, x0, #0x48 ffff8000113a5c8c: 54ffff41 b.ne ffff8000113a5c74 struct net_device *dev, *ret = NULL; ffff8000113a5c90: d2800000 mov x0, #0x0 // #0 } ffff8000113a5c94: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a5c98: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a5c9c: d65f03c0 ret PERCPU_OP(add, add, stadd) ffff8000113a5ca0: 52800023 mov w3, #0x1 // #1 this_cpu_inc(*dev->pcpu_refcnt); ffff8000113a5ca4: f9426001 ldr x1, [x0,#1216] asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff8000113a5ca8: d538d082 mrs x2, tpidr_el1 PERCPU_OP(add, add, stadd) ffff8000113a5cac: 8b010046 add x6, x2, x1 ffff8000113a5cb0: 885f7cc5 ldxr w5, [x6] ffff8000113a5cb4: 0b0300a5 add w5, w5, w3 ffff8000113a5cb8: 88047cc5 stxr w4, w5, [x6] ffff8000113a5cbc: 35ffffa4 cbnz w4, ffff8000113a5cb0 ffff8000113a5cc0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a5cc4: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a5cc8: d65f03c0 ret ffff8000113a5ccc : { ffff8000113a5ccc: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a5cd0: 910003fd mov x29, sp ffff8000113a5cd4: f9000bf3 str x19, [sp,#16] ffff8000113a5cd8: aa0003f3 mov x19, x0 ffff8000113a5cdc: aa1e03e0 mov x0, x30 ffff8000113a5ce0: f90017a1 str x1, [x29,#40] ffff8000113a5ce4: 94000000 bl 0 <_mcount> ffff8000113a5ce4: R_AARCH64_CALL26 _mcount return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; ffff8000113a5ce8: f94017a1 ldr x1, [x29,#40] ffff8000113a5cec: f9409a62 ldr x2, [x19,#304] ffff8000113a5cf0: d37d1c20 ubfiz x0, x1, #3, #8 ffff8000113a5cf4: f8606840 ldr x0, [x2,x0] hlist_for_each_entry_rcu(dev, head, index_hlist) ffff8000113a5cf8: b4000040 cbz x0, ffff8000113a5d00 ffff8000113a5cfc: d10e4000 sub x0, x0, #0x390 ffff8000113a5d00: b40000c0 cbz x0, ffff8000113a5d18 if (dev->ifindex == ifindex) ffff8000113a5d04: b9410002 ldr w2, [x0,#256] ffff8000113a5d08: 6b02003f cmp w1, w2 ffff8000113a5d0c: 540000c0 b.eq ffff8000113a5d24 ffff8000113a5d10: f941c800 ldr x0, [x0,#912] hlist_for_each_entry_rcu(dev, head, index_hlist) ffff8000113a5d14: b5ffff40 cbnz x0, ffff8000113a5cfc } ffff8000113a5d18: f9400bf3 ldr x19, [sp,#16] ffff8000113a5d1c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a5d20: d65f03c0 ret ffff8000113a5d24: 52800023 mov w3, #0x1 // #1 ffff8000113a5d28: f9426001 ldr x1, [x0,#1216] asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff8000113a5d2c: d538d082 mrs x2, tpidr_el1 PERCPU_OP(add, add, stadd) ffff8000113a5d30: 8b010046 add x6, x2, x1 ffff8000113a5d34: 885f7cc5 ldxr w5, [x6] ffff8000113a5d38: 0b0300a5 add w5, w5, w3 ffff8000113a5d3c: 88047cc5 stxr w4, w5, [x6] ffff8000113a5d40: 35ffffa4 cbnz w4, ffff8000113a5d34 ffff8000113a5d44: f9400bf3 ldr x19, [sp,#16] ffff8000113a5d48: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a5d4c: d65f03c0 ret ffff8000113a5d50 <__netdev_adjacent_dev_remove.constprop.155>: static void __netdev_adjacent_dev_remove(struct net_device *dev, ffff8000113a5d50: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a5d54: 910003fd mov x29, sp ffff8000113a5d58: a90153f3 stp x19, x20, [sp,#16] ffff8000113a5d5c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a5d60: f9001bf7 str x23, [sp,#48] ffff8000113a5d64: aa0003f7 mov x23, x0 ffff8000113a5d68: aa1e03e0 mov x0, x30 ffff8000113a5d6c: aa0103f5 mov x21, x1 pr_debug("Remove adjacency: dev %s adj_dev %s ref_nr %d\n", ffff8000113a5d70: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113a5d70: R_AARCH64_ADR_PREL_PG_HI21 __verbose static void __netdev_adjacent_dev_remove(struct net_device *dev, ffff8000113a5d74: aa0203f4 mov x20, x2 ffff8000113a5d78: 94000000 bl 0 <_mcount> ffff8000113a5d78: R_AARCH64_CALL26 _mcount pr_debug("Remove adjacency: dev %s adj_dev %s ref_nr %d\n", ffff8000113a5d7c: 910002c0 add x0, x22, #0x0 ffff8000113a5d7c: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113a5d80: 79404401 ldrh w1, [x0,#34] ffff8000113a5d84: 37100da1 tbnz w1, #2, ffff8000113a5f38 <__netdev_adjacent_dev_remove.constprop.155+0x1e8> list_for_each_entry(adj, adj_list, list) { ffff8000113a5d88: f9400284 ldr x4, [x20] ffff8000113a5d8c: eb04029f cmp x20, x4 ffff8000113a5d90: d1006093 sub x19, x4, #0x18 ffff8000113a5d94: 54000180 b.eq ffff8000113a5dc4 <__netdev_adjacent_dev_remove.constprop.155+0x74> if (adj->dev == adj_dev) ffff8000113a5d98: f85e8080 ldur x0, [x4,#-24] ffff8000113a5d9c: eb0002bf cmp x21, x0 ffff8000113a5da0: 540000a1 b.ne ffff8000113a5db4 <__netdev_adjacent_dev_remove.constprop.155+0x64> ffff8000113a5da4: 1400000f b ffff8000113a5de0 <__netdev_adjacent_dev_remove.constprop.155+0x90> ffff8000113a5da8: f85e80a5 ldur x5, [x5,#-24] ffff8000113a5dac: eb0502bf cmp x21, x5 ffff8000113a5db0: 54000180 b.eq ffff8000113a5de0 <__netdev_adjacent_dev_remove.constprop.155+0x90> list_for_each_entry(adj, adj_list, list) { ffff8000113a5db4: f9400e65 ldr x5, [x19,#24] ffff8000113a5db8: eb05029f cmp x20, x5 ffff8000113a5dbc: d10060b3 sub x19, x5, #0x18 ffff8000113a5dc0: 54ffff41 b.ne ffff8000113a5da8 <__netdev_adjacent_dev_remove.constprop.155+0x58> pr_err("Adjacency does not exist for device %s from %s\n", ffff8000113a5dc4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a5dc4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x4e0 ffff8000113a5dc8: aa1703e1 mov x1, x23 ffff8000113a5dcc: aa1503e2 mov x2, x21 ffff8000113a5dd0: 91000000 add x0, x0, #0x0 ffff8000113a5dd0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x4e0 ffff8000113a5dd4: 94000000 bl 0 ffff8000113a5dd4: R_AARCH64_CALL26 printk WARN_ON(1); ffff8000113a5dd8: d4210000 brk #0x800 ffff8000113a5ddc: 1400000c b ffff8000113a5e0c <__netdev_adjacent_dev_remove.constprop.155+0xbc> if (!adj) { ffff8000113a5de0: b4ffff33 cbz x19, ffff8000113a5dc4 <__netdev_adjacent_dev_remove.constprop.155+0x74> if (adj->ref_nr > ref_nr) { ffff8000113a5de4: 79401664 ldrh w4, [x19,#10] ffff8000113a5de8: 7100049f cmp w4, #0x1 ffff8000113a5dec: 540001a9 b.ls ffff8000113a5e20 <__netdev_adjacent_dev_remove.constprop.155+0xd0> pr_debug("adjacency: %s to %s ref_nr - %d = %d\n", ffff8000113a5df0: 910002d6 add x22, x22, #0x0 ffff8000113a5df0: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113a5df4: 9100a2c0 add x0, x22, #0x28 ffff8000113a5df8: 79404401 ldrh w1, [x0,#34] ffff8000113a5dfc: 2a0403e5 mov w5, w4 ffff8000113a5e00: 371008a1 tbnz w1, #2, ffff8000113a5f14 <__netdev_adjacent_dev_remove.constprop.155+0x1c4> adj->ref_nr -= ref_nr; ffff8000113a5e04: 510004a4 sub w4, w5, #0x1 ffff8000113a5e08: 79001664 strh w4, [x19,#10] } ffff8000113a5e0c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a5e10: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a5e14: f9401bf7 ldr x23, [sp,#48] ffff8000113a5e18: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a5e1c: d65f03c0 ret if (adj->master) ffff8000113a5e20: 39402260 ldrb w0, [x19,#8] ffff8000113a5e24: 350004e0 cbnz w0, ffff8000113a5ec0 <__netdev_adjacent_dev_remove.constprop.155+0x170> return (dev_list == &dev->adj_list.upper || ffff8000113a5e28: 9102a2e0 add x0, x23, #0xa8 dev_list == &dev->adj_list.lower) && ffff8000113a5e2c: eb00029f cmp x20, x0 ffff8000113a5e30: 54000520 b.eq ffff8000113a5ed4 <__netdev_adjacent_dev_remove.constprop.155+0x184> ffff8000113a5e34: 9102e2e0 add x0, x23, #0xb8 return (dev_list == &dev->adj_list.upper || ffff8000113a5e38: eb00029f cmp x20, x0 ffff8000113a5e3c: 540004c0 b.eq ffff8000113a5ed4 <__netdev_adjacent_dev_remove.constprop.155+0x184> list_del_rcu(&adj->list); ffff8000113a5e40: 91006274 add x20, x19, #0x18 if (!__list_del_entry_valid(entry)) ffff8000113a5e44: aa1403e0 mov x0, x20 ffff8000113a5e48: 94000000 bl 0 <__list_del_entry_valid> ffff8000113a5e48: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113a5e4c: 53001c00 uxtb w0, w0 ffff8000113a5e50: 340000a0 cbz w0, ffff8000113a5e64 <__netdev_adjacent_dev_remove.constprop.155+0x114> __list_del(entry->prev, entry->next); ffff8000113a5e54: f9400680 ldr x0, [x20,#8] ffff8000113a5e58: f9400e61 ldr x1, [x19,#24] next->prev = prev; ffff8000113a5e5c: f9000420 str x0, [x1,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a5e60: f9000001 str x1, [x0] entry->prev = LIST_POISON2; ffff8000113a5e64: d2802440 mov x0, #0x122 // #290 ffff8000113a5e68: f2fbd5a0 movk x0, #0xdead, lsl #48 pr_debug("adjacency: dev_put for %s, because link removed from %s to %s\n", ffff8000113a5e6c: 910002d6 add x22, x22, #0x0 ffff8000113a5e6c: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113a5e70: f9000680 str x0, [x20,#8] ffff8000113a5e74: 910142c0 add x0, x22, #0x50 ffff8000113a5e78: 79404401 ldrh w1, [x0,#34] ffff8000113a5e7c: 371003e1 tbnz w1, #2, ffff8000113a5ef8 <__netdev_adjacent_dev_remove.constprop.155+0x1a8> ffff8000113a5e80: 12800002 mov w2, #0xffffffff // #-1 this_cpu_dec(*dev->pcpu_refcnt); ffff8000113a5e84: f94262a0 ldr x0, [x21,#1216] asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff8000113a5e88: d538d081 mrs x1, tpidr_el1 PERCPU_OP(add, add, stadd) ffff8000113a5e8c: 8b000025 add x5, x1, x0 ffff8000113a5e90: 885f7ca4 ldxr w4, [x5] ffff8000113a5e94: 0b020084 add w4, w4, w2 ffff8000113a5e98: 88037ca4 stxr w3, w4, [x5] ffff8000113a5e9c: 35ffffa3 cbnz w3, ffff8000113a5e90 <__netdev_adjacent_dev_remove.constprop.155+0x140> kfree_rcu(adj, rcu); ffff8000113a5ea0: d2800501 mov x1, #0x28 // #40 ffff8000113a5ea4: 8b010260 add x0, x19, x1 ffff8000113a5ea8: 94000000 bl 0 ffff8000113a5ea8: R_AARCH64_CALL26 kfree_call_rcu } ffff8000113a5eac: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a5eb0: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a5eb4: f9401bf7 ldr x23, [sp,#48] ffff8000113a5eb8: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a5ebc: d65f03c0 ret sysfs_remove_link(&(dev->dev.kobj), "master"); ffff8000113a5ec0: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a5ec0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x540 ffff8000113a5ec4: 911442e0 add x0, x23, #0x510 ffff8000113a5ec8: 91000021 add x1, x1, #0x0 ffff8000113a5ec8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x540 ffff8000113a5ecc: 94000000 bl 0 ffff8000113a5ecc: R_AARCH64_CALL26 sysfs_remove_link ffff8000113a5ed0: 17ffffd6 b ffff8000113a5e28 <__netdev_adjacent_dev_remove.constprop.155+0xd8> dev_list == &dev->adj_list.lower) && ffff8000113a5ed4: f9427ae1 ldr x1, [x23,#1264] ffff8000113a5ed8: f9427aa0 ldr x0, [x21,#1264] ffff8000113a5edc: eb00003f cmp x1, x0 ffff8000113a5ee0: 54fffb01 b.ne ffff8000113a5e40 <__netdev_adjacent_dev_remove.constprop.155+0xf0> netdev_adjacent_sysfs_del(dev, adj_dev->name, dev_list); ffff8000113a5ee4: aa1703e0 mov x0, x23 ffff8000113a5ee8: aa1503e1 mov x1, x21 ffff8000113a5eec: aa1403e2 mov x2, x20 ffff8000113a5ef0: 97ffec2b bl ffff8000113a0f9c ffff8000113a5ef4: 17ffffd3 b ffff8000113a5e40 <__netdev_adjacent_dev_remove.constprop.155+0xf0> pr_debug("adjacency: dev_put for %s, because link removed from %s to %s\n", ffff8000113a5ef8: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a5ef8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x548 ffff8000113a5efc: 91000021 add x1, x1, #0x0 ffff8000113a5efc: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x548 ffff8000113a5f00: aa1503e2 mov x2, x21 ffff8000113a5f04: aa1703e3 mov x3, x23 ffff8000113a5f08: aa1503e4 mov x4, x21 ffff8000113a5f0c: 94000000 bl 0 <__dynamic_pr_debug> ffff8000113a5f0c: R_AARCH64_CALL26 __dynamic_pr_debug ffff8000113a5f10: 17ffffdc b ffff8000113a5e80 <__netdev_adjacent_dev_remove.constprop.155+0x130> pr_debug("adjacency: %s to %s ref_nr - %d = %d\n", ffff8000113a5f14: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a5f14: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x518 ffff8000113a5f18: 51000485 sub w5, w4, #0x1 ffff8000113a5f1c: 91000021 add x1, x1, #0x0 ffff8000113a5f1c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x518 ffff8000113a5f20: aa1703e2 mov x2, x23 ffff8000113a5f24: aa1503e3 mov x3, x21 ffff8000113a5f28: 52800024 mov w4, #0x1 // #1 ffff8000113a5f2c: 94000000 bl 0 <__dynamic_pr_debug> ffff8000113a5f2c: R_AARCH64_CALL26 __dynamic_pr_debug ffff8000113a5f30: 79401665 ldrh w5, [x19,#10] ffff8000113a5f34: 17ffffb4 b ffff8000113a5e04 <__netdev_adjacent_dev_remove.constprop.155+0xb4> pr_debug("Remove adjacency: dev %s adj_dev %s ref_nr %d\n", ffff8000113a5f38: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a5f38: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x4b0 ffff8000113a5f3c: 91000021 add x1, x1, #0x0 ffff8000113a5f3c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x4b0 ffff8000113a5f40: aa1703e2 mov x2, x23 ffff8000113a5f44: aa1503e3 mov x3, x21 ffff8000113a5f48: 52800024 mov w4, #0x1 // #1 ffff8000113a5f4c: 94000000 bl 0 <__dynamic_pr_debug> ffff8000113a5f4c: R_AARCH64_CALL26 __dynamic_pr_debug ffff8000113a5f50: 17ffff8e b ffff8000113a5d88 <__netdev_adjacent_dev_remove.constprop.155+0x38> ffff8000113a5f54 : { ffff8000113a5f54: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113a5f58: 910003fd mov x29, sp ffff8000113a5f5c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a5f60: f90013f5 str x21, [sp,#32] ffff8000113a5f64: aa0003f4 mov x20, x0 ffff8000113a5f68: aa1e03e0 mov x0, x30 ffff8000113a5f6c: aa0103f3 mov x19, x1 ffff8000113a5f70: 90000015 adrp x21, 0 <__stack_chk_guard> ffff8000113a5f70: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a5f74: 94000000 bl 0 <_mcount> ffff8000113a5f74: R_AARCH64_CALL26 _mcount ffff8000113a5f78: f94002a0 ldr x0, [x21] ffff8000113a5f78: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard struct netdev_notifier_changeupper_info changeupper_info = { ffff8000113a5f7c: a9037fbf stp xzr, xzr, [x29,#48] ffff8000113a5f80: a9047fbf stp xzr, xzr, [x29,#64] { ffff8000113a5f84: f9002fa0 str x0, [x29,#88] struct netdev_notifier_changeupper_info changeupper_info = { ffff8000113a5f88: f9002bbf str xzr, [x29,#80] ffff8000113a5f8c: f9001bb4 str x20, [x29,#48] ffff8000113a5f90: f90023b3 str x19, [x29,#64] ASSERT_RTNL(); ffff8000113a5f94: 94000000 bl 0 ffff8000113a5f94: R_AARCH64_CALL26 rtnl_is_locked ffff8000113a5f98: 340005a0 cbz w0, ffff8000113a604c changeupper_info.master = netdev_master_upper_dev_get(dev) == upper_dev; ffff8000113a5f9c: aa1403e0 mov x0, x20 ffff8000113a5fa0: 94000000 bl ffff80001139ff0c ffff8000113a5fa0: R_AARCH64_CALL26 netdev_master_upper_dev_get ffff8000113a5fa4: eb00027f cmp x19, x0 ffff8000113a5fa8: 1a9f17e2 cset w2, eq call_netdevice_notifiers_info(NETDEV_PRECHANGEUPPER, ffff8000113a5fac: 9100c3a1 add x1, x29, #0x30 ffff8000113a5fb0: d2800340 mov x0, #0x1a // #26 changeupper_info.master = netdev_master_upper_dev_get(dev) == upper_dev; ffff8000113a5fb4: 390123a2 strb w2, [x29,#72] call_netdevice_notifiers_info(NETDEV_PRECHANGEUPPER, ffff8000113a5fb8: 97ffe850 bl ffff8000113a00f8 __netdev_adjacent_dev_remove(dev, upper_dev, ref_nr, up_list); ffff8000113a5fbc: aa1403e0 mov x0, x20 ffff8000113a5fc0: aa1303e1 mov x1, x19 ffff8000113a5fc4: 9102a282 add x2, x20, #0xa8 ffff8000113a5fc8: 97ffff62 bl ffff8000113a5d50 <__netdev_adjacent_dev_remove.constprop.155> __netdev_adjacent_dev_remove(upper_dev, dev, ref_nr, down_list); ffff8000113a5fcc: 9102e262 add x2, x19, #0xb8 ffff8000113a5fd0: aa1303e0 mov x0, x19 ffff8000113a5fd4: aa1403e1 mov x1, x20 ffff8000113a5fd8: 97ffff5e bl ffff8000113a5d50 <__netdev_adjacent_dev_remove.constprop.155> call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, ffff8000113a5fdc: 9100c3a1 add x1, x29, #0x30 ffff8000113a5fe0: d28002a0 mov x0, #0x15 // #21 ffff8000113a5fe4: 97ffe845 bl ffff8000113a00f8 dev->upper_level = __netdev_upper_depth(dev) + 1; ffff8000113a5fe8: aa1403e0 mov x0, x20 ffff8000113a5fec: 97ffe3b7 bl ffff80001139eec8 <__netdev_upper_depth> ffff8000113a5ff0: 53001c00 uxtb w0, w0 ffff8000113a5ff4: 11000400 add w0, w0, #0x1 ffff8000113a5ff8: 3909c280 strb w0, [x20,#624] __netdev_walk_all_lower_dev(dev, __netdev_update_upper_level, NULL); ffff8000113a5ffc: aa1403e0 mov x0, x20 ffff8000113a6000: 97fff095 bl ffff8000113a2254 <__netdev_walk_all_lower_dev.constprop.156> dev->lower_level = __netdev_lower_depth(dev) + 1; ffff8000113a6004: aa1303e0 mov x0, x19 ffff8000113a6008: 97ffe3d1 bl ffff80001139ef4c <__netdev_lower_depth> ffff8000113a600c: 53001c00 uxtb w0, w0 ffff8000113a6010: 11000400 add w0, w0, #0x1 __netdev_walk_all_upper_dev(upper_dev, __netdev_update_lower_level, ffff8000113a6014: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a6014: R_AARCH64_ADR_PREL_PG_HI21 .text+0xc90 dev->lower_level = __netdev_lower_depth(dev) + 1; ffff8000113a6018: 3909c660 strb w0, [x19,#625] __netdev_walk_all_upper_dev(upper_dev, __netdev_update_lower_level, ffff8000113a601c: 91000021 add x1, x1, #0x0 ffff8000113a601c: R_AARCH64_ADD_ABS_LO12_NC .text+0xc90 ffff8000113a6020: aa1303e0 mov x0, x19 ffff8000113a6024: d2800002 mov x2, #0x0 // #0 ffff8000113a6028: 97ffe295 bl ffff80001139ea7c <__netdev_walk_all_upper_dev> } ffff8000113a602c: f9402fa1 ldr x1, [x29,#88] ffff8000113a6030: f94002a0 ldr x0, [x21] ffff8000113a6030: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a6034: eb00003f cmp x1, x0 ffff8000113a6038: 54000261 b.ne ffff8000113a6084 ffff8000113a603c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a6040: f94013f5 ldr x21, [sp,#32] ffff8000113a6044: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113a6048: d65f03c0 ret ASSERT_RTNL(); ffff8000113a604c: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113a604c: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113a6050: 91000063 add x3, x3, #0x0 ffff8000113a6050: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113a6054: 39404860 ldrb w0, [x3,#18] ffff8000113a6058: 35fffa20 cbnz w0, ffff8000113a5f9c ffff8000113a605c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a605c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113a6060: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a6060: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113a6064: 52800024 mov w4, #0x1 // #1 ffff8000113a6068: 91000000 add x0, x0, #0x0 ffff8000113a6068: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113a606c: 91000021 add x1, x1, #0x0 ffff8000113a606c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113a6070: 5283be42 mov w2, #0x1df2 // #7666 ffff8000113a6074: 39004864 strb w4, [x3,#18] ffff8000113a6078: 94000000 bl 0 <__warn_printk> ffff8000113a6078: R_AARCH64_CALL26 __warn_printk ffff8000113a607c: d4210000 brk #0x800 ffff8000113a6080: 17ffffc7 b ffff8000113a5f9c } ffff8000113a6084: 94000000 bl 0 <__stack_chk_fail> ffff8000113a6084: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a6088 : { ffff8000113a6088: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a608c: 910003fd mov x29, sp ffff8000113a6090: a90153f3 stp x19, x20, [sp,#16] ffff8000113a6094: f90013f5 str x21, [sp,#32] ffff8000113a6098: aa0003f3 mov x19, x0 ffff8000113a609c: aa0103f4 mov x20, x1 ffff8000113a60a0: aa1e03e0 mov x0, x30 ffff8000113a60a4: aa0203f5 mov x21, x2 ffff8000113a60a8: 94000000 bl 0 <_mcount> ffff8000113a60a8: R_AARCH64_CALL26 _mcount if (!new_dev || !old_dev) ffff8000113a60ac: b4000194 cbz x20, ffff8000113a60dc ffff8000113a60b0: eb1f027f cmp x19, xzr ffff8000113a60b4: 1a9f17e2 cset w2, eq ffff8000113a60b8: 35000122 cbnz w2, ffff8000113a60dc if (new_dev == old_dev) ffff8000113a60bc: eb13029f cmp x20, x19 ffff8000113a60c0: 540000e0 b.eq ffff8000113a60dc __netdev_adjacent_dev_set(upper_dev, lower_dev, false); ffff8000113a60c4: aa1503e0 mov x0, x21 ffff8000113a60c8: aa1303e1 mov x1, x19 ffff8000113a60cc: 97ffe419 bl ffff80001139f130 <__netdev_adjacent_dev_set> netdev_upper_dev_unlink(old_dev, dev); ffff8000113a60d0: aa1303e0 mov x0, x19 ffff8000113a60d4: aa1503e1 mov x1, x21 ffff8000113a60d8: 94000000 bl ffff8000113a5f54 ffff8000113a60d8: R_AARCH64_CALL26 netdev_upper_dev_unlink } ffff8000113a60dc: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a60e0: f94013f5 ldr x21, [sp,#32] ffff8000113a60e4: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a60e8: d65f03c0 ret ffff8000113a60ec : { ffff8000113a60ec: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a60f0: 910003fd mov x29, sp ffff8000113a60f4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a60f8: f90013f5 str x21, [sp,#32] ffff8000113a60fc: aa0003f4 mov x20, x0 ffff8000113a6100: aa0103f3 mov x19, x1 ffff8000113a6104: aa1e03e0 mov x0, x30 ffff8000113a6108: aa0203f5 mov x21, x2 ffff8000113a610c: 94000000 bl 0 <_mcount> ffff8000113a610c: R_AARCH64_CALL26 _mcount if (!new_dev) ffff8000113a6110: b40000d3 cbz x19, ffff8000113a6128 if (old_dev && new_dev != old_dev) ffff8000113a6114: eb14027f cmp x19, x20 ffff8000113a6118: 54000101 b.ne ffff8000113a6138 netdev_upper_dev_unlink(new_dev, dev); ffff8000113a611c: aa1303e0 mov x0, x19 ffff8000113a6120: aa1503e1 mov x1, x21 ffff8000113a6124: 94000000 bl ffff8000113a5f54 ffff8000113a6124: R_AARCH64_CALL26 netdev_upper_dev_unlink } ffff8000113a6128: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a612c: f94013f5 ldr x21, [sp,#32] ffff8000113a6130: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a6134: d65f03c0 ret if (old_dev && new_dev != old_dev) ffff8000113a6138: b4ffff34 cbz x20, ffff8000113a611c __netdev_adjacent_dev_set(upper_dev, lower_dev, false); ffff8000113a613c: aa1503e0 mov x0, x21 ffff8000113a6140: aa1403e1 mov x1, x20 ffff8000113a6144: 52800002 mov w2, #0x0 // #0 ffff8000113a6148: 97ffe3fa bl ffff80001139f130 <__netdev_adjacent_dev_set> ffff8000113a614c: 17fffff4 b ffff8000113a611c ffff8000113a6150 : { ffff8000113a6150: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a6154: 910003fd mov x29, sp ffff8000113a6158: a90153f3 stp x19, x20, [sp,#16] ffff8000113a615c: f90013f5 str x21, [sp,#32] ffff8000113a6160: aa1e03e0 mov x0, x30 ffff8000113a6164: 94000000 bl 0 <_mcount> ffff8000113a6164: R_AARCH64_CALL26 _mcount ffff8000113a6168: d5384100 mrs x0, sp_el0 __READ_ONCE_SIZE; ffff8000113a616c: b9401801 ldr w1, [x0,#24] ffff8000113a6170: 11080021 add w1, w1, #0x200 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113a6174: b9001801 str w1, [x0,#24] sd = this_cpu_ptr(&softnet_data); ffff8000113a6178: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113a6178: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff8000113a617c: d538d080 mrs x0, tpidr_el1 ffff8000113a6180: 91000294 add x20, x20, #0x0 ffff8000113a6180: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a6184: 8b140014 add x20, x0, x20 asm volatile(ALTERNATIVE( ffff8000113a6188: d2800c00 mov x0, #0x60 // #96 ffff8000113a618c: d50342df msr daifset, #0x2 __CMPXCHG_CASE(w, , acq_, 32, , a, , "memory", K) ffff8000113a6190: 52800023 mov w3, #0x1 // #1 ffff8000113a6194: 91043280 add x0, x20, #0x10c ffff8000113a6198: d2800002 mov x2, #0x0 // #0 ffff8000113a619c: f9800011 prfm pstl1strm, [x0] ffff8000113a61a0: 885ffc01 ldaxr w1, [x0] ffff8000113a61a4: 4a020024 eor w4, w1, w2 ffff8000113a61a8: 35000064 cbnz w4, ffff8000113a61b4 ffff8000113a61ac: 88047c03 stxr w4, w3, [x0] ffff8000113a61b0: 35ffff84 cbnz w4, ffff8000113a61a0 ffff8000113a61b4: 350009c1 cbnz w1, ffff8000113a62ec skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) { ffff8000113a61b8: aa1403f5 mov x21, x20 ffff8000113a61bc: f84f8ea1 ldr x1, [x21,#248]! ffff8000113a61c0: eb15003f cmp x1, x21 ffff8000113a61c4: f9400033 ldr x19, [x1] ffff8000113a61c8: 540000e1 b.ne ffff8000113a61e4 ffff8000113a61cc: 1400001b b ffff8000113a6238 ffff8000113a61d0: eb1302bf cmp x21, x19 ffff8000113a61d4: f9400260 ldr x0, [x19] ffff8000113a61d8: 54000300 b.eq ffff8000113a6238 ffff8000113a61dc: aa1303e1 mov x1, x19 ffff8000113a61e0: aa0003f3 mov x19, x0 if (skb->dev->reg_state == NETREG_UNREGISTERING) { ffff8000113a61e4: f9400820 ldr x0, [x1,#16] ffff8000113a61e8: 39536000 ldrb w0, [x0,#1240] ffff8000113a61ec: 7100081f cmp w0, #0x2 ffff8000113a61f0: 54ffff01 b.ne ffff8000113a61d0 WRITE_ONCE(list->qlen, list->qlen - 1); ffff8000113a61f4: b94012a2 ldr w2, [x21,#16] kfree_skb(skb); ffff8000113a61f8: aa0103e0 mov x0, x1 ffff8000113a61fc: 51000442 sub w2, w2, #0x1 ffff8000113a6200: b9010a82 str w2, [x20,#264] next = skb->next; ffff8000113a6204: f9400023 ldr x3, [x1] prev = skb->prev; ffff8000113a6208: f9400422 ldr x2, [x1,#8] skb->next = skb->prev = NULL; ffff8000113a620c: f900003f str xzr, [x1] ffff8000113a6210: f900043f str xzr, [x1,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a6214: f9000462 str x2, [x3,#8] ffff8000113a6218: f9000043 str x3, [x2] ffff8000113a621c: 94000000 bl 0 ffff8000113a621c: R_AARCH64_CALL26 kfree_skb sd->input_queue_head++; ffff8000113a6220: b9408280 ldr w0, [x20,#128] skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) { ffff8000113a6224: eb1302bf cmp x21, x19 ffff8000113a6228: 11000400 add w0, w0, #0x1 ffff8000113a622c: b9008280 str w0, [x20,#128] ffff8000113a6230: f9400260 ldr x0, [x19] ffff8000113a6234: 54fffd41 b.ne ffff8000113a61dc smp_store_release(&lock->locked, 0); ffff8000113a6238: 52800000 mov w0, #0x0 // #0 ffff8000113a623c: 91043281 add x1, x20, #0x10c ffff8000113a6240: 089ffc20 stlrb w0, [x1] asm volatile(ALTERNATIVE( ffff8000113a6244: d2801c00 mov x0, #0xe0 // #224 ffff8000113a6248: d50342ff msr daifclr, #0x2 skb_queue_walk_safe(&sd->process_queue, skb, tmp) { ffff8000113a624c: aa1403f5 mov x21, x20 ffff8000113a6250: f8410ea1 ldr x1, [x21,#16]! ffff8000113a6254: eb15003f cmp x1, x21 ffff8000113a6258: f9400033 ldr x19, [x1] ffff8000113a625c: 540000e1 b.ne ffff8000113a6278 ffff8000113a6260: 1400001b b ffff8000113a62cc ffff8000113a6264: eb15027f cmp x19, x21 ffff8000113a6268: f9400260 ldr x0, [x19] ffff8000113a626c: 54000300 b.eq ffff8000113a62cc ffff8000113a6270: aa1303e1 mov x1, x19 ffff8000113a6274: aa0003f3 mov x19, x0 if (skb->dev->reg_state == NETREG_UNREGISTERING) { ffff8000113a6278: f9400820 ldr x0, [x1,#16] ffff8000113a627c: 39536000 ldrb w0, [x0,#1240] ffff8000113a6280: 7100081f cmp w0, #0x2 ffff8000113a6284: 54ffff01 b.ne ffff8000113a6264 WRITE_ONCE(list->qlen, list->qlen - 1); ffff8000113a6288: b94012a2 ldr w2, [x21,#16] kfree_skb(skb); ffff8000113a628c: aa0103e0 mov x0, x1 ffff8000113a6290: 51000442 sub w2, w2, #0x1 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113a6294: b9002282 str w2, [x20,#32] next = skb->next; ffff8000113a6298: f9400023 ldr x3, [x1] prev = skb->prev; ffff8000113a629c: f9400422 ldr x2, [x1,#8] skb->next = skb->prev = NULL; ffff8000113a62a0: f900003f str xzr, [x1] ffff8000113a62a4: f900043f str xzr, [x1,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a62a8: f9000462 str x2, [x3,#8] ffff8000113a62ac: f9000043 str x3, [x2] ffff8000113a62b0: 94000000 bl 0 ffff8000113a62b0: R_AARCH64_CALL26 kfree_skb ffff8000113a62b4: b9408280 ldr w0, [x20,#128] skb_queue_walk_safe(&sd->process_queue, skb, tmp) { ffff8000113a62b8: eb15027f cmp x19, x21 ffff8000113a62bc: 11000400 add w0, w0, #0x1 ffff8000113a62c0: b9008280 str w0, [x20,#128] ffff8000113a62c4: f9400260 ldr x0, [x19] ffff8000113a62c8: 54fffd41 b.ne ffff8000113a6270 __local_bh_enable_ip(ip, SOFTIRQ_DISABLE_OFFSET); } static inline void local_bh_enable(void) { __local_bh_enable_ip(_THIS_IP_, SOFTIRQ_DISABLE_OFFSET); ffff8000113a62cc: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a62cc: R_AARCH64_ADR_PREL_PG_HI21 .text+0x7f50 ffff8000113a62d0: 91000000 add x0, x0, #0x0 ffff8000113a62d0: R_AARCH64_ADD_ABS_LO12_NC .text+0x7f50 ffff8000113a62d4: 52804001 mov w1, #0x200 // #512 ffff8000113a62d8: 94000000 bl 0 <__local_bh_enable_ip> ffff8000113a62d8: R_AARCH64_CALL26 __local_bh_enable_ip } ffff8000113a62dc: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a62e0: f94013f5 ldr x21, [sp,#32] ffff8000113a62e4: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a62e8: d65f03c0 ret queued_spin_lock_slowpath(lock, val); ffff8000113a62ec: 94000000 bl 0 ffff8000113a62ec: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113a62f0: 17ffffb2 b ffff8000113a61b8 ffff8000113a62f4 : { ffff8000113a62f4: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113a62f8: 910003fd mov x29, sp ffff8000113a62fc: a90153f3 stp x19, x20, [sp,#16] ffff8000113a6300: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a6304: a90363f7 stp x23, x24, [sp,#48] ffff8000113a6308: a9046bf9 stp x25, x26, [sp,#64] struct softnet_data *sd = this_cpu_ptr(&softnet_data); ffff8000113a630c: 90000018 adrp x24, ffff80001139e37c <__my_cpu_offset> ffff8000113a630c: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned { ffff8000113a6310: aa1e03e0 mov x0, x30 ffff8000113a6314: 94000000 bl 0 <_mcount> ffff8000113a6314: R_AARCH64_CALL26 _mcount struct softnet_data *sd = this_cpu_ptr(&softnet_data); ffff8000113a6318: 91000318 add x24, x24, #0x0 ffff8000113a6318: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a631c: d538d080 mrs x0, tpidr_el1 ffff8000113a6320: 8b180018 add x24, x0, x24 if (sd->completion_queue) { ffff8000113a6324: f9402f00 ldr x0, [x24,#88] ffff8000113a6328: b4000460 cbz x0, ffff8000113a63b4 asm volatile(ALTERNATIVE( ffff8000113a632c: d2800c00 mov x0, #0x60 // #96 ffff8000113a6330: d50342df msr daifset, #0x2 asm volatile(ALTERNATIVE( ffff8000113a6334: d2801c00 mov x0, #0xe0 // #224 clist = sd->completion_queue; ffff8000113a6338: f9402f14 ldr x20, [x24,#88] sd->completion_queue = NULL; ffff8000113a633c: f9002f1f str xzr, [x24,#88] ffff8000113a6340: d50342ff msr daifclr, #0x2 while (clist) { ffff8000113a6344: b4000374 cbz x20, ffff8000113a63b0 #include /* * Tracepoint for free an sk_buff: */ TRACE_EVENT(kfree_skb, ffff8000113a6348: 90000016 adrp x22, 0 ffff8000113a6348: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113a634c: 90000017 adrp x23, 0 <__cpu_online_mask> ffff8000113a634c: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113a6350: 910002d6 add x22, x22, #0x0 ffff8000113a6350: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a6354: 910002f7 add x23, x23, #0x0 ffff8000113a6354: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask TP_printk("skbaddr=%p protocol=%u location=%p", __entry->skbaddr, __entry->protocol, __entry->location) ); TRACE_EVENT(consume_skb, ffff8000113a6358: aa1603f9 mov x25, x22 __READ_ONCE_SIZE; ffff8000113a635c: b940d680 ldr w0, [x20,#212] clist = clist->next; ffff8000113a6360: f9400295 ldr x21, [x20] WARN_ON(refcount_read(&skb->users)); ffff8000113a6364: 35000da0 cbnz w0, ffff8000113a6518 if (likely(get_kfree_skb_cb(skb)->reason == SKB_REASON_CONSUMED)) ffff8000113a6368: b9402a80 ldr w0, [x20,#40] ffff8000113a636c: 35001000 cbnz w0, ffff8000113a656c ffff8000113a6370: 90000000 adrp x0, 0 <__tracepoint_consume_skb> ffff8000113a6370: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_consume_skb ffff8000113a6374: 91000000 add x0, x0, #0x0 ffff8000113a6374: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_consume_skb ffff8000113a6378: b9400801 ldr w1, [x0,#8] ffff8000113a637c: 6b1f003f cmp w1, wzr ffff8000113a6380: 54000d0c b.gt ffff8000113a6520 if (skb->fclone != SKB_FCLONE_UNAVAILABLE) ffff8000113a6384: 3941fa80 ldrb w0, [x20,#126] ffff8000113a6388: d3420c00 ubfx x0, x0, #2, #2 ffff8000113a638c: 340000c0 cbz w0, ffff8000113a63a4 __kfree_skb(skb); ffff8000113a6390: aa1403e0 mov x0, x20 ffff8000113a6394: 94000000 bl 0 <__kfree_skb> ffff8000113a6394: R_AARCH64_CALL26 __kfree_skb while (clist) { ffff8000113a6398: b40000d5 cbz x21, ffff8000113a63b0 ffff8000113a639c: aa1503f4 mov x20, x21 ffff8000113a63a0: 17ffffef b ffff8000113a635c __kfree_skb_defer(skb); ffff8000113a63a4: aa1403e0 mov x0, x20 ffff8000113a63a8: 94000000 bl 0 <__kfree_skb_defer> ffff8000113a63a8: R_AARCH64_CALL26 __kfree_skb_defer while (clist) { ffff8000113a63ac: b5ffff95 cbnz x21, ffff8000113a639c __kfree_skb_flush(); ffff8000113a63b0: 94000000 bl 0 <__kfree_skb_flush> ffff8000113a63b0: R_AARCH64_CALL26 __kfree_skb_flush if (sd->output_queue) { ffff8000113a63b4: f9402700 ldr x0, [x24,#72] ffff8000113a63b8: b4000a00 cbz x0, ffff8000113a64f8 asm volatile(ALTERNATIVE( ffff8000113a63bc: d2800c00 mov x0, #0x60 // #96 ffff8000113a63c0: d50342df msr daifset, #0x2 sd->output_queue = NULL; ffff8000113a63c4: aa1803e0 mov x0, x24 head = sd->output_queue; ffff8000113a63c8: f9402713 ldr x19, [x24,#72] sd->output_queue = NULL; ffff8000113a63cc: f8048c1f str xzr, [x0,#72]! sd->output_queue_tailp = &sd->output_queue; ffff8000113a63d0: f9002b00 str x0, [x24,#80] asm volatile(ALTERNATIVE( ffff8000113a63d4: d2801c00 mov x0, #0xe0 // #224 ffff8000113a63d8: d50342ff msr daifclr, #0x2 while (head) { ffff8000113a63dc: b40008f3 cbz x19, ffff8000113a64f8 if (!(q->flags & TCQ_F_NOLOCK)) { ffff8000113a63e0: b9401260 ldr w0, [x19,#16] spinlock_t *root_lock = NULL; ffff8000113a63e4: d2800017 mov x23, #0x0 // #0 ffff8000113a63e8: 5280003a mov w26, #0x1 // #1 ATOMIC64_OPS(andnot, bic, ) ffff8000113a63ec: d2800034 mov x20, #0x1 // #1 smp_store_release(&lock->locked, 0); ffff8000113a63f0: 2a1703f9 mov w25, w23 head = head->next_sched; ffff8000113a63f4: f9407276 ldr x22, [x19,#224] spinlock_t *root_lock = NULL; ffff8000113a63f8: d2800015 mov x21, #0x0 // #0 if (!(q->flags & TCQ_F_NOLOCK)) { ffff8000113a63fc: 364004a0 tbz w0, #8, ffff8000113a6490 smp_mb__before_atomic(); ffff8000113a6400: d5033bbf dmb ish ffff8000113a6404: 91036264 add x4, x19, #0xd8 ffff8000113a6408: f9800091 prfm pstl1strm, [x4] ffff8000113a640c: c85f7c80 ldxr x0, [x4] ffff8000113a6410: 8a340000 bic x0, x0, x20 ffff8000113a6414: c8017c80 stxr w1, x0, [x4] ffff8000113a6418: 35ffffa1 cbnz w1, ffff8000113a640c if (qdisc->flags & TCQ_F_NOLOCK) { ffff8000113a641c: b9401260 ldr w0, [x19,#16] ffff8000113a6420: 37400540 tbnz w0, #8, ffff8000113a64c8 ffff8000113a6424: b940c260 ldr w0, [x19,#192] * masking the LSB. Calling code is responsible for handling that. */ static inline unsigned raw_read_seqcount(const seqcount_t *s) { unsigned ret = READ_ONCE(s->sequence); smp_rmb(); ffff8000113a6428: d50339bf dmb ishld } else if (qdisc_is_running(qdisc)) { ffff8000113a642c: 37000220 tbnz w0, #0, ffff8000113a6470 static inline void raw_write_seqcount_begin(seqcount_t *s) { s->sequence++; ffff8000113a6430: b940c260 ldr w0, [x19,#192] ffff8000113a6434: 11000400 add w0, w0, #0x1 ffff8000113a6438: b900c260 str w0, [x19,#192] smp_wmb(); ffff8000113a643c: d5033abf dmb ishst { if (qdisc_run_begin(q)) { /* NOLOCK qdisc must check 'state' under the qdisc seqlock * to avoid racing with dev_qdisc_reset() */ if (!(q->flags & TCQ_F_NOLOCK) || ffff8000113a6440: b9401260 ldr w0, [x19,#16] ffff8000113a6444: 36400060 tbz w0, #8, ffff8000113a6450 ffff8000113a6448: f9406e60 ldr x0, [x19,#216] ffff8000113a644c: 37080060 tbnz w0, #1, ffff8000113a6458 likely(!test_bit(__QDISC_STATE_DEACTIVATED, &q->state))) __qdisc_run(q); ffff8000113a6450: aa1303e0 mov x0, x19 ffff8000113a6454: 94000000 bl 0 <__qdisc_run> ffff8000113a6454: R_AARCH64_CALL26 __qdisc_run } static inline void raw_write_seqcount_end(seqcount_t *s) { smp_wmb(); ffff8000113a6458: d5033abf dmb ishst s->sequence++; ffff8000113a645c: b940c261 ldr w1, [x19,#192] if (qdisc->flags & TCQ_F_NOLOCK) ffff8000113a6460: b9401260 ldr w0, [x19,#16] ffff8000113a6464: 11000421 add w1, w1, #0x1 ffff8000113a6468: b900c261 str w1, [x19,#192] ffff8000113a646c: 37400280 tbnz w0, #8, ffff8000113a64bc if (root_lock) ffff8000113a6470: b4000055 cbz x21, ffff8000113a6478 ffff8000113a6474: 089ffeb9 stlrb w25, [x21] while (head) { ffff8000113a6478: b4000416 cbz x22, ffff8000113a64f8 ffff8000113a647c: aa1603f3 mov x19, x22 if (!(q->flags & TCQ_F_NOLOCK)) { ffff8000113a6480: b9401260 ldr w0, [x19,#16] head = head->next_sched; ffff8000113a6484: f9407276 ldr x22, [x19,#224] spinlock_t *root_lock = NULL; ffff8000113a6488: d2800015 mov x21, #0x0 // #0 if (!(q->flags & TCQ_F_NOLOCK)) { ffff8000113a648c: 3747fba0 tbnz w0, #8, ffff8000113a6400 root_lock = qdisc_lock(q); ffff8000113a6490: 9102b275 add x21, x19, #0xac __CMPXCHG_CASE(w, , acq_, 32, , a, , "memory", K) ffff8000113a6494: f98002b1 prfm pstl1strm, [x21] ffff8000113a6498: 885ffea1 ldaxr w1, [x21] ffff8000113a649c: 4a170020 eor w0, w1, w23 ffff8000113a64a0: 35000060 cbnz w0, ffff8000113a64ac ffff8000113a64a4: 88007eba stxr w0, w26, [x21] ffff8000113a64a8: 35ffff80 cbnz w0, ffff8000113a6498 ffff8000113a64ac: 34fffaa1 cbz w1, ffff8000113a6400 queued_spin_lock_slowpath(lock, val); ffff8000113a64b0: aa1503e0 mov x0, x21 ffff8000113a64b4: 94000000 bl 0 ffff8000113a64b4: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113a64b8: 17ffffd2 b ffff8000113a6400 smp_store_release(&lock->locked, 0); ffff8000113a64bc: 91041273 add x19, x19, #0x104 ffff8000113a64c0: 089ffe79 stlrb w25, [x19] preempt_enable(); ffff8000113a64c4: 17ffffeb b ffff8000113a6470 ffff8000113a64c8: b9410660 ldr w0, [x19,#260] if (unlikely(val)) ffff8000113a64cc: 35ffffc0 cbnz w0, ffff8000113a64c4 ffff8000113a64d0: 91041264 add x4, x19, #0x104 ffff8000113a64d4: f9800091 prfm pstl1strm, [x4] ffff8000113a64d8: 885ffc81 ldaxr w1, [x4] ffff8000113a64dc: 4a170022 eor w2, w1, w23 ffff8000113a64e0: 35000062 cbnz w2, ffff8000113a64ec ffff8000113a64e4: 88027c94 stxr w2, w20, [x4] ffff8000113a64e8: 35ffff82 cbnz w2, ffff8000113a64d8 if (do_raw_spin_trylock(lock)) { ffff8000113a64ec: 35fffec1 cbnz w1, ffff8000113a64c4 case 1: *(volatile __u8 *)p = *(__u8 *)res; break; ffff8000113a64f0: 39042260 strb w0, [x19,#264] ffff8000113a64f4: 17ffffcf b ffff8000113a6430 xfrm_dev_backlog(sd); ffff8000113a64f8: aa1803e0 mov x0, x24 ffff8000113a64fc: 94000000 bl 0 ffff8000113a64fc: R_AARCH64_CALL26 xfrm_dev_backlog } ffff8000113a6500: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a6504: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a6508: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a650c: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a6510: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a6514: d65f03c0 ret WARN_ON(refcount_read(&skb->users)); ffff8000113a6518: d4210000 brk #0x800 ffff8000113a651c: 17ffff93 b ffff8000113a6368 ffff8000113a6520: d538d081 mrs x1, tpidr_el1 ffff8000113a6524: b8796821 ldr w1, [x1,x25] ffff8000113a6528: 1100fc22 add w2, w1, #0x3f ffff8000113a652c: 6b1f003f cmp w1, wzr ffff8000113a6530: 1a81b042 csel w2, w2, w1, lt ffff8000113a6534: 13067c42 asr w2, w2, #6 ffff8000113a6538: 937d7c42 sbfiz x2, x2, #3, #32 ffff8000113a653c: f8776842 ldr x2, [x2,x23] ffff8000113a6540: 9ac12441 lsr x1, x2, x1 ffff8000113a6544: 3607f201 tbz w1, #0, ffff8000113a6384 __READ_ONCE_SIZE; ffff8000113a6548: f9401013 ldr x19, [x0,#32] ffff8000113a654c: b40000f3 cbz x19, ffff8000113a6568 ffff8000113a6550: f9400262 ldr x2, [x19] ffff8000113a6554: f9400660 ldr x0, [x19,#8] ffff8000113a6558: aa1403e1 mov x1, x20 ffff8000113a655c: d63f0040 blr x2 ffff8000113a6560: f8418e62 ldr x2, [x19,#24]! ffff8000113a6564: b5ffff82 cbnz x2, ffff8000113a6554 TRACE_EVENT(kfree_skb, ffff8000113a6568: 17ffff87 b ffff8000113a6384 ffff8000113a656c: 90000001 adrp x1, 0 <__tracepoint_kfree_skb> ffff8000113a656c: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_kfree_skb ffff8000113a6570: 91000021 add x1, x1, #0x0 ffff8000113a6570: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_kfree_skb ffff8000113a6574: b9400820 ldr w0, [x1,#8] ffff8000113a6578: 6b1f001f cmp w0, wzr ffff8000113a657c: 54fff04d b.le ffff8000113a6384 ffff8000113a6580: d538d080 mrs x0, tpidr_el1 ffff8000113a6584: b8766800 ldr w0, [x0,x22] ffff8000113a6588: 1100fc02 add w2, w0, #0x3f ffff8000113a658c: 6b1f001f cmp w0, wzr ffff8000113a6590: 1a80b042 csel w2, w2, w0, lt ffff8000113a6594: 13067c42 asr w2, w2, #6 ffff8000113a6598: 937d7c42 sbfiz x2, x2, #3, #32 ffff8000113a659c: f8776842 ldr x2, [x2,x23] ffff8000113a65a0: 9ac02440 lsr x0, x2, x0 ffff8000113a65a4: 3607ef00 tbz w0, #0, ffff8000113a6384 ffff8000113a65a8: f9401033 ldr x19, [x1,#32] ffff8000113a65ac: b4fffdf3 cbz x19, ffff8000113a6568 ffff8000113a65b0: 9000001a adrp x26, ffff80001139e37c <__my_cpu_offset> ffff8000113a65b0: R_AARCH64_ADR_PREL_PG_HI21 .text+0x7f78 ffff8000113a65b4: f9400263 ldr x3, [x19] ffff8000113a65b8: 9100035a add x26, x26, #0x0 ffff8000113a65b8: R_AARCH64_ADD_ABS_LO12_NC .text+0x7f78 ffff8000113a65bc: f9400660 ldr x0, [x19,#8] ffff8000113a65c0: aa1403e1 mov x1, x20 ffff8000113a65c4: aa1a03e2 mov x2, x26 ffff8000113a65c8: d63f0060 blr x3 ffff8000113a65cc: f8418e63 ldr x3, [x19,#24]! ffff8000113a65d0: b5ffff63 cbnz x3, ffff8000113a65bc ffff8000113a65d4: 17ffff6c b ffff8000113a6384 ffff8000113a65d8 : { ffff8000113a65d8: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113a65dc: 910003fd mov x29, sp ffff8000113a65e0: a90153f3 stp x19, x20, [sp,#16] ffff8000113a65e4: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a65e8: a90363f7 stp x23, x24, [sp,#48] ffff8000113a65ec: f90023f9 str x25, [sp,#64] ffff8000113a65f0: aa0003f4 mov x20, x0 ffff8000113a65f4: aa1e03e0 mov x0, x30 ffff8000113a65f8: f9002fa1 str x1, [x29,#88] ffff8000113a65fc: aa0203f7 mov x23, x2 ffff8000113a6600: 94000000 bl 0 <_mcount> ffff8000113a6600: R_AARCH64_CALL26 _mcount sd = &per_cpu(softnet_data, cpu); ffff8000113a6604: f9402fa1 ldr x1, [x29,#88] ffff8000113a6608: 90000000 adrp x0, 0 <__per_cpu_offset> ffff8000113a6608: R_AARCH64_ADR_PREL_PG_HI21 __per_cpu_offset ffff8000113a660c: 91000000 add x0, x0, #0x0 ffff8000113a660c: R_AARCH64_ADD_ABS_LO12_NC __per_cpu_offset ffff8000113a6610: f861d813 ldr x19, [x0,w1,sxtw #3] ffff8000113a6614: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113a6614: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned ffff8000113a6618: 910002c0 add x0, x22, #0x0 ffff8000113a6618: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a661c: 8b130013 add x19, x0, x19 asm volatile(ALTERNATIVE( ffff8000113a6620: d53b4235 mrs x21, daif asm volatile(ALTERNATIVE( ffff8000113a6624: 121902a0 and w0, w21, #0x80 if (!arch_irqs_disabled_flags(flags)) ffff8000113a6628: 35000060 cbnz w0, ffff8000113a6634 asm volatile(ALTERNATIVE( ffff8000113a662c: d2800c00 mov x0, #0x60 // #96 ffff8000113a6630: d50342df msr daifset, #0x2 ffff8000113a6634: 52800024 mov w4, #0x1 // #1 ffff8000113a6638: 91043260 add x0, x19, #0x10c ffff8000113a663c: d2800003 mov x3, #0x0 // #0 ffff8000113a6640: f9800011 prfm pstl1strm, [x0] ffff8000113a6644: 885ffc01 ldaxr w1, [x0] ffff8000113a6648: 4a030022 eor w2, w1, w3 ffff8000113a664c: 35000062 cbnz w2, ffff8000113a6658 ffff8000113a6650: 88027c04 stxr w2, w4, [x0] ffff8000113a6654: 35ffff82 cbnz w2, ffff8000113a6644 ffff8000113a6658: 35001001 cbnz w1, ffff8000113a6858 if (!netif_running(skb->dev)) ffff8000113a665c: f9400a80 ldr x0, [x20,#16] ffff8000113a6660: f9402000 ldr x0, [x0,#64] ffff8000113a6664: 360000c0 tbz w0, #0, ffff8000113a667c if (qlen <= netdev_max_backlog && !skb_flow_limit(skb, qlen)) { ffff8000113a6668: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a6668: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly+0x948 qlen = skb_queue_len(&sd->input_pkt_queue); ffff8000113a666c: b9410a78 ldr w24, [x19,#264] if (qlen <= netdev_max_backlog && !skb_flow_limit(skb, qlen)) { ffff8000113a6670: b9400000 ldr w0, [x0] ffff8000113a6670: R_AARCH64_LDST32_ABS_LO12_NC .data..read_mostly+0x948 ffff8000113a6674: 6b00031f cmp w24, w0 ffff8000113a6678: 54000309 b.ls ffff8000113a66d8 sd->dropped++; ffff8000113a667c: b940f260 ldr w0, [x19,#240] smp_store_release(&lock->locked, 0); ffff8000113a6680: 91043273 add x19, x19, #0x10c ffff8000113a6684: 11000400 add w0, w0, #0x1 ffff8000113a6688: b81e4260 stur w0, [x19,#-28] ffff8000113a668c: 52800000 mov w0, #0x0 // #0 ffff8000113a6690: 089ffe60 stlrb w0, [x19] asm volatile(ALTERNATIVE( ffff8000113a6694: d51b4235 msr daif, x21 atomic_long_inc(&skb->dev->rx_dropped); ffff8000113a6698: f9400a81 ldr x1, [x20,#16] ATOMIC64_OPS(add, add, I) ffff8000113a669c: 91070024 add x4, x1, #0x1c0 ffff8000113a66a0: f9800091 prfm pstl1strm, [x4] ffff8000113a66a4: c85f7c80 ldxr x0, [x4] ffff8000113a66a8: 91000400 add x0, x0, #0x1 ffff8000113a66ac: c8027c80 stxr w2, x0, [x4] ffff8000113a66b0: 35ffffa2 cbnz w2, ffff8000113a66a4 kfree_skb(skb); ffff8000113a66b4: aa1403e0 mov x0, x20 ffff8000113a66b8: 94000000 bl 0 ffff8000113a66b8: R_AARCH64_CALL26 kfree_skb } ffff8000113a66bc: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a66c0: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a66c4: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a66c8: f94023f9 ldr x25, [sp,#64] return NET_RX_DROP; ffff8000113a66cc: 52800020 mov w0, #0x1 // #1 } ffff8000113a66d0: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113a66d4: d65f03c0 ret if (qlen < (netdev_max_backlog >> 1)) ffff8000113a66d8: 6b80071f cmp w24, w0, asr #1 ffff8000113a66dc: 540003c2 b.cs ffff8000113a6754 if (qlen) { ffff8000113a66e0: 350000b8 cbnz w24, ffff8000113a66f4 unsigned long old = *p; ffff8000113a66e4: f9409260 ldr x0, [x19,#288] *p = old | mask; ffff8000113a66e8: b2400001 orr x1, x0, #0x1 ffff8000113a66ec: f9009261 str x1, [x19,#288] if (!__test_and_set_bit(NAPI_STATE_SCHED, &sd->backlog.state)) { ffff8000113a66f0: 360007a0 tbz w0, #0, ffff8000113a67e4 __skb_insert(newsk, next->prev, next, list); ffff8000113a66f4: f9408260 ldr x0, [x19,#256] ffff8000113a66f8: 9103e261 add x1, x19, #0xf8 case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a66fc: f9000281 str x1, [x20] ffff8000113a6700: f9000680 str x0, [x20,#8] ffff8000113a6704: f9008274 str x20, [x19,#256] ffff8000113a6708: f9000014 str x20, [x0] list->qlen++; ffff8000113a670c: b9410a61 ldr w1, [x19,#264] *qtail = ++sd->input_queue_tail; ffff8000113a6710: b940ee60 ldr w0, [x19,#236] ffff8000113a6714: 11000421 add w1, w1, #0x1 ffff8000113a6718: 11000400 add w0, w0, #0x1 ffff8000113a671c: b900ee60 str w0, [x19,#236] ffff8000113a6720: b9010a61 str w1, [x19,#264] ffff8000113a6724: b90002e0 str w0, [x23] ffff8000113a6728: 91043273 add x19, x19, #0x10c ffff8000113a672c: 52800000 mov w0, #0x0 // #0 ffff8000113a6730: 089ffe60 stlrb w0, [x19] ffff8000113a6734: d51b4235 msr daif, x21 } ffff8000113a6738: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a673c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a6740: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a6744: f94023f9 ldr x25, [sp,#64] return NET_RX_SUCCESS; ffff8000113a6748: 52800000 mov w0, #0x0 // #0 } ffff8000113a674c: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113a6750: d65f03c0 ret sd = this_cpu_ptr(&softnet_data); ffff8000113a6754: 910002c0 add x0, x22, #0x0 ffff8000113a6754: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a6758: d538d081 mrs x1, tpidr_el1 ffff8000113a675c: 8b000020 add x0, x1, x0 __READ_ONCE_SIZE; ffff8000113a6760: f9402019 ldr x25, [x0,#64] if (fl) { ffff8000113a6764: b4000379 cbz x25, ffff8000113a67d0 if (!skb->l4_hash && !skb->sw_hash) ffff8000113a6768: 39420680 ldrb w0, [x20,#129] ffff8000113a676c: 12000400 and w0, w0, #0x3 ffff8000113a6770: 34000500 cbz w0, ffff8000113a6810 old_flow = fl->history[fl->history_head]; ffff8000113a6774: b9400f23 ldr w3, [x25,#12] new_flow = skb_get_hash(skb) & (fl->num_buckets - 1); ffff8000113a6778: b9400b21 ldr w1, [x25,#8] ffff8000113a677c: b9409684 ldr w4, [x20,#148] ffff8000113a6780: 8b234722 add x2, x25, w3, uxtw #1 ffff8000113a6784: 51000421 sub w1, w1, #0x1 old_flow = fl->history[fl->history_head]; ffff8000113a6788: 79402040 ldrh w0, [x2,#16] new_flow = skb_get_hash(skb) & (fl->num_buckets - 1); ffff8000113a678c: 0a040021 and w1, w1, w4 fl->history_head++; ffff8000113a6790: 11000463 add w3, w3, #0x1 fl->history[fl->history_head] = new_flow; ffff8000113a6794: 79002041 strh w1, [x2,#16] fl->history_head &= FLOW_LIMIT_HISTORY - 1; ffff8000113a6798: 12001863 and w3, w3, #0x7f ffff8000113a679c: b9000f23 str w3, [x25,#12] if (likely(fl->buckets[old_flow])) ffff8000113a67a0: 8b202320 add x0, x25, w0, uxth ffff8000113a67a4: 39444002 ldrb w2, [x0,#272] ffff8000113a67a8: 34000062 cbz w2, ffff8000113a67b4 fl->buckets[old_flow]--; ffff8000113a67ac: 51000442 sub w2, w2, #0x1 ffff8000113a67b0: 39044002 strb w2, [x0,#272] if (++fl->buckets[new_flow] > (FLOW_LIMIT_HISTORY >> 1)) { ffff8000113a67b4: 8b214321 add x1, x25, w1, uxtw ffff8000113a67b8: 39444020 ldrb w0, [x1,#272] ffff8000113a67bc: 11000400 add w0, w0, #0x1 ffff8000113a67c0: 53001c00 uxtb w0, w0 ffff8000113a67c4: 39044020 strb w0, [x1,#272] ffff8000113a67c8: 7101001f cmp w0, #0x40 ffff8000113a67cc: 54000048 b.hi ffff8000113a67d4 preempt_disable(); } static inline void __rcu_read_unlock(void) { preempt_enable(); ffff8000113a67d0: 17ffffc4 b ffff8000113a66e0 fl->count++; ffff8000113a67d4: f9400320 ldr x0, [x25] ffff8000113a67d8: 91000400 add x0, x0, #0x1 ffff8000113a67dc: f9000320 str x0, [x25] ffff8000113a67e0: 17ffffa7 b ffff8000113a667c struct softnet_data *mysd = this_cpu_ptr(&softnet_data); ffff8000113a67e4: 910002d6 add x22, x22, #0x0 ffff8000113a67e4: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a67e8: d538d080 mrs x0, tpidr_el1 ffff8000113a67ec: 8b160016 add x22, x0, x22 if (sd != mysd) { ffff8000113a67f0: eb16027f cmp x19, x22 ffff8000113a67f4: 54000140 b.eq ffff8000113a681c sd->rps_ipi_next = mysd->rps_ipi_list; ffff8000113a67f8: f9401ec1 ldr x1, [x22,#56] __raise_softirq_irqoff(NET_RX_SOFTIRQ); ffff8000113a67fc: 52800060 mov w0, #0x3 // #3 sd->rps_ipi_next = mysd->rps_ipi_list; ffff8000113a6800: f9007261 str x1, [x19,#224] mysd->rps_ipi_list = sd; ffff8000113a6804: f9001ed3 str x19, [x22,#56] __raise_softirq_irqoff(NET_RX_SOFTIRQ); ffff8000113a6808: 94000000 bl 0 <__raise_softirq_irqoff> ffff8000113a6808: R_AARCH64_CALL26 __raise_softirq_irqoff ffff8000113a680c: 17ffffba b ffff8000113a66f4 __skb_get_hash(skb); ffff8000113a6810: aa1403e0 mov x0, x20 ffff8000113a6814: 94000000 bl 0 <__skb_get_hash> ffff8000113a6814: R_AARCH64_CALL26 __skb_get_hash ffff8000113a6818: 17ffffd7 b ffff8000113a6774 __list_add(new, head->prev, head); ffff8000113a681c: f9400678 ldr x24, [x19,#8] list_add_tail(&napi->poll_list, &sd->poll_list); ffff8000113a6820: 91044276 add x22, x19, #0x110 if (!__list_add_valid(new, prev, next)) ffff8000113a6824: aa1603e0 mov x0, x22 ffff8000113a6828: aa1803e1 mov x1, x24 ffff8000113a682c: aa1303e2 mov x2, x19 ffff8000113a6830: 94000000 bl 0 <__list_add_valid> ffff8000113a6830: R_AARCH64_CALL26 __list_add_valid ffff8000113a6834: 53001c00 uxtb w0, w0 ffff8000113a6838: 340000a0 cbz w0, ffff8000113a684c next->prev = new; ffff8000113a683c: f9000676 str x22, [x19,#8] new->next = next; ffff8000113a6840: f9008a73 str x19, [x19,#272] new->prev = prev; ffff8000113a6844: f90006d8 str x24, [x22,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a6848: f9000316 str x22, [x24] __raise_softirq_irqoff(NET_RX_SOFTIRQ); ffff8000113a684c: 52800060 mov w0, #0x3 // #3 ffff8000113a6850: 94000000 bl 0 <__raise_softirq_irqoff> ffff8000113a6850: R_AARCH64_CALL26 __raise_softirq_irqoff ffff8000113a6854: 17ffffa8 b ffff8000113a66f4 queued_spin_lock_slowpath(lock, val); ffff8000113a6858: 94000000 bl 0 ffff8000113a6858: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113a685c: 17ffff80 b ffff8000113a665c ffff8000113a6860 : { ffff8000113a6860: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113a6864: 910003fd mov x29, sp ffff8000113a6868: a90153f3 stp x19, x20, [sp,#16] ffff8000113a686c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a6870: aa0003f4 mov x20, x0 ffff8000113a6874: aa1e03e0 mov x0, x30 ffff8000113a6878: 94000000 bl 0 <_mcount> ffff8000113a6878: R_AARCH64_CALL26 _mcount ffff8000113a687c: 90000015 adrp x21, 0 <__stack_chk_guard> ffff8000113a687c: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a6880: f94002a0 ldr x0, [x21] ffff8000113a6880: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a6884: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113a6884: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a6888: f90027a0 str x0, [x29,#72] __READ_ONCE_SIZE; ffff8000113a688c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a688c: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a6890: 91000000 add x0, x0, #0x0 ffff8000113a6890: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a6894: b9434800 ldr w0, [x0,#840] net_timestamp_check(netdev_tstamp_prequeue, skb); ffff8000113a6898: 6b1f001f cmp w0, wzr ffff8000113a689c: 5400078c b.gt ffff8000113a698c ffff8000113a68a0: 90000000 adrp x0, 0 <__tracepoint_netif_rx> ffff8000113a68a0: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_netif_rx ffff8000113a68a4: 91000000 add x0, x0, #0x0 ffff8000113a68a4: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_netif_rx ffff8000113a68a8: b9400801 ldr w1, [x0,#8] ffff8000113a68ac: 6b1f003f cmp w1, wzr ffff8000113a68b0: 5400044c b.gt ffff8000113a6938 ffff8000113a68b4: 910002d6 add x22, x22, #0x0 ffff8000113a68b4: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a68b8: b94952c0 ldr w0, [x22,#2384] if (static_branch_unlikely(&rps_needed)) { ffff8000113a68bc: 6b1f001f cmp w0, wzr ffff8000113a68c0: 5400022c b.gt ffff8000113a6904 ret = enqueue_to_backlog(skb, get_cpu(), &qtail); ffff8000113a68c4: 90000000 adrp x0, 0 ffff8000113a68c4: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113a68c8: d538d081 mrs x1, tpidr_el1 ffff8000113a68cc: 91000000 add x0, x0, #0x0 ffff8000113a68cc: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a68d0: b8606821 ldr w1, [x1,x0] ffff8000113a68d4: 910103a2 add x2, x29, #0x40 ffff8000113a68d8: aa1403e0 mov x0, x20 ffff8000113a68dc: 97ffff3f bl ffff8000113a65d8 } ffff8000113a68e0: f94027a2 ldr x2, [x29,#72] ffff8000113a68e4: f94002a1 ldr x1, [x21] ffff8000113a68e4: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a68e8: eb01005f cmp x2, x1 ffff8000113a68ec: 540000a1 b.ne ffff8000113a6900 ffff8000113a68f0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a68f4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a68f8: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a68fc: d65f03c0 ret ffff8000113a6900: 94000000 bl 0 <__stack_chk_fail> ffff8000113a6900: R_AARCH64_CALL26 __stack_chk_fail struct rps_dev_flow voidflow, *rflow = &voidflow; ffff8000113a6904: 910143a2 add x2, x29, #0x50 ffff8000113a6908: 9100e3a0 add x0, x29, #0x38 ffff8000113a690c: f81f0c40 str x0, [x2,#-16]! cpu = get_rps_cpu(skb->dev, skb, &rflow); ffff8000113a6910: f9400a80 ldr x0, [x20,#16] ffff8000113a6914: aa1403e1 mov x1, x20 ffff8000113a6918: 97ffe7dc bl ffff8000113a0888 ffff8000113a691c: 2a0003e1 mov w1, w0 if (cpu < 0) ffff8000113a6920: 37f80461 tbnz w1, #31, ffff8000113a69ac ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail); ffff8000113a6924: f94023a2 ldr x2, [x29,#64] ffff8000113a6928: aa1403e0 mov x0, x20 ffff8000113a692c: 91001042 add x2, x2, #0x4 ffff8000113a6930: 97ffff2a bl ffff8000113a65d8 preempt_enable(); ffff8000113a6934: 17ffffeb b ffff8000113a68e0 TP_PROTO(struct sk_buff *skb), TP_ARGS(skb) ); DEFINE_EVENT(net_dev_template, netif_rx, ffff8000113a6938: 90000001 adrp x1, 0 ffff8000113a6938: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113a693c: d538d082 mrs x2, tpidr_el1 ffff8000113a6940: 91000021 add x1, x1, #0x0 ffff8000113a6940: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a6944: b8616841 ldr w1, [x2,x1] return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ffff8000113a6948: 52800803 mov w3, #0x40 // #64 ffff8000113a694c: 1ac30c23 sdiv w3, w1, w3 ffff8000113a6950: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113a6950: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113a6954: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113a6958: 91000042 add x2, x2, #0x0 ffff8000113a6958: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113a695c: f8626862 ldr x2, [x3,x2] ffff8000113a6960: 9ac12441 lsr x1, x2, x1 ffff8000113a6964: 3607fa81 tbz w1, #0, ffff8000113a68b4 ffff8000113a6968: f9401013 ldr x19, [x0,#32] ffff8000113a696c: b40000f3 cbz x19, ffff8000113a6988 ffff8000113a6970: f9400262 ldr x2, [x19] ffff8000113a6974: f9400660 ldr x0, [x19,#8] ffff8000113a6978: aa1403e1 mov x1, x20 ffff8000113a697c: d63f0040 blr x2 ffff8000113a6980: f8418e62 ldr x2, [x19,#24]! ffff8000113a6984: b5ffff82 cbnz x2, ffff8000113a6974 ffff8000113a6988: 17ffffcb b ffff8000113a68b4 net_timestamp_check(netdev_tstamp_prequeue, skb); ffff8000113a698c: 910002c0 add x0, x22, #0x0 ffff8000113a698c: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a6990: b9494c00 ldr w0, [x0,#2380] ffff8000113a6994: 34fff860 cbz w0, ffff8000113a68a0 ffff8000113a6998: f9401280 ldr x0, [x20,#32] ffff8000113a699c: b5fff820 cbnz x0, ffff8000113a68a0 ffff8000113a69a0: 94000000 bl 0 ffff8000113a69a0: R_AARCH64_CALL26 ktime_get_with_offset skb->tstamp = ktime_get_real(); ffff8000113a69a4: f9001280 str x0, [x20,#32] ffff8000113a69a8: 17ffffbe b ffff8000113a68a0 cpu = smp_processor_id(); ffff8000113a69ac: 90000013 adrp x19, 0 ffff8000113a69ac: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113a69b0: 97ffde73 bl ffff80001139e37c <__my_cpu_offset> ffff8000113a69b4: 91000273 add x19, x19, #0x0 ffff8000113a69b4: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a69b8: b8736801 ldr w1, [x0,x19] ffff8000113a69bc: 17ffffda b ffff8000113a6924 ffff8000113a69c0 : { ffff8000113a69c0: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a69c4: 910003fd mov x29, sp ffff8000113a69c8: a90153f3 stp x19, x20, [sp,#16] ffff8000113a69cc: aa0003f4 mov x20, x0 ffff8000113a69d0: aa1e03e0 mov x0, x30 ffff8000113a69d4: aa0103f3 mov x19, x1 ffff8000113a69d8: 94000000 bl 0 <_mcount> ffff8000113a69d8: R_AARCH64_CALL26 _mcount return __dev_forward_skb(dev, skb) ?: netif_rx_internal(skb); ffff8000113a69dc: aa1403e0 mov x0, x20 ffff8000113a69e0: aa1303e1 mov x1, x19 ffff8000113a69e4: 94000000 bl ffff8000113a2050 <__dev_forward_skb> ffff8000113a69e4: R_AARCH64_CALL26 __dev_forward_skb ffff8000113a69e8: 35000060 cbnz w0, ffff8000113a69f4 ffff8000113a69ec: aa1303e0 mov x0, x19 ffff8000113a69f0: 97ffff9c bl ffff8000113a6860 } ffff8000113a69f4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a69f8: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a69fc: d65f03c0 ret ffff8000113a6a00 : { ffff8000113a6a00: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a6a04: 910003fd mov x29, sp ffff8000113a6a08: a90153f3 stp x19, x20, [sp,#16] ffff8000113a6a0c: aa0003f4 mov x20, x0 ffff8000113a6a10: aa1e03e0 mov x0, x30 ffff8000113a6a14: 94000000 bl 0 <_mcount> ffff8000113a6a14: R_AARCH64_CALL26 _mcount ffff8000113a6a18: 90000000 adrp x0, 0 <__tracepoint_netif_rx_entry> ffff8000113a6a18: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_netif_rx_entry ffff8000113a6a1c: 91000000 add x0, x0, #0x0 ffff8000113a6a1c: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_netif_rx_entry ffff8000113a6a20: b9400801 ldr w1, [x0,#8] ffff8000113a6a24: 6b1f003f cmp w1, wzr ffff8000113a6a28: 540001ac b.gt ffff8000113a6a5c ret = netif_rx_internal(skb); ffff8000113a6a2c: aa1403e0 mov x0, x20 ffff8000113a6a30: 97ffff8c bl ffff8000113a6860 ffff8000113a6a34: 2a0003f4 mov w20, w0 ffff8000113a6a38: 90000000 adrp x0, 0 <__tracepoint_netif_rx_exit> ffff8000113a6a38: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_netif_rx_exit ffff8000113a6a3c: 91000000 add x0, x0, #0x0 ffff8000113a6a3c: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_netif_rx_exit ffff8000113a6a40: b9400801 ldr w1, [x0,#8] ffff8000113a6a44: 6b1f003f cmp w1, wzr ffff8000113a6a48: 5400034c b.gt ffff8000113a6ab0 } ffff8000113a6a4c: 2a1403e0 mov w0, w20 ffff8000113a6a50: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a6a54: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a6a58: d65f03c0 ret TP_PROTO(const struct sk_buff *skb), TP_ARGS(skb) ); DEFINE_EVENT(net_dev_rx_verbose_template, netif_rx_entry, ffff8000113a6a5c: 90000001 adrp x1, 0 ffff8000113a6a5c: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113a6a60: d538d082 mrs x2, tpidr_el1 ffff8000113a6a64: 91000021 add x1, x1, #0x0 ffff8000113a6a64: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a6a68: b8616841 ldr w1, [x2,x1] ffff8000113a6a6c: 52800803 mov w3, #0x40 // #64 ffff8000113a6a70: 1ac30c23 sdiv w3, w1, w3 ffff8000113a6a74: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113a6a74: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113a6a78: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113a6a7c: 91000042 add x2, x2, #0x0 ffff8000113a6a7c: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113a6a80: f8626862 ldr x2, [x3,x2] ffff8000113a6a84: 9ac12441 lsr x1, x2, x1 ffff8000113a6a88: 3607fd21 tbz w1, #0, ffff8000113a6a2c ffff8000113a6a8c: f9401013 ldr x19, [x0,#32] ffff8000113a6a90: b40000f3 cbz x19, ffff8000113a6aac ffff8000113a6a94: f9400262 ldr x2, [x19] ffff8000113a6a98: f9400660 ldr x0, [x19,#8] ffff8000113a6a9c: aa1403e1 mov x1, x20 ffff8000113a6aa0: d63f0040 blr x2 ffff8000113a6aa4: f8418e62 ldr x2, [x19,#24]! ffff8000113a6aa8: b5ffff82 cbnz x2, ffff8000113a6a98 ffff8000113a6aac: 17ffffe0 b ffff8000113a6a2c TP_PROTO(int ret), TP_ARGS(ret) ); DEFINE_EVENT(net_dev_rx_exit_template, netif_rx_exit, ffff8000113a6ab0: 90000001 adrp x1, 0 ffff8000113a6ab0: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113a6ab4: d538d082 mrs x2, tpidr_el1 ffff8000113a6ab8: 91000021 add x1, x1, #0x0 ffff8000113a6ab8: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a6abc: b8616841 ldr w1, [x2,x1] ffff8000113a6ac0: 52800803 mov w3, #0x40 // #64 ffff8000113a6ac4: 1ac30c23 sdiv w3, w1, w3 ffff8000113a6ac8: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113a6ac8: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113a6acc: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113a6ad0: 91000042 add x2, x2, #0x0 ffff8000113a6ad0: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113a6ad4: f8626862 ldr x2, [x3,x2] ffff8000113a6ad8: 9ac12441 lsr x1, x2, x1 ffff8000113a6adc: 3607fb81 tbz w1, #0, ffff8000113a6a4c ffff8000113a6ae0: f9401013 ldr x19, [x0,#32] ffff8000113a6ae4: b40000f3 cbz x19, ffff8000113a6b00 ffff8000113a6ae8: f9400262 ldr x2, [x19] ffff8000113a6aec: f9400660 ldr x0, [x19,#8] ffff8000113a6af0: 2a1403e1 mov w1, w20 ffff8000113a6af4: d63f0040 blr x2 ffff8000113a6af8: f8418e62 ldr x2, [x19,#24]! ffff8000113a6afc: b5ffff82 cbnz x2, ffff8000113a6aec ffff8000113a6b00: 2a1403e0 mov w0, w20 ffff8000113a6b04: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a6b08: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a6b0c: d65f03c0 ret ffff8000113a6b10 : { ffff8000113a6b10: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a6b14: 910003fd mov x29, sp ffff8000113a6b18: a90153f3 stp x19, x20, [sp,#16] ffff8000113a6b1c: aa0003f4 mov x20, x0 ffff8000113a6b20: aa1e03e0 mov x0, x30 ffff8000113a6b24: 94000000 bl 0 <_mcount> ffff8000113a6b24: R_AARCH64_CALL26 _mcount ffff8000113a6b28: 90000000 adrp x0, 0 <__tracepoint_netif_rx_ni_entry> ffff8000113a6b28: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_netif_rx_ni_entry ffff8000113a6b2c: 91000000 add x0, x0, #0x0 ffff8000113a6b2c: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_netif_rx_ni_entry ffff8000113a6b30: b9400801 ldr w1, [x0,#8] ffff8000113a6b34: 6b1f003f cmp w1, wzr ffff8000113a6b38: 5400026c b.gt ffff8000113a6b84 err = netif_rx_internal(skb); ffff8000113a6b3c: aa1403e0 mov x0, x20 ffff8000113a6b40: 97ffff48 bl ffff8000113a6860 ffff8000113a6b44: 2a0003f4 mov w20, w0 if (local_softirq_pending()) ffff8000113a6b48: 90000000 adrp x0, 0 ffff8000113a6b48: R_AARCH64_ADR_PREL_PG_HI21 irq_stat ffff8000113a6b4c: 91000000 add x0, x0, #0x0 ffff8000113a6b4c: R_AARCH64_ADD_ABS_LO12_NC irq_stat ffff8000113a6b50: d538d081 mrs x1, tpidr_el1 ffff8000113a6b54: b8606820 ldr w0, [x1,x0] ffff8000113a6b58: 34000040 cbz w0, ffff8000113a6b60 do_softirq(); ffff8000113a6b5c: 94000000 bl 0 ffff8000113a6b5c: R_AARCH64_CALL26 do_softirq ffff8000113a6b60: 90000000 adrp x0, 0 <__tracepoint_netif_rx_ni_exit> ffff8000113a6b60: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_netif_rx_ni_exit ffff8000113a6b64: 91000000 add x0, x0, #0x0 ffff8000113a6b64: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_netif_rx_ni_exit ffff8000113a6b68: b9400801 ldr w1, [x0,#8] ffff8000113a6b6c: 6b1f003f cmp w1, wzr ffff8000113a6b70: 5400034c b.gt ffff8000113a6bd8 } ffff8000113a6b74: 2a1403e0 mov w0, w20 ffff8000113a6b78: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a6b7c: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a6b80: d65f03c0 ret DEFINE_EVENT(net_dev_rx_verbose_template, netif_rx_ni_entry, ffff8000113a6b84: 90000001 adrp x1, 0 ffff8000113a6b84: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113a6b88: d538d082 mrs x2, tpidr_el1 ffff8000113a6b8c: 91000021 add x1, x1, #0x0 ffff8000113a6b8c: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a6b90: b8616841 ldr w1, [x2,x1] ffff8000113a6b94: 52800803 mov w3, #0x40 // #64 ffff8000113a6b98: 1ac30c23 sdiv w3, w1, w3 ffff8000113a6b9c: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113a6b9c: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113a6ba0: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113a6ba4: 91000042 add x2, x2, #0x0 ffff8000113a6ba4: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113a6ba8: f8626862 ldr x2, [x3,x2] ffff8000113a6bac: 9ac12441 lsr x1, x2, x1 ffff8000113a6bb0: 3607fc61 tbz w1, #0, ffff8000113a6b3c ffff8000113a6bb4: f9401013 ldr x19, [x0,#32] ffff8000113a6bb8: b40000f3 cbz x19, ffff8000113a6bd4 ffff8000113a6bbc: f9400262 ldr x2, [x19] ffff8000113a6bc0: f9400660 ldr x0, [x19,#8] ffff8000113a6bc4: aa1403e1 mov x1, x20 ffff8000113a6bc8: d63f0040 blr x2 ffff8000113a6bcc: f8418e62 ldr x2, [x19,#24]! ffff8000113a6bd0: b5ffff82 cbnz x2, ffff8000113a6bc0 ffff8000113a6bd4: 17ffffda b ffff8000113a6b3c TP_PROTO(int ret), TP_ARGS(ret) ); DEFINE_EVENT(net_dev_rx_exit_template, netif_rx_ni_exit, ffff8000113a6bd8: 90000001 adrp x1, 0 ffff8000113a6bd8: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113a6bdc: d538d082 mrs x2, tpidr_el1 ffff8000113a6be0: 91000021 add x1, x1, #0x0 ffff8000113a6be0: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a6be4: b8616841 ldr w1, [x2,x1] ffff8000113a6be8: 52800803 mov w3, #0x40 // #64 ffff8000113a6bec: 1ac30c23 sdiv w3, w1, w3 ffff8000113a6bf0: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113a6bf0: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113a6bf4: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113a6bf8: 91000042 add x2, x2, #0x0 ffff8000113a6bf8: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113a6bfc: f8626862 ldr x2, [x3,x2] ffff8000113a6c00: 9ac12441 lsr x1, x2, x1 ffff8000113a6c04: 3607fb81 tbz w1, #0, ffff8000113a6b74 ffff8000113a6c08: f9401013 ldr x19, [x0,#32] ffff8000113a6c0c: b40000f3 cbz x19, ffff8000113a6c28 ffff8000113a6c10: f9400262 ldr x2, [x19] ffff8000113a6c14: f9400660 ldr x0, [x19,#8] ffff8000113a6c18: 2a1403e1 mov w1, w20 ffff8000113a6c1c: d63f0040 blr x2 ffff8000113a6c20: f8418e62 ldr x2, [x19,#24]! ffff8000113a6c24: b5ffff82 cbnz x2, ffff8000113a6c14 ffff8000113a6c28: 2a1403e0 mov w0, w20 ffff8000113a6c2c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a6c30: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a6c34: d65f03c0 ret ffff8000113a6c38 : { ffff8000113a6c38: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a6c3c: 910003fd mov x29, sp ffff8000113a6c40: aa1e03e0 mov x0, x30 ffff8000113a6c44: f9000fa2 str x2, [x29,#24] ffff8000113a6c48: 94000000 bl 0 <_mcount> ffff8000113a6c48: R_AARCH64_CALL26 _mcount skb->mac_header = skb->data - skb->head; ffff8000113a6c4c: f9400fa2 ldr x2, [x29,#24] ffff8000113a6c50: f9406044 ldr x4, [x2,#192] return skb->head + skb->network_header; ffff8000113a6c54: 79416843 ldrh w3, [x2,#180] skb->mac_header = skb->data - skb->head; ffff8000113a6c58: f9406440 ldr x0, [x2,#200] skb->len -= len; ffff8000113a6c5c: b9407041 ldr w1, [x2,#112] return skb->head + skb->network_header; ffff8000113a6c60: 8b030083 add x3, x4, x3 return skb_network_header(skb) - skb->data; ffff8000113a6c64: cb000063 sub x3, x3, x0 BUG_ON(skb->len < skb->data_len); ffff8000113a6c68: b9407445 ldr w5, [x2,#116] skb->len -= len; ffff8000113a6c6c: 4b030021 sub w1, w1, w3 skb->mac_header = skb->data - skb->head; ffff8000113a6c70: cb040004 sub x4, x0, x4 ffff8000113a6c74: 79016c44 strh w4, [x2,#182] skb->len -= len; ffff8000113a6c78: b9007041 str w1, [x2,#112] BUG_ON(skb->len < skb->data_len); ffff8000113a6c7c: 6b05003f cmp w1, w5 ffff8000113a6c80: 54000683 b.cc ffff8000113a6d50 skb->pkt_type = PACKET_LOOPBACK; ffff8000113a6c84: 39420041 ldrb w1, [x2,#128] ffff8000113a6c88: 528000a4 mov w4, #0x5 // #5 return skb->data += len; ffff8000113a6c8c: 8b234000 add x0, x0, w3, uxtw ffff8000113a6c90: 33000881 bfxil w1, w4, #0, #3 skb->ip_summed = CHECKSUM_UNNECESSARY; ffff8000113a6c94: 52800023 mov w3, #0x1 // #1 int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *skb) ffff8000113a6c98: f9402c44 ldr x4, [x2,#88] skb->ip_summed = CHECKSUM_UNNECESSARY; ffff8000113a6c9c: 331b0461 bfi w1, w3, #5, #2 ffff8000113a6ca0: f9006440 str x0, [x2,#200] ffff8000113a6ca4: 39020041 strb w1, [x2,#128] return (struct dst_entry *)(skb->_skb_refdst & SKB_DST_PTRMASK); ffff8000113a6ca8: 927ff880 and x0, x4, #0xfffffffffffffffe WARN_ON(!skb_dst(skb)); ffff8000113a6cac: b40004e0 cbz x0, ffff8000113a6d48 return (skb->_skb_refdst & SKB_DST_NOREF) && skb_dst(skb); ffff8000113a6cb0: 36000204 tbz w4, #0, ffff8000113a6cf0 ffff8000113a6cb4: b9404003 ldr w3, [x0,#64] if (unlikely(c == u)) ffff8000113a6cb8: 34000263 cbz w3, ffff8000113a6d04 ffff8000113a6cbc: 91010001 add x1, x0, #0x40 ffff8000113a6cc0: 2a0303e4 mov w4, w3 } while (!atomic_try_cmpxchg(v, &c, c + a)); ffff8000113a6cc4: 11000466 add w6, w3, #0x1 ffff8000113a6cc8: f9800031 prfm pstl1strm, [x1] ffff8000113a6ccc: 885f7c25 ldxr w5, [x1] ffff8000113a6cd0: 4a0400a7 eor w7, w5, w4 ffff8000113a6cd4: 35000087 cbnz w7, ffff8000113a6ce4 ffff8000113a6cd8: 8807fc26 stlxr w7, w6, [x1] ffff8000113a6cdc: 35ffff87 cbnz w7, ffff8000113a6ccc ffff8000113a6ce0: d5033bbf dmb ish if (unlikely(r != o)) ffff8000113a6ce4: 6b05007f cmp w3, w5 ffff8000113a6ce8: 54000141 b.ne ffff8000113a6d10 WARN_ON(!rcu_read_lock_held()); if (!dst_hold_safe(dst)) dst = NULL; skb->_skb_refdst = (unsigned long)dst; ffff8000113a6cec: f9002c40 str x0, [x2,#88] netif_rx_ni(skb); ffff8000113a6cf0: aa0203e0 mov x0, x2 ffff8000113a6cf4: 94000000 bl ffff8000113a6b10 ffff8000113a6cf4: R_AARCH64_CALL26 netif_rx_ni } ffff8000113a6cf8: 52800000 mov w0, #0x0 // #0 ffff8000113a6cfc: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a6d00: d65f03c0 ret ffff8000113a6d04: d2800000 mov x0, #0x0 // #0 ffff8000113a6d08: f9002c40 str x0, [x2,#88] ffff8000113a6d0c: 17fffff9 b ffff8000113a6cf0 if (unlikely(c == u)) ffff8000113a6d10: 34ffffa5 cbz w5, ffff8000113a6d04 ffff8000113a6d14: 2a0503e3 mov w3, w5 } while (!atomic_try_cmpxchg(v, &c, c + a)); ffff8000113a6d18: 110004a4 add w4, w5, #0x1 __CMPXCHG_CASE(w, , mb_, 32, dmb ish, , l, "memory", K) ffff8000113a6d1c: f9800031 prfm pstl1strm, [x1] ffff8000113a6d20: 885f7c26 ldxr w6, [x1] ffff8000113a6d24: 4a0300c7 eor w7, w6, w3 ffff8000113a6d28: 35000087 cbnz w7, ffff8000113a6d38 ffff8000113a6d2c: 8807fc24 stlxr w7, w4, [x1] ffff8000113a6d30: 35ffff87 cbnz w7, ffff8000113a6d20 ffff8000113a6d34: d5033bbf dmb ish if (unlikely(r != o)) ffff8000113a6d38: 6b0600bf cmp w5, w6 ffff8000113a6d3c: 54fffd80 b.eq ffff8000113a6cec ffff8000113a6d40: 2a0603e5 mov w5, w6 ffff8000113a6d44: 17fffff3 b ffff8000113a6d10 WARN_ON(!skb_dst(skb)); ffff8000113a6d48: d4210000 brk #0x800 ffff8000113a6d4c: 17ffffe9 b ffff8000113a6cf0 ffff8000113a6d50: 94000000 bl ffff80001139e37c <__my_cpu_offset> ffff8000113a6d50: R_AARCH64_CALL26 .text.unlikely+0xa0 ffff8000113a6d54 : { ffff8000113a6d54: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a6d58: 910003fd mov x29, sp ffff8000113a6d5c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a6d60: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a6d64: f9001bf7 str x23, [sp,#48] ffff8000113a6d68: 2a0003f3 mov w19, w0 ffff8000113a6d6c: aa1e03e0 mov x0, x30 ffff8000113a6d70: 94000000 bl 0 <_mcount> ffff8000113a6d70: R_AARCH64_CALL26 _mcount asm volatile(ALTERNATIVE( ffff8000113a6d74: d2800c00 mov x0, #0x60 // #96 ffff8000113a6d78: d50342df msr daifset, #0x2 cpu = smp_processor_id(); ffff8000113a6d7c: 90000001 adrp x1, 0 ffff8000113a6d7c: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113a6d80: 91000021 add x1, x1, #0x0 ffff8000113a6d80: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a6d84: d538d080 mrs x0, tpidr_el1 sd = &per_cpu(softnet_data, cpu); ffff8000113a6d88: b8616800 ldr w0, [x0,x1] ffff8000113a6d8c: 90000001 adrp x1, 0 <__per_cpu_offset> ffff8000113a6d8c: R_AARCH64_ADR_PREL_PG_HI21 __per_cpu_offset ffff8000113a6d90: 91000021 add x1, x1, #0x0 ffff8000113a6d90: R_AARCH64_ADD_ABS_LO12_NC __per_cpu_offset ffff8000113a6d94: f8607835 ldr x21, [x1,x0,lsl #3] ffff8000113a6d98: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113a6d98: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned ffff8000113a6d9c: 91000294 add x20, x20, #0x0 ffff8000113a6d9c: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a6da0: 8b150295 add x21, x20, x21 oldsd = &per_cpu(softnet_data, oldcpu); ffff8000113a6da4: f8735820 ldr x0, [x1,w19,uxtw #3] while (*list_skb) ffff8000113a6da8: f9402ea1 ldr x1, [x21,#88] oldsd = &per_cpu(softnet_data, oldcpu); ffff8000113a6dac: 8b000294 add x20, x20, x0 while (*list_skb) ffff8000113a6db0: b5000061 cbnz x1, ffff8000113a6dbc ffff8000113a6db4: 14000060 b ffff8000113a6f34 ffff8000113a6db8: aa0003e1 mov x1, x0 ffff8000113a6dbc: f9400020 ldr x0, [x1] ffff8000113a6dc0: b5ffffc0 cbnz x0, ffff8000113a6db8 *list_skb = oldsd->completion_queue; ffff8000113a6dc4: f9402e80 ldr x0, [x20,#88] ffff8000113a6dc8: f9000020 str x0, [x1] if (oldsd->output_queue) { ffff8000113a6dcc: f9402681 ldr x1, [x20,#72] oldsd->completion_queue = NULL; ffff8000113a6dd0: f9002e9f str xzr, [x20,#88] if (oldsd->output_queue) { ffff8000113a6dd4: b4000101 cbz x1, ffff8000113a6df4 *sd->output_queue_tailp = oldsd->output_queue; ffff8000113a6dd8: f9402aa2 ldr x2, [x21,#80] oldsd->output_queue = NULL; ffff8000113a6ddc: aa1403e0 mov x0, x20 *sd->output_queue_tailp = oldsd->output_queue; ffff8000113a6de0: f9000041 str x1, [x2] sd->output_queue_tailp = oldsd->output_queue_tailp; ffff8000113a6de4: f9402a81 ldr x1, [x20,#80] ffff8000113a6de8: f9002aa1 str x1, [x21,#80] oldsd->output_queue = NULL; ffff8000113a6dec: f8048c1f str xzr, [x0,#72]! oldsd->output_queue_tailp = &oldsd->output_queue; ffff8000113a6df0: f9002a80 str x0, [x20,#80] if (napi->poll == process_backlog) ffff8000113a6df4: 90000017 adrp x23, ffff80001139e37c <__my_cpu_offset> ffff8000113a6df4: R_AARCH64_ADR_PREL_PG_HI21 .text+0xd00c ffff8000113a6df8: 910002f7 add x23, x23, #0x0 ffff8000113a6df8: R_AARCH64_ADD_ABS_LO12_NC .text+0xd00c ffff8000113a6dfc: f9400280 ldr x0, [x20] while (!list_empty(&oldsd->poll_list)) { ffff8000113a6e00: eb00029f cmp x20, x0 ffff8000113a6e04: 540003e0 b.eq ffff8000113a6e80 struct napi_struct *napi = list_first_entry(&oldsd->poll_list, ffff8000113a6e08: f9400293 ldr x19, [x20] if (!__list_del_entry_valid(entry)) ffff8000113a6e0c: aa1303e0 mov x0, x19 ffff8000113a6e10: 94000000 bl 0 <__list_del_entry_valid> ffff8000113a6e10: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113a6e14: 53001c01 uxtb w1, w0 if (!__list_add_valid(new, prev, next)) ffff8000113a6e18: aa1503e2 mov x2, x21 ffff8000113a6e1c: aa1303e0 mov x0, x19 if (!__list_del_entry_valid(entry)) ffff8000113a6e20: 340000a1 cbz w1, ffff8000113a6e34 __list_del(entry->prev, entry->next); ffff8000113a6e24: f9400661 ldr x1, [x19,#8] ffff8000113a6e28: f9400263 ldr x3, [x19] next->prev = prev; ffff8000113a6e2c: f9000461 str x1, [x3,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a6e30: f9000023 str x3, [x1] if (napi->poll == process_backlog) ffff8000113a6e34: f9401661 ldr x1, [x19,#40] ffff8000113a6e38: f9000273 str x19, [x19] list->prev = list; ffff8000113a6e3c: f9000673 str x19, [x19,#8] ffff8000113a6e40: eb17003f cmp x1, x23 ffff8000113a6e44: 54000740 b.eq ffff8000113a6f2c __list_add(new, head->prev, head); ffff8000113a6e48: f94006b6 ldr x22, [x21,#8] if (!__list_add_valid(new, prev, next)) ffff8000113a6e4c: aa1603e1 mov x1, x22 ffff8000113a6e50: 94000000 bl 0 <__list_add_valid> ffff8000113a6e50: R_AARCH64_CALL26 __list_add_valid ffff8000113a6e54: 53001c01 uxtb w1, w0 __raise_softirq_irqoff(NET_RX_SOFTIRQ); ffff8000113a6e58: 52800060 mov w0, #0x3 // #3 ffff8000113a6e5c: 340000a1 cbz w1, ffff8000113a6e70 next->prev = new; ffff8000113a6e60: f90006b3 str x19, [x21,#8] new->next = next; ffff8000113a6e64: f9000275 str x21, [x19] new->prev = prev; ffff8000113a6e68: f9000676 str x22, [x19,#8] ffff8000113a6e6c: f90002d3 str x19, [x22] ffff8000113a6e70: 94000000 bl 0 <__raise_softirq_irqoff> ffff8000113a6e70: R_AARCH64_CALL26 __raise_softirq_irqoff __READ_ONCE_SIZE; ffff8000113a6e74: f9400280 ldr x0, [x20] while (!list_empty(&oldsd->poll_list)) { ffff8000113a6e78: eb00029f cmp x20, x0 ffff8000113a6e7c: 54fffc61 b.ne ffff8000113a6e08 raise_softirq_irqoff(NET_TX_SOFTIRQ); ffff8000113a6e80: 52800040 mov w0, #0x2 // #2 ffff8000113a6e84: 94000000 bl 0 ffff8000113a6e84: R_AARCH64_CALL26 raise_softirq_irqoff asm volatile(ALTERNATIVE( ffff8000113a6e88: d2801c00 mov x0, #0xe0 // #224 ffff8000113a6e8c: d50342ff msr daifclr, #0x2 remsd = oldsd->rps_ipi_list; ffff8000113a6e90: f9401e80 ldr x0, [x20,#56] oldsd->rps_ipi_list = NULL; ffff8000113a6e94: f9001e9f str xzr, [x20,#56] net_rps_send_ipi(remsd); ffff8000113a6e98: 97ffe964 bl ffff8000113a1428 struct sk_buff *skb = list_->next; ffff8000113a6e9c: f9400a81 ldr x1, [x20,#16] while ((skb = __skb_dequeue(&oldsd->process_queue))) { ffff8000113a6ea0: 91004293 add x19, x20, #0x10 if (skb == (struct sk_buff *)list_) ffff8000113a6ea4: eb01027f cmp x19, x1 ffff8000113a6ea8: 54000260 b.eq ffff8000113a6ef4 if (skb) ffff8000113a6eac: b4000241 cbz x1, ffff8000113a6ef4 WRITE_ONCE(list->qlen, list->qlen - 1); ffff8000113a6eb0: b9401262 ldr w2, [x19,#16] netif_rx_ni(skb); ffff8000113a6eb4: aa0103e0 mov x0, x1 ffff8000113a6eb8: 51000442 sub w2, w2, #0x1 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113a6ebc: b9002282 str w2, [x20,#32] next = skb->next; ffff8000113a6ec0: f9400023 ldr x3, [x1] prev = skb->prev; ffff8000113a6ec4: f9400422 ldr x2, [x1,#8] skb->next = skb->prev = NULL; ffff8000113a6ec8: f900003f str xzr, [x1] ffff8000113a6ecc: f900043f str xzr, [x1,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a6ed0: f9000462 str x2, [x3,#8] ffff8000113a6ed4: f9000043 str x3, [x2] ffff8000113a6ed8: 94000000 bl ffff8000113a6b10 ffff8000113a6ed8: R_AARCH64_CALL26 netif_rx_ni sd->input_queue_head++; ffff8000113a6edc: b9408280 ldr w0, [x20,#128] ffff8000113a6ee0: 11000400 add w0, w0, #0x1 ffff8000113a6ee4: b9008280 str w0, [x20,#128] struct sk_buff *skb = list_->next; ffff8000113a6ee8: f9400261 ldr x1, [x19] if (skb == (struct sk_buff *)list_) ffff8000113a6eec: eb13003f cmp x1, x19 ffff8000113a6ef0: 54fffde1 b.ne ffff8000113a6eac ffff8000113a6ef4: 9103e293 add x19, x20, #0xf8 ffff8000113a6ef8: 14000005 b ffff8000113a6f0c netif_rx_ni(skb); ffff8000113a6efc: 94000000 bl ffff8000113a6b10 ffff8000113a6efc: R_AARCH64_CALL26 netif_rx_ni ffff8000113a6f00: b9408281 ldr w1, [x20,#128] ffff8000113a6f04: 11000421 add w1, w1, #0x1 ffff8000113a6f08: b9008281 str w1, [x20,#128] while ((skb = skb_dequeue(&oldsd->input_pkt_queue))) { ffff8000113a6f0c: aa1303e0 mov x0, x19 ffff8000113a6f10: 94000000 bl 0 ffff8000113a6f10: R_AARCH64_CALL26 skb_dequeue ffff8000113a6f14: b5ffff40 cbnz x0, ffff8000113a6efc } ffff8000113a6f18: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a6f1c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a6f20: f9401bf7 ldr x23, [sp,#48] ffff8000113a6f24: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a6f28: d65f03c0 ret napi->state = 0; ffff8000113a6f2c: f9000a7f str xzr, [x19,#16] ffff8000113a6f30: 17ffffb3 b ffff8000113a6dfc list_skb = &sd->completion_queue; ffff8000113a6f34: 910162a1 add x1, x21, #0x58 ffff8000113a6f38: 17ffffa3 b ffff8000113a6dc4 ffff8000113a6f3c : { ffff8000113a6f3c: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a6f40: 910003fd mov x29, sp ffff8000113a6f44: a90153f3 stp x19, x20, [sp,#16] ffff8000113a6f48: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a6f4c: f9001bf7 str x23, [sp,#48] ffff8000113a6f50: aa0003f5 mov x21, x0 ffff8000113a6f54: aa1e03e0 mov x0, x30 ffff8000113a6f58: aa0203f3 mov x19, x2 ffff8000113a6f5c: aa0103f6 mov x22, x1 ffff8000113a6f60: 94000000 bl 0 <_mcount> ffff8000113a6f60: R_AARCH64_CALL26 _mcount if (len >= IFALIASZ) ffff8000113a6f64: f103fe7f cmp x19, #0xff ffff8000113a6f68: 54000468 b.hi ffff8000113a6ff4 if (len) { ffff8000113a6f6c: b4000413 cbz x19, ffff8000113a6fec kmalloc_caches[kmalloc_type(flags)][index], flags, size); #endif } return __kmalloc(size, flags); ffff8000113a6f70: 91004660 add x0, x19, #0x11 ffff8000113a6f74: 52819801 mov w1, #0xcc0 // #3264 ffff8000113a6f78: 94000000 bl 0 <__kmalloc> ffff8000113a6f78: R_AARCH64_CALL26 __kmalloc ffff8000113a6f7c: aa0003f4 mov x20, x0 if (!new_alias) ffff8000113a6f80: b40003e0 cbz x0, ffff8000113a6ffc return __builtin_memcpy(p, q, size); ffff8000113a6f84: 91004000 add x0, x0, #0x10 ffff8000113a6f88: aa1603e1 mov x1, x22 ffff8000113a6f8c: aa1303e2 mov x2, x19 ffff8000113a6f90: 94000000 bl 0 ffff8000113a6f90: R_AARCH64_CALL26 memcpy new_alias->ifalias[len] = 0; ffff8000113a6f94: 8b130280 add x0, x20, x19 ffff8000113a6f98: 3900401f strb wzr, [x0,#16] mutex_lock(&ifalias_mutex); ffff8000113a6f9c: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113a6f9c: R_AARCH64_ADR_PREL_PG_HI21 .data ffff8000113a6fa0: 910002d6 add x22, x22, #0x0 ffff8000113a6fa0: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113a6fa4: 9102c2d6 add x22, x22, #0xb0 ffff8000113a6fa8: aa1603e0 mov x0, x22 ffff8000113a6fac: 94000000 bl 0 ffff8000113a6fac: R_AARCH64_CALL26 mutex_lock new_alias = rcu_replace_pointer(dev->ifalias, new_alias, ffff8000113a6fb0: 910062b5 add x21, x21, #0x18 ffff8000113a6fb4: f94002b7 ldr x23, [x21] ffff8000113a6fb8: c89ffeb4 stlr x20, [x21] mutex_unlock(&ifalias_mutex); ffff8000113a6fbc: aa1603e0 mov x0, x22 ffff8000113a6fc0: 94000000 bl 0 ffff8000113a6fc0: R_AARCH64_CALL26 mutex_unlock if (new_alias) ffff8000113a6fc4: b4000097 cbz x23, ffff8000113a6fd4 kfree_rcu(new_alias, rcuhead); ffff8000113a6fc8: aa1703e0 mov x0, x23 ffff8000113a6fcc: d2800001 mov x1, #0x0 // #0 ffff8000113a6fd0: 94000000 bl 0 ffff8000113a6fd0: R_AARCH64_CALL26 kfree_call_rcu return len; ffff8000113a6fd4: 2a1303e0 mov w0, w19 } ffff8000113a6fd8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a6fdc: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a6fe0: f9401bf7 ldr x23, [sp,#48] ffff8000113a6fe4: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a6fe8: d65f03c0 ret ffff8000113a6fec: aa1303f4 mov x20, x19 ffff8000113a6ff0: 17ffffeb b ffff8000113a6f9c return -EINVAL; ffff8000113a6ff4: 128002a0 mov w0, #0xffffffea // #-22 ffff8000113a6ff8: 17fffff8 b ffff8000113a6fd8 return -ENOMEM; ffff8000113a6ffc: 12800160 mov w0, #0xfffffff4 // #-12 ffff8000113a7000: 17fffff6 b ffff8000113a6fd8 ffff8000113a7004 <__netdev_adjacent_dev_insert>: { ffff8000113a7004: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113a7008: 910003fd mov x29, sp ffff8000113a700c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a7010: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a7014: a90363f7 stp x23, x24, [sp,#48] ffff8000113a7018: f90023f9 str x25, [sp,#64] ffff8000113a701c: aa0003f5 mov x21, x0 ffff8000113a7020: aa1e03e0 mov x0, x30 ffff8000113a7024: aa0203f3 mov x19, x2 ffff8000113a7028: aa0103f4 mov x20, x1 ffff8000113a702c: aa0303f7 mov x23, x3 ffff8000113a7030: 53001c96 uxtb w22, w4 ffff8000113a7034: 94000000 bl 0 <_mcount> ffff8000113a7034: R_AARCH64_CALL26 _mcount list_for_each_entry(adj, adj_list, list) { ffff8000113a7038: f9400261 ldr x1, [x19] ffff8000113a703c: eb01027f cmp x19, x1 ffff8000113a7040: d1006027 sub x7, x1, #0x18 ffff8000113a7044: 54000180 b.eq ffff8000113a7074 <__netdev_adjacent_dev_insert+0x70> if (adj->dev == adj_dev) ffff8000113a7048: f85e8021 ldur x1, [x1,#-24] ffff8000113a704c: eb01029f cmp x20, x1 ffff8000113a7050: 540000a1 b.ne ffff8000113a7064 <__netdev_adjacent_dev_insert+0x60> ffff8000113a7054: 14000041 b ffff8000113a7158 <__netdev_adjacent_dev_insert+0x154> ffff8000113a7058: f85e80c6 ldur x6, [x6,#-24] ffff8000113a705c: eb06029f cmp x20, x6 ffff8000113a7060: 540007c0 b.eq ffff8000113a7158 <__netdev_adjacent_dev_insert+0x154> list_for_each_entry(adj, adj_list, list) { ffff8000113a7064: f9400ce6 ldr x6, [x7,#24] ffff8000113a7068: eb06027f cmp x19, x6 ffff8000113a706c: d10060c7 sub x7, x6, #0x18 ffff8000113a7070: 54ffff41 b.ne ffff8000113a7058 <__netdev_adjacent_dev_insert+0x54> return kmem_cache_alloc_trace( ffff8000113a7074: 90000000 adrp x0, 0 ffff8000113a7074: R_AARCH64_ADR_PREL_PG_HI21 kmalloc_caches+0x38 ffff8000113a7078: f9400000 ldr x0, [x0] ffff8000113a7078: R_AARCH64_LDST64_ABS_LO12_NC kmalloc_caches+0x38 ffff8000113a707c: 52819801 mov w1, #0xcc0 // #3264 ffff8000113a7080: d2800702 mov x2, #0x38 // #56 ffff8000113a7084: 94000000 bl 0 ffff8000113a7084: R_AARCH64_CALL26 kmem_cache_alloc_trace ffff8000113a7088: aa0003f8 mov x24, x0 if (!adj) ffff8000113a708c: b4000f00 cbz x0, ffff8000113a726c <__netdev_adjacent_dev_insert+0x268> adj->dev = adj_dev; ffff8000113a7090: f9000014 str x20, [x0] adj->master = master; ffff8000113a7094: 39002016 strb w22, [x0,#8] adj->ref_nr = 1; ffff8000113a7098: 52800020 mov w0, #0x1 // #1 ffff8000113a709c: 79001700 strh w0, [x24,#10] adj->private = private; ffff8000113a70a0: f9000b17 str x23, [x24,#16] adj->ignore = false; ffff8000113a70a4: 3900271f strb wzr, [x24,#9] PERCPU_OP(add, add, stadd) ffff8000113a70a8: 52800022 mov w2, #0x1 // #1 this_cpu_inc(*dev->pcpu_refcnt); ffff8000113a70ac: f9426280 ldr x0, [x20,#1216] asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff8000113a70b0: d538d081 mrs x1, tpidr_el1 PERCPU_OP(add, add, stadd) ffff8000113a70b4: 8b000025 add x5, x1, x0 ffff8000113a70b8: 885f7ca4 ldxr w4, [x5] ffff8000113a70bc: 0b020084 add w4, w4, w2 ffff8000113a70c0: 88037ca4 stxr w3, w4, [x5] ffff8000113a70c4: 35ffffa3 cbnz w3, ffff8000113a70b8 <__netdev_adjacent_dev_insert+0xb4> pr_debug("Insert adjacency: dev %s adj_dev %s adj->ref_nr %d; dev_hold on %s\n", ffff8000113a70c8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a70c8: R_AARCH64_ADR_PREL_PG_HI21 __verbose ffff8000113a70cc: 91000000 add x0, x0, #0x0 ffff8000113a70cc: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113a70d0: 91028000 add x0, x0, #0xa0 ffff8000113a70d4: 79404401 ldrh w1, [x0,#34] ffff8000113a70d8: 37100da1 tbnz w1, #2, ffff8000113a728c <__netdev_adjacent_dev_insert+0x288> return (dev_list == &dev->adj_list.upper || ffff8000113a70dc: 9102a2b9 add x25, x21, #0xa8 dev_list == &dev->adj_list.lower) && ffff8000113a70e0: eb19027f cmp x19, x25 ffff8000113a70e4: 540007a0 b.eq ffff8000113a71d8 <__netdev_adjacent_dev_insert+0x1d4> ffff8000113a70e8: 9102e2a0 add x0, x21, #0xb8 return (dev_list == &dev->adj_list.upper || ffff8000113a70ec: eb00027f cmp x19, x0 ffff8000113a70f0: 54000740 b.eq ffff8000113a71d8 <__netdev_adjacent_dev_insert+0x1d4> if (master) { ffff8000113a70f4: 34000576 cbz w22, ffff8000113a71a0 <__netdev_adjacent_dev_insert+0x19c> ret = sysfs_create_link(&(dev->dev.kobj), ffff8000113a70f8: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113a70f8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x540 ffff8000113a70fc: 911442a0 add x0, x21, #0x510 ffff8000113a7100: 91144281 add x1, x20, #0x510 ffff8000113a7104: 91000042 add x2, x2, #0x0 ffff8000113a7104: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x540 ffff8000113a7108: 94000000 bl 0 ffff8000113a7108: R_AARCH64_CALL26 sysfs_create_link ffff8000113a710c: 2a0003f7 mov w23, w0 if (ret) ffff8000113a7110: 34000920 cbz w0, ffff8000113a7234 <__netdev_adjacent_dev_insert+0x230> dev_list == &dev->adj_list.lower) && ffff8000113a7114: eb19027f cmp x19, x25 ffff8000113a7118: 540007c0 b.eq ffff8000113a7210 <__netdev_adjacent_dev_insert+0x20c> ffff8000113a711c: 9102e2a0 add x0, x21, #0xb8 return (dev_list == &dev->adj_list.upper || ffff8000113a7120: eb00027f cmp x19, x0 ffff8000113a7124: 54000760 b.eq ffff8000113a7210 <__netdev_adjacent_dev_insert+0x20c> kfree(adj); ffff8000113a7128: aa1803e0 mov x0, x24 ffff8000113a712c: 94000000 bl 0 ffff8000113a712c: R_AARCH64_CALL26 kfree ffff8000113a7130: 12800000 mov w0, #0xffffffff // #-1 this_cpu_dec(*dev->pcpu_refcnt); ffff8000113a7134: f9426281 ldr x1, [x20,#1216] asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff8000113a7138: d538d082 mrs x2, tpidr_el1 PERCPU_OP(add, add, stadd) ffff8000113a713c: 8b010045 add x5, x2, x1 ffff8000113a7140: 885f7ca4 ldxr w4, [x5] ffff8000113a7144: 0b000084 add w4, w4, w0 ffff8000113a7148: 88037ca4 stxr w3, w4, [x5] ffff8000113a714c: 35ffffa3 cbnz w3, ffff8000113a7140 <__netdev_adjacent_dev_insert+0x13c> return ret; ffff8000113a7150: 2a1703f3 mov w19, w23 ffff8000113a7154: 1400000c b ffff8000113a7184 <__netdev_adjacent_dev_insert+0x180> if (adj) { ffff8000113a7158: b4fff8e7 cbz x7, ffff8000113a7074 <__netdev_adjacent_dev_insert+0x70> adj->ref_nr += 1; ffff8000113a715c: 794014e4 ldrh w4, [x7,#10] pr_debug("Insert adjacency: dev %s adj_dev %s adj->ref_nr %d\n", ffff8000113a7160: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a7160: R_AARCH64_ADR_PREL_PG_HI21 __verbose adj->ref_nr += 1; ffff8000113a7164: 11000484 add w4, w4, #0x1 pr_debug("Insert adjacency: dev %s adj_dev %s adj->ref_nr %d\n", ffff8000113a7168: 91000000 add x0, x0, #0x0 ffff8000113a7168: R_AARCH64_ADD_ABS_LO12_NC __verbose adj->ref_nr += 1; ffff8000113a716c: 53003c84 uxth w4, w4 ffff8000113a7170: 790014e4 strh w4, [x7,#10] pr_debug("Insert adjacency: dev %s adj_dev %s adj->ref_nr %d\n", ffff8000113a7174: 9101e000 add x0, x0, #0x78 ffff8000113a7178: 79404401 ldrh w1, [x0,#34] return 0; ffff8000113a717c: 52800013 mov w19, #0x0 // #0 pr_debug("Insert adjacency: dev %s adj_dev %s adj->ref_nr %d\n", ffff8000113a7180: 371007a1 tbnz w1, #2, ffff8000113a7274 <__netdev_adjacent_dev_insert+0x270> } ffff8000113a7184: 2a1303e0 mov w0, w19 ffff8000113a7188: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a718c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a7190: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a7194: f94023f9 ldr x25, [sp,#64] ffff8000113a7198: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a719c: d65f03c0 ret __list_add_rcu(new, head->prev, head); ffff8000113a71a0: f9400675 ldr x21, [x19,#8] list_add_tail_rcu(&adj->list, dev_list); ffff8000113a71a4: 91006314 add x20, x24, #0x18 if (!__list_add_valid(new, prev, next)) ffff8000113a71a8: aa1403e0 mov x0, x20 ffff8000113a71ac: aa1503e1 mov x1, x21 ffff8000113a71b0: aa1303e2 mov x2, x19 ffff8000113a71b4: 94000000 bl 0 <__list_add_valid> ffff8000113a71b4: R_AARCH64_CALL26 __list_add_valid ffff8000113a71b8: 53001c00 uxtb w0, w0 ffff8000113a71bc: 34000260 cbz w0, ffff8000113a7208 <__netdev_adjacent_dev_insert+0x204> new->next = next; ffff8000113a71c0: f9000f13 str x19, [x24,#24] new->prev = prev; ffff8000113a71c4: f9000695 str x21, [x20,#8] rcu_assign_pointer(list_next_rcu(prev), new); ffff8000113a71c8: c89ffeb4 stlr x20, [x21] next->prev = new; ffff8000113a71cc: f9000674 str x20, [x19,#8] return 0; ffff8000113a71d0: 2a1603f3 mov w19, w22 ffff8000113a71d4: 17ffffec b ffff8000113a7184 <__netdev_adjacent_dev_insert+0x180> dev_list == &dev->adj_list.lower) && ffff8000113a71d8: f9427aa1 ldr x1, [x21,#1264] ffff8000113a71dc: f9427a80 ldr x0, [x20,#1264] ffff8000113a71e0: eb00003f cmp x1, x0 ffff8000113a71e4: 54fff881 b.ne ffff8000113a70f4 <__netdev_adjacent_dev_insert+0xf0> ret = netdev_adjacent_sysfs_add(dev, adj_dev, dev_list); ffff8000113a71e8: aa1503e0 mov x0, x21 ffff8000113a71ec: aa1403e1 mov x1, x20 ffff8000113a71f0: aa1303e2 mov x2, x19 ffff8000113a71f4: 97ffe745 bl ffff8000113a0f08 ffff8000113a71f8: 2a0003f7 mov w23, w0 if (ret) ffff8000113a71fc: 35fff960 cbnz w0, ffff8000113a7128 <__netdev_adjacent_dev_insert+0x124> if (master) { ffff8000113a7200: 35fff7d6 cbnz w22, ffff8000113a70f8 <__netdev_adjacent_dev_insert+0xf4> ffff8000113a7204: 17ffffe7 b ffff8000113a71a0 <__netdev_adjacent_dev_insert+0x19c> return 0; ffff8000113a7208: 52800013 mov w19, #0x0 // #0 ffff8000113a720c: 17ffffde b ffff8000113a7184 <__netdev_adjacent_dev_insert+0x180> dev_list == &dev->adj_list.lower) && ffff8000113a7210: f9427aa1 ldr x1, [x21,#1264] ffff8000113a7214: f9427a80 ldr x0, [x20,#1264] ffff8000113a7218: eb00003f cmp x1, x0 ffff8000113a721c: 54fff861 b.ne ffff8000113a7128 <__netdev_adjacent_dev_insert+0x124> netdev_adjacent_sysfs_del(dev, adj_dev->name, dev_list); ffff8000113a7220: aa1503e0 mov x0, x21 ffff8000113a7224: aa1403e1 mov x1, x20 ffff8000113a7228: aa1303e2 mov x2, x19 ffff8000113a722c: 97ffe75c bl ffff8000113a0f9c ffff8000113a7230: 17ffffbe b ffff8000113a7128 <__netdev_adjacent_dev_insert+0x124> __list_add_rcu(new, head, head->next); ffff8000113a7234: f9400275 ldr x21, [x19] list_add_rcu(&adj->list, dev_list); ffff8000113a7238: 91006314 add x20, x24, #0x18 if (!__list_add_valid(new, prev, next)) ffff8000113a723c: aa1403e0 mov x0, x20 ffff8000113a7240: aa1303e1 mov x1, x19 ffff8000113a7244: aa1503e2 mov x2, x21 ffff8000113a7248: 94000000 bl 0 <__list_add_valid> ffff8000113a7248: R_AARCH64_CALL26 __list_add_valid ffff8000113a724c: 53001c00 uxtb w0, w0 ffff8000113a7250: 34fffdc0 cbz w0, ffff8000113a7208 <__netdev_adjacent_dev_insert+0x204> new->next = next; ffff8000113a7254: f9000f15 str x21, [x24,#24] new->prev = prev; ffff8000113a7258: f9000693 str x19, [x20,#8] rcu_assign_pointer(list_next_rcu(prev), new); ffff8000113a725c: c89ffe74 stlr x20, [x19] next->prev = new; ffff8000113a7260: f90006b4 str x20, [x21,#8] return 0; ffff8000113a7264: 2a1703f3 mov w19, w23 ffff8000113a7268: 17ffffc7 b ffff8000113a7184 <__netdev_adjacent_dev_insert+0x180> return -ENOMEM; ffff8000113a726c: 12800173 mov w19, #0xfffffff4 // #-12 ffff8000113a7270: 17ffffc5 b ffff8000113a7184 <__netdev_adjacent_dev_insert+0x180> pr_debug("Insert adjacency: dev %s adj_dev %s adj->ref_nr %d\n", ffff8000113a7274: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a7274: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x588 ffff8000113a7278: 91000021 add x1, x1, #0x0 ffff8000113a7278: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x588 ffff8000113a727c: aa1503e2 mov x2, x21 ffff8000113a7280: aa1403e3 mov x3, x20 ffff8000113a7284: 94000000 bl 0 <__dynamic_pr_debug> ffff8000113a7284: R_AARCH64_CALL26 __dynamic_pr_debug ffff8000113a7288: 17ffffbf b ffff8000113a7184 <__netdev_adjacent_dev_insert+0x180> pr_debug("Insert adjacency: dev %s adj_dev %s adj->ref_nr %d; dev_hold on %s\n", ffff8000113a728c: 79401704 ldrh w4, [x24,#10] ffff8000113a7290: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a7290: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x5c0 ffff8000113a7294: 91000021 add x1, x1, #0x0 ffff8000113a7294: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x5c0 ffff8000113a7298: aa1503e2 mov x2, x21 ffff8000113a729c: aa1403e3 mov x3, x20 ffff8000113a72a0: aa1403e5 mov x5, x20 ffff8000113a72a4: 94000000 bl 0 <__dynamic_pr_debug> ffff8000113a72a4: R_AARCH64_CALL26 __dynamic_pr_debug ffff8000113a72a8: 17ffff8d b ffff8000113a70dc <__netdev_adjacent_dev_insert+0xd8> ffff8000113a72ac <__netdev_upper_dev_link>: { ffff8000113a72ac: a9b77bfd stp x29, x30, [sp,#-144]! ffff8000113a72b0: 910003fd mov x29, sp ffff8000113a72b4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a72b8: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a72bc: a90363f7 stp x23, x24, [sp,#48] ffff8000113a72c0: f90023f9 str x25, [sp,#64] ffff8000113a72c4: aa0003f3 mov x19, x0 ffff8000113a72c8: aa1e03e0 mov x0, x30 ffff8000113a72cc: aa0103f4 mov x20, x1 ffff8000113a72d0: 53001c55 uxtb w21, w2 ffff8000113a72d4: f9002fa4 str x4, [x29,#88] ffff8000113a72d8: f9002ba5 str x5, [x29,#80] ffff8000113a72dc: 90000016 adrp x22, 0 <__stack_chk_guard> ffff8000113a72dc: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a72e0: aa0303f8 mov x24, x3 ffff8000113a72e4: 94000000 bl 0 <_mcount> ffff8000113a72e4: R_AARCH64_CALL26 _mcount ffff8000113a72e8: f94002c0 ldr x0, [x22] ffff8000113a72e8: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard struct netdev_notifier_changeupper_info changeupper_info = { ffff8000113a72ec: f9402ba5 ldr x5, [x29,#80] ffff8000113a72f0: f9402fa4 ldr x4, [x29,#88] ffff8000113a72f4: 52800037 mov w23, #0x1 // #1 { ffff8000113a72f8: f90047a0 str x0, [x29,#136] struct netdev_notifier_changeupper_info changeupper_info = { ffff8000113a72fc: f90033b3 str x19, [x29,#96] ffff8000113a7300: f90037a5 str x5, [x29,#104] ffff8000113a7304: f9003bb4 str x20, [x29,#112] ffff8000113a7308: 3901e3b5 strb w21, [x29,#120] ffff8000113a730c: 3901e7b7 strb w23, [x29,#121] ffff8000113a7310: f90043a4 str x4, [x29,#128] ASSERT_RTNL(); ffff8000113a7314: 94000000 bl 0 ffff8000113a7314: R_AARCH64_CALL26 rtnl_is_locked ffff8000113a7318: 34000ec0 cbz w0, ffff8000113a74f0 <__netdev_upper_dev_link+0x244> if (dev == upper_dev) ffff8000113a731c: eb14027f cmp x19, x20 ffff8000113a7320: 54000360 b.eq ffff8000113a738c <__netdev_upper_dev_link+0xe0> if (__netdev_has_upper_dev(upper_dev, dev)) ffff8000113a7324: aa1403e0 mov x0, x20 ffff8000113a7328: aa1303e1 mov x1, x19 ffff8000113a732c: 97ffe31b bl ffff80001139ff98 <__netdev_has_upper_dev> ffff8000113a7330: 53001c00 uxtb w0, w0 ffff8000113a7334: 350002c0 cbnz w0, ffff8000113a738c <__netdev_upper_dev_link+0xe0> if ((dev->lower_level + upper_dev->upper_level) > MAX_NEST_DEV) ffff8000113a7338: 3949c661 ldrb w1, [x19,#625] ffff8000113a733c: 3949c280 ldrb w0, [x20,#624] ffff8000113a7340: 0b000020 add w0, w1, w0 ffff8000113a7344: 7100201f cmp w0, #0x8 ffff8000113a7348: 54000acc b.gt ffff8000113a74a0 <__netdev_upper_dev_link+0x1f4> if (!master) { ffff8000113a734c: 34000255 cbz w21, ffff8000113a7394 <__netdev_upper_dev_link+0xe8> ASSERT_RTNL(); ffff8000113a7350: 94000000 bl 0 ffff8000113a7350: R_AARCH64_CALL26 rtnl_is_locked ffff8000113a7354: 34000e80 cbz w0, ffff8000113a7524 <__netdev_upper_dev_link+0x278> __READ_ONCE_SIZE; ffff8000113a7358: aa1303e0 mov x0, x19 ffff8000113a735c: f84a8c01 ldr x1, [x0,#168]! if (list_empty(&dev->adj_list.upper)) ffff8000113a7360: eb01001f cmp x0, x1 ffff8000113a7364: 54000220 b.eq ffff8000113a73a8 <__netdev_upper_dev_link+0xfc> upper = list_first_entry(&dev->adj_list.upper, ffff8000113a7368: f9405660 ldr x0, [x19,#168] if (likely(upper->master) && !upper->ignore) ffff8000113a736c: 385f0001 ldurb w1, [x0,#-16] ffff8000113a7370: 340001c1 cbz w1, ffff8000113a73a8 <__netdev_upper_dev_link+0xfc> ffff8000113a7374: 385f1001 ldurb w1, [x0,#-15] ffff8000113a7378: 35000181 cbnz w1, ffff8000113a73a8 <__netdev_upper_dev_link+0xfc> return upper->dev; ffff8000113a737c: f85e8000 ldur x0, [x0,#-24] if (master_dev) ffff8000113a7380: b4000140 cbz x0, ffff8000113a73a8 <__netdev_upper_dev_link+0xfc> return master_dev == upper_dev ? -EEXIST : -EBUSY; ffff8000113a7384: eb00029f cmp x20, x0 ffff8000113a7388: 54000360 b.eq ffff8000113a73f4 <__netdev_upper_dev_link+0x148> ffff8000113a738c: 128001f5 mov w21, #0xfffffff0 // #-16 ffff8000113a7390: 1400000e b ffff8000113a73c8 <__netdev_upper_dev_link+0x11c> if (__netdev_has_upper_dev(dev, upper_dev)) ffff8000113a7394: aa1303e0 mov x0, x19 ffff8000113a7398: aa1403e1 mov x1, x20 ffff8000113a739c: 97ffe2ff bl ffff80001139ff98 <__netdev_has_upper_dev> ffff8000113a73a0: 53001c00 uxtb w0, w0 ffff8000113a73a4: 35000280 cbnz w0, ffff8000113a73f4 <__netdev_upper_dev_link+0x148> ret = call_netdevice_notifiers_info(NETDEV_PRECHANGEUPPER, ffff8000113a73a8: d2800340 mov x0, #0x1a // #26 ffff8000113a73ac: 910183a1 add x1, x29, #0x60 ffff8000113a73b0: 97ffe352 bl ffff8000113a00f8 ret &= ~NOTIFY_STOP_MASK; ffff8000113a73b4: 12107800 and w0, w0, #0xffff7fff return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff8000113a73b8: 7100041f cmp w0, #0x1 ffff8000113a73bc: 5400020d b.le ffff8000113a73fc <__netdev_upper_dev_link+0x150> ffff8000113a73c0: 52800035 mov w21, #0x1 // #1 ffff8000113a73c4: 4b0002b5 sub w21, w21, w0 } ffff8000113a73c8: f94047a2 ldr x2, [x29,#136] ffff8000113a73cc: f94002c1 ldr x1, [x22] ffff8000113a73cc: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a73d0: 2a1503e0 mov w0, w21 ffff8000113a73d4: eb01005f cmp x2, x1 ffff8000113a73d8: 540008a1 b.ne ffff8000113a74ec <__netdev_upper_dev_link+0x240> ffff8000113a73dc: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a73e0: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a73e4: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a73e8: f94023f9 ldr x25, [sp,#64] ffff8000113a73ec: a8c97bfd ldp x29, x30, [sp],#144 ffff8000113a73f0: d65f03c0 ret return -EEXIST; ffff8000113a73f4: 12800215 mov w21, #0xffffffef // #-17 ffff8000113a73f8: 17fffff4 b ffff8000113a73c8 <__netdev_upper_dev_link+0x11c> return __netdev_adjacent_dev_link_lists(dev, upper_dev, ffff8000113a73fc: 9102a277 add x23, x19, #0xa8 ret = __netdev_adjacent_dev_insert(dev, upper_dev, up_list, ffff8000113a7400: 2a1503e4 mov w4, w21 ffff8000113a7404: aa1303e0 mov x0, x19 ffff8000113a7408: aa1403e1 mov x1, x20 ffff8000113a740c: aa1703e2 mov x2, x23 ffff8000113a7410: aa1803e3 mov x3, x24 ffff8000113a7414: 97fffefc bl ffff8000113a7004 <__netdev_adjacent_dev_insert> ffff8000113a7418: 2a0003f5 mov w21, w0 if (ret) ffff8000113a741c: 35fffd60 cbnz w0, ffff8000113a73c8 <__netdev_upper_dev_link+0x11c> return __netdev_adjacent_dev_link_lists(dev, upper_dev, ffff8000113a7420: 9102e299 add x25, x20, #0xb8 ret = __netdev_adjacent_dev_insert(upper_dev, dev, down_list, ffff8000113a7424: aa1803e3 mov x3, x24 ffff8000113a7428: aa1403e0 mov x0, x20 ffff8000113a742c: aa1303e1 mov x1, x19 ffff8000113a7430: aa1903e2 mov x2, x25 ffff8000113a7434: 2a1503e4 mov w4, w21 ffff8000113a7438: 97fffef3 bl ffff8000113a7004 <__netdev_adjacent_dev_insert> ffff8000113a743c: 2a0003f8 mov w24, w0 if (ret) { ffff8000113a7440: 35000240 cbnz w0, ffff8000113a7488 <__netdev_upper_dev_link+0x1dc> ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER, ffff8000113a7444: d28002a0 mov x0, #0x15 // #21 ffff8000113a7448: 910183a1 add x1, x29, #0x60 ffff8000113a744c: 97ffe32b bl ffff8000113a00f8 ret &= ~NOTIFY_STOP_MASK; ffff8000113a7450: 12107803 and w3, w0, #0xffff7fff return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff8000113a7454: 7100047f cmp w3, #0x1 __netdev_adjacent_dev_remove(dev, upper_dev, ref_nr, up_list); ffff8000113a7458: aa1303e0 mov x0, x19 ffff8000113a745c: 5400026d b.le ffff8000113a74a8 <__netdev_upper_dev_link+0x1fc> ffff8000113a7460: aa1403e1 mov x1, x20 ffff8000113a7464: aa1703e2 mov x2, x23 ffff8000113a7468: 52800035 mov w21, #0x1 // #1 ffff8000113a746c: 4b0302b5 sub w21, w21, w3 ffff8000113a7470: 97fffa38 bl ffff8000113a5d50 <__netdev_adjacent_dev_remove.constprop.155> __netdev_adjacent_dev_remove(upper_dev, dev, ref_nr, down_list); ffff8000113a7474: aa1403e0 mov x0, x20 ffff8000113a7478: aa1303e1 mov x1, x19 ffff8000113a747c: aa1903e2 mov x2, x25 ffff8000113a7480: 97fffa34 bl ffff8000113a5d50 <__netdev_adjacent_dev_remove.constprop.155> ffff8000113a7484: 17ffffd1 b ffff8000113a73c8 <__netdev_upper_dev_link+0x11c> __netdev_adjacent_dev_remove(dev, upper_dev, 1, up_list); ffff8000113a7488: aa1303e0 mov x0, x19 ffff8000113a748c: aa1403e1 mov x1, x20 ffff8000113a7490: aa1703e2 mov x2, x23 ffff8000113a7494: 97fffa2f bl ffff8000113a5d50 <__netdev_adjacent_dev_remove.constprop.155> ffff8000113a7498: 2a1803f5 mov w21, w24 ffff8000113a749c: 17ffffcb b ffff8000113a73c8 <__netdev_upper_dev_link+0x11c> return -EMLINK; ffff8000113a74a0: 128003d5 mov w21, #0xffffffe1 // #-31 ffff8000113a74a4: 17ffffc9 b ffff8000113a73c8 <__netdev_upper_dev_link+0x11c> dev->upper_level = __netdev_upper_depth(dev) + 1; ffff8000113a74a8: 97ffde88 bl ffff80001139eec8 <__netdev_upper_depth> ffff8000113a74ac: 53001c00 uxtb w0, w0 ffff8000113a74b0: 11000400 add w0, w0, #0x1 ffff8000113a74b4: 3909c260 strb w0, [x19,#624] __netdev_walk_all_lower_dev(dev, __netdev_update_upper_level, NULL); ffff8000113a74b8: aa1303e0 mov x0, x19 ffff8000113a74bc: 97ffeb66 bl ffff8000113a2254 <__netdev_walk_all_lower_dev.constprop.156> dev->lower_level = __netdev_lower_depth(dev) + 1; ffff8000113a74c0: aa1403e0 mov x0, x20 ffff8000113a74c4: 97ffdea2 bl ffff80001139ef4c <__netdev_lower_depth> ffff8000113a74c8: 53001c00 uxtb w0, w0 ffff8000113a74cc: 11000400 add w0, w0, #0x1 __netdev_walk_all_upper_dev(upper_dev, __netdev_update_lower_level, ffff8000113a74d0: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a74d0: R_AARCH64_ADR_PREL_PG_HI21 .text+0xc90 dev->lower_level = __netdev_lower_depth(dev) + 1; ffff8000113a74d4: 3909c680 strb w0, [x20,#625] __netdev_walk_all_upper_dev(upper_dev, __netdev_update_lower_level, ffff8000113a74d8: 91000021 add x1, x1, #0x0 ffff8000113a74d8: R_AARCH64_ADD_ABS_LO12_NC .text+0xc90 ffff8000113a74dc: aa1403e0 mov x0, x20 ffff8000113a74e0: d2800002 mov x2, #0x0 // #0 ffff8000113a74e4: 97ffdd66 bl ffff80001139ea7c <__netdev_walk_all_upper_dev> return 0; ffff8000113a74e8: 17ffffb8 b ffff8000113a73c8 <__netdev_upper_dev_link+0x11c> } ffff8000113a74ec: 94000000 bl 0 <__stack_chk_fail> ffff8000113a74ec: R_AARCH64_CALL26 __stack_chk_fail ASSERT_RTNL(); ffff8000113a74f0: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113a74f0: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113a74f4: 91000063 add x3, x3, #0x0 ffff8000113a74f4: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113a74f8: 39404c60 ldrb w0, [x3,#19] ffff8000113a74fc: 35fff100 cbnz w0, ffff8000113a731c <__netdev_upper_dev_link+0x70> ffff8000113a7500: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a7500: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113a7504: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a7504: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113a7508: 91000000 add x0, x0, #0x0 ffff8000113a7508: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113a750c: 91000021 add x1, x1, #0x0 ffff8000113a750c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113a7510: 5283afc2 mov w2, #0x1d7e // #7550 ffff8000113a7514: 39004c77 strb w23, [x3,#19] ffff8000113a7518: 94000000 bl 0 <__warn_printk> ffff8000113a7518: R_AARCH64_CALL26 __warn_printk ffff8000113a751c: d4210000 brk #0x800 ffff8000113a7520: 17ffff7f b ffff8000113a731c <__netdev_upper_dev_link+0x70> ASSERT_RTNL(); ffff8000113a7524: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113a7524: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113a7528: 91000063 add x3, x3, #0x0 ffff8000113a7528: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113a752c: 39405060 ldrb w0, [x3,#20] ffff8000113a7530: 35fff140 cbnz w0, ffff8000113a7358 <__netdev_upper_dev_link+0xac> ffff8000113a7534: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a7534: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113a7538: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a7538: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113a753c: 52800024 mov w4, #0x1 // #1 ffff8000113a7540: 91000000 add x0, x0, #0x0 ffff8000113a7540: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113a7544: 91000021 add x1, x1, #0x0 ffff8000113a7544: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113a7548: 52835002 mov w2, #0x1a80 // #6784 ffff8000113a754c: 39005064 strb w4, [x3,#20] ffff8000113a7550: 94000000 bl 0 <__warn_printk> ffff8000113a7550: R_AARCH64_CALL26 __warn_printk ffff8000113a7554: d4210000 brk #0x800 ffff8000113a7558: 17ffff80 b ffff8000113a7358 <__netdev_upper_dev_link+0xac> ffff8000113a755c : { ffff8000113a755c: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a7560: 910003fd mov x29, sp ffff8000113a7564: f9000bf3 str x19, [sp,#16] ffff8000113a7568: aa0003f3 mov x19, x0 ffff8000113a756c: aa1e03e0 mov x0, x30 ffff8000113a7570: f90017a1 str x1, [x29,#40] ffff8000113a7574: f90013a2 str x2, [x29,#32] ffff8000113a7578: 94000000 bl 0 <_mcount> ffff8000113a7578: R_AARCH64_CALL26 _mcount return __netdev_upper_dev_link(dev, upper_dev, false, ffff8000113a757c: f94017a1 ldr x1, [x29,#40] ffff8000113a7580: d2800003 mov x3, #0x0 // #0 ffff8000113a7584: f94013a5 ldr x5, [x29,#32] ffff8000113a7588: aa1303e0 mov x0, x19 ffff8000113a758c: 52800002 mov w2, #0x0 // #0 ffff8000113a7590: aa0303e4 mov x4, x3 ffff8000113a7594: 97ffff46 bl ffff8000113a72ac <__netdev_upper_dev_link> } ffff8000113a7598: f9400bf3 ldr x19, [sp,#16] ffff8000113a759c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a75a0: d65f03c0 ret ffff8000113a75a4 : { ffff8000113a75a4: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a75a8: 910003fd mov x29, sp ffff8000113a75ac: a90153f3 stp x19, x20, [sp,#16] ffff8000113a75b0: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a75b4: aa0003f5 mov x21, x0 ffff8000113a75b8: aa0103f3 mov x19, x1 ffff8000113a75bc: aa1e03e0 mov x0, x30 ffff8000113a75c0: aa0203f4 mov x20, x2 ffff8000113a75c4: aa0303f6 mov x22, x3 ffff8000113a75c8: 94000000 bl 0 <_mcount> ffff8000113a75c8: R_AARCH64_CALL26 _mcount if (!new_dev) ffff8000113a75cc: b40003f3 cbz x19, ffff8000113a7648 if (old_dev && new_dev != old_dev) ffff8000113a75d0: eb15027f cmp x19, x21 ffff8000113a75d4: 540001e1 b.ne ffff8000113a7610 return __netdev_upper_dev_link(dev, upper_dev, false, ffff8000113a75d8: d2800003 mov x3, #0x0 // #0 ffff8000113a75dc: aa1303e0 mov x0, x19 ffff8000113a75e0: aa1403e1 mov x1, x20 ffff8000113a75e4: 52800002 mov w2, #0x0 // #0 ffff8000113a75e8: aa0303e4 mov x4, x3 ffff8000113a75ec: aa1603e5 mov x5, x22 ffff8000113a75f0: 97ffff2f bl ffff8000113a72ac <__netdev_upper_dev_link> ffff8000113a75f4: 2a0003f3 mov w19, w0 if (err) { ffff8000113a75f8: 34000280 cbz w0, ffff8000113a7648 } ffff8000113a75fc: 2a1303e0 mov w0, w19 ffff8000113a7600: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a7604: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a7608: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a760c: d65f03c0 ret if (old_dev && new_dev != old_dev) ffff8000113a7610: b4fffe55 cbz x21, ffff8000113a75d8 __netdev_adjacent_dev_set(upper_dev, lower_dev, true); ffff8000113a7614: 52800022 mov w2, #0x1 // #1 ffff8000113a7618: aa1403e0 mov x0, x20 ffff8000113a761c: aa1503e1 mov x1, x21 ffff8000113a7620: 97ffdec4 bl ffff80001139f130 <__netdev_adjacent_dev_set> return __netdev_upper_dev_link(dev, upper_dev, false, ffff8000113a7624: d2800003 mov x3, #0x0 // #0 ffff8000113a7628: aa1303e0 mov x0, x19 ffff8000113a762c: aa1403e1 mov x1, x20 ffff8000113a7630: 52800002 mov w2, #0x0 // #0 ffff8000113a7634: aa0303e4 mov x4, x3 ffff8000113a7638: aa1603e5 mov x5, x22 ffff8000113a763c: 97ffff1c bl ffff8000113a72ac <__netdev_upper_dev_link> ffff8000113a7640: 2a0003f3 mov w19, w0 if (err) { ffff8000113a7644: 350000e0 cbnz w0, ffff8000113a7660 return 0; ffff8000113a7648: 52800013 mov w19, #0x0 // #0 } ffff8000113a764c: 2a1303e0 mov w0, w19 ffff8000113a7650: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a7654: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a7658: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a765c: d65f03c0 ret __netdev_adjacent_dev_set(upper_dev, lower_dev, false); ffff8000113a7660: aa1403e0 mov x0, x20 ffff8000113a7664: aa1503e1 mov x1, x21 ffff8000113a7668: 52800002 mov w2, #0x0 // #0 ffff8000113a766c: 97ffdeb1 bl ffff80001139f130 <__netdev_adjacent_dev_set> } ffff8000113a7670: 2a1303e0 mov w0, w19 ffff8000113a7674: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a7678: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a767c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a7680: d65f03c0 ret ffff8000113a7684 : { ffff8000113a7684: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a7688: 910003fd mov x29, sp ffff8000113a768c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a7690: f90013f5 str x21, [sp,#32] ffff8000113a7694: aa0003f5 mov x21, x0 ffff8000113a7698: aa1e03e0 mov x0, x30 ffff8000113a769c: aa0203f4 mov x20, x2 ffff8000113a76a0: aa0303f3 mov x19, x3 ffff8000113a76a4: f9001fa1 str x1, [x29,#56] ffff8000113a76a8: f9001ba4 str x4, [x29,#48] ffff8000113a76ac: 94000000 bl 0 <_mcount> ffff8000113a76ac: R_AARCH64_CALL26 _mcount return __netdev_upper_dev_link(dev, upper_dev, true, ffff8000113a76b0: f9401fa1 ldr x1, [x29,#56] ffff8000113a76b4: f9401ba5 ldr x5, [x29,#48] ffff8000113a76b8: aa1403e3 mov x3, x20 ffff8000113a76bc: aa1303e4 mov x4, x19 ffff8000113a76c0: aa1503e0 mov x0, x21 ffff8000113a76c4: 52800022 mov w2, #0x1 // #1 ffff8000113a76c8: 97fffef9 bl ffff8000113a72ac <__netdev_upper_dev_link> } ffff8000113a76cc: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a76d0: f94013f5 ldr x21, [sp,#32] ffff8000113a76d4: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a76d8: d65f03c0 ret ffff8000113a76dc <__netif_set_xps_queue>: { ffff8000113a76dc: a9b37bfd stp x29, x30, [sp,#-208]! ffff8000113a76e0: 910003fd mov x29, sp ffff8000113a76e4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a76e8: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a76ec: a90363f7 stp x23, x24, [sp,#48] ffff8000113a76f0: a9046bf9 stp x25, x26, [sp,#64] ffff8000113a76f4: a90573fb stp x27, x28, [sp,#80] ffff8000113a76f8: f9004fa0 str x0, [x29,#152] ffff8000113a76fc: 53001c63 uxtb w3, w3 ffff8000113a7700: aa1e03e0 mov x0, x30 ffff8000113a7704: f90057a1 str x1, [x29,#168] ffff8000113a7708: 53003c54 uxth w20, w2 ffff8000113a770c: b900c3a3 str w3, [x29,#192] ffff8000113a7710: 94000000 bl 0 <_mcount> ffff8000113a7710: R_AARCH64_CALL26 _mcount if (dev->num_tc) { ffff8000113a7714: f9404fa4 ldr x4, [x29,#152] ffff8000113a7718: 79d09085 ldrsh w5, [x4,#2120] ffff8000113a771c: 34003be5 cbz w5, ffff8000113a7e98 <__netif_set_xps_queue+0x7bc> num_tc = dev->num_tc; ffff8000113a7720: 2a0503f5 mov w21, w5 if (num_tc < 0) ffff8000113a7724: 37f82e05 tbnz w5, #31, ffff8000113a7ce4 <__netif_set_xps_queue+0x608> return &dev->_tx[index]; ffff8000113a7728: f941e081 ldr x1, [x4,#960] ffff8000113a772c: 52802800 mov w0, #0x140 // #320 ffff8000113a7730: 9ba07e80 umull x0, w20, w0 ffff8000113a7734: 8b000020 add x0, x1, x0 dev = netdev_get_tx_queue(dev, index)->sb_dev ? : dev; ffff8000113a7738: f9403804 ldr x4, [x0,#112] ffff8000113a773c: b4002ba4 cbz x4, ffff8000113a7cb0 <__netif_set_xps_queue+0x5d4> if (dev->num_tc) { ffff8000113a7740: 79d09096 ldrsh w22, [x4,#2120] ffff8000113a7744: 35002b96 cbnz w22, ffff8000113a7cb4 <__netif_set_xps_queue+0x5d8> ffff8000113a7748: 2a0503f3 mov w19, w5 ffff8000113a774c: f9004fa4 str x4, [x29,#152] mutex_lock(&xps_map_mutex); ffff8000113a7750: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a7750: R_AARCH64_ADR_PREL_PG_HI21 .data ffff8000113a7754: 91000020 add x0, x1, #0x0 ffff8000113a7754: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113a7758: 91024000 add x0, x0, #0x90 ffff8000113a775c: 94000000 bl 0 ffff8000113a775c: R_AARCH64_CALL26 mutex_lock if (is_rxqs_map) { ffff8000113a7760: b940c3a4 ldr w4, [x29,#192] ffff8000113a7764: 34003ac4 cbz w4, ffff8000113a7ebc <__netif_set_xps_queue+0x7e0> maps_sz = XPS_RXQ_DEV_MAPS_SIZE(num_tc, dev->num_rx_queues); ffff8000113a7768: f9404fa4 ldr x4, [x29,#152] const unsigned long *online_mask = NULL, *possible_mask = NULL; ffff8000113a776c: d2800019 mov x25, #0x0 // #0 maps_sz = XPS_RXQ_DEV_MAPS_SIZE(num_tc, dev->num_rx_queues); ffff8000113a7770: b9432897 ldr w23, [x4,#808] ffff8000113a7774: f94057a4 ldr x4, [x29,#168] ffff8000113a7778: 1b177e62 mul w2, w19, w23 ffff8000113a777c: eb1f009f cmp x4, xzr dev_maps = xmap_dereference(dev->xps_rxqs_map); ffff8000113a7780: f9404fa4 ldr x4, [x29,#152] maps_sz = XPS_RXQ_DEV_MAPS_SIZE(num_tc, dev->num_rx_queues); ffff8000113a7784: 91000842 add x2, x2, #0x2 ffff8000113a7788: 52800013 mov w19, #0x0 // #0 dev_maps = xmap_dereference(dev->xps_rxqs_map); ffff8000113a778c: f941f89a ldr x26, [x4,#1008] ffff8000113a7790: 1a9f07e4 cset w4, ne maps_sz = XPS_RXQ_DEV_MAPS_SIZE(num_tc, dev->num_rx_queues); ffff8000113a7794: 531d7042 lsl w2, w2, #3 ffff8000113a7798: b900cba4 str w4, [x29,#200] ffff8000113a779c: b900c7b3 str w19, [x29,#196] const unsigned long *online_mask = NULL, *possible_mask = NULL; ffff8000113a77a0: f9005bb9 str x25, [x29,#176] maps_sz = L1_CACHE_BYTES; ffff8000113a77a4: 52800800 mov w0, #0x40 // #64 ffff8000113a77a8: 7100fc5f cmp w2, #0x3f ffff8000113a77ac: 1a80c042 csel w2, w2, w0, gt new_dev_maps = kzalloc(maps_sz, GFP_KERNEL); ffff8000113a77b0: 93407c42 sxtw x2, w2 #endif #ifndef cpu_to_node static inline int cpu_to_node(int cpu) { return per_cpu(numa_node, cpu); ffff8000113a77b4: 90000000 adrp x0, 0 ffff8000113a77b4: R_AARCH64_ADR_PREL_PG_HI21 numa_node ffff8000113a77b8: 91000000 add x0, x0, #0x0 ffff8000113a77b8: R_AARCH64_ADD_ABS_LO12_NC numa_node ffff8000113a77bc: f90053a2 str x2, [x29,#160] ffff8000113a77c0: f9005fa0 str x0, [x29,#184] for (j = -1; j = netif_attrmask_next_and(j, online_mask, mask, nr_ids), ffff8000113a77c4: 12800007 mov w7, #0xffffffff // #-1 struct xps_dev_maps *dev_maps, *new_dev_maps = NULL; ffff8000113a77c8: d280001c mov x28, #0x0 // #0 return find_next_bit(src2p, nr_bits, n + 1); ffff8000113a77cc: 2a1703f8 mov w24, w23 if (src1p && src2p) ffff8000113a77d0: 350004b3 cbnz w19, ffff8000113a7864 <__netif_set_xps_queue+0x188> else if (src1p) ffff8000113a77d4: b940c7a4 ldr w4, [x29,#196] ffff8000113a77d8: 34002964 cbz w4, ffff8000113a7d04 <__netif_set_xps_queue+0x628> return find_next_bit(src1p, nr_bits, n + 1); ffff8000113a77dc: 110004e2 add w2, w7, #0x1 ffff8000113a77e0: f9405ba0 ldr x0, [x29,#176] ffff8000113a77e4: aa1803e1 mov x1, x24 ffff8000113a77e8: 93407c42 sxtw x2, w2 ffff8000113a77ec: 94000000 bl 0 ffff8000113a77ec: R_AARCH64_CALL26 find_next_bit ffff8000113a77f0: 2a0003e7 mov w7, w0 for (j = -1; j = netif_attrmask_next_and(j, online_mask, mask, nr_ids), ffff8000113a77f4: 6b0702ff cmp w23, w7 ffff8000113a77f8: 54000489 b.ls ffff8000113a7888 <__netif_set_xps_queue+0x1ac> if (!new_dev_maps) ffff8000113a77fc: b400315c cbz x28, ffff8000113a7e24 <__netif_set_xps_queue+0x748> tci = j * num_tc + tc; ffff8000113a7800: 1b077ea9 mul w9, w21, w7 ffff8000113a7804: 0b160129 add w9, w9, w22 map = dev_maps ? xmap_dereference(dev_maps->attr_map[tci]) : ffff8000113a7808: b400291a cbz x26, ffff8000113a7d28 <__netif_set_xps_queue+0x64c> ffff8000113a780c: 93407d28 sxtw x8, w9 ffff8000113a7810: 91000900 add x0, x8, #0x2 ffff8000113a7814: f8607b5b ldr x27, [x26,x0,lsl #3] for (pos = 0; map && pos < map->len; pos++) { ffff8000113a7818: b400467b cbz x27, ffff8000113a80e4 <__netif_set_xps_queue+0xa08> ffff8000113a781c: b9400362 ldr w2, [x27] ffff8000113a7820: 34003382 cbz w2, ffff8000113a7e90 <__netif_set_xps_queue+0x7b4> if (map->queues[pos] != index) ffff8000113a7824: 79403360 ldrh w0, [x27,#24] for (pos = 0; map && pos < map->len; pos++) { ffff8000113a7828: 52800023 mov w3, #0x1 // #1 if (map->queues[pos] != index) ffff8000113a782c: 6b14001f cmp w0, w20 ffff8000113a7830: 54000100 b.eq ffff8000113a7850 <__netif_set_xps_queue+0x174> for (pos = 0; map && pos < map->len; pos++) { ffff8000113a7834: 6b02007f cmp w3, w2 if (map->queues[pos] != index) ffff8000113a7838: 8b23c761 add x1, x27, w3, sxtw #1 for (pos = 0; map && pos < map->len; pos++) { ffff8000113a783c: 54002c00 b.eq ffff8000113a7dbc <__netif_set_xps_queue+0x6e0> if (map->queues[pos] != index) ffff8000113a7840: 79403021 ldrh w1, [x1,#24] for (pos = 0; map && pos < map->len; pos++) { ffff8000113a7844: 11000463 add w3, w3, #0x1 if (map->queues[pos] != index) ffff8000113a7848: 6b14003f cmp w1, w20 ffff8000113a784c: 54ffff41 b.ne ffff8000113a7834 <__netif_set_xps_queue+0x158> if (pos < map->alloc_len) ffff8000113a7850: aa1b03e6 mov x6, x27 RCU_INIT_POINTER(new_dev_maps->attr_map[tci], map); ffff8000113a7854: 91000908 add x8, x8, #0x2 ffff8000113a7858: d37df108 lsl x8, x8, #3 case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113a785c: f8286b86 str x6, [x28,x8] if (src1p && src2p) ffff8000113a7860: 34fffbb3 cbz w19, ffff8000113a77d4 <__netif_set_xps_queue+0xf8> return find_next_and_bit(src1p, src2p, nr_bits, n + 1); ffff8000113a7864: 110004e3 add w3, w7, #0x1 ffff8000113a7868: f9405ba0 ldr x0, [x29,#176] ffff8000113a786c: f94057a1 ldr x1, [x29,#168] ffff8000113a7870: aa1803e2 mov x2, x24 ffff8000113a7874: 93407c63 sxtw x3, w3 ffff8000113a7878: 94000000 bl 0 ffff8000113a7878: R_AARCH64_CALL26 find_next_and_bit ffff8000113a787c: 2a0003e7 mov w7, w0 for (j = -1; j = netif_attrmask_next_and(j, online_mask, mask, nr_ids), ffff8000113a7880: 6b0702ff cmp w23, w7 ffff8000113a7884: 54fffbc8 b.hi ffff8000113a77fc <__netif_set_xps_queue+0x120> ffff8000113a7888: aa1c03f3 mov x19, x28 if (!new_dev_maps) ffff8000113a788c: b400393c cbz x28, ffff8000113a7fb0 <__netif_set_xps_queue+0x8d4> if (!dev_maps) { ffff8000113a7890: b4003fda cbz x26, ffff8000113a8088 <__netif_set_xps_queue+0x9ac> ffff8000113a7894: 90000018 adrp x24, 0 ffff8000113a7894: R_AARCH64_ADR_PREL_PG_HI21 numa_node numa_node_id = -1; ffff8000113a7898: 12800023 mov w3, #0xfffffffe // #-2 ffff8000113a789c: 9100031b add x27, x24, #0x0 ffff8000113a789c: R_AARCH64_ADD_ABS_LO12_NC numa_node ffff8000113a78a0: b900bba3 str w3, [x29,#184] ffff8000113a78a4: 12800008 mov w8, #0xffffffff // #-1 return find_next_bit(srcp, nr_bits, n + 1); ffff8000113a78a8: 2a1703f3 mov w19, w23 for (i = num_tc - tc, tci++; dev_maps && --i; tci++) { ffff8000113a78ac: 4b1602b8 sub w24, w21, w22 ffff8000113a78b0: f90067bb str x27, [x29,#200] if (srcp) ffff8000113a78b4: b4000c59 cbz x25, ffff8000113a7a3c <__netif_set_xps_queue+0x360> return find_next_bit(srcp, nr_bits, n + 1); ffff8000113a78b8: 11000502 add w2, w8, #0x1 ffff8000113a78bc: aa1903e0 mov x0, x25 ffff8000113a78c0: aa1303e1 mov x1, x19 ffff8000113a78c4: 93407c42 sxtw x2, w2 ffff8000113a78c8: 94000000 bl 0 ffff8000113a78c8: R_AARCH64_CALL26 find_next_bit for (j = -1; j = netif_attrmask_next(j, possible_mask, nr_ids), ffff8000113a78cc: 6b0002ff cmp w23, w0 ffff8000113a78d0: 2a0003e8 mov w8, w0 ffff8000113a78d4: 54000bc9 b.ls ffff8000113a7a4c <__netif_set_xps_queue+0x370> for (i = tc, tci = j * num_tc; dev_maps && i--; tci++) { ffff8000113a78d8: 1b157c06 mul w6, w0, w21 ffff8000113a78dc: b40034fa cbz x26, ffff8000113a7f78 <__netif_set_xps_queue+0x89c> ffff8000113a78e0: 34000236 cbz w22, ffff8000113a7924 <__netif_set_xps_queue+0x248> map = xmap_dereference(dev_maps->attr_map[tci]); ffff8000113a78e4: 93407cc1 sxtw x1, w6 ffff8000113a78e8: 91000821 add x1, x1, #0x2 RCU_INIT_POINTER(new_dev_maps->attr_map[tci], map); ffff8000113a78ec: f8617b42 ldr x2, [x26,x1,lsl #3] ffff8000113a78f0: d37df021 lsl x1, x1, #3 ffff8000113a78f4: f8216b82 str x2, [x28,x1] for (i = tc, tci = j * num_tc; dev_maps && i--; tci++) { ffff8000113a78f8: 110004c1 add w1, w6, #0x1 ffff8000113a78fc: 0b1600c6 add w6, w6, w22 ffff8000113a7900: 14000004 b ffff8000113a7910 <__netif_set_xps_queue+0x234> RCU_INIT_POINTER(new_dev_maps->attr_map[tci], map); ffff8000113a7904: f8627b42 ldr x2, [x26,x2,lsl #3] for (i = tc, tci = j * num_tc; dev_maps && i--; tci++) { ffff8000113a7908: 11000421 add w1, w1, #0x1 ffff8000113a790c: f8236b82 str x2, [x28,x3] map = xmap_dereference(dev_maps->attr_map[tci]); ffff8000113a7910: 93407c22 sxtw x2, w1 ffff8000113a7914: 91000842 add x2, x2, #0x2 for (i = tc, tci = j * num_tc; dev_maps && i--; tci++) { ffff8000113a7918: 6b06003f cmp w1, w6 RCU_INIT_POINTER(new_dev_maps->attr_map[tci], map); ffff8000113a791c: d37df043 lsl x3, x2, #3 for (i = tc, tci = j * num_tc; dev_maps && i--; tci++) { ffff8000113a7920: 54ffff21 b.ne ffff8000113a7904 <__netif_set_xps_queue+0x228> ffff8000113a7924: 1100fc02 add w2, w0, #0x3f ffff8000113a7928: 6b1f001f cmp w0, wzr ffff8000113a792c: 1a80b042 csel w2, w2, w0, lt ffff8000113a7930: 13067c42 asr w2, w2, #6 ffff8000113a7934: f94057a4 ldr x4, [x29,#168] ffff8000113a7938: 937d7c42 sbfiz x2, x2, #3, #32 ffff8000113a793c: f8626883 ldr x3, [x4,x2] ffff8000113a7940: 12001401 and w1, w0, #0x3f ffff8000113a7944: 9ac12463 lsr x3, x3, x1 if (netif_attr_test_mask(j, mask, nr_ids) && ffff8000113a7948: 36002943 tbz w3, #0, ffff8000113a7e70 <__netif_set_xps_queue+0x794> if (online_mask) ffff8000113a794c: b940c7a4 ldr w4, [x29,#196] ffff8000113a7950: 34002ee4 cbz w4, ffff8000113a7f2c <__netif_set_xps_queue+0x850> ffff8000113a7954: f9405ba4 ldr x4, [x29,#176] ffff8000113a7958: f8626882 ldr x2, [x4,x2] ffff8000113a795c: 9ac12441 lsr x1, x2, x1 return test_bit(j, online_mask); ffff8000113a7960: 12000021 and w1, w1, #0x1 ffff8000113a7964: 34002861 cbz w1, ffff8000113a7e70 <__netif_set_xps_queue+0x794> map = xmap_dereference(new_dev_maps->attr_map[tci]); ffff8000113a7968: 8b26cf81 add x1, x28, w6, sxtw #3 ffff8000113a796c: f9400823 ldr x3, [x1,#16] while ((pos < map->len) && (map->queues[pos] != index)) ffff8000113a7970: b9400069 ldr w9, [x3] ffff8000113a7974: 34002e29 cbz w9, ffff8000113a7f38 <__netif_set_xps_queue+0x85c> ffff8000113a7978: 79403061 ldrh w1, [x3,#24] ffff8000113a797c: 6b14003f cmp w1, w20 ffff8000113a7980: 54000180 b.eq ffff8000113a79b0 <__netif_set_xps_queue+0x2d4> int pos = 0; ffff8000113a7984: 52800001 mov w1, #0x0 // #0 ffff8000113a7988: 14000004 b ffff8000113a7998 <__netif_set_xps_queue+0x2bc> while ((pos < map->len) && (map->queues[pos] != index)) ffff8000113a798c: 79403042 ldrh w2, [x2,#24] ffff8000113a7990: 6b14005f cmp w2, w20 ffff8000113a7994: 540000a0 b.eq ffff8000113a79a8 <__netif_set_xps_queue+0x2cc> pos++; ffff8000113a7998: 11000421 add w1, w1, #0x1 while ((pos < map->len) && (map->queues[pos] != index)) ffff8000113a799c: 6b09003f cmp w1, w9 ffff8000113a79a0: 8b21c462 add x2, x3, w1, sxtw #1 ffff8000113a79a4: 54ffff41 b.ne ffff8000113a798c <__netif_set_xps_queue+0x2b0> if (pos == map->len) ffff8000113a79a8: 6b09003f cmp w1, w9 ffff8000113a79ac: 54002c60 b.eq ffff8000113a7f38 <__netif_set_xps_queue+0x85c> if (!is_rxqs_map) { ffff8000113a79b0: b940c3a4 ldr w4, [x29,#192] ffff8000113a79b4: 35000184 cbnz w4, ffff8000113a79e4 <__netif_set_xps_queue+0x308> if (numa_node_id == -2) ffff8000113a79b8: b940bba3 ldr w3, [x29,#184] ffff8000113a79bc: 90000001 adrp x1, 0 <__per_cpu_offset> ffff8000113a79bc: R_AARCH64_ADR_PREL_PG_HI21 __per_cpu_offset ffff8000113a79c0: 91000021 add x1, x1, #0x0 ffff8000113a79c0: R_AARCH64_ADD_ABS_LO12_NC __per_cpu_offset ffff8000113a79c4: 3100087f cmn w3, #0x2 ffff8000113a79c8: f860d820 ldr x0, [x1,w0,sxtw #3] ffff8000113a79cc: 54002da0 b.eq ffff8000113a7f80 <__netif_set_xps_queue+0x8a4> numa_node_id = -1; ffff8000113a79d0: b940bba3 ldr w3, [x29,#184] else if (numa_node_id != cpu_to_node(j)) ffff8000113a79d4: b8606b60 ldr w0, [x27,x0] numa_node_id = -1; ffff8000113a79d8: 6b00007f cmp w3, w0 ffff8000113a79dc: 5a9f0063 csinv w3, w3, wzr, eq ffff8000113a79e0: b900bba3 str w3, [x29,#184] for (i = num_tc - tc, tci++; dev_maps && --i; tci++) { ffff8000113a79e4: 110004c0 add w0, w6, #0x1 ffff8000113a79e8: b4fff67a cbz x26, ffff8000113a78b4 <__netif_set_xps_queue+0x1d8> ffff8000113a79ec: 7100071f cmp w24, #0x1 ffff8000113a79f0: 54fff620 b.eq ffff8000113a78b4 <__netif_set_xps_queue+0x1d8> map = xmap_dereference(dev_maps->attr_map[tci]); ffff8000113a79f4: 93407c01 sxtw x1, w0 ffff8000113a79f8: 91000821 add x1, x1, #0x2 RCU_INIT_POINTER(new_dev_maps->attr_map[tci], map); ffff8000113a79fc: f8617b42 ldr x2, [x26,x1,lsl #3] ffff8000113a7a00: 0b180003 add w3, w0, w24 ffff8000113a7a04: d37df021 lsl x1, x1, #3 ffff8000113a7a08: f8216b82 str x2, [x28,x1] for (i = num_tc - tc, tci++; dev_maps && --i; tci++) { ffff8000113a7a0c: 11000400 add w0, w0, #0x1 ffff8000113a7a10: 51000463 sub w3, w3, #0x1 ffff8000113a7a14: 14000004 b ffff8000113a7a24 <__netif_set_xps_queue+0x348> RCU_INIT_POINTER(new_dev_maps->attr_map[tci], map); ffff8000113a7a18: f8617b41 ldr x1, [x26,x1,lsl #3] for (i = num_tc - tc, tci++; dev_maps && --i; tci++) { ffff8000113a7a1c: 11000400 add w0, w0, #0x1 ffff8000113a7a20: f8226b81 str x1, [x28,x2] map = xmap_dereference(dev_maps->attr_map[tci]); ffff8000113a7a24: 93407c01 sxtw x1, w0 ffff8000113a7a28: 91000821 add x1, x1, #0x2 for (i = num_tc - tc, tci++; dev_maps && --i; tci++) { ffff8000113a7a2c: 6b03001f cmp w0, w3 RCU_INIT_POINTER(new_dev_maps->attr_map[tci], map); ffff8000113a7a30: d37df022 lsl x2, x1, #3 for (i = num_tc - tc, tci++; dev_maps && --i; tci++) { ffff8000113a7a34: 54ffff21 b.ne ffff8000113a7a18 <__netif_set_xps_queue+0x33c> if (srcp) ffff8000113a7a38: b5fff419 cbnz x25, ffff8000113a78b8 <__netif_set_xps_queue+0x1dc> return n + 1; ffff8000113a7a3c: 11000500 add w0, w8, #0x1 for (j = -1; j = netif_attrmask_next(j, possible_mask, nr_ids), ffff8000113a7a40: 6b0002ff cmp w23, w0 ffff8000113a7a44: 2a0003e8 mov w8, w0 ffff8000113a7a48: 54fff488 b.hi ffff8000113a78d8 <__netif_set_xps_queue+0x1fc> if (is_rxqs_map) ffff8000113a7a4c: b940c3a4 ldr w4, [x29,#192] ffff8000113a7a50: 340027e4 cbz w4, ffff8000113a7f4c <__netif_set_xps_queue+0x870> rcu_assign_pointer(dev->xps_rxqs_map, new_dev_maps); ffff8000113a7a54: f9404fa4 ldr x4, [x29,#152] ffff8000113a7a58: 910fc080 add x0, x4, #0x3f0 ffff8000113a7a5c: c89ffc1c stlr x28, [x0] if (!dev_maps) ffff8000113a7a60: b4002b1a cbz x26, ffff8000113a7fc0 <__netif_set_xps_queue+0x8e4> return find_next_bit(srcp, nr_bits, n + 1); ffff8000113a7a64: 2a1703e3 mov w3, w23 ffff8000113a7a68: 12800013 mov w19, #0xffffffff // #-1 ffff8000113a7a6c: f90067a3 str x3, [x29,#200] if (srcp) ffff8000113a7a70: b4000359 cbz x25, ffff8000113a7ad8 <__netif_set_xps_queue+0x3fc> return find_next_bit(srcp, nr_bits, n + 1); ffff8000113a7a74: 11000662 add w2, w19, #0x1 ffff8000113a7a78: f94067a1 ldr x1, [x29,#200] ffff8000113a7a7c: aa1903e0 mov x0, x25 ffff8000113a7a80: 93407c42 sxtw x2, w2 ffff8000113a7a84: 94000000 bl 0 ffff8000113a7a84: R_AARCH64_CALL26 find_next_bit for (j = -1; j = netif_attrmask_next(j, possible_mask, nr_ids), ffff8000113a7a88: 6b0002ff cmp w23, w0 ffff8000113a7a8c: 2a0003f3 mov w19, w0 ffff8000113a7a90: 540002c9 b.ls ffff8000113a7ae8 <__netif_set_xps_queue+0x40c> for (i = num_tc, tci = j * num_tc; i--; tci++) { ffff8000113a7a94: 1b157e78 mul w24, w19, w21 ffff8000113a7a98: 2a1503fb mov w27, w21 ffff8000113a7a9c: 34fffeb5 cbz w21, ffff8000113a7a70 <__netif_set_xps_queue+0x394> map = xmap_dereference(dev_maps->attr_map[tci]); ffff8000113a7aa0: 93407f00 sxtw x0, w24 ffff8000113a7aa4: 91000800 add x0, x0, #0x2 ffff8000113a7aa8: f8607b46 ldr x6, [x26,x0,lsl #3] if (map && map != new_map) ffff8000113a7aac: f8607b80 ldr x0, [x28,x0,lsl #3] for (i = num_tc, tci = j * num_tc; i--; tci++) { ffff8000113a7ab0: 11000718 add w24, w24, #0x1 if (map && map != new_map) ffff8000113a7ab4: eb06001f cmp x0, x6 ffff8000113a7ab8: 540000a0 b.eq ffff8000113a7acc <__netif_set_xps_queue+0x3f0> kfree_rcu(map, rcu); ffff8000113a7abc: 910020c0 add x0, x6, #0x8 ffff8000113a7ac0: d2800101 mov x1, #0x8 // #8 if (map && map != new_map) ffff8000113a7ac4: b4000046 cbz x6, ffff8000113a7acc <__netif_set_xps_queue+0x3f0> kfree_rcu(map, rcu); ffff8000113a7ac8: 94000000 bl 0 ffff8000113a7ac8: R_AARCH64_CALL26 kfree_call_rcu for (i = num_tc, tci = j * num_tc; i--; tci++) { ffff8000113a7acc: 7100077b subs w27, w27, #0x1 ffff8000113a7ad0: 54fffe81 b.ne ffff8000113a7aa0 <__netif_set_xps_queue+0x3c4> if (srcp) ffff8000113a7ad4: b5fffd19 cbnz x25, ffff8000113a7a74 <__netif_set_xps_queue+0x398> return n + 1; ffff8000113a7ad8: 11000660 add w0, w19, #0x1 for (j = -1; j = netif_attrmask_next(j, possible_mask, nr_ids), ffff8000113a7adc: 6b0002ff cmp w23, w0 ffff8000113a7ae0: 2a0003f3 mov w19, w0 ffff8000113a7ae4: 54fffd88 b.hi ffff8000113a7a94 <__netif_set_xps_queue+0x3b8> kfree_rcu(dev_maps, rcu); ffff8000113a7ae8: aa1a03e0 mov x0, x26 ffff8000113a7aec: d2800001 mov x1, #0x0 // #0 ffff8000113a7af0: 94000000 bl 0 ffff8000113a7af0: R_AARCH64_CALL26 kfree_call_rcu active = true; ffff8000113a7af4: 52800033 mov w19, #0x1 // #1 if (!is_rxqs_map) { ffff8000113a7af8: b940c3a4 ldr w4, [x29,#192] ffff8000113a7afc: 35000144 cbnz w4, ffff8000113a7b24 <__netif_set_xps_queue+0x448> q->numa_node = node; ffff8000113a7b00: f9404fa4 ldr x4, [x29,#152] netdev_queue_numa_node_write(netdev_get_tx_queue(dev, index), ffff8000113a7b04: b940bba3 ldr w3, [x29,#184] ffff8000113a7b08: f941e081 ldr x1, [x4,#960] return &dev->_tx[index]; ffff8000113a7b0c: 52802800 mov w0, #0x140 // #320 ffff8000113a7b10: 9ba07e80 umull x0, w20, w0 ffff8000113a7b14: 6b1f007f cmp w3, wzr q->numa_node = node; ffff8000113a7b18: 8b000020 add x0, x1, x0 ffff8000113a7b1c: 5a9fa07a csinv w26, w3, wzr, ge ffff8000113a7b20: b900581a str w26, [x0,#88] if (!dev_maps) ffff8000113a7b24: b4000afc cbz x28, ffff8000113a7c80 <__netif_set_xps_queue+0x5a4> ffff8000113a7b28: 12800004 mov w4, #0xffffffff // #-1 for (i = num_tc - tc, tci++; --i; tci++) ffff8000113a7b2c: 4b1602a0 sub w0, w21, w22 if (!dev_maps) ffff8000113a7b30: b900bba4 str w4, [x29,#184] return find_next_bit(srcp, nr_bits, n + 1); ffff8000113a7b34: 2a1703e3 mov w3, w23 for (i = tc, tci = j * num_tc; i--; tci++) ffff8000113a7b38: 0b0402c4 add w4, w22, w4 for (i = num_tc - tc, tci++; --i; tci++) ffff8000113a7b3c: 51000400 sub w0, w0, #0x1 ffff8000113a7b40: f90047a3 str x3, [x29,#136] for (i = tc, tci = j * num_tc; i--; tci++) ffff8000113a7b44: b90097a4 str w4, [x29,#148] for (i = num_tc - tc, tci++; --i; tci++) ffff8000113a7b48: b900a3a0 str w0, [x29,#160] if (srcp) ffff8000113a7b4c: b4000879 cbz x25, ffff8000113a7c58 <__netif_set_xps_queue+0x57c> return find_next_bit(srcp, nr_bits, n + 1); ffff8000113a7b50: b940bba3 ldr w3, [x29,#184] ffff8000113a7b54: f94047a1 ldr x1, [x29,#136] ffff8000113a7b58: 11000462 add w2, w3, #0x1 ffff8000113a7b5c: aa1903e0 mov x0, x25 ffff8000113a7b60: 93407c42 sxtw x2, w2 ffff8000113a7b64: 94000000 bl 0 ffff8000113a7b64: R_AARCH64_CALL26 find_next_bit ffff8000113a7b68: 2a0003f8 mov w24, w0 for (j = -1; j = netif_attrmask_next(j, possible_mask, nr_ids), ffff8000113a7b6c: 6b1802ff cmp w23, w24 ffff8000113a7b70: b900bbb8 str w24, [x29,#184] ffff8000113a7b74: 540007c9 b.ls ffff8000113a7c6c <__netif_set_xps_queue+0x590> for (i = tc, tci = j * num_tc; i--; tci++) ffff8000113a7b78: 1b157f03 mul w3, w24, w21 ffff8000113a7b7c: b900cba3 str w3, [x29,#200] ffff8000113a7b80: 34000236 cbz w22, ffff8000113a7bc4 <__netif_set_xps_queue+0x4e8> ffff8000113a7b84: 2a1603fa mov w26, w22 ffff8000113a7b88: 2a0303fb mov w27, w3 active |= remove_xps_queue(dev_maps, tci, index); ffff8000113a7b8c: 2a1b03e1 mov w1, w27 ffff8000113a7b90: aa1c03e0 mov x0, x28 ffff8000113a7b94: 2a1403e2 mov w2, w20 ffff8000113a7b98: 97ffe121 bl ffff8000113a001c ffff8000113a7b9c: 2a000260 orr w0, w19, w0 for (i = tc, tci = j * num_tc; i--; tci++) ffff8000113a7ba0: 7100075a subs w26, w26, #0x1 active |= remove_xps_queue(dev_maps, tci, index); ffff8000113a7ba4: 53001c13 uxtb w19, w0 for (i = tc, tci = j * num_tc; i--; tci++) ffff8000113a7ba8: 1100077b add w27, w27, #0x1 ffff8000113a7bac: 54ffff01 b.ne ffff8000113a7b8c <__netif_set_xps_queue+0x4b0> ffff8000113a7bb0: b940cba4 ldr w4, [x29,#200] ffff8000113a7bb4: b94097a3 ldr w3, [x29,#148] ffff8000113a7bb8: 1100049a add w26, w4, #0x1 ffff8000113a7bbc: 0b1a007a add w26, w3, w26 ffff8000113a7bc0: b900cbba str w26, [x29,#200] ffff8000113a7bc4: 1100ff01 add w1, w24, #0x3f ffff8000113a7bc8: 6b1f031f cmp w24, wzr ffff8000113a7bcc: 1a98b021 csel w1, w1, w24, lt ffff8000113a7bd0: 13067c21 asr w1, w1, #6 ffff8000113a7bd4: f94057a4 ldr x4, [x29,#168] ffff8000113a7bd8: 937d7c21 sbfiz x1, x1, #3, #32 ffff8000113a7bdc: f8616882 ldr x2, [x4,x1] ffff8000113a7be0: 12001700 and w0, w24, #0x3f ffff8000113a7be4: 9ac02442 lsr x2, x2, x0 if (!netif_attr_test_mask(j, mask, nr_ids) || ffff8000113a7be8: 36000102 tbz w2, #0, ffff8000113a7c08 <__netif_set_xps_queue+0x52c> if (online_mask) ffff8000113a7bec: b940c7a4 ldr w4, [x29,#196] ffff8000113a7bf0: 34001b64 cbz w4, ffff8000113a7f5c <__netif_set_xps_queue+0x880> ffff8000113a7bf4: f9405ba4 ldr x4, [x29,#176] ffff8000113a7bf8: f8616881 ldr x1, [x4,x1] ffff8000113a7bfc: 9ac02420 lsr x0, x1, x0 return test_bit(j, online_mask); ffff8000113a7c00: 12000000 and w0, w0, #0x1 ffff8000113a7c04: 350000e0 cbnz w0, ffff8000113a7c20 <__netif_set_xps_queue+0x544> active |= remove_xps_queue(dev_maps, tci, index); ffff8000113a7c08: b940cba1 ldr w1, [x29,#200] ffff8000113a7c0c: aa1c03e0 mov x0, x28 ffff8000113a7c10: 2a1403e2 mov w2, w20 ffff8000113a7c14: 97ffe102 bl ffff8000113a001c ffff8000113a7c18: 2a000260 orr w0, w19, w0 ffff8000113a7c1c: 53001c13 uxtb w19, w0 for (i = num_tc - tc, tci++; --i; tci++) ffff8000113a7c20: b940cba4 ldr w4, [x29,#200] ffff8000113a7c24: b940a3b8 ldr w24, [x29,#160] ffff8000113a7c28: 1100049a add w26, w4, #0x1 ffff8000113a7c2c: 34fff918 cbz w24, ffff8000113a7b4c <__netif_set_xps_queue+0x470> active |= remove_xps_queue(dev_maps, tci, index); ffff8000113a7c30: 2a1a03e1 mov w1, w26 ffff8000113a7c34: aa1c03e0 mov x0, x28 ffff8000113a7c38: 2a1403e2 mov w2, w20 ffff8000113a7c3c: 97ffe0f8 bl ffff8000113a001c ffff8000113a7c40: 2a000260 orr w0, w19, w0 for (i = num_tc - tc, tci++; --i; tci++) ffff8000113a7c44: 71000718 subs w24, w24, #0x1 active |= remove_xps_queue(dev_maps, tci, index); ffff8000113a7c48: 53001c13 uxtb w19, w0 for (i = num_tc - tc, tci++; --i; tci++) ffff8000113a7c4c: 1100075a add w26, w26, #0x1 ffff8000113a7c50: 54ffff01 b.ne ffff8000113a7c30 <__netif_set_xps_queue+0x554> if (srcp) ffff8000113a7c54: b5fff7f9 cbnz x25, ffff8000113a7b50 <__netif_set_xps_queue+0x474> return n + 1; ffff8000113a7c58: b940bba4 ldr w4, [x29,#184] ffff8000113a7c5c: 11000498 add w24, w4, #0x1 for (j = -1; j = netif_attrmask_next(j, possible_mask, nr_ids), ffff8000113a7c60: 6b1802ff cmp w23, w24 ffff8000113a7c64: b900bbb8 str w24, [x29,#184] ffff8000113a7c68: 54fff888 b.hi ffff8000113a7b78 <__netif_set_xps_queue+0x49c> if (!active) ffff8000113a7c6c: 350000b3 cbnz w19, ffff8000113a7c80 <__netif_set_xps_queue+0x5a4> reset_xps_maps(dev, dev_maps, is_rxqs_map); ffff8000113a7c70: f9404fa0 ldr x0, [x29,#152] ffff8000113a7c74: 394303a2 ldrb w2, [x29,#192] ffff8000113a7c78: aa1c03e1 mov x1, x28 ffff8000113a7c7c: 97fff2a1 bl ffff8000113a4700 mutex_unlock(&xps_map_mutex); ffff8000113a7c80: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a7c80: R_AARCH64_ADR_PREL_PG_HI21 .data ffff8000113a7c84: 91000020 add x0, x1, #0x0 ffff8000113a7c84: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113a7c88: 91024000 add x0, x0, #0x90 ffff8000113a7c8c: 94000000 bl 0 ffff8000113a7c8c: R_AARCH64_CALL26 mutex_unlock } ffff8000113a7c90: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a7c94: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a7c98: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a7c9c: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a7ca0: a94573fb ldp x27, x28, [sp,#80] return 0; ffff8000113a7ca4: 52800000 mov w0, #0x0 // #0 } ffff8000113a7ca8: a8cd7bfd ldp x29, x30, [sp],#208 ffff8000113a7cac: d65f03c0 ret dev = netdev_get_tx_queue(dev, index)->sb_dev ? : dev; ffff8000113a7cb0: f9404fa4 ldr x4, [x29,#152] struct netdev_tc_txq *tc = &dev->tc_to_txq[0]; ffff8000113a7cb4: 91212880 add x0, x4, #0x84a ffff8000113a7cb8: 91222883 add x3, x4, #0x88a for (i = 0; i < TC_MAX_QUEUE; i++, tc++) { ffff8000113a7cbc: 52800016 mov w22, #0x0 // #0 if ((txq - tc->offset) < tc->count) ffff8000113a7cc0: 79400402 ldrh w2, [x0,#2] ffff8000113a7cc4: 79400001 ldrh w1, [x0] ffff8000113a7cc8: 4b020282 sub w2, w20, w2 ffff8000113a7ccc: 6b01005f cmp w2, w1 for (i = 0; i < TC_MAX_QUEUE; i++, tc++) { ffff8000113a7cd0: 91001000 add x0, x0, #0x4 if ((txq - tc->offset) < tc->count) ffff8000113a7cd4: 540014c3 b.cc ffff8000113a7f6c <__netif_set_xps_queue+0x890> for (i = 0; i < TC_MAX_QUEUE; i++, tc++) { ffff8000113a7cd8: eb03001f cmp x0, x3 ffff8000113a7cdc: 110006d6 add w22, w22, #0x1 ffff8000113a7ce0: 54ffff01 b.ne ffff8000113a7cc0 <__netif_set_xps_queue+0x5e4> } ffff8000113a7ce4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a7ce8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a7cec: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a7cf0: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a7cf4: a94573fb ldp x27, x28, [sp,#80] return -EINVAL; ffff8000113a7cf8: 128002a0 mov w0, #0xffffffea // #-22 } ffff8000113a7cfc: a8cd7bfd ldp x29, x30, [sp],#208 ffff8000113a7d00: d65f03c0 ret else if (src2p) ffff8000113a7d04: b940cba4 ldr w4, [x29,#200] ffff8000113a7d08: 34000564 cbz w4, ffff8000113a7db4 <__netif_set_xps_queue+0x6d8> return find_next_bit(src2p, nr_bits, n + 1); ffff8000113a7d0c: 110004e2 add w2, w7, #0x1 ffff8000113a7d10: f94057a0 ldr x0, [x29,#168] ffff8000113a7d14: aa1803e1 mov x1, x24 ffff8000113a7d18: 93407c42 sxtw x2, w2 ffff8000113a7d1c: 94000000 bl 0 ffff8000113a7d1c: R_AARCH64_CALL26 find_next_bit ffff8000113a7d20: 2a0003e7 mov w7, w0 ffff8000113a7d24: 17fffeb4 b ffff8000113a77f4 <__netif_set_xps_queue+0x118> ffff8000113a7d28: d2800800 mov x0, #0x40 // #64 ffff8000113a7d2c: aa1a03fb mov x27, x26 ffff8000113a7d30: 2a1a03e3 mov w3, w26 int alloc_len = XPS_MIN_MAP_ALLOC; ffff8000113a7d34: 5280028b mov w11, #0x14 // #20 if (is_rxqs_map) ffff8000113a7d38: b940c3a4 ldr w4, [x29,#192] ffff8000113a7d3c: 34000544 cbz w4, ffff8000113a7de4 <__netif_set_xps_queue+0x708> return __kmalloc(size, flags); ffff8000113a7d40: 5281b801 mov w1, #0xdc0 // #3520 ffff8000113a7d44: f9003fa3 str x3, [x29,#120] ffff8000113a7d48: f90037a7 str x7, [x29,#104] ffff8000113a7d4c: f90043a9 str x9, [x29,#128] ffff8000113a7d50: f9003bab str x11, [x29,#112] ffff8000113a7d54: 94000000 bl 0 <__kmalloc> ffff8000113a7d54: R_AARCH64_CALL26 __kmalloc ffff8000113a7d58: f9403fa3 ldr x3, [x29,#120] ffff8000113a7d5c: f94037a7 ldr x7, [x29,#104] ffff8000113a7d60: f94043a9 ldr x9, [x29,#128] ffff8000113a7d64: f9403bab ldr x11, [x29,#112] if (!new_map) ffff8000113a7d68: b4001300 cbz x0, ffff8000113a7fc8 <__netif_set_xps_queue+0x8ec> for (i = 0; i < pos; i++) ffff8000113a7d6c: 6b1f007f cmp w3, wzr ffff8000113a7d70: 5400018d b.le ffff8000113a7da0 <__netif_set_xps_queue+0x6c4> ffff8000113a7d74: 5100046a sub w10, w3, #0x1 ffff8000113a7d78: 9100054a add x10, x10, #0x1 ffff8000113a7d7c: d37ff94a lsl x10, x10, #1 ffff8000113a7d80: d2800001 mov x1, #0x0 // #0 ffff8000113a7d84: 8b010362 add x2, x27, x1 new_map->queues[i] = map->queues[i]; ffff8000113a7d88: 79403048 ldrh w8, [x2,#24] ffff8000113a7d8c: 8b010002 add x2, x0, x1 ffff8000113a7d90: 91000821 add x1, x1, #0x2 ffff8000113a7d94: 79003048 strh w8, [x2,#24] for (i = 0; i < pos; i++) ffff8000113a7d98: eb0a003f cmp x1, x10 ffff8000113a7d9c: 54ffff41 b.ne ffff8000113a7d84 <__netif_set_xps_queue+0x6a8> new_map->alloc_len = alloc_len; ffff8000113a7da0: b900040b str w11, [x0,#4] new_map->len = pos; ffff8000113a7da4: b9000003 str w3, [x0] ffff8000113a7da8: aa0003e6 mov x6, x0 ffff8000113a7dac: 93407d28 sxtw x8, w9 ffff8000113a7db0: 17fffea9 b ffff8000113a7854 <__netif_set_xps_queue+0x178> return n + 1; ffff8000113a7db4: 110004e7 add w7, w7, #0x1 ffff8000113a7db8: 17fffe8f b ffff8000113a77f4 <__netif_set_xps_queue+0x118> for (pos = 0; map && pos < map->len; pos++) { ffff8000113a7dbc: 2a0303e2 mov w2, w3 if (pos < map->alloc_len) ffff8000113a7dc0: b940076b ldr w11, [x27,#4] ffff8000113a7dc4: 6b0b005f cmp w2, w11 ffff8000113a7dc8: 54ffd443 b.cc ffff8000113a7850 <__netif_set_xps_queue+0x174> alloc_len = map->alloc_len * 2; ffff8000113a7dcc: 531f796b lsl w11, w11, #1 ffff8000113a7dd0: 93407d60 sxtw x0, w11 if (is_rxqs_map) ffff8000113a7dd4: b940c3a4 ldr w4, [x29,#192] ffff8000113a7dd8: 91003000 add x0, x0, #0xc ffff8000113a7ddc: d37ff800 lsl x0, x0, #1 ffff8000113a7de0: 35fffb04 cbnz w4, ffff8000113a7d40 <__netif_set_xps_queue+0x664> ffff8000113a7de4: 90000001 adrp x1, 0 <__per_cpu_offset> ffff8000113a7de4: R_AARCH64_ADR_PREL_PG_HI21 __per_cpu_offset ffff8000113a7de8: 91000021 add x1, x1, #0x0 ffff8000113a7de8: R_AARCH64_ADD_ABS_LO12_NC __per_cpu_offset ffff8000113a7dec: f867d821 ldr x1, [x1,w7,sxtw #3] return kmem_cache_alloc_node_trace( kmalloc_caches[kmalloc_type(flags)][i], flags, node, size); } #endif return __kmalloc_node(size, flags, node); ffff8000113a7df0: f9405fa4 ldr x4, [x29,#184] ffff8000113a7df4: b8616882 ldr w2, [x4,x1] ffff8000113a7df8: 5281b801 mov w1, #0xdc0 // #3520 ffff8000113a7dfc: f9003fa3 str x3, [x29,#120] ffff8000113a7e00: f90037a7 str x7, [x29,#104] ffff8000113a7e04: f90043a9 str x9, [x29,#128] ffff8000113a7e08: f9003bab str x11, [x29,#112] ffff8000113a7e0c: 94000000 bl 0 <__kmalloc_node> ffff8000113a7e0c: R_AARCH64_CALL26 __kmalloc_node ffff8000113a7e10: f9403bab ldr x11, [x29,#112] ffff8000113a7e14: f94043a9 ldr x9, [x29,#128] ffff8000113a7e18: f94037a7 ldr x7, [x29,#104] ffff8000113a7e1c: f9403fa3 ldr x3, [x29,#120] ffff8000113a7e20: 17ffffd2 b ffff8000113a7d68 <__netif_set_xps_queue+0x68c> return __kmalloc(size, flags); ffff8000113a7e24: f94053a0 ldr x0, [x29,#160] ffff8000113a7e28: 5281b801 mov w1, #0xdc0 // #3520 ffff8000113a7e2c: f90037a7 str x7, [x29,#104] ffff8000113a7e30: 94000000 bl 0 <__kmalloc> ffff8000113a7e30: R_AARCH64_CALL26 __kmalloc ffff8000113a7e34: aa0003fc mov x28, x0 if (!new_dev_maps) { ffff8000113a7e38: f94037a7 ldr x7, [x29,#104] ffff8000113a7e3c: b5ffce20 cbnz x0, ffff8000113a7800 <__netif_set_xps_queue+0x124> mutex_unlock(&xps_map_mutex); ffff8000113a7e40: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a7e40: R_AARCH64_ADR_PREL_PG_HI21 .data ffff8000113a7e44: 91000020 add x0, x1, #0x0 ffff8000113a7e44: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113a7e48: 91024000 add x0, x0, #0x90 ffff8000113a7e4c: 94000000 bl 0 ffff8000113a7e4c: R_AARCH64_CALL26 mutex_unlock } ffff8000113a7e50: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a7e54: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a7e58: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a7e5c: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a7e60: a94573fb ldp x27, x28, [sp,#80] return -ENOMEM; ffff8000113a7e64: 12800160 mov w0, #0xfffffff4 // #-12 } ffff8000113a7e68: a8cd7bfd ldp x29, x30, [sp],#208 ffff8000113a7e6c: d65f03c0 ret } else if (dev_maps) { ffff8000113a7e70: b4ffd23a cbz x26, ffff8000113a78b4 <__netif_set_xps_queue+0x1d8> map = xmap_dereference(dev_maps->attr_map[tci]); ffff8000113a7e74: 93407cc0 sxtw x0, w6 ffff8000113a7e78: 91000800 add x0, x0, #0x2 RCU_INIT_POINTER(new_dev_maps->attr_map[tci], map); ffff8000113a7e7c: f8607b41 ldr x1, [x26,x0,lsl #3] ffff8000113a7e80: d37df000 lsl x0, x0, #3 ffff8000113a7e84: f8206b81 str x1, [x28,x0] for (i = num_tc - tc, tci++; dev_maps && --i; tci++) { ffff8000113a7e88: 110004c0 add w0, w6, #0x1 ffff8000113a7e8c: 17fffed8 b ffff8000113a79ec <__netif_set_xps_queue+0x310> for (pos = 0; map && pos < map->len; pos++) { ffff8000113a7e90: 2a0203e3 mov w3, w2 ffff8000113a7e94: 17ffffcb b ffff8000113a7dc0 <__netif_set_xps_queue+0x6e4> mutex_lock(&xps_map_mutex); ffff8000113a7e98: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a7e98: R_AARCH64_ADR_PREL_PG_HI21 .data ffff8000113a7e9c: 91000020 add x0, x1, #0x0 ffff8000113a7e9c: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113a7ea0: 91024000 add x0, x0, #0x90 int maps_sz, num_tc = 1, tc = 0; ffff8000113a7ea4: 2a0503f6 mov w22, w5 mutex_lock(&xps_map_mutex); ffff8000113a7ea8: 94000000 bl 0 ffff8000113a7ea8: R_AARCH64_CALL26 mutex_lock if (is_rxqs_map) { ffff8000113a7eac: b940c3a4 ldr w4, [x29,#192] ffff8000113a7eb0: 52800033 mov w19, #0x1 // #1 int maps_sz, num_tc = 1, tc = 0; ffff8000113a7eb4: 2a1303f5 mov w21, w19 if (is_rxqs_map) { ffff8000113a7eb8: 35ffc584 cbnz w4, ffff8000113a7768 <__netif_set_xps_queue+0x8c> maps_sz = XPS_CPU_DEV_MAPS_SIZE(num_tc); ffff8000113a7ebc: 90000017 adrp x23, 0 ffff8000113a7ebc: R_AARCH64_ADR_PREL_PG_HI21 nr_cpu_ids ffff8000113a7ec0: b94002e2 ldr w2, [x23] ffff8000113a7ec0: R_AARCH64_LDST32_ABS_LO12_NC nr_cpu_ids ffff8000113a7ec4: 90000019 adrp x25, 0 <__cpu_possible_mask> ffff8000113a7ec4: R_AARCH64_ADR_PREL_PG_HI21 __cpu_possible_mask ffff8000113a7ec8: 1b027e62 mul w2, w19, w2 ffff8000113a7ecc: 91000339 add x25, x25, #0x0 ffff8000113a7ecc: R_AARCH64_ADD_ABS_LO12_NC __cpu_possible_mask ffff8000113a7ed0: 91000842 add x2, x2, #0x2 ffff8000113a7ed4: 531d7042 lsl w2, w2, #3 ffff8000113a7ed8: aa1903e0 mov x0, x25 ffff8000113a7edc: 52820001 mov w1, #0x1000 // #4096 ffff8000113a7ee0: f90043a2 str x2, [x29,#128] ffff8000113a7ee4: 94000000 bl 0 <__bitmap_weight> ffff8000113a7ee4: R_AARCH64_CALL26 __bitmap_weight if (num_possible_cpus() > 1) { ffff8000113a7ee8: 7100041f cmp w0, #0x1 ffff8000113a7eec: f94057a4 ldr x4, [x29,#168] ffff8000113a7ef0: f94043a2 ldr x2, [x29,#128] ffff8000113a7ef4: 540004e9 b.ls ffff8000113a7f90 <__netif_set_xps_queue+0x8b4> ffff8000113a7ef8: eb1f009f cmp x4, xzr ffff8000113a7efc: 1a9f07e4 cset w4, ne ffff8000113a7f00: b900cba4 str w4, [x29,#200] online_mask = cpumask_bits(cpu_online_mask); ffff8000113a7f04: 90000000 adrp x0, 0 <__cpu_online_mask> ffff8000113a7f04: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113a7f08: 52800024 mov w4, #0x1 // #1 ffff8000113a7f0c: 91000000 add x0, x0, #0x0 ffff8000113a7f0c: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113a7f10: b940cbb3 ldr w19, [x29,#200] ffff8000113a7f14: b900c7a4 str w4, [x29,#196] ffff8000113a7f18: f9005ba0 str x0, [x29,#176] dev_maps = xmap_dereference(dev->xps_cpus_map); ffff8000113a7f1c: f9404fa4 ldr x4, [x29,#152] nr_ids = nr_cpu_ids; ffff8000113a7f20: b94002f7 ldr w23, [x23] ffff8000113a7f20: R_AARCH64_LDST32_ABS_LO12_NC nr_cpu_ids dev_maps = xmap_dereference(dev->xps_cpus_map); ffff8000113a7f24: f941f49a ldr x26, [x4,#1000] ffff8000113a7f28: 17fffe1f b ffff8000113a77a4 <__netif_set_xps_queue+0xc8> return (j < nr_bits); ffff8000113a7f2c: eb20c27f cmp x19, w0, sxtw ffff8000113a7f30: 1a9f97e1 cset w1, hi ffff8000113a7f34: 17fffe8c b ffff8000113a7964 <__netif_set_xps_queue+0x288> map->queues[map->len++] = index; ffff8000113a7f38: 11000521 add w1, w9, #0x1 ffff8000113a7f3c: b9000061 str w1, [x3] ffff8000113a7f40: 8b294463 add x3, x3, w9, uxtw #1 ffff8000113a7f44: 79003074 strh w20, [x3,#24] ffff8000113a7f48: 17fffe9a b ffff8000113a79b0 <__netif_set_xps_queue+0x2d4> rcu_assign_pointer(dev->xps_cpus_map, new_dev_maps); ffff8000113a7f4c: f9404fa4 ldr x4, [x29,#152] ffff8000113a7f50: 910fa080 add x0, x4, #0x3e8 ffff8000113a7f54: c89ffc1c stlr x28, [x0] ffff8000113a7f58: 17fffec2 b ffff8000113a7a60 <__netif_set_xps_queue+0x384> ffff8000113a7f5c: f94047a3 ldr x3, [x29,#136] ffff8000113a7f60: eb38c07f cmp x3, w24, sxtw ffff8000113a7f64: 1a9f97e0 cset w0, hi ffff8000113a7f68: 17ffff27 b ffff8000113a7c04 <__netif_set_xps_queue+0x528> ffff8000113a7f6c: 2a0503f3 mov w19, w5 if ((txq - tc->offset) < tc->count) ffff8000113a7f70: f9004fa4 str x4, [x29,#152] ffff8000113a7f74: 17fffdf7 b ffff8000113a7750 <__netif_set_xps_queue+0x74> ffff8000113a7f78: 0b0602c6 add w6, w22, w6 ffff8000113a7f7c: 17fffe6a b ffff8000113a7924 <__netif_set_xps_queue+0x248> ffff8000113a7f80: f94067a4 ldr x4, [x29,#200] ffff8000113a7f84: b8606880 ldr w0, [x4,x0] ffff8000113a7f88: b900bba0 str w0, [x29,#184] ffff8000113a7f8c: 17fffe96 b ffff8000113a79e4 <__netif_set_xps_queue+0x308> ffff8000113a7f90: eb1f009f cmp x4, xzr if (num_possible_cpus() > 1) { ffff8000113a7f94: b940c3b3 ldr w19, [x29,#192] const unsigned long *online_mask = NULL, *possible_mask = NULL; ffff8000113a7f98: d2800019 mov x25, #0x0 // #0 ffff8000113a7f9c: 1a9f07e4 cset w4, ne ffff8000113a7fa0: b900cba4 str w4, [x29,#200] if (num_possible_cpus() > 1) { ffff8000113a7fa4: b900c7b3 str w19, [x29,#196] const unsigned long *online_mask = NULL, *possible_mask = NULL; ffff8000113a7fa8: f9005bb9 str x25, [x29,#176] ffff8000113a7fac: 17ffffdc b ffff8000113a7f1c <__netif_set_xps_queue+0x840> int i, j, tci, numa_node_id = -2; ffff8000113a7fb0: 12800024 mov w4, #0xfffffffe // #-2 ffff8000113a7fb4: aa1a03fc mov x28, x26 ffff8000113a7fb8: b900bba4 str w4, [x29,#184] ffff8000113a7fbc: 17fffecf b ffff8000113a7af8 <__netif_set_xps_queue+0x41c> active = true; ffff8000113a7fc0: 52800033 mov w19, #0x1 // #1 ffff8000113a7fc4: 17fffecd b ffff8000113a7af8 <__netif_set_xps_queue+0x41c> if (!new_map) ffff8000113a7fc8: 12800016 mov w22, #0xffffffff // #-1 return find_next_bit(srcp, nr_bits, n + 1); ffff8000113a7fcc: 2a1703f8 mov w24, w23 if (srcp) ffff8000113a7fd0: b4000399 cbz x25, ffff8000113a8040 <__netif_set_xps_queue+0x964> return find_next_bit(srcp, nr_bits, n + 1); ffff8000113a7fd4: 110006c2 add w2, w22, #0x1 ffff8000113a7fd8: aa1903e0 mov x0, x25 ffff8000113a7fdc: aa1803e1 mov x1, x24 ffff8000113a7fe0: 93407c42 sxtw x2, w2 ffff8000113a7fe4: 94000000 bl 0 ffff8000113a7fe4: R_AARCH64_CALL26 find_next_bit for (j = -1; j = netif_attrmask_next(j, possible_mask, nr_ids), ffff8000113a7fe8: 6b0002ff cmp w23, w0 ffff8000113a7fec: 2a0003f6 mov w22, w0 ffff8000113a7ff0: 54000309 b.ls ffff8000113a8050 <__netif_set_xps_queue+0x974> for (i = num_tc, tci = j * num_tc; i--; tci++) { ffff8000113a7ff4: 1b157ed4 mul w20, w22, w21 ffff8000113a7ff8: 2a1503f3 mov w19, w21 ffff8000113a7ffc: 350000b5 cbnz w21, ffff8000113a8010 <__netif_set_xps_queue+0x934> ffff8000113a8000: 17fffff4 b ffff8000113a7fd0 <__netif_set_xps_queue+0x8f4> ffff8000113a8004: 71000673 subs w19, w19, #0x1 ffff8000113a8008: 11000694 add w20, w20, #0x1 ffff8000113a800c: 54fffe20 b.eq ffff8000113a7fd0 <__netif_set_xps_queue+0x8f4> new_map = xmap_dereference(new_dev_maps->attr_map[tci]); ffff8000113a8010: 93407e81 sxtw x1, w20 ffff8000113a8014: 91000821 add x1, x1, #0x2 ffff8000113a8018: f8617b80 ldr x0, [x28,x1,lsl #3] xmap_dereference(dev_maps->attr_map[tci]) : ffff8000113a801c: b40000fa cbz x26, ffff8000113a8038 <__netif_set_xps_queue+0x95c> ffff8000113a8020: f8617b41 ldr x1, [x26,x1,lsl #3] if (new_map && new_map != map) ffff8000113a8024: eb00003f cmp x1, x0 ffff8000113a8028: 54fffee0 b.eq ffff8000113a8004 <__netif_set_xps_queue+0x928> ffff8000113a802c: b4fffec0 cbz x0, ffff8000113a8004 <__netif_set_xps_queue+0x928> kfree(new_map); ffff8000113a8030: 94000000 bl 0 ffff8000113a8030: R_AARCH64_CALL26 kfree ffff8000113a8034: 17fffff4 b ffff8000113a8004 <__netif_set_xps_queue+0x928> xmap_dereference(dev_maps->attr_map[tci]) : ffff8000113a8038: aa1a03e1 mov x1, x26 ffff8000113a803c: 17fffffa b ffff8000113a8024 <__netif_set_xps_queue+0x948> return n + 1; ffff8000113a8040: 110006c0 add w0, w22, #0x1 for (j = -1; j = netif_attrmask_next(j, possible_mask, nr_ids), ffff8000113a8044: 6b0002ff cmp w23, w0 ffff8000113a8048: 2a0003f6 mov w22, w0 ffff8000113a804c: 54fffd48 b.hi ffff8000113a7ff4 <__netif_set_xps_queue+0x918> mutex_unlock(&xps_map_mutex); ffff8000113a8050: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113a8050: R_AARCH64_ADR_PREL_PG_HI21 .data ffff8000113a8054: 91000040 add x0, x2, #0x0 ffff8000113a8054: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113a8058: 91024000 add x0, x0, #0x90 ffff8000113a805c: 94000000 bl 0 ffff8000113a805c: R_AARCH64_CALL26 mutex_unlock kfree(new_dev_maps); ffff8000113a8060: aa1c03e0 mov x0, x28 ffff8000113a8064: 94000000 bl 0 ffff8000113a8064: R_AARCH64_CALL26 kfree } ffff8000113a8068: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a806c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a8070: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a8074: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a8078: a94573fb ldp x27, x28, [sp,#80] return -ENOMEM; ffff8000113a807c: 12800160 mov w0, #0xfffffff4 // #-12 } ffff8000113a8080: a8cd7bfd ldp x29, x30, [sp],#208 ffff8000113a8084: d65f03c0 ret STATIC_KEY_CHECK_USE(key); ffff8000113a8088: 90000018 adrp x24, 0 ffff8000113a8088: R_AARCH64_ADR_PREL_PG_HI21 static_key_initialized ffff8000113a808c: 39400300 ldrb w0, [x24] ffff8000113a808c: R_AARCH64_LDST8_ABS_LO12_NC static_key_initialized ffff8000113a8090: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff8000113a8090: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a8094: 34000420 cbz w0, ffff8000113a8118 <__netif_set_xps_queue+0xa3c> ATOMIC_OPS(add, add, I) ffff8000113a8098: 91000262 add x2, x19, #0x0 ffff8000113a8098: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a809c: 9124e043 add x3, x2, #0x938 ffff8000113a80a0: f9800071 prfm pstl1strm, [x3] ffff8000113a80a4: 885f7c60 ldxr w0, [x3] ffff8000113a80a8: 11000400 add w0, w0, #0x1 ffff8000113a80ac: 88017c60 stxr w1, w0, [x3] ffff8000113a80b0: 35ffffa1 cbnz w1, ffff8000113a80a4 <__netif_set_xps_queue+0x9c8> if (is_rxqs_map) ffff8000113a80b4: b940c3a4 ldr w4, [x29,#192] ffff8000113a80b8: 34ffbee4 cbz w4, ffff8000113a7894 <__netif_set_xps_queue+0x1b8> ffff8000113a80bc: 39400300 ldrb w0, [x24] ffff8000113a80bc: R_AARCH64_LDST8_ABS_LO12_NC static_key_initialized ffff8000113a80c0: 340001a0 cbz w0, ffff8000113a80f4 <__netif_set_xps_queue+0xa18> ffff8000113a80c4: 91000260 add x0, x19, #0x0 ffff8000113a80c4: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a80c8: 91250003 add x3, x0, #0x940 ffff8000113a80cc: f9800071 prfm pstl1strm, [x3] ffff8000113a80d0: 885f7c61 ldxr w1, [x3] ffff8000113a80d4: 11000421 add w1, w1, #0x1 ffff8000113a80d8: 88027c61 stxr w2, w1, [x3] ffff8000113a80dc: 35ffffa2 cbnz w2, ffff8000113a80d0 <__netif_set_xps_queue+0x9f4> ffff8000113a80e0: 17fffded b ffff8000113a7894 <__netif_set_xps_queue+0x1b8> for (pos = 0; map && pos < map->len; pos++) { ffff8000113a80e4: d2800800 mov x0, #0x40 // #64 ffff8000113a80e8: 2a1b03e3 mov w3, w27 int alloc_len = XPS_MIN_MAP_ALLOC; ffff8000113a80ec: 5280028b mov w11, #0x14 // #20 ffff8000113a80f0: 17ffff12 b ffff8000113a7d38 <__netif_set_xps_queue+0x65c> ffff8000113a80f4: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a80f4: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a80f8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a80f8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x238 ffff8000113a80fc: 91000021 add x1, x1, #0x0 ffff8000113a80fc: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a8100: 91000000 add x0, x0, #0x0 ffff8000113a8100: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x238 ffff8000113a8104: 9100a021 add x1, x1, #0x28 ffff8000113a8108: 91250042 add x2, x2, #0x940 ffff8000113a810c: 94000000 bl 0 <__warn_printk> ffff8000113a810c: R_AARCH64_CALL26 __warn_printk ffff8000113a8110: d4210000 brk #0x800 ffff8000113a8114: 17ffffec b ffff8000113a80c4 <__netif_set_xps_queue+0x9e8> ffff8000113a8118: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a8118: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a811c: 91000262 add x2, x19, #0x0 ffff8000113a811c: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a8120: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a8120: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x238 ffff8000113a8124: 91000021 add x1, x1, #0x0 ffff8000113a8124: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a8128: 91000000 add x0, x0, #0x0 ffff8000113a8128: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x238 ffff8000113a812c: 9100a021 add x1, x1, #0x28 ffff8000113a8130: 9124e042 add x2, x2, #0x938 ffff8000113a8134: 94000000 bl 0 <__warn_printk> ffff8000113a8134: R_AARCH64_CALL26 __warn_printk ffff8000113a8138: d4210000 brk #0x800 ffff8000113a813c: 17ffffd7 b ffff8000113a8098 <__netif_set_xps_queue+0x9bc> ffff8000113a8140 : { ffff8000113a8140: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a8144: 910003fd mov x29, sp ffff8000113a8148: a90153f3 stp x19, x20, [sp,#16] ffff8000113a814c: aa0003f3 mov x19, x0 ffff8000113a8150: aa1e03e0 mov x0, x30 ffff8000113a8154: 53003c54 uxth w20, w2 ffff8000113a8158: f90017a1 str x1, [x29,#40] ffff8000113a815c: 94000000 bl 0 <_mcount> ffff8000113a815c: R_AARCH64_CALL26 _mcount cpus_read_lock(); ffff8000113a8160: 94000000 bl 0 ffff8000113a8160: R_AARCH64_CALL26 cpus_read_lock ret = __netif_set_xps_queue(dev, cpumask_bits(mask), index, false); ffff8000113a8164: f94017a1 ldr x1, [x29,#40] ffff8000113a8168: 2a1403e2 mov w2, w20 ffff8000113a816c: 52800003 mov w3, #0x0 // #0 ffff8000113a8170: aa1303e0 mov x0, x19 ffff8000113a8174: 94000000 bl ffff8000113a76dc <__netif_set_xps_queue> ffff8000113a8174: R_AARCH64_CALL26 __netif_set_xps_queue cpus_read_unlock(); ffff8000113a8178: f90017a0 str x0, [x29,#40] ffff8000113a817c: 94000000 bl 0 ffff8000113a817c: R_AARCH64_CALL26 cpus_read_unlock } ffff8000113a8180: f94017a0 ldr x0, [x29,#40] ffff8000113a8184: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a8188: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a818c: d65f03c0 ret ffff8000113a8190 : { ffff8000113a8190: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113a8194: 910003fd mov x29, sp ffff8000113a8198: a90153f3 stp x19, x20, [sp,#16] ffff8000113a819c: f90013f5 str x21, [sp,#32] ffff8000113a81a0: aa0003e2 mov x2, x0 ffff8000113a81a4: 2a0103e3 mov w3, w1 ffff8000113a81a8: aa1e03e0 mov x0, x30 ffff8000113a81ac: f9001fa2 str x2, [x29,#56] ffff8000113a81b0: f9001ba3 str x3, [x29,#48] ffff8000113a81b4: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113a81b4: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a81b8: 94000000 bl 0 <_mcount> ffff8000113a81b8: R_AARCH64_CALL26 _mcount ffff8000113a81bc: f9400284 ldr x4, [x20] ffff8000113a81bc: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard sprintf(name, "%s%d", prefix, unit); ffff8000113a81c0: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a81c0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x608 ffff8000113a81c4: f9401fa2 ldr x2, [x29,#56] ffff8000113a81c8: f9401ba3 ldr x3, [x29,#48] ffff8000113a81cc: 91000021 add x1, x1, #0x0 ffff8000113a81cc: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x608 ffff8000113a81d0: 910123a0 add x0, x29, #0x48 { ffff8000113a81d4: f9002fa4 str x4, [x29,#88] sprintf(name, "%s%d", prefix, unit); ffff8000113a81d8: 94000000 bl 0 ffff8000113a81d8: R_AARCH64_CALL26 sprintf node_name = netdev_name_node_lookup(net, name); ffff8000113a81dc: 90000000 adrp x0, 0 ffff8000113a81dc: R_AARCH64_ADR_PREL_PG_HI21 init_net ffff8000113a81e0: 91000000 add x0, x0, #0x0 ffff8000113a81e0: R_AARCH64_ADD_ABS_LO12_NC init_net ffff8000113a81e4: 910123a1 add x1, x29, #0x48 ffff8000113a81e8: 97ffdd22 bl ffff80001139f670 return node_name ? node_name->dev : NULL; ffff8000113a81ec: b4000180 cbz x0, ffff8000113a821c if (__dev_get_by_name(&init_net, name)) ffff8000113a81f0: f9401001 ldr x1, [x0,#32] return 1; ffff8000113a81f4: d2800020 mov x0, #0x1 // #1 if (__dev_get_by_name(&init_net, name)) ffff8000113a81f8: b4000121 cbz x1, ffff8000113a821c } ffff8000113a81fc: f9402fa2 ldr x2, [x29,#88] ffff8000113a8200: f9400281 ldr x1, [x20] ffff8000113a8200: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a8204: eb01005f cmp x2, x1 ffff8000113a8208: 54000281 b.ne ffff8000113a8258 ffff8000113a820c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a8210: f94013f5 ldr x21, [sp,#32] ffff8000113a8214: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113a8218: d65f03c0 ret ffff8000113a821c: 90000015 adrp x21, ffff80001139e37c <__my_cpu_offset> ffff8000113a821c: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a8220: 910002b5 add x21, x21, #0x0 ffff8000113a8220: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a8224: 910722b3 add x19, x21, #0x1c8 ffff8000113a8228: 910c22b5 add x21, x21, #0x308 if (!strcmp(name, s[i].name)) ffff8000113a822c: 910123a0 add x0, x29, #0x48 ffff8000113a8230: aa1303e1 mov x1, x19 ffff8000113a8234: 94000000 bl 0 ffff8000113a8234: R_AARCH64_CALL26 strcmp ffff8000113a8238: 340000c0 cbz w0, ffff8000113a8250 ffff8000113a823c: 9100a273 add x19, x19, #0x28 for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) ffff8000113a8240: eb15027f cmp x19, x21 ffff8000113a8244: 54ffff41 b.ne ffff8000113a822c return 0; ffff8000113a8248: d2800000 mov x0, #0x0 // #0 ffff8000113a824c: 17ffffec b ffff8000113a81fc return s[i].map.base_addr; ffff8000113a8250: 79404260 ldrh w0, [x19,#32] ffff8000113a8254: 17ffffea b ffff8000113a81fc } ffff8000113a8258: 94000000 bl 0 <__stack_chk_fail> ffff8000113a8258: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a825c : { ffff8000113a825c: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a8260: 910003fd mov x29, sp ffff8000113a8264: a90153f3 stp x19, x20, [sp,#16] ffff8000113a8268: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a826c: a90363f7 stp x23, x24, [sp,#48] ffff8000113a8270: 2a0203f3 mov w19, w2 ffff8000113a8274: aa0003f6 mov x22, x0 ffff8000113a8278: aa1e03e0 mov x0, x30 ffff8000113a827c: aa0103f7 mov x23, x1 ffff8000113a8280: d37d1e75 ubfiz x21, x19, #3, #8 ffff8000113a8284: 94000000 bl 0 <_mcount> ffff8000113a8284: R_AARCH64_CALL26 _mcount ffff8000113a8288: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113a8288: R_AARCH64_ADR_PREL_PG_HI21 .bss __READ_ONCE_SIZE; ffff8000113a828c: 91000280 add x0, x20, #0x0 ffff8000113a828c: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a8290: b9435018 ldr w24, [x0,#848] smp_rmb(); ffff8000113a8294: d50339bf dmb ishld return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; ffff8000113a8298: f9409ac2 ldr x2, [x22,#304] ffff8000113a829c: f8756843 ldr x3, [x2,x21] hlist_for_each_entry_rcu(dev, head, index_hlist) ffff8000113a82a0: b4000383 cbz x3, ffff8000113a8310 ffff8000113a82a4: d10e4061 sub x1, x3, #0x390 ffff8000113a82a8: b40000c1 cbz x1, ffff8000113a82c0 if (dev->ifindex == ifindex) ffff8000113a82ac: b9410024 ldr w4, [x1,#256] ffff8000113a82b0: 6b04027f cmp w19, w4 ffff8000113a82b4: 54000120 b.eq ffff8000113a82d8 ffff8000113a82b8: f941c823 ldr x3, [x1,#912] hlist_for_each_entry_rcu(dev, head, index_hlist) ffff8000113a82bc: b5ffff43 cbnz x3, ffff8000113a82a4 return -ENODEV; ffff8000113a82c0: 12800240 mov w0, #0xffffffed // #-19 } ffff8000113a82c4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a82c8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a82cc: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a82d0: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a82d4: d65f03c0 ret return __builtin_strcpy(p, q); ffff8000113a82d8: aa1703e0 mov x0, x23 ffff8000113a82dc: 94000000 bl 0 ffff8000113a82dc: R_AARCH64_CALL26 strcpy smp_rmb(); ffff8000113a82e0: d50339bf dmb ishld return unlikely(s->sequence != start); ffff8000113a82e4: 91000280 add x0, x20, #0x0 ffff8000113a82e4: R_AARCH64_ADD_ABS_LO12_NC .bss if (read_seqcount_retry(&devnet_rename_seq, seq)) { ffff8000113a82e8: b9435000 ldr w0, [x0,#848] return ret & ~1; ffff8000113a82ec: 121f7b18 and w24, w24, #0xfffffffe ffff8000113a82f0: 6b00031f cmp w24, w0 ffff8000113a82f4: 54000121 b.ne ffff8000113a8318 return 0; ffff8000113a82f8: 52800000 mov w0, #0x0 // #0 } ffff8000113a82fc: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a8300: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a8304: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a8308: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a830c: d65f03c0 ret hlist_for_each_entry_rcu(dev, head, index_hlist) ffff8000113a8310: aa0303e1 mov x1, x3 ffff8000113a8314: 17ffffe5 b ffff8000113a82a8 cond_resched(); ffff8000113a8318: 94000000 bl 0 <_cond_resched> ffff8000113a8318: R_AARCH64_CALL26 _cond_resched goto retry; ffff8000113a831c: 17ffffdc b ffff8000113a828c ffff8000113a8320 : { ffff8000113a8320: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a8324: 910003fd mov x29, sp ffff8000113a8328: a90153f3 stp x19, x20, [sp,#16] ffff8000113a832c: aa0003f3 mov x19, x0 ffff8000113a8330: aa1e03e0 mov x0, x30 ffff8000113a8334: aa0103f4 mov x20, x1 ffff8000113a8338: f90017a2 str x2, [x29,#40] ffff8000113a833c: 94000000 bl 0 <_mcount> ffff8000113a833c: R_AARCH64_CALL26 _mcount ffff8000113a8340: f9400e63 ldr x3, [x19,#24] if (alias) ffff8000113a8344: f94017a2 ldr x2, [x29,#40] ffff8000113a8348: b4000143 cbz x3, ffff8000113a8370 ret = snprintf(name, len, "%s", alias->ifalias); ffff8000113a834c: aa0203e1 mov x1, x2 ffff8000113a8350: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113a8350: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x610 ffff8000113a8354: aa1403e0 mov x0, x20 ffff8000113a8358: 91000042 add x2, x2, #0x0 ffff8000113a8358: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x610 ffff8000113a835c: 91004063 add x3, x3, #0x10 ffff8000113a8360: 94000000 bl 0 ffff8000113a8360: R_AARCH64_CALL26 snprintf } ffff8000113a8364: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a8368: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a836c: d65f03c0 ret int ret = 0; ffff8000113a8370: 2a0303e0 mov w0, w3 } ffff8000113a8374: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a8378: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a837c: d65f03c0 ret ffff8000113a8380 : { ffff8000113a8380: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a8384: 910003fd mov x29, sp ffff8000113a8388: a90153f3 stp x19, x20, [sp,#16] ffff8000113a838c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a8390: aa0003f3 mov x19, x0 ffff8000113a8394: aa1e03e0 mov x0, x30 ffff8000113a8398: 94000000 bl 0 <_mcount> ffff8000113a8398: R_AARCH64_CALL26 _mcount if (skb->ip_summed != CHECKSUM_PARTIAL) ffff8000113a839c: 39420260 ldrb w0, [x19,#128] int ret = 0, offset, start; ffff8000113a83a0: 52800014 mov w20, #0x0 // #0 if (skb->ip_summed != CHECKSUM_PARTIAL) ffff8000113a83a4: d3451800 ubfx x0, x0, #5, #2 ffff8000113a83a8: 71000c1f cmp w0, #0x3 ffff8000113a83ac: 540000c0 b.eq ffff8000113a83c4 } ffff8000113a83b0: 2a1403e0 mov w0, w20 ffff8000113a83b4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a83b8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a83bc: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a83c0: d65f03c0 ret static inline bool skb_is_gso(const struct sk_buff *skb) ffff8000113a83c4: f9406275 ldr x21, [x19,#192] return skb->head + skb->end; ffff8000113a83c8: b940be60 ldr w0, [x19,#188] ffff8000113a83cc: 8b0002a0 add x0, x21, x0 if (unlikely(skb_is_gso(skb))) ffff8000113a83d0: 79400801 ldrh w1, [x0,#4] ffff8000113a83d4: 35fffee1 cbnz w1, ffff8000113a83b0 static inline bool skb_has_shared_frag(const struct sk_buff *skb) ffff8000113a83d8: b9407661 ldr w1, [x19,#116] return skb_is_nonlinear(skb) && ffff8000113a83dc: 34000101 cbz w1, ffff8000113a83fc skb_shinfo(skb)->tx_flags & SKBTX_SHARED_FRAG; ffff8000113a83e0: 39400c00 ldrb w0, [x0,#3] return skb_is_nonlinear(skb) && ffff8000113a83e4: 362800c0 tbz w0, #5, ffff8000113a83fc return __pskb_pull_tail(skb, skb->data_len) ? 0 : -ENOMEM; ffff8000113a83e8: aa1303e0 mov x0, x19 ffff8000113a83ec: 94000000 bl 0 <__pskb_pull_tail> ffff8000113a83ec: R_AARCH64_CALL26 __pskb_pull_tail ffff8000113a83f0: b40004e0 cbz x0, ffff8000113a848c ffff8000113a83f4: b9407661 ldr w1, [x19,#116] ffff8000113a83f8: f9406275 ldr x21, [x19,#192] return skb->data - skb->head; ffff8000113a83fc: f9406660 ldr x0, [x19,#200] return skb->csum_start - skb_headroom(skb); ffff8000113a8400: 79411262 ldrh w2, [x19,#136] return skb->data - skb->head; ffff8000113a8404: cb150015 sub x21, x0, x21 return skb->len - skb->data_len; ffff8000113a8408: b9407260 ldr w0, [x19,#112] return skb->csum_start - skb_headroom(skb); ffff8000113a840c: 4b150055 sub w21, w2, w21 offset = start + offsetof(struct sctphdr, checksum); ffff8000113a8410: 110022b6 add w22, w21, #0x8 return skb->len - skb->data_len; ffff8000113a8414: 4b010001 sub w1, w0, w1 if (WARN_ON_ONCE(offset >= skb_headlen(skb))) { ffff8000113a8418: 6b0102df cmp w22, w1 ffff8000113a841c: 540003c2 b.cs ffff8000113a8494 ret = skb_ensure_writable(skb, offset + sizeof(__le32)); ffff8000113a8420: aa1303e0 mov x0, x19 ffff8000113a8424: 110032a1 add w1, w21, #0xc ffff8000113a8428: 94000000 bl 0 ffff8000113a8428: R_AARCH64_CALL26 skb_ensure_writable ffff8000113a842c: 2a0003f4 mov w20, w0 if (ret) ffff8000113a8430: 35fffc00 cbnz w0, ffff8000113a83b0 crc32c_csum = cpu_to_le32(~__skb_checksum(skb, start, ffff8000113a8434: b9407262 ldr w2, [x19,#112] ffff8000113a8438: 90000000 adrp x0, 0 ffff8000113a8438: R_AARCH64_ADR_PREL_PG_HI21 crc32c_csum_stub ffff8000113a843c: f9400004 ldr x4, [x0] ffff8000113a843c: R_AARCH64_LDST64_ABS_LO12_NC crc32c_csum_stub ffff8000113a8440: 2a1503e1 mov w1, w21 ffff8000113a8444: 4b150042 sub w2, w2, w21 ffff8000113a8448: aa1303e0 mov x0, x19 ffff8000113a844c: 12800003 mov w3, #0xffffffff // #-1 ffff8000113a8450: 94000000 bl 0 <__skb_checksum> ffff8000113a8450: R_AARCH64_CALL26 __skb_checksum *(__le32 *)(skb->data + offset) = crc32c_csum; ffff8000113a8454: f9406661 ldr x1, [x19,#200] crc32c_csum = cpu_to_le32(~__skb_checksum(skb, start, ffff8000113a8458: 2a2003e0 mvn w0, w0 *(__le32 *)(skb->data + offset) = crc32c_csum; ffff8000113a845c: b836c820 str w0, [x1,w22,sxtw] skb->ip_summed = CHECKSUM_NONE; ffff8000113a8460: 39420261 ldrb w1, [x19,#128] skb->csum_not_inet = 0; ffff8000113a8464: 39420a60 ldrb w0, [x19,#130] skb->ip_summed = CHECKSUM_NONE; ffff8000113a8468: 12197421 and w1, w1, #0xffffff9f skb->csum_not_inet = 0; ffff8000113a846c: 121b7800 and w0, w0, #0xffffffef ffff8000113a8470: 39020a60 strb w0, [x19,#130] skb->ip_summed = CHECKSUM_NONE; ffff8000113a8474: 39020261 strb w1, [x19,#128] } ffff8000113a8478: 2a1403e0 mov w0, w20 ffff8000113a847c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a8480: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a8484: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a8488: d65f03c0 ret return __pskb_pull_tail(skb, skb->data_len) ? 0 : -ENOMEM; ffff8000113a848c: 12800174 mov w20, #0xfffffff4 // #-12 ffff8000113a8490: 17ffffc8 b ffff8000113a83b0 if (WARN_ON_ONCE(offset >= skb_headlen(skb))) { ffff8000113a8494: d4210000 brk #0x800 ret = -EINVAL; ffff8000113a8498: 128002b4 mov w20, #0xffffffea // #-22 ffff8000113a849c: 17ffffc5 b ffff8000113a83b0 ffff8000113a84a0 : { ffff8000113a84a0: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a84a4: 910003fd mov x29, sp ffff8000113a84a8: f9000bf3 str x19, [sp,#16] ffff8000113a84ac: aa0003f3 mov x19, x0 ffff8000113a84b0: aa1e03e0 mov x0, x30 ffff8000113a84b4: f90017a1 str x1, [x29,#40] ffff8000113a84b8: 94000000 bl 0 <_mcount> ffff8000113a84b8: R_AARCH64_CALL26 _mcount if (unlikely(skb->csum_not_inet)) ffff8000113a84bc: 39420a62 ldrb w2, [x19,#130] ffff8000113a84c0: f94017a1 ldr x1, [x29,#40] ffff8000113a84c4: d3441042 ubfx x2, x2, #4, #1 ffff8000113a84c8: 350001a2 cbnz w2, ffff8000113a84fc return !!(features & NETIF_F_CSUM_MASK) ? 0 : skb_checksum_help(skb); ffff8000113a84cc: d2800340 mov x0, #0x1a // #26 ffff8000113a84d0: ea00003f tst x1, x0 ffff8000113a84d4: 2a0203e0 mov w0, w2 ffff8000113a84d8: 54000080 b.eq ffff8000113a84e8 } ffff8000113a84dc: f9400bf3 ldr x19, [sp,#16] ffff8000113a84e0: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a84e4: d65f03c0 ret return !!(features & NETIF_F_CSUM_MASK) ? 0 : skb_checksum_help(skb); ffff8000113a84e8: aa1303e0 mov x0, x19 ffff8000113a84ec: 94000000 bl ffff8000113a19cc ffff8000113a84ec: R_AARCH64_CALL26 skb_checksum_help } ffff8000113a84f0: f9400bf3 ldr x19, [sp,#16] ffff8000113a84f4: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a84f8: d65f03c0 ret return !!(features & NETIF_F_SCTP_CRC) ? 0 : ffff8000113a84fc: 52800000 mov w0, #0x0 // #0 ffff8000113a8500: b727fee1 tbnz x1, #36, ffff8000113a84dc ffff8000113a8504: aa1303e0 mov x0, x19 ffff8000113a8508: 94000000 bl ffff8000113a8380 ffff8000113a8508: R_AARCH64_CALL26 skb_crc32c_csum_help ffff8000113a850c: 17fffff4 b ffff8000113a84dc ffff8000113a8510 : { ffff8000113a8510: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a8514: 910003fd mov x29, sp ffff8000113a8518: a90153f3 stp x19, x20, [sp,#16] ffff8000113a851c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a8520: f9001bf7 str x23, [sp,#48] ffff8000113a8524: aa0003f3 mov x19, x0 ffff8000113a8528: aa1e03e0 mov x0, x30 ffff8000113a852c: aa0103f7 mov x23, x1 ffff8000113a8530: 94000000 bl 0 <_mcount> ffff8000113a8530: R_AARCH64_CALL26 _mcount __be16 type = skb->protocol; ffff8000113a8534: 79416260 ldrh w0, [x19,#176] if (type == htons(ETH_P_TEB)) { ffff8000113a8538: 528b0ca1 mov w1, #0x5865 // #22629 ffff8000113a853c: 6b01001f cmp w0, w1 ffff8000113a8540: 540004c0 b.eq ffff8000113a85d8 switch (ethertype) { ffff8000113a8544: 7102041f cmp w0, #0x81 * vlan encapsulated (normal or hardware accelerated) or not. */ static inline __be16 __vlan_get_protocol(struct sk_buff *skb, __be16 type, int *depth) { unsigned int vlan_depth = skb->mac_len; ffff8000113a8548: 7940f274 ldrh w20, [x19,#120] switch (ethertype) { ffff8000113a854c: 54000160 b.eq ffff8000113a8578 ffff8000113a8550: 52951101 mov w1, #0xa888 // #43144 ffff8000113a8554: 6b01001f cmp w0, w1 ffff8000113a8558: 54000100 b.eq ffff8000113a8578 type = vh->h_vlan_encapsulated_proto; vlan_depth += VLAN_HLEN; } while (eth_type_vlan(type)); } if (depth) ffff8000113a855c: b4000057 cbz x23, ffff8000113a8564 *depth = vlan_depth; ffff8000113a8560: b90002f4 str w20, [x23] } ffff8000113a8564: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a8568: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a856c: f9401bf7 ldr x23, [sp,#48] ffff8000113a8570: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a8574: d65f03c0 ret vlan_depth = ETH_HLEN; ffff8000113a8578: 528001d5 mov w21, #0xe // #14 if (vlan_depth) { ffff8000113a857c: 35000234 cbnz w20, ffff8000113a85c0 switch (ethertype) { ffff8000113a8580: 52951116 mov w22, #0xa888 // #43144 static inline bool pskb_may_pull(struct sk_buff *skb, unsigned int len) ffff8000113a8584: b9407262 ldr w2, [x19,#112] return skb->len - skb->data_len; ffff8000113a8588: b9407663 ldr w3, [x19,#116] if (unlikely(!pskb_may_pull(skb, ffff8000113a858c: 110012b4 add w20, w21, #0x4 ffff8000113a8590: 4b030041 sub w1, w2, w3 if (likely(len <= skb_headlen(skb))) ffff8000113a8594: 6b01029f cmp w20, w1 ffff8000113a8598: 54000308 b.hi ffff8000113a85f8 type = vh->h_vlan_encapsulated_proto; ffff8000113a859c: f9406660 ldr x0, [x19,#200] ffff8000113a85a0: 8b354015 add x21, x0, w21, uxtw ffff8000113a85a4: 794006a0 ldrh w0, [x21,#2] switch (ethertype) { ffff8000113a85a8: 7102041f cmp w0, #0x81 ffff8000113a85ac: 54000060 b.eq ffff8000113a85b8 ffff8000113a85b0: 6b16001f cmp w0, w22 ffff8000113a85b4: 54fffd41 b.ne ffff8000113a855c if (unlikely(!pskb_may_pull(skb, ffff8000113a85b8: 2a1403f5 mov w21, w20 ffff8000113a85bc: 17fffff2 b ffff8000113a8584 if (WARN_ON(vlan_depth < VLAN_HLEN)) ffff8000113a85c0: 71000e9f cmp w20, #0x3 vlan_depth -= VLAN_HLEN; ffff8000113a85c4: 51001295 sub w21, w20, #0x4 if (WARN_ON(vlan_depth < VLAN_HLEN)) ffff8000113a85c8: 54fffdc8 b.hi ffff8000113a8580 ffff8000113a85cc: d4210000 brk #0x800 return 0; ffff8000113a85d0: 52800000 mov w0, #0x0 // #0 ffff8000113a85d4: 17ffffe4 b ffff8000113a8564 static inline bool pskb_may_pull(struct sk_buff *skb, unsigned int len) ffff8000113a85d8: b9407260 ldr w0, [x19,#112] return skb->len - skb->data_len; ffff8000113a85dc: b9407661 ldr w1, [x19,#116] ffff8000113a85e0: 4b010001 sub w1, w0, w1 if (likely(len <= skb_headlen(skb))) ffff8000113a85e4: 7100343f cmp w1, #0xd ffff8000113a85e8: 54000189 b.ls ffff8000113a8618 type = eth->h_proto; ffff8000113a85ec: f9406660 ldr x0, [x19,#200] ffff8000113a85f0: 79401800 ldrh w0, [x0,#12] ffff8000113a85f4: 17ffffd4 b ffff8000113a8544 if (unlikely(len > skb->len)) ffff8000113a85f8: 6b02029f cmp w20, w2 return __pskb_pull_tail(skb, len - skb_headlen(skb)) != NULL; ffff8000113a85fc: aa1303e0 mov x0, x19 ffff8000113a8600: 4b010281 sub w1, w20, w1 if (unlikely(len > skb->len)) ffff8000113a8604: 54000068 b.hi ffff8000113a8610 return __pskb_pull_tail(skb, len - skb_headlen(skb)) != NULL; ffff8000113a8608: 94000000 bl 0 <__pskb_pull_tail> ffff8000113a8608: R_AARCH64_CALL26 __pskb_pull_tail if (unlikely(!pskb_may_pull(skb, ffff8000113a860c: b5fffc80 cbnz x0, ffff8000113a859c return 0; ffff8000113a8610: 52800000 mov w0, #0x0 // #0 ffff8000113a8614: 17ffffd4 b ffff8000113a8564 if (unlikely(len > skb->len)) ffff8000113a8618: 7100341f cmp w0, #0xd ffff8000113a861c: 54ffffa9 b.ls ffff8000113a8610 return __pskb_pull_tail(skb, len - skb_headlen(skb)) != NULL; ffff8000113a8620: 528001c2 mov w2, #0xe // #14 ffff8000113a8624: aa1303e0 mov x0, x19 ffff8000113a8628: 4b010041 sub w1, w2, w1 ffff8000113a862c: 94000000 bl 0 <__pskb_pull_tail> ffff8000113a862c: R_AARCH64_CALL26 __pskb_pull_tail if (unlikely(!pskb_may_pull(skb, sizeof(struct ethhdr)))) ffff8000113a8630: b5fffde0 cbnz x0, ffff8000113a85ec ffff8000113a8634: 52800000 mov w0, #0x0 // #0 ffff8000113a8638: 17ffffcb b ffff8000113a8564 ffff8000113a863c : { ffff8000113a863c: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a8640: 910003fd mov x29, sp ffff8000113a8644: a90153f3 stp x19, x20, [sp,#16] ffff8000113a8648: f90013f5 str x21, [sp,#32] ffff8000113a864c: aa0003f3 mov x19, x0 ffff8000113a8650: aa1e03e0 mov x0, x30 ffff8000113a8654: aa0103f5 mov x21, x1 ffff8000113a8658: 94000000 bl 0 <_mcount> ffff8000113a8658: R_AARCH64_CALL26 _mcount int vlan_depth = skb->mac_len; ffff8000113a865c: 7940f260 ldrh w0, [x19,#120] { ffff8000113a8660: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113a8660: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard int vlan_depth = skb->mac_len; ffff8000113a8664: 910103a1 add x1, x29, #0x40 { ffff8000113a8668: f9400283 ldr x3, [x20] ffff8000113a8668: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard int vlan_depth = skb->mac_len; ffff8000113a866c: b81f4c20 str w0, [x1,#-12]! __be16 type = skb_network_protocol(skb, &vlan_depth); ffff8000113a8670: aa1303e0 mov x0, x19 { ffff8000113a8674: f9001fa3 str x3, [x29,#56] __be16 type = skb_network_protocol(skb, &vlan_depth); ffff8000113a8678: 94000000 bl ffff8000113a8510 ffff8000113a8678: R_AARCH64_CALL26 skb_network_protocol ffff8000113a867c: 53003c04 uxth w4, w0 if (unlikely(!type)) ffff8000113a8680: 34000684 cbz w4, ffff8000113a8750 skb->len -= len; ffff8000113a8684: b9407261 ldr w1, [x19,#112] __skb_pull(skb, vlan_depth); ffff8000113a8688: b94037a0 ldr w0, [x29,#52] BUG_ON(skb->len < skb->data_len); ffff8000113a868c: b9407662 ldr w2, [x19,#116] skb->len -= len; ffff8000113a8690: 4b000021 sub w1, w1, w0 ffff8000113a8694: b9007261 str w1, [x19,#112] BUG_ON(skb->len < skb->data_len); ffff8000113a8698: 6b02003f cmp w1, w2 ffff8000113a869c: 54000583 b.cc ffff8000113a874c return skb->data += len; ffff8000113a86a0: f9406661 ldr x1, [x19,#200] ffff8000113a86a4: 8b204020 add x0, x1, w0, uxtw ffff8000113a86a8: f9006660 str x0, [x19,#200] ffff8000113a86ac: 90000005 adrp x5, ffff80001139e37c <__my_cpu_offset> ffff8000113a86ac: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a86b0: 910000a5 add x5, x5, #0x0 ffff8000113a86b0: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a86b4: f94408a2 ldr x2, [x5,#2064] ffff8000113a86b8: 912040a5 add x5, x5, #0x810 list_for_each_entry_rcu(ptype, &offload_base, list) { ffff8000113a86bc: eb0200bf cmp x5, x2 ffff8000113a86c0: d1008042 sub x2, x2, #0x20 ffff8000113a86c4: 540000c1 b.ne ffff8000113a86dc ffff8000113a86c8: 1400000e b ffff8000113a8700 ffff8000113a86cc: f9401042 ldr x2, [x2,#32] ffff8000113a86d0: eb0200bf cmp x5, x2 ffff8000113a86d4: d1008042 sub x2, x2, #0x20 ffff8000113a86d8: 54000140 b.eq ffff8000113a8700 if (ptype->type == type && ptype->callbacks.gso_segment) { ffff8000113a86dc: 79400043 ldrh w3, [x2] ffff8000113a86e0: 6b04007f cmp w3, w4 ffff8000113a86e4: 54ffff41 b.ne ffff8000113a86cc ffff8000113a86e8: f9400443 ldr x3, [x2,#8] ffff8000113a86ec: b4ffff03 cbz x3, ffff8000113a86cc segs = ptype->callbacks.gso_segment(skb, features); ffff8000113a86f0: aa1303e0 mov x0, x19 ffff8000113a86f4: aa1503e1 mov x1, x21 ffff8000113a86f8: d63f0060 blr x3 break; ffff8000113a86fc: 14000002 b ffff8000113a8704 struct sk_buff *segs = ERR_PTR(-EPROTONOSUPPORT); ffff8000113a8700: 92800b80 mov x0, #0xffffffffffffffa3 // #-93 return skb->head + skb->mac_header; ffff8000113a8704: 79416e61 ldrh w1, [x19,#182] ffff8000113a8708: f9406264 ldr x4, [x19,#192] __skb_push(skb, skb->data - skb_mac_header(skb)); ffff8000113a870c: f9406662 ldr x2, [x19,#200] skb->len += len; ffff8000113a8710: b9407263 ldr w3, [x19,#112] return skb->head + skb->mac_header; ffff8000113a8714: 8b010081 add x1, x4, x1 ffff8000113a8718: cb010041 sub x1, x2, x1 skb->data -= len; ffff8000113a871c: cb214042 sub x2, x2, w1, uxtw skb->len += len; ffff8000113a8720: 0b010061 add w1, w3, w1 skb->data -= len; ffff8000113a8724: f9006662 str x2, [x19,#200] skb->len += len; ffff8000113a8728: b9007261 str w1, [x19,#112] } ffff8000113a872c: f9401fa2 ldr x2, [x29,#56] ffff8000113a8730: f9400281 ldr x1, [x20] ffff8000113a8730: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a8734: eb01005f cmp x2, x1 ffff8000113a8738: 54000101 b.ne ffff8000113a8758 ffff8000113a873c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a8740: f94013f5 ldr x21, [sp,#32] ffff8000113a8744: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a8748: d65f03c0 ret ffff8000113a874c: 94000000 bl ffff80001139e37c <__my_cpu_offset> ffff8000113a874c: R_AARCH64_CALL26 .text.unlikely+0xa0 return ERR_PTR(-EINVAL); ffff8000113a8750: 928002a0 mov x0, #0xffffffffffffffea // #-22 ffff8000113a8754: 17fffff6 b ffff8000113a872c } ffff8000113a8758: 94000000 bl 0 <__stack_chk_fail> ffff8000113a8758: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a875c <__skb_gso_segment>: { ffff8000113a875c: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a8760: 910003fd mov x29, sp ffff8000113a8764: a90153f3 stp x19, x20, [sp,#16] ffff8000113a8768: f90013f5 str x21, [sp,#32] ffff8000113a876c: aa0003f3 mov x19, x0 ffff8000113a8770: aa1e03e0 mov x0, x30 ffff8000113a8774: 53001c55 uxtb w21, w2 ffff8000113a8778: aa0103f4 mov x20, x1 ffff8000113a877c: 94000000 bl 0 <_mcount> ffff8000113a877c: R_AARCH64_CALL26 _mcount return skb->ip_summed != CHECKSUM_PARTIAL && ffff8000113a8780: 39420260 ldrb w0, [x19,#128] if (tx_path) ffff8000113a8784: 34000415 cbz w21, ffff8000113a8804 <__skb_gso_segment+0xa8> return skb->ip_summed != CHECKSUM_PARTIAL && ffff8000113a8788: d3451400 ubfx x0, x0, #5, #1 ffff8000113a878c: 52000000 eor w0, w0, #0x1 if (unlikely(skb_needs_check(skb, tx_path))) { ffff8000113a8790: 350007e0 cbnz w0, ffff8000113a888c <__skb_gso_segment+0x130> if (features & NETIF_F_GSO_PARTIAL) { ffff8000113a8794: 37e00434 tbnz w20, #28, ffff8000113a8818 <__skb_gso_segment+0xbc> ffff8000113a8798: f9406261 ldr x1, [x19,#192] return skb->data - skb->head; ffff8000113a879c: f9406660 ldr x0, [x19,#200] skb->mac_len = skb->network_header - skb->mac_header; ffff8000113a87a0: 79416a62 ldrh w2, [x19,#180] return skb->data - skb->head; ffff8000113a87a4: cb010001 sub x1, x0, x1 skb->mac_header = skb->data - skb->head; ffff8000113a87a8: 53003c20 uxth w0, w1 skb->mac_len = skb->network_header - skb->mac_header; ffff8000113a87ac: 4b000042 sub w2, w2, w0 SKB_GSO_CB(skb)->mac_offset = skb_headroom(skb); ffff8000113a87b0: b9004a61 str w1, [x19,#72] skb->mac_header = skb->data - skb->head; ffff8000113a87b4: 79016e60 strh w0, [x19,#182] SKB_GSO_CB(skb)->encap_level = 0; ffff8000113a87b8: b9004e7f str wzr, [x19,#76] skb->mac_len = skb->network_header - skb->mac_header; ffff8000113a87bc: 7900f262 strh w2, [x19,#120] segs = skb_mac_gso_segment(skb, features); ffff8000113a87c0: aa1303e0 mov x0, x19 ffff8000113a87c4: aa1403e1 mov x1, x20 ffff8000113a87c8: 94000000 bl ffff8000113a863c ffff8000113a87c8: R_AARCH64_CALL26 skb_mac_gso_segment if (segs != skb && unlikely(skb_needs_check(skb, tx_path) && !IS_ERR(segs))) ffff8000113a87cc: eb13001f cmp x0, x19 ffff8000113a87d0: 54000520 b.eq ffff8000113a8874 <__skb_gso_segment+0x118> return skb->ip_summed != CHECKSUM_PARTIAL && ffff8000113a87d4: 39420261 ldrb w1, [x19,#128] if (tx_path) ffff8000113a87d8: 35000415 cbnz w21, ffff8000113a8858 <__skb_gso_segment+0xfc> return skb->ip_summed == CHECKSUM_NONE; ffff8000113a87dc: d3451821 ubfx x1, x1, #5, #2 ffff8000113a87e0: 6b1f003f cmp w1, wzr ffff8000113a87e4: 1a9f17e1 cset w1, eq ffff8000113a87e8: aa0003f4 mov x20, x0 if (segs != skb && unlikely(skb_needs_check(skb, tx_path) && !IS_ERR(segs))) ffff8000113a87ec: 350005c1 cbnz w1, ffff8000113a88a4 <__skb_gso_segment+0x148> } ffff8000113a87f0: aa1403e0 mov x0, x20 ffff8000113a87f4: f94013f5 ldr x21, [sp,#32] ffff8000113a87f8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a87fc: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a8800: d65f03c0 ret return skb->ip_summed == CHECKSUM_NONE; ffff8000113a8804: d3451800 ubfx x0, x0, #5, #2 ffff8000113a8808: 6b1f001f cmp w0, wzr ffff8000113a880c: 1a9f17e0 cset w0, eq if (unlikely(skb_needs_check(skb, tx_path))) { ffff8000113a8810: 34fffc20 cbz w0, ffff8000113a8794 <__skb_gso_segment+0x38> ffff8000113a8814: 1400001e b ffff8000113a888c <__skb_gso_segment+0x130> struct net_device *dev = skb->dev; ffff8000113a8818: f9400a60 ldr x0, [x19,#16] static inline bool skb_gso_ok(struct sk_buff *skb, netdev_features_t features) ffff8000113a881c: f9406261 ldr x1, [x19,#192] return skb->head + skb->end; ffff8000113a8820: b940be62 ldr w2, [x19,#188] partial_features |= dev->features & dev->gso_partial_features; ffff8000113a8824: f9407c03 ldr x3, [x0,#248] ffff8000113a8828: f9406400 ldr x0, [x0,#200] ffff8000113a882c: 8b020022 add x2, x1, x2 ffff8000113a8830: 8a000063 and x3, x3, x0 netdev_features_t feature = (netdev_features_t)gso_type << NETIF_F_GSO_SHIFT; ffff8000113a8834: b9801840 ldrsw x0, [x2,#24] ffff8000113a8838: b26f0063 orr x3, x3, #0x20000 ffff8000113a883c: d370bc00 lsl x0, x0, #16 if (!skb_gso_ok(skb, features | partial_features)) ffff8000113a8840: aa140063 orr x3, x3, x20 return (features & feature) == feature; ffff8000113a8844: 8a030004 and x4, x0, x3 return net_gso_ok(features, skb_shinfo(skb)->gso_type) && ffff8000113a8848: eb04001f cmp x0, x4 ffff8000113a884c: 540000c0 b.eq ffff8000113a8864 <__skb_gso_segment+0x108> features &= ~NETIF_F_GSO_PARTIAL; ffff8000113a8850: 9263fa94 and x20, x20, #0xffffffffefffffff ffff8000113a8854: 17ffffd2 b ffff8000113a879c <__skb_gso_segment+0x40> return skb->ip_summed != CHECKSUM_PARTIAL && ffff8000113a8858: d3451421 ubfx x1, x1, #5, #1 ffff8000113a885c: 52000021 eor w1, w1, #0x1 ffff8000113a8860: 17ffffe2 b ffff8000113a87e8 <__skb_gso_segment+0x8c> ffff8000113a8864: f9400440 ldr x0, [x2,#8] ffff8000113a8868: b4fff9a0 cbz x0, ffff8000113a879c <__skb_gso_segment+0x40> (!skb_has_frag_list(skb) || (features & NETIF_F_FRAGLIST)); ffff8000113a886c: 3637ff23 tbz w3, #6, ffff8000113a8850 <__skb_gso_segment+0xf4> ffff8000113a8870: 17ffffcb b ffff8000113a879c <__skb_gso_segment+0x40> ffff8000113a8874: aa1303f4 mov x20, x19 } ffff8000113a8878: aa1403e0 mov x0, x20 ffff8000113a887c: f94013f5 ldr x21, [sp,#32] ffff8000113a8880: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a8884: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a8888: d65f03c0 ret err = skb_cow_head(skb, 0); ffff8000113a888c: 52800001 mov w1, #0x0 // #0 ffff8000113a8890: aa1303e0 mov x0, x19 ffff8000113a8894: 97ffe13c bl ffff8000113a0d84 if (err < 0) ffff8000113a8898: 36fff7e0 tbz w0, #31, ffff8000113a8794 <__skb_gso_segment+0x38> return ERR_PTR(err); ffff8000113a889c: 93407c14 sxtw x20, w0 ffff8000113a88a0: 17ffffd4 b ffff8000113a87f0 <__skb_gso_segment+0x94> if (segs != skb && unlikely(skb_needs_check(skb, tx_path) && !IS_ERR(segs))) ffff8000113a88a4: b140041f cmn x0, #0x1, lsl #12 ffff8000113a88a8: 54fffa48 b.hi ffff8000113a87f0 <__skb_gso_segment+0x94> skb_warn_bad_offload(skb); ffff8000113a88ac: aa1303e0 mov x0, x19 ffff8000113a88b0: 94000000 bl ffff80001139e37c <__my_cpu_offset> ffff8000113a88b0: R_AARCH64_CALL26 .text.unlikely+0xa4 ffff8000113a88b4: 17ffffcf b ffff8000113a87f0 <__skb_gso_segment+0x94> ffff8000113a88b8 : { ffff8000113a88b8: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a88bc: 910003fd mov x29, sp ffff8000113a88c0: a90153f3 stp x19, x20, [sp,#16] ffff8000113a88c4: f90013f5 str x21, [sp,#32] ffff8000113a88c8: aa0003f3 mov x19, x0 ffff8000113a88cc: aa1e03e0 mov x0, x30 ffff8000113a88d0: 94000000 bl 0 <_mcount> ffff8000113a88d0: R_AARCH64_CALL26 _mcount static inline bool skb_is_gso(const struct sk_buff *skb) ffff8000113a88d4: f9406262 ldr x2, [x19,#192] return skb->head + skb->end; ffff8000113a88d8: b940be60 ldr w0, [x19,#188] ffff8000113a88dc: 90000015 adrp x21, 0 <__stack_chk_guard> ffff8000113a88dc: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a88e0: f94002a4 ldr x4, [x21] ffff8000113a88e0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a88e4: 8b000040 add x0, x2, x0 struct net_device *dev = skb->dev; ffff8000113a88e8: f9400a61 ldr x1, [x19,#16] if (skb_is_gso(skb)) ffff8000113a88ec: 79400803 ldrh w3, [x0,#4] { ffff8000113a88f0: f9001fa4 str x4, [x29,#56] netdev_features_t features = dev->features; ffff8000113a88f4: f9406434 ldr x20, [x1,#200] if (skb_is_gso(skb)) ffff8000113a88f8: 34000a23 cbz w3, ffff8000113a8a3c if (gso_segs > dev->gso_max_segs) ffff8000113a88fc: 79507824 ldrh w4, [x1,#2108] ffff8000113a8900: 79400c03 ldrh w3, [x0,#6] struct net_device *dev = skb->dev; ffff8000113a8904: f9407c25 ldr x5, [x1,#248] if (gso_segs > dev->gso_max_segs) ffff8000113a8908: 6b03009f cmp w4, w3 ffff8000113a890c: 54000c23 b.cc ffff8000113a8a90 if (!(skb_shinfo(skb)->gso_type & SKB_GSO_PARTIAL)) ffff8000113a8910: b9401800 ldr w0, [x0,#24] ffff8000113a8914: 37600040 tbnz w0, #12, ffff8000113a891c features &= ~dev->gso_partial_features; ffff8000113a8918: 8a250294 bic x20, x20, x5 if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV4) { ffff8000113a891c: 36000900 tbz w0, #0, ffff8000113a8a3c struct iphdr *iph = skb->encapsulation ? ffff8000113a8920: 39420660 ldrb w0, [x19,#129] ffff8000113a8924: d3451400 ubfx x0, x0, #5, #1 inner_ip_hdr(skb) : ip_hdr(skb); ffff8000113a8928: 34000ee0 cbz w0, ffff8000113a8b04 return skb->head + skb->inner_network_header; ffff8000113a892c: 79415a63 ldrh w3, [x19,#172] ffff8000113a8930: 8b030042 add x2, x2, x3 if (!(iph->frag_off & htons(IP_DF))) ffff8000113a8934: 79400c43 ldrh w3, [x2,#6] features &= ~NETIF_F_TSO_MANGLEID; ffff8000113a8938: 926cfa82 and x2, x20, #0xfffffffffff7ffff if (!(iph->frag_off & htons(IP_DF))) ffff8000113a893c: 121a0063 and w3, w3, #0x40 features &= ~NETIF_F_TSO_MANGLEID; ffff8000113a8940: 6b1f007f cmp w3, wzr ffff8000113a8944: 9a940054 csel x20, x2, x20, eq if (skb->encapsulation) ffff8000113a8948: 34000060 cbz w0, ffff8000113a8954 features &= dev->hw_enc_features; ffff8000113a894c: f9407420 ldr x0, [x1,#232] ffff8000113a8950: 8a000294 and x20, x20, x0 * Returns true if the skb is tagged, regardless of whether it is hardware * accelerated or not. */ static inline bool skb_vlan_tagged(const struct sk_buff *skb) { if (!skb_vlan_tag_present(skb) && ffff8000113a8954: 39420a60 ldrb w0, [x19,#130] ffff8000113a8958: 12000000 and w0, w0, #0x1 ffff8000113a895c: 350000e0 cbnz w0, ffff8000113a8978 switch (ethertype) { ffff8000113a8960: 79416262 ldrh w2, [x19,#176] ffff8000113a8964: 7102045f cmp w2, #0x81 ffff8000113a8968: 54000080 b.eq ffff8000113a8978 ffff8000113a896c: 52951103 mov w3, #0xa888 // #43144 ffff8000113a8970: 6b03005f cmp w2, w3 ffff8000113a8974: 54000101 b.ne ffff8000113a8994 dev->vlan_features | ffff8000113a8978: f9407023 ldr x3, [x1,#224] features = netdev_intersect_features(features, ffff8000113a897c: d2801002 mov x2, #0x80 // #128 ffff8000113a8980: f2c40002 movk x2, #0x2000, lsl #32 ffff8000113a8984: aa020062 orr x2, x3, x2 if ((f1 ^ f2) & NETIF_F_HW_CSUM) { ffff8000113a8988: ca020284 eor x4, x20, x2 ffff8000113a898c: 37180664 tbnz w4, #3, ffff8000113a8a58 return f1 & f2; ffff8000113a8990: 8a020294 and x20, x20, x2 if (dev->netdev_ops->ndo_features_check) ffff8000113a8994: f940f822 ldr x2, [x1,#496] ffff8000113a8998: f9401443 ldr x3, [x2,#40] ffff8000113a899c: b4000663 cbz x3, ffff8000113a8a68 features &= dev->netdev_ops->ndo_features_check(skb, dev, ffff8000113a89a0: aa1403e2 mov x2, x20 ffff8000113a89a4: aa1303e0 mov x0, x19 ffff8000113a89a8: d63f0060 blr x3 ffff8000113a89ac: 8a140014 and x20, x0, x20 type = skb_network_protocol(skb, &tmp); ffff8000113a89b0: 9100d3a1 add x1, x29, #0x34 ffff8000113a89b4: aa1303e0 mov x0, x19 ffff8000113a89b8: 94000000 bl ffff8000113a8510 ffff8000113a89b8: R_AARCH64_CALL26 skb_network_protocol ffff8000113a89bc: 53003c00 uxth w0, w0 }; static inline bool eth_p_mpls(__be16 eth_type) { return eth_type == htons(ETH_P_MPLS_UC) || eth_type == htons(ETH_P_MPLS_MC); ffff8000113a89c0: 52891101 mov w1, #0x4888 // #18568 if (eth_p_mpls(type)) ffff8000113a89c4: 6b01001f cmp w0, w1 ffff8000113a89c8: 54000400 b.eq ffff8000113a8a48 return eth_type == htons(ETH_P_MPLS_UC) || ffff8000113a89cc: 5288f101 mov w1, #0x4788 // #18312 ffff8000113a89d0: 6b01001f cmp w0, w1 ffff8000113a89d4: 540003a0 b.eq ffff8000113a8a48 if (skb->ip_summed != CHECKSUM_NONE && ffff8000113a89d8: 39420261 ldrb w1, [x19,#128] ffff8000113a89dc: d3451821 ubfx x1, x1, #5, #2 ffff8000113a89e0: 340001c1 cbz w1, ffff8000113a8a18 if (protocol == htons(ETH_P_FCOE)) ffff8000113a89e4: 711a241f cmp w0, #0x689 ffff8000113a89e8: 54000640 b.eq ffff8000113a8ab0 if (features & NETIF_F_HW_CSUM) { ffff8000113a89ec: 37180174 tbnz w20, #3, ffff8000113a8a18 switch (protocol) { ffff8000113a89f0: 7100201f cmp w0, #0x8 ffff8000113a89f4: 54000840 b.eq ffff8000113a8afc ffff8000113a89f8: 529bb0c1 mov w1, #0xdd86 // #56710 ffff8000113a89fc: 6b01001f cmp w0, w1 ffff8000113a8a00: 54000061 b.ne ffff8000113a8a0c return !!(features & NETIF_F_IPV6_CSUM); ffff8000113a8a04: d3441280 ubfx x0, x20, #4, #1 ffff8000113a8a08: 35000080 cbnz w0, ffff8000113a8a18 features &= ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK); ffff8000113a8a0c: b25d73e0 mov x0, #0xfffffff800000000 // #-34359738368 ffff8000113a8a10: f29ffca0 movk x0, #0xffe5 ffff8000113a8a14: 8a000294 and x20, x20, x0 } ffff8000113a8a18: f9401fa2 ldr x2, [x29,#56] ffff8000113a8a1c: f94002a1 ldr x1, [x21] ffff8000113a8a1c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a8a20: aa1403e0 mov x0, x20 ffff8000113a8a24: eb01005f cmp x2, x1 ffff8000113a8a28: 54000741 b.ne ffff8000113a8b10 ffff8000113a8a2c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a8a30: f94013f5 ldr x21, [sp,#32] ffff8000113a8a34: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a8a38: d65f03c0 ret ffff8000113a8a3c: 39420660 ldrb w0, [x19,#129] ffff8000113a8a40: d3451400 ubfx x0, x0, #5, #1 ffff8000113a8a44: 17ffffc1 b ffff8000113a8948 features &= skb->dev->mpls_features; ffff8000113a8a48: f9400a61 ldr x1, [x19,#16] ffff8000113a8a4c: f9407821 ldr x1, [x1,#240] ffff8000113a8a50: 8a010294 and x20, x20, x1 ffff8000113a8a54: 17ffffe1 b ffff8000113a89d8 if (f1 & NETIF_F_HW_CSUM) ffff8000113a8a58: 36180254 tbz w20, #3, ffff8000113a8aa0 f1 |= (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM); ffff8000113a8a5c: d2800243 mov x3, #0x12 // #18 ffff8000113a8a60: aa030294 orr x20, x20, x3 ffff8000113a8a64: 17ffffcb b ffff8000113a8990 * Returns true if the skb is tagged with multiple vlan headers, regardless * of whether it is hardware accelerated or not. */ static inline bool skb_vlan_tagged_multi(struct sk_buff *skb) { __be16 protocol = skb->protocol; ffff8000113a8a68: 79416261 ldrh w1, [x19,#176] if (!skb_vlan_tag_present(skb)) { ffff8000113a8a6c: 35000340 cbnz w0, ffff8000113a8ad4 switch (ethertype) { ffff8000113a8a70: 7102043f cmp w1, #0x81 ffff8000113a8a74: 54000220 b.eq ffff8000113a8ab8 ffff8000113a8a78: 52951100 mov w0, #0xa888 // #43144 ffff8000113a8a7c: 6b00003f cmp w1, w0 ffff8000113a8a80: 540001c0 b.eq ffff8000113a8ab8 { ffff8000113a8a84: aa1403e0 mov x0, x20 features &= dflt_features_check(skb, dev, features); ffff8000113a8a88: 8a140014 and x20, x0, x20 ffff8000113a8a8c: 17ffffc9 b ffff8000113a89b0 ffff8000113a8a90: 39420660 ldrb w0, [x19,#129] return features & ~NETIF_F_GSO_MASK; ffff8000113a8a94: 925db294 and x20, x20, #0xfffffff80000ffff ffff8000113a8a98: d3451400 ubfx x0, x0, #5, #1 ffff8000113a8a9c: 17ffffab b ffff8000113a8948 f2 |= (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM); ffff8000113a8aa0: d2801242 mov x2, #0x92 // #146 ffff8000113a8aa4: f2c40002 movk x2, #0x2000, lsl #32 ffff8000113a8aa8: aa020062 orr x2, x3, x2 ffff8000113a8aac: 17ffffb9 b ffff8000113a8990 return !!(features & NETIF_F_FCOE_CRC); ffff8000113a8ab0: d3638e80 ubfx x0, x20, #35, #1 ffff8000113a8ab4: 17ffffd5 b ffff8000113a8a08 struct vlan_ethhdr *veh; if (likely(!eth_type_vlan(protocol))) return false; if (unlikely(!pskb_may_pull(skb, VLAN_ETH_HLEN))) ffff8000113a8ab8: aa1303e0 mov x0, x19 ffff8000113a8abc: 52800241 mov w1, #0x12 // #18 ffff8000113a8ac0: 97ffe09d bl ffff8000113a0d34 ffff8000113a8ac4: 53001c00 uxtb w0, w0 ffff8000113a8ac8: 34fffde0 cbz w0, ffff8000113a8a84 return false; veh = (struct vlan_ethhdr *)skb->data; protocol = veh->h_vlan_encapsulated_proto; ffff8000113a8acc: f9406660 ldr x0, [x19,#200] ffff8000113a8ad0: 79402001 ldrh w1, [x0,#16] switch (ethertype) { ffff8000113a8ad4: 7102043f cmp w1, #0x81 ffff8000113a8ad8: 54000080 b.eq ffff8000113a8ae8 ffff8000113a8adc: 52951100 mov w0, #0xa888 // #43144 ffff8000113a8ae0: 6b00003f cmp w1, w0 ffff8000113a8ae4: 54fffd01 b.ne ffff8000113a8a84 /* In the case of multi-tagged packets, use a direct mask * instead of using netdev_interesect_features(), to make * sure that only devices supporting NETIF_F_HW_CSUM will * have checksum offloading support. */ features &= NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_HW_CSUM | ffff8000113a8ae8: d2801d20 mov x0, #0xe9 // #233 ffff8000113a8aec: f2c40000 movk x0, #0x2000, lsl #32 ffff8000113a8af0: 8a000280 and x0, x20, x0 features &= dflt_features_check(skb, dev, features); ffff8000113a8af4: 8a140014 and x20, x0, x20 ffff8000113a8af8: 17ffffae b ffff8000113a89b0 return !!(features & NETIF_F_IP_CSUM); ffff8000113a8afc: d3410680 ubfx x0, x20, #1, #1 ffff8000113a8b00: 17ffffc2 b ffff8000113a8a08 return skb->head + skb->network_header; ffff8000113a8b04: 79416a63 ldrh w3, [x19,#180] ffff8000113a8b08: 8b030042 add x2, x2, x3 ffff8000113a8b0c: 17ffff8a b ffff8000113a8934 } ffff8000113a8b10: 94000000 bl 0 <__stack_chk_fail> ffff8000113a8b10: R_AARCH64_CALL26 __stack_chk_fail ffff8000113a8b14 : { ffff8000113a8b14: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a8b18: 910003fd mov x29, sp ffff8000113a8b1c: a90153f3 stp x19, x20, [sp,#16] ffff8000113a8b20: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a8b24: a90363f7 stp x23, x24, [sp,#48] ffff8000113a8b28: aa0003f3 mov x19, x0 ffff8000113a8b2c: aa1e03e0 mov x0, x30 ffff8000113a8b30: aa0103f7 mov x23, x1 ffff8000113a8b34: aa0203f6 mov x22, x2 ffff8000113a8b38: 94000000 bl 0 <_mcount> ffff8000113a8b38: R_AARCH64_CALL26 _mcount features = netif_skb_features(skb); ffff8000113a8b3c: aa1303e0 mov x0, x19 ffff8000113a8b40: 94000000 bl ffff8000113a88b8 ffff8000113a8b40: R_AARCH64_CALL26 netif_skb_features ffff8000113a8b44: aa0003f4 mov x20, x0 if (skb_vlan_tag_present(skb) && ffff8000113a8b48: 39420a60 ldrb w0, [x19,#130] ffff8000113a8b4c: 36000620 tbz w0, #0, ffff8000113a8c10 !vlan_hw_offload_capable(features, skb->vlan_proto)) ffff8000113a8b50: 79413275 ldrh w21, [x19,#152] if (proto == htons(ETH_P_8021Q) && features & NETIF_F_HW_VLAN_CTAG_TX) ffff8000113a8b54: 710206bf cmp w21, #0x81 ffff8000113a8b58: 54001020 b.eq ffff8000113a8d5c if (proto == htons(ETH_P_8021AD) && features & NETIF_F_HW_VLAN_STAG_TX) ffff8000113a8b5c: 52951100 mov w0, #0xa888 // #43144 ffff8000113a8b60: 6b0002bf cmp w21, w0 ffff8000113a8b64: 540013a0 b.eq ffff8000113a8dd8 if (!skb->cloned) ffff8000113a8b68: 3941fa60 ldrb w0, [x19,#126] skb = vlan_insert_tag_set_proto(skb, skb->vlan_proto, ffff8000113a8b6c: 79413678 ldrh w24, [x19,#154] ffff8000113a8b70: 12000000 and w0, w0, #0x1 ffff8000113a8b74: 34001240 cbz w0, ffff8000113a8dbc static inline int skb_header_cloned(const struct sk_buff *skb) ffff8000113a8b78: f9406260 ldr x0, [x19,#192] return skb->head + skb->end; ffff8000113a8b7c: b940be61 ldr w1, [x19,#188] return dataref != 1; ffff8000113a8b80: aa0003e2 mov x2, x0 return skb->head + skb->end; ffff8000113a8b84: 8b010000 add x0, x0, x1 ffff8000113a8b88: b9402000 ldr w0, [x0,#32] return skb->data - skb->head; ffff8000113a8b8c: f9406663 ldr x3, [x19,#200] dataref = (dataref & SKB_DATAREF_MASK) - (dataref >> SKB_DATAREF_SHIFT); ffff8000113a8b90: 12003c01 and w1, w0, #0xffff ffff8000113a8b94: 4b804020 sub w0, w1, w0, asr #16 return dataref != 1; ffff8000113a8b98: 7100041f cmp w0, #0x1 return skb->data - skb->head; ffff8000113a8b9c: cb020062 sub x2, x3, x2 return dataref != 1; ffff8000113a8ba0: 1a9f07e0 cset w0, ne if (headroom > skb_headroom(skb)) ffff8000113a8ba4: 71000c5f cmp w2, #0x3 int delta = 0; ffff8000113a8ba8: 52800001 mov w1, #0x0 // #0 if (headroom > skb_headroom(skb)) ffff8000113a8bac: 54000068 b.hi ffff8000113a8bb8 delta = headroom - skb_headroom(skb); ffff8000113a8bb0: 52800081 mov w1, #0x4 // #4 ffff8000113a8bb4: 4b020021 sub w1, w1, w2 if (delta || cloned) ffff8000113a8bb8: 2a000020 orr w0, w1, w0 ffff8000113a8bbc: 35000ea0 cbnz w0, ffff8000113a8d90 skb_push(skb, VLAN_HLEN); ffff8000113a8bc0: 52800081 mov w1, #0x4 // #4 ffff8000113a8bc4: aa1303e0 mov x0, x19 ffff8000113a8bc8: 94000000 bl 0 ffff8000113a8bc8: R_AARCH64_CALL26 skb_push memmove(skb->data, skb->data + VLAN_HLEN, mac_len - ETH_TLEN); ffff8000113a8bcc: f9406660 ldr x0, [x19,#200] return __builtin_memmove(p, q, size); ffff8000113a8bd0: d2800182 mov x2, #0xc // #12 ffff8000113a8bd4: 91001001 add x1, x0, #0x4 ffff8000113a8bd8: 94000000 bl 0 ffff8000113a8bd8: R_AARCH64_CALL26 memmove skb->mac_header -= VLAN_HLEN; ffff8000113a8bdc: 79416e61 ldrh w1, [x19,#182] veth = (struct vlan_ethhdr *)(skb->data + mac_len - ETH_HLEN); ffff8000113a8be0: f9406660 ldr x0, [x19,#200] skb->mac_header -= VLAN_HLEN; ffff8000113a8be4: 51001021 sub w1, w1, #0x4 ffff8000113a8be8: 79016e61 strh w1, [x19,#182] static inline __attribute_const__ __u16 __fswab16(__u16 val) { #if defined (__arch_swab16) return __arch_swab16(val); #else return ___constant_swab16(val); ffff8000113a8bec: 53087f01 lsr w1, w24, #8 ffff8000113a8bf0: 2a182038 orr w24, w1, w24, lsl #8 veth->h_vlan_proto = vlan_proto; ffff8000113a8bf4: 79001815 strh w21, [x0,#12] veth->h_vlan_TCI = htons(vlan_tci); ffff8000113a8bf8: 79001c18 strh w24, [x0,#14] if (skb) ffff8000113a8bfc: b4000a13 cbz x19, ffff8000113a8d3c skb->vlan_present = 0; ffff8000113a8c00: 39420a60 ldrb w0, [x19,#130] skb->protocol = vlan_proto; ffff8000113a8c04: 79016275 strh w21, [x19,#176] skb->vlan_present = 0; ffff8000113a8c08: 121f7800 and w0, w0, #0xfffffffe ffff8000113a8c0c: 39020a60 strb w0, [x19,#130] if (unlikely(!skb)) ffff8000113a8c10: b4000973 cbz x19, ffff8000113a8d3c */ static inline struct sk_buff *sk_validate_xmit_skb(struct sk_buff *skb, struct net_device *dev) { #ifdef CONFIG_SOCK_VALIDATE_XMIT struct sock *sk = skb->sk; ffff8000113a8c14: f9400e60 ldr x0, [x19,#24] if (sk && sk_fullsock(sk) && sk->sk_validate_xmit_skb) { ffff8000113a8c18: b4000580 cbz x0, ffff8000113a8cc8 return (1 << sk->sk_state) & ~(TCPF_TIME_WAIT | TCPF_NEW_SYN_RECV); ffff8000113a8c1c: 39404801 ldrb w1, [x0,#18] ffff8000113a8c20: 52800022 mov w2, #0x1 // #1 ffff8000113a8c24: 1ac12042 lsl w2, w2, w1 ffff8000113a8c28: 12820801 mov w1, #0xffffefbf // #-4161 if (sk && sk_fullsock(sk) && sk->sk_validate_xmit_skb) { ffff8000113a8c2c: 6a01005f tst w2, w1 ffff8000113a8c30: 540004c0 b.eq ffff8000113a8cc8 ffff8000113a8c34: f9416403 ldr x3, [x0,#712] ffff8000113a8c38: b4000483 cbz x3, ffff8000113a8cc8 skb = sk->sk_validate_xmit_skb(sk, dev, skb); ffff8000113a8c3c: aa1303e2 mov x2, x19 ffff8000113a8c40: aa1703e1 mov x1, x23 ffff8000113a8c44: d63f0060 blr x3 ffff8000113a8c48: aa0003f3 mov x19, x0 if (unlikely(!skb)) ffff8000113a8c4c: b4000780 cbz x0, ffff8000113a8d3c return skb->head + skb->end; ffff8000113a8c50: b940be60 ldr w0, [x19,#188] ffff8000113a8c54: f9406261 ldr x1, [x19,#192] ffff8000113a8c58: 8b000020 add x0, x1, x0 return skb_is_gso(skb) && (!skb_gso_ok(skb, features) || ffff8000113a8c5c: 79400803 ldrh w3, [x0,#4] ffff8000113a8c60: 34000423 cbz w3, ffff8000113a8ce4 netdev_features_t feature = (netdev_features_t)gso_type << NETIF_F_GSO_SHIFT; ffff8000113a8c64: b9801801 ldrsw x1, [x0,#24] ffff8000113a8c68: d370bc21 lsl x1, x1, #16 return (features & feature) == feature; ffff8000113a8c6c: 8a010282 and x2, x20, x1 return net_gso_ok(features, skb_shinfo(skb)->gso_type) && ffff8000113a8c70: eb02003f cmp x1, x2 ffff8000113a8c74: 54000b60 b.eq ffff8000113a8de0 return __skb_gso_segment(skb, features, true); ffff8000113a8c78: aa1303e0 mov x0, x19 ffff8000113a8c7c: aa1403e1 mov x1, x20 ffff8000113a8c80: 52800022 mov w2, #0x1 // #1 ffff8000113a8c84: 94000000 bl ffff8000113a875c <__skb_gso_segment> ffff8000113a8c84: R_AARCH64_CALL26 __skb_gso_segment if (IS_ERR(segs)) { ffff8000113a8c88: b140041f cmn x0, #0x1, lsl #12 ffff8000113a8c8c: aa0003f5 mov x21, x0 ffff8000113a8c90: 54000528 b.hi ffff8000113a8d34 } else if (segs) { ffff8000113a8c94: b4000095 cbz x21, ffff8000113a8ca4 consume_skb(skb); ffff8000113a8c98: aa1303e0 mov x0, x19 ffff8000113a8c9c: 94000000 bl 0 ffff8000113a8c9c: R_AARCH64_CALL26 consume_skb ffff8000113a8ca0: aa1503f3 mov x19, x21 skb = validate_xmit_xfrm(skb, features, again); ffff8000113a8ca4: aa1303e0 mov x0, x19 ffff8000113a8ca8: aa1403e1 mov x1, x20 ffff8000113a8cac: aa1603e2 mov x2, x22 ffff8000113a8cb0: 94000000 bl 0 ffff8000113a8cb0: R_AARCH64_CALL26 validate_xmit_xfrm } ffff8000113a8cb4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a8cb8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a8cbc: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a8cc0: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a8cc4: d65f03c0 ret #ifdef CONFIG_TLS_DEVICE } else if (unlikely(skb->decrypted)) { ffff8000113a8cc8: 39421260 ldrb w0, [x19,#132] ffff8000113a8ccc: 37080960 tbnz w0, #1, ffff8000113a8df8 ffff8000113a8cd0: b940be60 ldr w0, [x19,#188] ffff8000113a8cd4: f9406261 ldr x1, [x19,#192] ffff8000113a8cd8: 8b000020 add x0, x1, x0 return skb_is_gso(skb) && (!skb_gso_ok(skb, features) || ffff8000113a8cdc: 79400803 ldrh w3, [x0,#4] ffff8000113a8ce0: 35fffc23 cbnz w3, ffff8000113a8c64 static inline bool skb_needs_linearize(struct sk_buff *skb, ffff8000113a8ce4: b9407661 ldr w1, [x19,#116] return skb_is_nonlinear(skb) && ffff8000113a8ce8: 340000e1 cbz w1, ffff8000113a8d04 ffff8000113a8cec: f9400402 ldr x2, [x0,#8] ffff8000113a8cf0: b4000042 cbz x2, ffff8000113a8cf8 ((skb_has_frag_list(skb) && !(features & NETIF_F_FRAGLIST)) || ffff8000113a8cf4: 363003f4 tbz w20, #6, ffff8000113a8d70 ffff8000113a8cf8: 39400800 ldrb w0, [x0,#2] ffff8000113a8cfc: 34000040 cbz w0, ffff8000113a8d04 (skb_shinfo(skb)->nr_frags && !(features & NETIF_F_SG))); ffff8000113a8d00: 36000394 tbz w20, #0, ffff8000113a8d70 if (skb->ip_summed == CHECKSUM_PARTIAL) { ffff8000113a8d04: 39420260 ldrb w0, [x19,#128] ffff8000113a8d08: d3451800 ubfx x0, x0, #5, #2 ffff8000113a8d0c: 71000c1f cmp w0, #0x3 ffff8000113a8d10: 54fffca1 b.ne ffff8000113a8ca4 if (skb->encapsulation) ffff8000113a8d14: 39420660 ldrb w0, [x19,#129] ffff8000113a8d18: 37280260 tbnz w0, #5, ffff8000113a8d64 skb->transport_header += offset; ffff8000113a8d1c: 79411260 ldrh w0, [x19,#136] ffff8000113a8d20: 79016660 strh w0, [x19,#178] if (skb_csum_hwoffload_help(skb, features)) ffff8000113a8d24: aa1303e0 mov x0, x19 ffff8000113a8d28: aa1403e1 mov x1, x20 ffff8000113a8d2c: 94000000 bl ffff8000113a84a0 ffff8000113a8d2c: R_AARCH64_CALL26 skb_csum_hwoffload_help ffff8000113a8d30: 34fffba0 cbz w0, ffff8000113a8ca4 kfree_skb(skb); ffff8000113a8d34: aa1303e0 mov x0, x19 ffff8000113a8d38: 94000000 bl 0 ffff8000113a8d38: R_AARCH64_CALL26 kfree_skb ATOMIC64_OPS(add, add, I) ffff8000113a8d3c: 910722e2 add x2, x23, #0x1c8 ffff8000113a8d40: f9800051 prfm pstl1strm, [x2] ffff8000113a8d44: c85f7c40 ldxr x0, [x2] ffff8000113a8d48: 91000400 add x0, x0, #0x1 ffff8000113a8d4c: c8017c40 stxr w1, x0, [x2] ffff8000113a8d50: 35ffffa1 cbnz w1, ffff8000113a8d44 return NULL; ffff8000113a8d54: d2800000 mov x0, #0x0 // #0 ffff8000113a8d58: 17ffffd7 b ffff8000113a8cb4 if (proto == htons(ETH_P_8021Q) && features & NETIF_F_HW_VLAN_CTAG_TX) ffff8000113a8d5c: 373ff5b4 tbnz w20, #7, ffff8000113a8c10 ffff8000113a8d60: 17ffff82 b ffff8000113a8b68 skb->inner_transport_header += offset; ffff8000113a8d64: 79411260 ldrh w0, [x19,#136] ffff8000113a8d68: 79015660 strh w0, [x19,#170] ffff8000113a8d6c: 17ffffee b ffff8000113a8d24 return __pskb_pull_tail(skb, skb->data_len) ? 0 : -ENOMEM; ffff8000113a8d70: aa1303e0 mov x0, x19 ffff8000113a8d74: 94000000 bl 0 <__pskb_pull_tail> ffff8000113a8d74: R_AARCH64_CALL26 __pskb_pull_tail ffff8000113a8d78: b4fffde0 cbz x0, ffff8000113a8d34 if (skb->ip_summed == CHECKSUM_PARTIAL) { ffff8000113a8d7c: 39420260 ldrb w0, [x19,#128] ffff8000113a8d80: d3451800 ubfx x0, x0, #5, #2 ffff8000113a8d84: 71000c1f cmp w0, #0x3 ffff8000113a8d88: 54fff8e1 b.ne ffff8000113a8ca4 ffff8000113a8d8c: 17ffffe2 b ffff8000113a8d14 return pskb_expand_head(skb, ALIGN(delta, NET_SKB_PAD), 0, ffff8000113a8d90: 1100fc21 add w1, w1, #0x3f ffff8000113a8d94: 121a6421 and w1, w1, #0xffffffc0 ffff8000113a8d98: aa1303e0 mov x0, x19 ffff8000113a8d9c: 52800002 mov w2, #0x0 // #0 ffff8000113a8da0: 52814403 mov w3, #0xa20 // #2592 ffff8000113a8da4: 94000000 bl 0 ffff8000113a8da4: R_AARCH64_CALL26 pskb_expand_head if (skb_cow_head(skb, VLAN_HLEN) < 0) ffff8000113a8da8: 36fff0c0 tbz w0, #31, ffff8000113a8bc0 __dev_kfree_skb_any(skb, SKB_REASON_DROPPED); ffff8000113a8dac: aa1303e0 mov x0, x19 ffff8000113a8db0: 52800021 mov w1, #0x1 // #1 ffff8000113a8db4: 94000000 bl ffff8000113a59b0 <__dev_kfree_skb_any> ffff8000113a8db4: R_AARCH64_CALL26 __dev_kfree_skb_any ffff8000113a8db8: 17ffffe1 b ffff8000113a8d3c ffff8000113a8dbc: f9406262 ldr x2, [x19,#192] return skb->data - skb->head; ffff8000113a8dc0: f9406663 ldr x3, [x19,#200] int delta = 0; ffff8000113a8dc4: 52800001 mov w1, #0x0 // #0 return skb->data - skb->head; ffff8000113a8dc8: cb020062 sub x2, x3, x2 if (headroom > skb_headroom(skb)) ffff8000113a8dcc: 71000c5f cmp w2, #0x3 ffff8000113a8dd0: 54ffef48 b.hi ffff8000113a8bb8 ffff8000113a8dd4: 17ffff77 b ffff8000113a8bb0 if (proto == htons(ETH_P_8021AD) && features & NETIF_F_HW_VLAN_STAG_TX) ffff8000113a8dd8: b76ff1d4 tbnz x20, #45, ffff8000113a8c10 ffff8000113a8ddc: 17ffff63 b ffff8000113a8b68 return net_gso_ok(features, skb_shinfo(skb)->gso_type) && ffff8000113a8de0: f9400401 ldr x1, [x0,#8] ffff8000113a8de4: b4000041 cbz x1, ffff8000113a8dec (!skb_has_frag_list(skb) || (features & NETIF_F_FRAGLIST)); ffff8000113a8de8: 3637f494 tbz w20, #6, ffff8000113a8c78 unlikely((skb->ip_summed != CHECKSUM_PARTIAL) && ffff8000113a8dec: 39420261 ldrb w1, [x19,#128] return skb_is_gso(skb) && (!skb_gso_ok(skb, features) || ffff8000113a8df0: 372ff7a1 tbnz w1, #5, ffff8000113a8ce4 ffff8000113a8df4: 17ffffa1 b ffff8000113a8c78 pr_warn_ratelimited("unencrypted skb with no associated socket - dropping\n"); ffff8000113a8df8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a8df8: R_AARCH64_ADR_PREL_PG_HI21 .data ffff8000113a8dfc: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a8dfc: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113a8e00: 91000000 add x0, x0, #0x0 ffff8000113a8e00: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113a8e04: 91000021 add x1, x1, #0x0 ffff8000113a8e04: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113a8e08: 91034000 add x0, x0, #0xd0 ffff8000113a8e0c: 9101a021 add x1, x1, #0x68 ffff8000113a8e10: 94000000 bl 0 <___ratelimit> ffff8000113a8e10: R_AARCH64_CALL26 ___ratelimit ffff8000113a8e14: 34fff900 cbz w0, ffff8000113a8d34 ffff8000113a8e18: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a8e18: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x618 ffff8000113a8e1c: 91000000 add x0, x0, #0x0 ffff8000113a8e1c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x618 ffff8000113a8e20: 94000000 bl 0 ffff8000113a8e20: R_AARCH64_CALL26 printk ffff8000113a8e24: 17ffffc4 b ffff8000113a8d34 ffff8000113a8e28 : { ffff8000113a8e28: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a8e2c: 910003fd mov x29, sp ffff8000113a8e30: a90153f3 stp x19, x20, [sp,#16] ffff8000113a8e34: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a8e38: a90363f7 stp x23, x24, [sp,#48] ffff8000113a8e3c: aa0003f3 mov x19, x0 ffff8000113a8e40: aa1e03e0 mov x0, x30 ffff8000113a8e44: aa0103f7 mov x23, x1 ffff8000113a8e48: aa0203f8 mov x24, x2 ffff8000113a8e4c: 94000000 bl 0 <_mcount> ffff8000113a8e4c: R_AARCH64_CALL26 _mcount for (; skb != NULL; skb = next) { ffff8000113a8e50: b4000273 cbz x19, ffff8000113a8e9c struct sk_buff *next, *head = NULL, *tail; ffff8000113a8e54: d2800016 mov x22, #0x0 // #0 next = skb->next; ffff8000113a8e58: f9400274 ldr x20, [x19] skb->prev = skb; ffff8000113a8e5c: f9000673 str x19, [x19,#8] skb->next = NULL; ffff8000113a8e60: f900027f str xzr, [x19] skb = validate_xmit_skb(skb, dev, again); ffff8000113a8e64: aa1303e0 mov x0, x19 ffff8000113a8e68: aa1703e1 mov x1, x23 ffff8000113a8e6c: aa1803e2 mov x2, x24 ffff8000113a8e70: 97ffff29 bl ffff8000113a8b14 if (!skb) ffff8000113a8e74: b4000080 cbz x0, ffff8000113a8e84 if (!head) ffff8000113a8e78: b40000d6 cbz x22, ffff8000113a8e90 tail->next = skb; ffff8000113a8e7c: f90002a0 str x0, [x21] tail = skb->prev; ffff8000113a8e80: f9400415 ldr x21, [x0,#8] for (; skb != NULL; skb = next) { ffff8000113a8e84: b40000f4 cbz x20, ffff8000113a8ea0 ffff8000113a8e88: aa1403f3 mov x19, x20 ffff8000113a8e8c: 17fffff3 b ffff8000113a8e58 ffff8000113a8e90: aa0003f6 mov x22, x0 tail = skb->prev; ffff8000113a8e94: f9400415 ldr x21, [x0,#8] ffff8000113a8e98: 17fffffb b ffff8000113a8e84 struct sk_buff *next, *head = NULL, *tail; ffff8000113a8e9c: aa1303f6 mov x22, x19 } ffff8000113a8ea0: aa1603e0 mov x0, x22 ffff8000113a8ea4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a8ea8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a8eac: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a8eb0: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a8eb4: d65f03c0 ret ffff8000113a8eb8 : { ffff8000113a8eb8: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113a8ebc: 910003fd mov x29, sp ffff8000113a8ec0: a90153f3 stp x19, x20, [sp,#16] ffff8000113a8ec4: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a8ec8: f9001bf7 str x23, [sp,#48] ffff8000113a8ecc: aa0003f4 mov x20, x0 ffff8000113a8ed0: aa1e03e0 mov x0, x30 ffff8000113a8ed4: 90000015 adrp x21, 0 <__stack_chk_guard> ffff8000113a8ed4: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a8ed8: 53003c36 uxth w22, w1 ffff8000113a8edc: 94000000 bl 0 <_mcount> ffff8000113a8edc: R_AARCH64_CALL26 _mcount ffff8000113a8ee0: f94002a0 ldr x0, [x21] ffff8000113a8ee0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard struct net_device *dev = skb->dev; ffff8000113a8ee4: f9400a93 ldr x19, [x20,#16] { ffff8000113a8ee8: f90027a0 str x0, [x29,#72] ffff8000113a8eec: f9402260 ldr x0, [x19,#64] bool again = false; ffff8000113a8ef0: 39011fbf strb wzr, [x29,#71] if (unlikely(!netif_running(dev) || ffff8000113a8ef4: 36000c00 tbz w0, #0, ffff8000113a9074 ffff8000113a8ef8: f9402260 ldr x0, [x19,#64] ffff8000113a8efc: 37100bc0 tbnz w0, #2, ffff8000113a9074 skb = validate_xmit_skb_list(skb, dev, &again); ffff8000113a8f00: aa1403e0 mov x0, x20 ffff8000113a8f04: aa1303e1 mov x1, x19 ffff8000113a8f08: 91011fa2 add x2, x29, #0x47 ffff8000113a8f0c: 94000000 bl ffff8000113a8e28 ffff8000113a8f0c: R_AARCH64_CALL26 validate_xmit_skb_list if (skb != orig_skb) ffff8000113a8f10: eb00029f cmp x20, x0 ffff8000113a8f14: 54000260 b.eq ffff8000113a8f60 ffff8000113a8f18: 91072263 add x3, x19, #0x1c8 ffff8000113a8f1c: f9800071 prfm pstl1strm, [x3] ffff8000113a8f20: c85f7c61 ldxr x1, [x3] ffff8000113a8f24: 91000421 add x1, x1, #0x1 ffff8000113a8f28: c8027c61 stxr w2, x1, [x3] ffff8000113a8f2c: 35ffffa2 cbnz w2, ffff8000113a8f20 return NET_XMIT_DROP; ffff8000113a8f30: 52800033 mov w19, #0x1 // #1 kfree_skb_list(skb); ffff8000113a8f34: 94000000 bl 0 ffff8000113a8f34: R_AARCH64_CALL26 kfree_skb_list } ffff8000113a8f38: f94027a2 ldr x2, [x29,#72] ffff8000113a8f3c: f94002a1 ldr x1, [x21] ffff8000113a8f3c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a8f40: 2a1303e0 mov w0, w19 ffff8000113a8f44: eb01005f cmp x2, x1 ffff8000113a8f48: 540009a1 b.ne ffff8000113a907c ffff8000113a8f4c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a8f50: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a8f54: f9401bf7 ldr x23, [sp,#48] ffff8000113a8f58: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113a8f5c: d65f03c0 ret skb->queue_mapping = queue_mapping; ffff8000113a8f60: 7900fa96 strh w22, [x20,#124] ffff8000113a8f64: d5384100 mrs x0, sp_el0 ffff8000113a8f68: b9401801 ldr w1, [x0,#24] return &dev->_tx[index]; ffff8000113a8f6c: f941e262 ldr x2, [x19,#960] ffff8000113a8f70: 52802803 mov w3, #0x140 // #320 ffff8000113a8f74: 9ba37ed6 umull x22, w22, w3 ffff8000113a8f78: 11080021 add w1, w1, #0x200 ffff8000113a8f7c: 8b160056 add x22, x2, x22 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113a8f80: b9001801 str w1, [x0,#24] HARD_TX_LOCK(dev, txq, smp_processor_id()); ffff8000113a8f84: f9406662 ldr x2, [x19,#200] ffff8000113a8f88: 92740042 and x2, x2, #0x1000 ffff8000113a8f8c: b4000562 cbz x2, ffff8000113a9038 return dev_queue->state & QUEUE_STATE_DRV_XOFF_OR_FROZEN; ffff8000113a8f90: f9404ac1 ldr x1, [x22,#144] ffff8000113a8f94: d28000a0 mov x0, #0x5 // #5 ffff8000113a8f98: 8a000020 and x0, x1, x0 int ret = NETDEV_TX_BUSY; ffff8000113a8f9c: 52800217 mov w23, #0x10 // #16 if (!netif_xmit_frozen_or_drv_stopped(txq)) ffff8000113a8fa0: b4000260 cbz x0, ffff8000113a8fec HARD_TX_UNLOCK(dev, txq); ffff8000113a8fa4: f9406660 ldr x0, [x19,#200] ffff8000113a8fa8: 92740000 and x0, x0, #0x1000 ffff8000113a8fac: b4000160 cbz x0, ffff8000113a8fd8 ffff8000113a8fb0: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a8fb0: R_AARCH64_ADR_PREL_PG_HI21 .text+0xac34 ffff8000113a8fb4: 91000000 add x0, x0, #0x0 ffff8000113a8fb4: R_AARCH64_ADD_ABS_LO12_NC .text+0xac34 ffff8000113a8fb8: 52804001 mov w1, #0x200 // #512 ffff8000113a8fbc: 94000000 bl 0 <__local_bh_enable_ip> ffff8000113a8fbc: R_AARCH64_CALL26 __local_bh_enable_ip if (likely(rc < NET_XMIT_MASK)) ffff8000113a8fc0: 71003aff cmp w23, #0xe ffff8000113a8fc4: 2a1703f3 mov w19, w23 ffff8000113a8fc8: 54fffb8d b.le ffff8000113a8f38 kfree_skb(skb); ffff8000113a8fcc: aa1403e0 mov x0, x20 ffff8000113a8fd0: 94000000 bl 0 ffff8000113a8fd0: R_AARCH64_CALL26 kfree_skb ffff8000113a8fd4: 17ffffd9 b ffff8000113a8f38 txq->xmit_lock_owner = -1; ffff8000113a8fd8: 12800001 mov w1, #0xffffffff // #-1 ffff8000113a8fdc: b90086c1 str w1, [x22,#132] smp_store_release(&lock->locked, 0); ffff8000113a8fe0: 910202d6 add x22, x22, #0x80 ffff8000113a8fe4: 089ffec0 stlrb w0, [x22] preempt_enable(); ffff8000113a8fe8: 17fffff2 b ffff8000113a8fb0 __this_cpu_write(softnet_data.xmit.more, more); ffff8000113a8fec: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a8fec: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned const struct net_device_ops *ops = dev->netdev_ops; ffff8000113a8ff0: f940fa62 ldr x2, [x19,#496] __this_cpu_write(softnet_data.xmit.more, more); ffff8000113a8ff4: 91000021 add x1, x1, #0x0 ffff8000113a8ff4: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a8ff8: 9101e821 add x1, x1, #0x7a asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff8000113a8ffc: d538d083 mrs x3, tpidr_el1 ffff8000113a9000: 38216860 strb w0, [x3,x1] return ops->ndo_start_xmit(skb, dev); ffff8000113a9004: f9401042 ldr x2, [x2,#32] ffff8000113a9008: aa1403e0 mov x0, x20 ffff8000113a900c: aa1303e1 mov x1, x19 ffff8000113a9010: d63f0040 blr x2 if (rc == NETDEV_TX_OK) ffff8000113a9014: 350000e0 cbnz w0, ffff8000113a9030 if (txq->xmit_lock_owner != -1) ffff8000113a9018: b94086c1 ldr w1, [x22,#132] ffff8000113a901c: 3100043f cmn w1, #0x1 ffff8000113a9020: 54000080 b.eq ffff8000113a9030 txq->trans_start = jiffies; ffff8000113a9024: 90000001 adrp x1, 0 ffff8000113a9024: R_AARCH64_ADR_PREL_PG_HI21 jiffies ffff8000113a9028: f9400021 ldr x1, [x1] ffff8000113a9028: R_AARCH64_LDST64_ABS_LO12_NC jiffies ffff8000113a902c: f90046c1 str x1, [x22,#136] return ops->ndo_start_xmit(skb, dev); ffff8000113a9030: 2a0003f7 mov w23, w0 ffff8000113a9034: 17ffffdc b ffff8000113a8fa4 HARD_TX_LOCK(dev, txq, smp_processor_id()); ffff8000113a9038: 90000000 adrp x0, 0 ffff8000113a9038: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113a903c: d538d081 mrs x1, tpidr_el1 ffff8000113a9040: 91000000 add x0, x0, #0x0 ffff8000113a9040: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a9044: b8606837 ldr w23, [x1,x0] __CMPXCHG_CASE(w, , acq_, 32, , a, , "memory", K) ffff8000113a9048: 52800023 mov w3, #0x1 // #1 ffff8000113a904c: 910202c0 add x0, x22, #0x80 ffff8000113a9050: f9800011 prfm pstl1strm, [x0] ffff8000113a9054: 885ffc01 ldaxr w1, [x0] ffff8000113a9058: 4a020024 eor w4, w1, w2 ffff8000113a905c: 35000064 cbnz w4, ffff8000113a9068 ffff8000113a9060: 88047c03 stxr w4, w3, [x0] ffff8000113a9064: 35ffff84 cbnz w4, ffff8000113a9054 if (unlikely(r != o)) ffff8000113a9068: 350000c1 cbnz w1, ffff8000113a9080 txq->xmit_lock_owner = cpu; ffff8000113a906c: b90086d7 str w23, [x22,#132] ffff8000113a9070: 17ffffc8 b ffff8000113a8f90 ffff8000113a9074: aa1403e0 mov x0, x20 ffff8000113a9078: 17ffffa8 b ffff8000113a8f18 } ffff8000113a907c: 94000000 bl 0 <__stack_chk_fail> ffff8000113a907c: R_AARCH64_CALL26 __stack_chk_fail queued_spin_lock_slowpath(lock, val); ffff8000113a9080: 94000000 bl 0 ffff8000113a9080: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113a9084: b90086d7 str w23, [x22,#132] ffff8000113a9088: 17ffffc2 b ffff8000113a8f90 ffff8000113a908c : { ffff8000113a908c: a9b87bfd stp x29, x30, [sp,#-128]! ffff8000113a9090: 910003fd mov x29, sp ffff8000113a9094: a90153f3 stp x19, x20, [sp,#16] ffff8000113a9098: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a909c: a90363f7 stp x23, x24, [sp,#48] ffff8000113a90a0: a9046bf9 stp x25, x26, [sp,#64] ffff8000113a90a4: a90573fb stp x27, x28, [sp,#80] ffff8000113a90a8: aa0003f3 mov x19, x0 ffff8000113a90ac: aa1e03e0 mov x0, x30 ffff8000113a90b0: aa0103f4 mov x20, x1 ffff8000113a90b4: aa0203f9 mov x25, x2 ffff8000113a90b8: f9003ba3 str x3, [x29,#112] ffff8000113a90bc: 94000000 bl 0 <_mcount> ffff8000113a90bc: R_AARCH64_CALL26 _mcount while (skb) { ffff8000113a90c0: b4000a33 cbz x19, ffff8000113a9204 __READ_ONCE_SIZE; ffff8000113a90c4: 9000001a adrp x26, ffff80001139e37c <__my_cpu_offset> ffff8000113a90c4: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113a90c8: 9100035a add x26, x26, #0x0 ffff8000113a90c8: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113a90cc: 9120035a add x26, x26, #0x800 struct sk_buff *next = skb->next; ffff8000113a90d0: f9400277 ldr x23, [x19] TRACE_EVENT(net_dev_start_xmit, ffff8000113a90d4: 90000000 adrp x0, 0 ffff8000113a90d4: R_AARCH64_ADR_PREL_PG_HI21 cpu_number skb->next = NULL; ffff8000113a90d8: f900027f str xzr, [x19] ffff8000113a90dc: 91000000 add x0, x0, #0x0 ffff8000113a90dc: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a90e0: f9003fa0 str x0, [x29,#120] TRACE_EVENT(net_dev_xmit, ffff8000113a90e4: f90037a0 str x0, [x29,#104] ffff8000113a90e8: f9400340 ldr x0, [x26] rc = xmit_one(skb, dev, txq, next != NULL); ffff8000113a90ec: eb1f02ff cmp x23, xzr __this_cpu_write(softnet_data.xmit.more, more); ffff8000113a90f0: 9000001b adrp x27, ffff80001139e37c <__my_cpu_offset> ffff8000113a90f0: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned ffff8000113a90f4: 9100037b add x27, x27, #0x0 ffff8000113a90f4: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a90f8: 1a9f07f8 cset w24, ne return !list_empty(&ptype_all) || !list_empty(&dev->ptype_all); ffff8000113a90fc: eb00035f cmp x26, x0 ffff8000113a9100: 9101eb7b add x27, x27, #0x7a ffff8000113a9104: 54000760 b.eq ffff8000113a91f0 dev_queue_xmit_nit(skb, dev); ffff8000113a9108: aa1303e0 mov x0, x19 ffff8000113a910c: aa1403e1 mov x1, x20 ffff8000113a9110: 94000000 bl ffff8000113a4ea0 ffff8000113a9110: R_AARCH64_CALL26 dev_queue_xmit_nit ffff8000113a9114: 90000000 adrp x0, 0 <__tracepoint_net_dev_start_xmit> ffff8000113a9114: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_net_dev_start_xmit ffff8000113a9118: 91000001 add x1, x0, #0x0 ffff8000113a9118: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_net_dev_start_xmit ffff8000113a911c: b9400820 ldr w0, [x1,#8] len = skb->len; ffff8000113a9120: b9407276 ldr w22, [x19,#112] if (unlikely(static_key_count(key) > 0)) ffff8000113a9124: 6b1f001f cmp w0, wzr "Q" (*(const unsigned long *)current_stack_pointer)); ffff8000113a9128: 910003e0 mov x0, sp ffff8000113a912c: 54000aac b.gt ffff8000113a9280 const struct net_device_ops *ops = dev->netdev_ops; ffff8000113a9130: f940fa81 ldr x1, [x20,#496] asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff8000113a9134: d538d080 mrs x0, tpidr_el1 __this_cpu_write(softnet_data.xmit.more, more); ffff8000113a9138: 383b6818 strb w24, [x0,x27] return ops->ndo_start_xmit(skb, dev); ffff8000113a913c: f9401022 ldr x2, [x1,#32] ffff8000113a9140: aa1303e0 mov x0, x19 ffff8000113a9144: aa1403e1 mov x1, x20 ffff8000113a9148: d63f0040 blr x2 ffff8000113a914c: 2a0003f5 mov w21, w0 if (rc == NETDEV_TX_OK) ffff8000113a9150: 350000e0 cbnz w0, ffff8000113a916c if (txq->xmit_lock_owner != -1) ffff8000113a9154: b9408720 ldr w0, [x25,#132] ffff8000113a9158: 3100041f cmn w0, #0x1 ffff8000113a915c: 54000080 b.eq ffff8000113a916c txq->trans_start = jiffies; ffff8000113a9160: 90000000 adrp x0, 0 ffff8000113a9160: R_AARCH64_ADR_PREL_PG_HI21 jiffies ffff8000113a9164: f9400000 ldr x0, [x0] ffff8000113a9164: R_AARCH64_LDST64_ABS_LO12_NC jiffies ffff8000113a9168: f9004720 str x0, [x25,#136] ffff8000113a916c: 90000001 adrp x1, 0 <__tracepoint_net_dev_xmit> ffff8000113a916c: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_net_dev_xmit ffff8000113a9170: 91000020 add x0, x1, #0x0 ffff8000113a9170: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_net_dev_xmit ffff8000113a9174: b9400801 ldr w1, [x0,#8] ffff8000113a9178: 6b1f003f cmp w1, wzr ffff8000113a917c: 5400050c b.gt ffff8000113a921c if (likely(rc < NET_XMIT_MASK)) ffff8000113a9180: 71003abf cmp w21, #0xe ffff8000113a9184: 5400046c b.gt ffff8000113a9210 ffff8000113a9188: f9404b20 ldr x0, [x25,#144] if (netif_tx_queue_stopped(txq) && skb) { ffff8000113a918c: 36000200 tbz w0, #0, ffff8000113a91cc rc = NETDEV_TX_BUSY; ffff8000113a9190: 6b1f031f cmp w24, wzr ffff8000113a9194: 52800200 mov w0, #0x10 // #16 ffff8000113a9198: 1a8002b5 csel w21, w21, w0, eq ffff8000113a919c: 6b1f031f cmp w24, wzr ffff8000113a91a0: 9a9f12f7 csel x23, x23, xzr, ne *ret = rc; ffff8000113a91a4: f9403ba2 ldr x2, [x29,#112] } ffff8000113a91a8: aa1703e0 mov x0, x23 *ret = rc; ffff8000113a91ac: b9000055 str w21, [x2] } ffff8000113a91b0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a91b4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a91b8: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a91bc: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a91c0: a94573fb ldp x27, x28, [sp,#80] ffff8000113a91c4: a8c87bfd ldp x29, x30, [sp],#128 ffff8000113a91c8: d65f03c0 ret while (skb) { ffff8000113a91cc: 340008b8 cbz w24, ffff8000113a92e0 struct sk_buff *next = skb->next; ffff8000113a91d0: aa1703f3 mov x19, x23 ffff8000113a91d4: f9400277 ldr x23, [x19] ffff8000113a91d8: f900027f str xzr, [x19] ffff8000113a91dc: f9400340 ldr x0, [x26] rc = xmit_one(skb, dev, txq, next != NULL); ffff8000113a91e0: eb1f02ff cmp x23, xzr ffff8000113a91e4: 1a9f07f8 cset w24, ne return !list_empty(&ptype_all) || !list_empty(&dev->ptype_all); ffff8000113a91e8: eb00035f cmp x26, x0 ffff8000113a91ec: 54fff8e1 b.ne ffff8000113a9108 ffff8000113a91f0: aa1403e0 mov x0, x20 ffff8000113a91f4: f8488c01 ldr x1, [x0,#136]! ffff8000113a91f8: eb01001f cmp x0, x1 ffff8000113a91fc: 54fff861 b.ne ffff8000113a9108 ffff8000113a9200: 17ffffc5 b ffff8000113a9114 while (skb) { ffff8000113a9204: aa1303f7 mov x23, x19 int rc = NETDEV_TX_OK; ffff8000113a9208: 2a1303f5 mov w21, w19 ffff8000113a920c: 17ffffe6 b ffff8000113a91a4 skb->next = next; ffff8000113a9210: f9000277 str x23, [x19] goto out; ffff8000113a9214: aa1303f7 mov x23, x19 ffff8000113a9218: 17ffffe3 b ffff8000113a91a4 ffff8000113a921c: f94037a2 ldr x2, [x29,#104] ffff8000113a9220: d538d081 mrs x1, tpidr_el1 ffff8000113a9224: b8626821 ldr w1, [x1,x2] ffff8000113a9228: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113a9228: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113a922c: 1100fc23 add w3, w1, #0x3f ffff8000113a9230: 6b1f003f cmp w1, wzr ffff8000113a9234: 1a81b063 csel w3, w3, w1, lt ffff8000113a9238: 13067c63 asr w3, w3, #6 ffff8000113a923c: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113a9240: 91000042 add x2, x2, #0x0 ffff8000113a9240: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113a9244: f8626862 ldr x2, [x3,x2] ffff8000113a9248: 9ac12441 lsr x1, x2, x1 ffff8000113a924c: 3607f9a1 tbz w1, #0, ffff8000113a9180 ffff8000113a9250: f940101c ldr x28, [x0,#32] ffff8000113a9254: b400015c cbz x28, ffff8000113a927c ffff8000113a9258: f9400386 ldr x6, [x28] ffff8000113a925c: f9400780 ldr x0, [x28,#8] ffff8000113a9260: aa1303e1 mov x1, x19 ffff8000113a9264: 2a1503e2 mov w2, w21 ffff8000113a9268: aa1403e3 mov x3, x20 ffff8000113a926c: 2a1603e4 mov w4, w22 ffff8000113a9270: d63f00c0 blr x6 ffff8000113a9274: f8418f86 ldr x6, [x28,#24]! ffff8000113a9278: b5ffff26 cbnz x6, ffff8000113a925c ffff8000113a927c: 17ffffc1 b ffff8000113a9180 TRACE_EVENT(net_dev_start_xmit, ffff8000113a9280: f9403fa3 ldr x3, [x29,#120] ffff8000113a9284: d538d082 mrs x2, tpidr_el1 ffff8000113a9288: b8636842 ldr w2, [x2,x3] ffff8000113a928c: 90000003 adrp x3, 0 <__cpu_online_mask> ffff8000113a928c: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113a9290: 1100fc44 add w4, w2, #0x3f ffff8000113a9294: 6b1f005f cmp w2, wzr ffff8000113a9298: 1a82b084 csel w4, w4, w2, lt ffff8000113a929c: 13067c84 asr w4, w4, #6 ffff8000113a92a0: 937d7c84 sbfiz x4, x4, #3, #32 ffff8000113a92a4: 91000063 add x3, x3, #0x0 ffff8000113a92a4: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113a92a8: f8636883 ldr x3, [x4,x3] ffff8000113a92ac: 9ac22462 lsr x2, x3, x2 ffff8000113a92b0: 3607f402 tbz w2, #0, ffff8000113a9130 ffff8000113a92b4: f9401035 ldr x21, [x1,#32] ffff8000113a92b8: b4000115 cbz x21, ffff8000113a92d8 ffff8000113a92bc: f94002a3 ldr x3, [x21] ffff8000113a92c0: f94006a0 ldr x0, [x21,#8] ffff8000113a92c4: aa1303e1 mov x1, x19 ffff8000113a92c8: aa1403e2 mov x2, x20 ffff8000113a92cc: d63f0060 blr x3 ffff8000113a92d0: f8418ea3 ldr x3, [x21,#24]! ffff8000113a92d4: b5ffff63 cbnz x3, ffff8000113a92c0 ffff8000113a92d8: 910003e0 mov x0, sp ffff8000113a92dc: 17ffff95 b ffff8000113a9130 ffff8000113a92e0: d2800017 mov x23, #0x0 // #0 ffff8000113a92e4: 17ffffb0 b ffff8000113a91a4 ffff8000113a92e8 : { ffff8000113a92e8: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a92ec: 910003fd mov x29, sp ffff8000113a92f0: a90153f3 stp x19, x20, [sp,#16] ffff8000113a92f4: f90013f5 str x21, [sp,#32] ffff8000113a92f8: aa0003f3 mov x19, x0 ffff8000113a92fc: aa1e03e0 mov x0, x30 ffff8000113a9300: aa0103f4 mov x20, x1 ffff8000113a9304: f9001fa2 str x2, [x29,#56] ffff8000113a9308: 94000000 bl 0 <_mcount> ffff8000113a9308: R_AARCH64_CALL26 _mcount u32 sender_cpu = skb->sender_cpu - 1; ffff8000113a930c: b9409e80 ldr w0, [x20,#156] if (sender_cpu >= (u32)NR_CPUS) ffff8000113a9310: f9401fa2 ldr x2, [x29,#56] u32 sender_cpu = skb->sender_cpu - 1; ffff8000113a9314: 51000400 sub w0, w0, #0x1 if (sender_cpu >= (u32)NR_CPUS) ffff8000113a9318: 713ffc1f cmp w0, #0xfff ffff8000113a931c: 540000e9 b.ls ffff8000113a9338 skb->sender_cpu = raw_smp_processor_id() + 1; ffff8000113a9320: 90000000 adrp x0, 0 ffff8000113a9320: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113a9324: d538d081 mrs x1, tpidr_el1 ffff8000113a9328: 91000000 add x0, x0, #0x0 ffff8000113a9328: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a932c: b8606820 ldr w0, [x1,x0] ffff8000113a9330: 11000400 add w0, w0, #0x1 ffff8000113a9334: b9009e80 str w0, [x20,#156] if (dev->real_num_tx_queues != 1) { ffff8000113a9338: b943ce60 ldr w0, [x19,#972] ffff8000113a933c: 7100041f cmp w0, #0x1 ffff8000113a9340: 540002c0 b.eq ffff8000113a9398 if (ops->ndo_select_queue) ffff8000113a9344: f940fa60 ldr x0, [x19,#496] queue_index = ops->ndo_select_queue(dev, skb, sb_dev); ffff8000113a9348: aa1403e1 mov x1, x20 if (ops->ndo_select_queue) ffff8000113a934c: f9401803 ldr x3, [x0,#48] queue_index = ops->ndo_select_queue(dev, skb, sb_dev); ffff8000113a9350: aa1303e0 mov x0, x19 if (ops->ndo_select_queue) ffff8000113a9354: b4000343 cbz x3, ffff8000113a93bc queue_index = ops->ndo_select_queue(dev, skb, sb_dev); ffff8000113a9358: d63f0060 blr x3 ffff8000113a935c: 53003c02 uxth w2, w0 if (unlikely(queue_index >= dev->real_num_tx_queues)) { ffff8000113a9360: b943ce60 ldr w0, [x19,#972] return queue_index; ffff8000113a9364: 2a0203f5 mov w21, w2 if (unlikely(queue_index >= dev->real_num_tx_queues)) { ffff8000113a9368: 6b00005f cmp w2, w0 ffff8000113a936c: 540002e2 b.cs ffff8000113a93c8 ffff8000113a9370: 2a1503e1 mov w1, w21 skb->queue_mapping = queue_mapping; ffff8000113a9374: 7900fa81 strh w1, [x20,#124] return &dev->_tx[index]; ffff8000113a9378: f941e261 ldr x1, [x19,#960] ffff8000113a937c: 52802800 mov w0, #0x140 // #320 } ffff8000113a9380: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a9384: 9ba07ea0 umull x0, w21, w0 ffff8000113a9388: f94013f5 ldr x21, [sp,#32] ffff8000113a938c: 8b000020 add x0, x1, x0 ffff8000113a9390: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a9394: d65f03c0 ret ffff8000113a9398: d2800000 mov x0, #0x0 // #0 ffff8000113a939c: 2a0003e1 mov w1, w0 ffff8000113a93a0: 7900fa81 strh w1, [x20,#124] ffff8000113a93a4: f941e261 ldr x1, [x19,#960] ffff8000113a93a8: f94013f5 ldr x21, [sp,#32] ffff8000113a93ac: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a93b0: 8b000020 add x0, x1, x0 ffff8000113a93b4: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a93b8: d65f03c0 ret queue_index = netdev_pick_tx(dev, skb, sb_dev); ffff8000113a93bc: 94000000 bl ffff8000113a248c ffff8000113a93bc: R_AARCH64_CALL26 netdev_pick_tx ffff8000113a93c0: 53003c02 uxth w2, w0 ffff8000113a93c4: 17ffffe7 b ffff8000113a9360 net_warn_ratelimited("%s selects TX queue %d, but real number of TX queues is %d\n", ffff8000113a93c8: f9001fa2 str x2, [x29,#56] ffff8000113a93cc: 94000000 bl 0 ffff8000113a93cc: R_AARCH64_CALL26 net_ratelimit return 0; ffff8000113a93d0: 52800015 mov w21, #0x0 // #0 net_warn_ratelimited("%s selects TX queue %d, but real number of TX queues is %d\n", ffff8000113a93d4: f9401fa2 ldr x2, [x29,#56] ffff8000113a93d8: 34fffcc0 cbz w0, ffff8000113a9370 ffff8000113a93dc: b943ce63 ldr w3, [x19,#972] ffff8000113a93e0: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a93e0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x650 ffff8000113a93e4: aa1303e1 mov x1, x19 ffff8000113a93e8: 91000000 add x0, x0, #0x0 ffff8000113a93e8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x650 ffff8000113a93ec: 94000000 bl 0 ffff8000113a93ec: R_AARCH64_CALL26 printk ffff8000113a93f0: 17ffffe0 b ffff8000113a9370 ffff8000113a93f4 <__dev_queue_xmit>: { ffff8000113a93f4: a9b67bfd stp x29, x30, [sp,#-160]! ffff8000113a93f8: 910003fd mov x29, sp ffff8000113a93fc: a90153f3 stp x19, x20, [sp,#16] ffff8000113a9400: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a9404: a90363f7 stp x23, x24, [sp,#48] ffff8000113a9408: a9046bf9 stp x25, x26, [sp,#64] ffff8000113a940c: f9002bfb str x27, [sp,#80] ffff8000113a9410: aa0003f3 mov x19, x0 ffff8000113a9414: aa1e03e0 mov x0, x30 ffff8000113a9418: aa0103f4 mov x20, x1 ffff8000113a941c: 94000000 bl 0 <_mcount> ffff8000113a941c: R_AARCH64_CALL26 _mcount skb->mac_header = skb->data - skb->head; ffff8000113a9420: f9406260 ldr x0, [x19,#192] ffff8000113a9424: f9406663 ldr x3, [x19,#200] return skb->head + skb->end; ffff8000113a9428: b940be62 ldr w2, [x19,#188] skb->mac_header = skb->data - skb->head; ffff8000113a942c: cb000063 sub x3, x3, x0 ffff8000113a9430: 90000017 adrp x23, 0 <__stack_chk_guard> ffff8000113a9430: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard int rc = -ENOMEM; ffff8000113a9434: 12800164 mov w4, #0xfffffff4 // #-12 { ffff8000113a9438: f94002e1 ldr x1, [x23] ffff8000113a9438: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard int rc = -ENOMEM; ffff8000113a943c: b9007fa4 str w4, [x29,#124] ffff8000113a9440: 79016e63 strh w3, [x19,#182] if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_SCHED_TSTAMP)) ffff8000113a9444: 8b020000 add x0, x0, x2 ffff8000113a9448: 39400c00 ldrb w0, [x0,#3] { ffff8000113a944c: f9004fa1 str x1, [x29,#152] bool again = false; ffff8000113a9450: 3901efbf strb wzr, [x29,#123] struct net_device *dev = skb->dev; ffff8000113a9454: f9400a76 ldr x22, [x19,#16] if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_SCHED_TSTAMP)) ffff8000113a9458: 37303e20 tbnz w0, #6, ffff8000113a9c1c <__dev_queue_xmit+0x828> ffff8000113a945c: d5384100 mrs x0, sp_el0 ffff8000113a9460: b9401801 ldr w1, [x0,#24] ffff8000113a9464: 11080021 add w1, w1, #0x200 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113a9468: b9001801 str w1, [x0,#24] if (skb->priority) ffff8000113a946c: b9408e60 ldr w0, [x19,#140] ffff8000113a9470: 35000280 cbnz w0, ffff8000113a94c0 <__dev_queue_xmit+0xcc> map = rcu_dereference_bh(skb->dev->priomap); ffff8000113a9474: f9400a60 ldr x0, [x19,#16] __READ_ONCE_SIZE; ffff8000113a9478: f9445001 ldr x1, [x0,#2208] if (!map) ffff8000113a947c: b4000221 cbz x1, ffff8000113a94c0 <__dev_queue_xmit+0xcc> static void skb_update_prio(struct sk_buff *skb) ffff8000113a9480: f9400e60 ldr x0, [x19,#24] * Some places want to reach the listener in this case. */ static inline struct sock *sk_to_full_sk(struct sock *sk) { #ifdef CONFIG_INET if (sk && sk->sk_state == TCP_NEW_SYN_RECV) ffff8000113a9484: b40001e0 cbz x0, ffff8000113a94c0 <__dev_queue_xmit+0xcc> ffff8000113a9488: 39404802 ldrb w2, [x0,#18] ffff8000113a948c: 53001c42 uxtb w2, w2 ffff8000113a9490: 7100305f cmp w2, #0xc ffff8000113a9494: 54002bc0 b.eq ffff8000113a9a0c <__dev_queue_xmit+0x618> * classid. Such races are short-lived and the result isn't critical. */ static inline u16 sock_cgroup_prioidx(const struct sock_cgroup_data *skcd) { /* fallback to 1 which is always the ID of the root cgroup */ return (skcd->is_data & 1) ? skcd->prioidx : 1; ffff8000113a9498: 394a4003 ldrb w3, [x0,#656] ffff8000113a949c: 52800022 mov w2, #0x1 // #1 ffff8000113a94a0: 36000043 tbz w3, #0, ffff8000113a94a8 <__dev_queue_xmit+0xb4> ffff8000113a94a4: 79452402 ldrh w2, [x0,#658] if (prioidx < map->priomap_len) ffff8000113a94a8: b9401020 ldr w0, [x1,#16] ffff8000113a94ac: 6b02001f cmp w0, w2 ffff8000113a94b0: 54000089 b.ls ffff8000113a94c0 <__dev_queue_xmit+0xcc> skb->priority = map->priomap[prioidx]; ffff8000113a94b4: 8b222821 add x1, x1, w2, uxth #2 ffff8000113a94b8: b9401420 ldr w0, [x1,#20] ffff8000113a94bc: b9008e60 str w0, [x19,#140] static void qdisc_pkt_len_init(struct sk_buff *skb) ffff8000113a94c0: f9406262 ldr x2, [x19,#192] return skb->head + skb->end; ffff8000113a94c4: b940be75 ldr w21, [x19,#188] qdisc_skb_cb(skb)->pkt_len = skb->len; ffff8000113a94c8: b9407260 ldr w0, [x19,#112] ffff8000113a94cc: 8b150055 add x21, x2, x21 ffff8000113a94d0: b9002a60 str w0, [x19,#40] if (shinfo->gso_size && skb_transport_header_was_set(skb)) { ffff8000113a94d4: 79400aa1 ldrh w1, [x21,#4] qdisc_skb_cb(skb)->pkt_len = skb->len; ffff8000113a94d8: 9100a27a add x26, x19, #0x28 if (shinfo->gso_size && skb_transport_header_was_set(skb)) { ffff8000113a94dc: 340005c1 cbz w1, ffff8000113a9594 <__dev_queue_xmit+0x1a0> static void qdisc_pkt_len_init(struct sk_buff *skb) ffff8000113a94e0: 79416661 ldrh w1, [x19,#178] if (shinfo->gso_size && skb_transport_header_was_set(skb)) { ffff8000113a94e4: 529fffe3 mov w3, #0xffff // #65535 ffff8000113a94e8: 6b03003f cmp w1, w3 ffff8000113a94ec: 54000540 b.eq ffff8000113a9594 <__dev_queue_xmit+0x1a0> return skb->head + skb->mac_header; ffff8000113a94f0: 79416e79 ldrh w25, [x19,#182] return skb->head + skb->transport_header; ffff8000113a94f4: 8b212041 add x1, x2, w1, uxth if (likely(shinfo->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))) { ffff8000113a94f8: b9401aa3 ldr w3, [x21,#24] return skb->head + skb->mac_header; ffff8000113a94fc: 8b190042 add x2, x2, x25 hdr_len = skb_transport_header(skb) - skb_mac_header(skb); ffff8000113a9500: cb020039 sub x25, x1, x2 if (likely(shinfo->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))) { ffff8000113a9504: 52800222 mov w2, #0x11 // #17 ffff8000113a9508: 6a02007f tst w3, w2 return skb_transport_header(skb) - skb->data; ffff8000113a950c: f9406662 ldr x2, [x19,#200] u16 gso_segs = shinfo->gso_segs; ffff8000113a9510: 79400ebb ldrh w27, [x21,#6] hdr_len = skb_transport_header(skb) - skb_mac_header(skb); ffff8000113a9514: 2a1903f8 mov w24, w25 return skb->len - skb->data_len; ffff8000113a9518: b9407664 ldr w4, [x19,#116] return skb_transport_header(skb) - skb->data; ffff8000113a951c: cb020021 sub x1, x1, x2 if (likely(shinfo->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))) { ffff8000113a9520: 54003ea0 b.eq ffff8000113a9cf4 <__dev_queue_xmit+0x900> return skb->len - skb->data_len; ffff8000113a9524: 4b040004 sub w4, w0, w4 if (hlen - offset >= len) ffff8000113a9528: 4b010084 sub w4, w4, w1 ffff8000113a952c: 71004c9f cmp w4, #0x13 ffff8000113a9530: 5400268c b.gt ffff8000113a9a00 <__dev_queue_xmit+0x60c> if (!skb || ffff8000113a9534: b4000193 cbz x19, ffff8000113a9564 <__dev_queue_xmit+0x170> skb_copy_bits(skb, offset, buffer, len) < 0) ffff8000113a9538: 52800283 mov w3, #0x14 // #20 ffff8000113a953c: aa1303e0 mov x0, x19 ffff8000113a9540: 910203a2 add x2, x29, #0x80 ffff8000113a9544: 94000000 bl 0 ffff8000113a9544: R_AARCH64_CALL26 skb_copy_bits ffff8000113a9548: b9401aa3 ldr w3, [x21,#24] if (!skb || ffff8000113a954c: 37f83140 tbnz w0, #31, ffff8000113a9b74 <__dev_queue_xmit+0x780> ffff8000113a9550: b9400340 ldr w0, [x26] return buffer; ffff8000113a9554: 910203a1 add x1, x29, #0x80 return (struct tcphdr *)skb_transport_header(skb); } static inline unsigned int __tcp_hdrlen(const struct tcphdr *th) { return th->doff * 4; ffff8000113a9558: 39403038 ldrb w24, [x1,#12] ffff8000113a955c: d3441f18 ubfx x24, x24, #4, #4 hdr_len += __tcp_hdrlen(th); ffff8000113a9560: 0b180b38 add w24, w25, w24, lsl #2 if (shinfo->gso_type & SKB_GSO_DODGY) ffff8000113a9564: 36080103 tbz w3, #1, ffff8000113a9584 <__dev_queue_xmit+0x190> gso_segs = DIV_ROUND_UP(skb->len - hdr_len, ffff8000113a9568: b940727b ldr w27, [x19,#112] ffff8000113a956c: 79400aa1 ldrh w1, [x21,#4] ffff8000113a9570: 5100077b sub w27, w27, #0x1 ffff8000113a9574: 0b01037b add w27, w27, w1 ffff8000113a9578: 4b18037b sub w27, w27, w24 ffff8000113a957c: 1ac10b7b udiv w27, w27, w1 ffff8000113a9580: 53003f7b uxth w27, w27 qdisc_skb_cb(skb)->pkt_len += (gso_segs - 1) * hdr_len; ffff8000113a9584: 5100077b sub w27, w27, #0x1 ffff8000113a9588: 1b187f78 mul w24, w27, w24 ffff8000113a958c: 0b000300 add w0, w24, w0 ffff8000113a9590: b9002a60 str w0, [x19,#40] skb->tc_at_ingress = 0; ffff8000113a9594: 39420e60 ldrb w0, [x19,#131] ffff8000113a9598: 12197800 and w0, w0, #0xffffffbf ffff8000113a959c: 39020e60 strb w0, [x19,#131] ffff8000113a95a0: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a95a0: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113a95a4: 91000000 add x0, x0, #0x0 ffff8000113a95a4: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113a95a8: b9434000 ldr w0, [x0,#832] if (static_branch_unlikely(&egress_needed_key)) { ffff8000113a95ac: 6b1f001f cmp w0, wzr ffff8000113a95b0: 5400312c b.gt ffff8000113a9bd4 <__dev_queue_xmit+0x7e0> if (dev->priv_flags & IFF_XMIT_DST_RELEASE) ffff8000113a95b4: b9422ec0 ldr w0, [x22,#556] ffff8000113a95b8: 36280aa0 tbz w0, #5, ffff8000113a970c <__dev_queue_xmit+0x318> if (skb->_skb_refdst) { ffff8000113a95bc: f9402e60 ldr x0, [x19,#88] ffff8000113a95c0: b4000060 cbz x0, ffff8000113a95cc <__dev_queue_xmit+0x1d8> if (!(refdst & SKB_DST_NOREF)) ffff8000113a95c4: 36001b80 tbz w0, #0, ffff8000113a9934 <__dev_queue_xmit+0x540> skb->_skb_refdst = 0UL; ffff8000113a95c8: f9002e7f str xzr, [x19,#88] txq = netdev_core_pick_tx(dev, skb, sb_dev); ffff8000113a95cc: aa1303e1 mov x1, x19 ffff8000113a95d0: aa1403e2 mov x2, x20 ffff8000113a95d4: aa1603e0 mov x0, x22 ffff8000113a95d8: 94000000 bl ffff8000113a92e8 ffff8000113a95d8: R_AARCH64_CALL26 netdev_core_pick_tx ffff8000113a95dc: aa0003f8 mov x24, x0 ffff8000113a95e0: 90000000 adrp x0, 0 <__tracepoint_net_dev_queue> ffff8000113a95e0: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_net_dev_queue ffff8000113a95e4: 91000000 add x0, x0, #0x0 ffff8000113a95e4: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_net_dev_queue ffff8000113a95e8: f9400714 ldr x20, [x24,#8] ffff8000113a95ec: b9400801 ldr w1, [x0,#8] ffff8000113a95f0: 6b1f003f cmp w1, wzr ffff8000113a95f4: 54002c6c b.gt ffff8000113a9b80 <__dev_queue_xmit+0x78c> if (q->enqueue) { ffff8000113a95f8: f9400280 ldr x0, [x20] ffff8000113a95fc: b4000f40 cbz x0, ffff8000113a97e4 <__dev_queue_xmit+0x3f0> struct sk_buff *to_free = NULL; ffff8000113a9600: f90043bf str xzr, [x29,#128] ffff8000113a9604: f9401281 ldr x1, [x20,#32] const struct Qdisc *sch) { #ifdef CONFIG_NET_SCHED struct qdisc_size_table *stab = rcu_dereference_bh(sch->stab); if (stab) ffff8000113a9608: b4000061 cbz x1, ffff8000113a9614 <__dev_queue_xmit+0x220> __qdisc_calculate_pkt_len(skb, stab); ffff8000113a960c: aa1303e0 mov x0, x19 ffff8000113a9610: 94000000 bl 0 <__qdisc_calculate_pkt_len> ffff8000113a9610: R_AARCH64_CALL26 __qdisc_calculate_pkt_len if (q->flags & TCQ_F_NOLOCK) { ffff8000113a9614: b9401280 ldr w0, [x20,#16] ffff8000113a9618: 37400a20 tbnz w0, #8, ffff8000113a975c <__dev_queue_xmit+0x368> ffff8000113a961c: b940c280 ldr w0, [x20,#192] smp_rmb(); ffff8000113a9620: d50339bf dmb ishld return (raw_read_seqcount(&qdisc->running) & 1) ? true : false; ffff8000113a9624: 12000000 and w0, w0, #0x1 if (unlikely(contended)) ffff8000113a9628: 2a0003f9 mov w25, w0 ffff8000113a962c: 53001c15 uxtb w21, w0 ffff8000113a9630: b5003859 cbnz x25, ffff8000113a9d38 <__dev_queue_xmit+0x944> spinlock_t *root_lock = qdisc_lock(q); ffff8000113a9634: 9102b284 add x4, x20, #0xac ffff8000113a9638: 52800023 mov w3, #0x1 // #1 ffff8000113a963c: d2800002 mov x2, #0x0 // #0 ffff8000113a9640: f9800091 prfm pstl1strm, [x4] ffff8000113a9644: 885ffc81 ldaxr w1, [x4] ffff8000113a9648: 4a020020 eor w0, w1, w2 ffff8000113a964c: 35000060 cbnz w0, ffff8000113a9658 <__dev_queue_xmit+0x264> ffff8000113a9650: 88007c83 stxr w0, w3, [x4] ffff8000113a9654: 35ffff80 cbnz w0, ffff8000113a9644 <__dev_queue_xmit+0x250> ffff8000113a9658: 35003881 cbnz w1, ffff8000113a9d68 <__dev_queue_xmit+0x974> ffff8000113a965c: f9406e81 ldr x1, [x20,#216] if (unlikely(test_bit(__QDISC_STATE_DEACTIVATED, &q->state))) { ffff8000113a9660: 37083181 tbnz w1, #1, ffff8000113a9c90 <__dev_queue_xmit+0x89c> } else if ((q->flags & TCQ_F_CAN_BYPASS) && !qdisc_qlen(q) && ffff8000113a9664: b9401281 ldr w1, [x20,#16] ffff8000113a9668: 36100061 tbz w1, #2, ffff8000113a9674 <__dev_queue_xmit+0x280> ffff8000113a966c: b940aa82 ldr w2, [x20,#168] ffff8000113a9670: 340016a2 cbz w2, ffff8000113a9944 <__dev_queue_xmit+0x550> rc = q->enqueue(skb, q, &to_free) & NET_XMIT_MASK; ffff8000113a9674: f9400283 ldr x3, [x20] ffff8000113a9678: aa1403e1 mov x1, x20 ffff8000113a967c: aa1303e0 mov x0, x19 ffff8000113a9680: 910203a2 add x2, x29, #0x80 ffff8000113a9684: d63f0060 blr x3 if (qdisc->flags & TCQ_F_NOLOCK) { ffff8000113a9688: b9401281 ldr w1, [x20,#16] ffff8000113a968c: 12000c16 and w22, w0, #0xf ffff8000113a9690: 37401381 tbnz w1, #8, ffff8000113a9900 <__dev_queue_xmit+0x50c> ffff8000113a9694: b940c280 ldr w0, [x20,#192] ffff8000113a9698: d50339bf dmb ishld } else if (qdisc_is_running(qdisc)) { ffff8000113a969c: 370001c0 tbnz w0, #0, ffff8000113a96d4 <__dev_queue_xmit+0x2e0> s->sequence++; ffff8000113a96a0: b940c280 ldr w0, [x20,#192] ffff8000113a96a4: 11000400 add w0, w0, #0x1 ffff8000113a96a8: b900c280 str w0, [x20,#192] smp_wmb(); ffff8000113a96ac: d5033abf dmb ishst if (unlikely(contended)) { ffff8000113a96b0: b5003199 cbnz x25, ffff8000113a9ce0 <__dev_queue_xmit+0x8ec> __qdisc_run(q); ffff8000113a96b4: aa1403e0 mov x0, x20 ffff8000113a96b8: 94000000 bl 0 <__qdisc_run> ffff8000113a96b8: R_AARCH64_CALL26 __qdisc_run smp_wmb(); ffff8000113a96bc: d5033abf dmb ishst s->sequence++; ffff8000113a96c0: b940c281 ldr w1, [x20,#192] if (qdisc->flags & TCQ_F_NOLOCK) ffff8000113a96c4: b9401280 ldr w0, [x20,#16] ffff8000113a96c8: 11000421 add w1, w1, #0x1 ffff8000113a96cc: b900c281 str w1, [x20,#192] ffff8000113a96d0: 37401ac0 tbnz w0, #8, ffff8000113a9a28 <__dev_queue_xmit+0x634> smp_store_release(&lock->locked, 0); ffff8000113a96d4: 52800000 mov w0, #0x0 // #0 ffff8000113a96d8: 9102b283 add x3, x20, #0xac ffff8000113a96dc: 089ffc60 stlrb w0, [x3] if (unlikely(to_free)) ffff8000113a96e0: f94043a0 ldr x0, [x29,#128] ffff8000113a96e4: b5002fa0 cbnz x0, ffff8000113a9cd8 <__dev_queue_xmit+0x8e4> return rc; ffff8000113a96e8: 2a1603f3 mov w19, w22 if (unlikely(contended)) ffff8000113a96ec: 35002ef5 cbnz w21, ffff8000113a9cc8 <__dev_queue_xmit+0x8d4> rc = __dev_xmit_skb(skb, q, dev, txq); ffff8000113a96f0: b9007fb3 str w19, [x29,#124] ffff8000113a96f4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a96f4: R_AARCH64_ADR_PREL_PG_HI21 .text+0xb378 ffff8000113a96f8: 91000000 add x0, x0, #0x0 ffff8000113a96f8: R_AARCH64_ADD_ABS_LO12_NC .text+0xb378 ffff8000113a96fc: 52804001 mov w1, #0x200 // #512 ffff8000113a9700: 94000000 bl 0 <__local_bh_enable_ip> ffff8000113a9700: R_AARCH64_CALL26 __local_bh_enable_ip return rc; ffff8000113a9704: b9407fa0 ldr w0, [x29,#124] ffff8000113a9708: 14000066 b ffff8000113a98a0 <__dev_queue_xmit+0x4ac> static inline bool skb_dst_force(struct sk_buff *skb) ffff8000113a970c: f9402e67 ldr x7, [x19,#88] return (skb->_skb_refdst & SKB_DST_NOREF) && skb_dst(skb); ffff8000113a9710: 3607f5e7 tbz w7, #0, ffff8000113a95cc <__dev_queue_xmit+0x1d8> return (struct dst_entry *)(skb->_skb_refdst & SKB_DST_PTRMASK); ffff8000113a9714: 927ff8e7 and x7, x7, #0xfffffffffffffffe return (skb->_skb_refdst & SKB_DST_NOREF) && skb_dst(skb); ffff8000113a9718: b4fff5a7 cbz x7, ffff8000113a95cc <__dev_queue_xmit+0x1d8> ffff8000113a971c: b94040e0 ldr w0, [x7,#64] if (unlikely(c == u)) ffff8000113a9720: 340005c0 cbz w0, ffff8000113a97d8 <__dev_queue_xmit+0x3e4> ffff8000113a9724: 910100e3 add x3, x7, #0x40 ffff8000113a9728: 2a0003e1 mov w1, w0 } while (!atomic_try_cmpxchg(v, &c, c + a)); ffff8000113a972c: 11000402 add w2, w0, #0x1 ffff8000113a9730: f9800071 prfm pstl1strm, [x3] ffff8000113a9734: 885f7c66 ldxr w6, [x3] ffff8000113a9738: 4a0100c4 eor w4, w6, w1 ffff8000113a973c: 35000084 cbnz w4, ffff8000113a974c <__dev_queue_xmit+0x358> ffff8000113a9740: 8804fc62 stlxr w4, w2, [x3] ffff8000113a9744: 35ffff84 cbnz w4, ffff8000113a9734 <__dev_queue_xmit+0x340> ffff8000113a9748: d5033bbf dmb ish if (unlikely(r != o)) ffff8000113a974c: 6b06001f cmp w0, w6 ffff8000113a9750: 54001921 b.ne ffff8000113a9a74 <__dev_queue_xmit+0x680> skb->_skb_refdst = (unsigned long)dst; ffff8000113a9754: f9002e67 str x7, [x19,#88] ffff8000113a9758: 17ffff9d b ffff8000113a95cc <__dev_queue_xmit+0x1d8> rc = q->enqueue(skb, q, &to_free) & NET_XMIT_MASK; ffff8000113a975c: f9400283 ldr x3, [x20] ffff8000113a9760: aa1303e0 mov x0, x19 ffff8000113a9764: aa1403e1 mov x1, x20 ffff8000113a9768: 910203a2 add x2, x29, #0x80 ffff8000113a976c: d63f0060 blr x3 if (qdisc->flags & TCQ_F_NOLOCK) { ffff8000113a9770: b9401281 ldr w1, [x20,#16] ffff8000113a9774: 12000c13 and w19, w0, #0xf ffff8000113a9778: 37400aa1 tbnz w1, #8, ffff8000113a98cc <__dev_queue_xmit+0x4d8> ffff8000113a977c: b940c280 ldr w0, [x20,#192] smp_rmb(); ffff8000113a9780: d50339bf dmb ishld } else if (qdisc_is_running(qdisc)) { ffff8000113a9784: 37000220 tbnz w0, #0, ffff8000113a97c8 <__dev_queue_xmit+0x3d4> s->sequence++; ffff8000113a9788: b940c280 ldr w0, [x20,#192] ffff8000113a978c: 11000400 add w0, w0, #0x1 ffff8000113a9790: b900c280 str w0, [x20,#192] smp_wmb(); ffff8000113a9794: d5033abf dmb ishst if (!(q->flags & TCQ_F_NOLOCK) || ffff8000113a9798: b9401280 ldr w0, [x20,#16] ffff8000113a979c: 36400060 tbz w0, #8, ffff8000113a97a8 <__dev_queue_xmit+0x3b4> ffff8000113a97a0: f9406e80 ldr x0, [x20,#216] ffff8000113a97a4: 37080060 tbnz w0, #1, ffff8000113a97b0 <__dev_queue_xmit+0x3bc> __qdisc_run(q); ffff8000113a97a8: aa1403e0 mov x0, x20 ffff8000113a97ac: 94000000 bl 0 <__qdisc_run> ffff8000113a97ac: R_AARCH64_CALL26 __qdisc_run smp_wmb(); ffff8000113a97b0: d5033abf dmb ishst s->sequence++; ffff8000113a97b4: b940c281 ldr w1, [x20,#192] if (qdisc->flags & TCQ_F_NOLOCK) ffff8000113a97b8: b9401280 ldr w0, [x20,#16] ffff8000113a97bc: 11000421 add w1, w1, #0x1 ffff8000113a97c0: b900c281 str w1, [x20,#192] ffff8000113a97c4: 374012a0 tbnz w0, #8, ffff8000113a9a18 <__dev_queue_xmit+0x624> if (unlikely(to_free)) ffff8000113a97c8: f94043a0 ldr x0, [x29,#128] ffff8000113a97cc: b4fff920 cbz x0, ffff8000113a96f0 <__dev_queue_xmit+0x2fc> kfree_skb_list(to_free); ffff8000113a97d0: 94000000 bl 0 ffff8000113a97d0: R_AARCH64_CALL26 kfree_skb_list ffff8000113a97d4: 17ffffc7 b ffff8000113a96f0 <__dev_queue_xmit+0x2fc> ffff8000113a97d8: d2800007 mov x7, #0x0 // #0 ffff8000113a97dc: f9002e67 str x7, [x19,#88] ffff8000113a97e0: 17ffff7b b ffff8000113a95cc <__dev_queue_xmit+0x1d8> if (dev->flags & IFF_UP) { ffff8000113a97e4: b9422ac0 ldr w0, [x22,#552] ffff8000113a97e8: 360003e0 tbz w0, #0, ffff8000113a9864 <__dev_queue_xmit+0x470> int cpu = smp_processor_id(); /* ok because BHs are off */ ffff8000113a97ec: 90000000 adrp x0, 0 ffff8000113a97ec: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113a97f0: 91000000 add x0, x0, #0x0 ffff8000113a97f0: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a97f4: d538d081 mrs x1, tpidr_el1 if (txq->xmit_lock_owner != cpu) { ffff8000113a97f8: b9408702 ldr w2, [x24,#132] int cpu = smp_processor_id(); /* ok because BHs are off */ ffff8000113a97fc: b8606834 ldr w20, [x1,x0] if (txq->xmit_lock_owner != cpu) { ffff8000113a9800: 6b14005f cmp w2, w20 ffff8000113a9804: 54001aa0 b.eq ffff8000113a9b58 <__dev_queue_xmit+0x764> return unlikely(__this_cpu_read(softnet_data.xmit.recursion) > ffff8000113a9808: 90000015 adrp x21, ffff80001139e37c <__my_cpu_offset> ffff8000113a9808: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned ffff8000113a980c: 910002a0 add x0, x21, #0x0 ffff8000113a980c: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a9810: 9101e000 add x0, x0, #0x78 if (dev_xmit_recursion()) ffff8000113a9814: 78616800 ldrh w0, [x0,x1] ffff8000113a9818: 7100281f cmp w0, #0xa ffff8000113a981c: 540019e8 b.hi ffff8000113a9b58 <__dev_queue_xmit+0x764> skb = validate_xmit_skb(skb, dev, &again); ffff8000113a9820: aa1303e0 mov x0, x19 ffff8000113a9824: aa1603e1 mov x1, x22 ffff8000113a9828: 9101efa2 add x2, x29, #0x7b ffff8000113a982c: 97fffcba bl ffff8000113a8b14 ffff8000113a9830: aa0003f3 mov x19, x0 if (!skb) ffff8000113a9834: b4fff600 cbz x0, ffff8000113a96f4 <__dev_queue_xmit+0x300> HARD_TX_LOCK(dev, txq, cpu); ffff8000113a9838: f94066c2 ldr x2, [x22,#200] ffff8000113a983c: 92740042 and x2, x2, #0x1000 ffff8000113a9840: b40016c2 cbz x2, ffff8000113a9b18 <__dev_queue_xmit+0x724> return dev_queue->state & QUEUE_STATE_ANY_XOFF; ffff8000113a9844: f9404b00 ldr x0, [x24,#144] ffff8000113a9848: 92400400 and x0, x0, #0x3 if (!netif_xmit_stopped(txq)) { ffff8000113a984c: b4001300 cbz x0, ffff8000113a9aac <__dev_queue_xmit+0x6b8> HARD_TX_UNLOCK(dev, txq); ffff8000113a9850: f94066c0 ldr x0, [x22,#200] ffff8000113a9854: 92740000 and x0, x0, #0x1000 ffff8000113a9858: b4001760 cbz x0, ffff8000113a9b44 <__dev_queue_xmit+0x750> net_crit_ratelimited("Virtual device %s asks to queue packet!\n", ffff8000113a985c: 94000000 bl 0 ffff8000113a985c: R_AARCH64_CALL26 net_ratelimit ffff8000113a9860: 350022a0 cbnz w0, ffff8000113a9cb4 <__dev_queue_xmit+0x8c0> ffff8000113a9864: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a9864: R_AARCH64_ADR_PREL_PG_HI21 .text+0xb4e8 rc = -ENETDOWN; ffff8000113a9868: 12800c62 mov w2, #0xffffff9c // #-100 ffff8000113a986c: 91000000 add x0, x0, #0x0 ffff8000113a986c: R_AARCH64_ADD_ABS_LO12_NC .text+0xb4e8 ffff8000113a9870: 52804001 mov w1, #0x200 // #512 ffff8000113a9874: b9007fa2 str w2, [x29,#124] ffff8000113a9878: 94000000 bl 0 <__local_bh_enable_ip> ffff8000113a9878: R_AARCH64_CALL26 __local_bh_enable_ip ATOMIC64_OPS(add, add, I) ffff8000113a987c: 910722c7 add x7, x22, #0x1c8 ffff8000113a9880: f98000f1 prfm pstl1strm, [x7] ffff8000113a9884: c85f7ce0 ldxr x0, [x7] ffff8000113a9888: 91000400 add x0, x0, #0x1 ffff8000113a988c: c8017ce0 stxr w1, x0, [x7] ffff8000113a9890: 35ffffa1 cbnz w1, ffff8000113a9884 <__dev_queue_xmit+0x490> kfree_skb_list(skb); ffff8000113a9894: aa1303e0 mov x0, x19 ffff8000113a9898: 94000000 bl 0 ffff8000113a9898: R_AARCH64_CALL26 kfree_skb_list return rc; ffff8000113a989c: b9407fa0 ldr w0, [x29,#124] } ffff8000113a98a0: f9404fa2 ldr x2, [x29,#152] ffff8000113a98a4: f94002e1 ldr x1, [x23] ffff8000113a98a4: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a98a8: eb01005f cmp x2, x1 ffff8000113a98ac: 54001681 b.ne ffff8000113a9b7c <__dev_queue_xmit+0x788> ffff8000113a98b0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a98b4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a98b8: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a98bc: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113a98c0: f9402bfb ldr x27, [sp,#80] ffff8000113a98c4: a8ca7bfd ldp x29, x30, [sp],#160 ffff8000113a98c8: d65f03c0 ret ffff8000113a98cc: b9410682 ldr w2, [x20,#260] if (unlikely(val)) ffff8000113a98d0: 35000162 cbnz w2, ffff8000113a98fc <__dev_queue_xmit+0x508> __CMPXCHG_CASE(w, , acq_, 32, , a, , "memory", K) ffff8000113a98d4: 52800021 mov w1, #0x1 // #1 ffff8000113a98d8: d2800000 mov x0, #0x0 // #0 ffff8000113a98dc: 91041288 add x8, x20, #0x104 ffff8000113a98e0: f9800111 prfm pstl1strm, [x8] ffff8000113a98e4: 885ffd03 ldaxr w3, [x8] ffff8000113a98e8: 4a000064 eor w4, w3, w0 ffff8000113a98ec: 35000064 cbnz w4, ffff8000113a98f8 <__dev_queue_xmit+0x504> ffff8000113a98f0: 88047d01 stxr w4, w1, [x8] ffff8000113a98f4: 35ffff84 cbnz w4, ffff8000113a98e4 <__dev_queue_xmit+0x4f0> if (do_raw_spin_trylock(lock)) { ffff8000113a98f8: 340007c3 cbz w3, ffff8000113a99f0 <__dev_queue_xmit+0x5fc> preempt_enable(); ffff8000113a98fc: 17ffffb3 b ffff8000113a97c8 <__dev_queue_xmit+0x3d4> ffff8000113a9900: b9410682 ldr w2, [x20,#260] ffff8000113a9904: 35000162 cbnz w2, ffff8000113a9930 <__dev_queue_xmit+0x53c> ffff8000113a9908: 52800021 mov w1, #0x1 // #1 ffff8000113a990c: d2800000 mov x0, #0x0 // #0 ffff8000113a9910: 91041285 add x5, x20, #0x104 ffff8000113a9914: f98000b1 prfm pstl1strm, [x5] ffff8000113a9918: 885ffca3 ldaxr w3, [x5] ffff8000113a991c: 4a000064 eor w4, w3, w0 ffff8000113a9920: 35000064 cbnz w4, ffff8000113a992c <__dev_queue_xmit+0x538> ffff8000113a9924: 88047ca1 stxr w4, w1, [x5] ffff8000113a9928: 35ffff84 cbnz w4, ffff8000113a9918 <__dev_queue_xmit+0x524> if (do_raw_spin_trylock(lock)) { ffff8000113a992c: 34000663 cbz w3, ffff8000113a99f8 <__dev_queue_xmit+0x604> preempt_enable(); ffff8000113a9930: 17ffff69 b ffff8000113a96d4 <__dev_queue_xmit+0x2e0> dst_release((struct dst_entry *)(refdst & SKB_DST_PTRMASK)); ffff8000113a9934: 927ff800 and x0, x0, #0xfffffffffffffffe ffff8000113a9938: 94000000 bl 0 ffff8000113a9938: R_AARCH64_CALL26 dst_release skb->_skb_refdst = 0UL; ffff8000113a993c: f9002e7f str xzr, [x19,#88] ffff8000113a9940: 17ffff23 b ffff8000113a95cc <__dev_queue_xmit+0x1d8> if (qdisc->flags & TCQ_F_NOLOCK) { ffff8000113a9944: 374007a1 tbnz w1, #8, ffff8000113a9a38 <__dev_queue_xmit+0x644> ffff8000113a9948: b940c280 ldr w0, [x20,#192] smp_rmb(); ffff8000113a994c: d50339bf dmb ishld } else if (qdisc_is_running(qdisc)) { ffff8000113a9950: 3707e920 tbnz w0, #0, ffff8000113a9674 <__dev_queue_xmit+0x280> s->sequence++; ffff8000113a9954: b940c280 ldr w0, [x20,#192] ffff8000113a9958: 11000400 add w0, w0, #0x1 ffff8000113a995c: b900c280 str w0, [x20,#192] smp_wmb(); ffff8000113a9960: d5033abf dmb ishst return skb->head + skb->end; ffff8000113a9964: f9406261 ldr x1, [x19,#192] ffff8000113a9968: b940be60 ldr w0, [x19,#188] } static inline void bstats_update(struct gnet_stats_basic_packed *bstats, const struct sk_buff *skb) { _bstats_update(bstats, ffff8000113a996c: b9402a63 ldr w3, [x19,#40] ffff8000113a9970: 8b000020 add x0, x1, x0 ffff8000113a9974: 79400802 ldrh w2, [x0,#4] ffff8000113a9978: d2800021 mov x1, #0x1 // #1 ffff8000113a997c: 34000042 cbz w2, ffff8000113a9984 <__dev_queue_xmit+0x590> ffff8000113a9980: 79400c01 ldrh w1, [x0,#6] bstats->bytes += bytes; ffff8000113a9984: f9405a82 ldr x2, [x20,#176] bstats->packets += packets; ffff8000113a9988: f9405e80 ldr x0, [x20,#184] bstats->bytes += bytes; ffff8000113a998c: 8b030043 add x3, x2, x3 bstats->packets += packets; ffff8000113a9990: 8b010001 add x1, x0, x1 bstats->bytes += bytes; ffff8000113a9994: f9005a83 str x3, [x20,#176] bstats->packets += packets; ffff8000113a9998: f9005e81 str x1, [x20,#184] if (sch_direct_xmit(skb, q, dev, txq, root_lock, true)) { ffff8000113a999c: aa1303e0 mov x0, x19 ffff8000113a99a0: aa1403e1 mov x1, x20 ffff8000113a99a4: aa1603e2 mov x2, x22 ffff8000113a99a8: aa1803e3 mov x3, x24 ffff8000113a99ac: 52800025 mov w5, #0x1 // #1 ffff8000113a99b0: 94000000 bl 0 ffff8000113a99b0: R_AARCH64_CALL26 sch_direct_xmit ffff8000113a99b4: 53001c00 uxtb w0, w0 ffff8000113a99b8: 34000080 cbz w0, ffff8000113a99c8 <__dev_queue_xmit+0x5d4> if (unlikely(contended)) { ffff8000113a99bc: b5001619 cbnz x25, ffff8000113a9c7c <__dev_queue_xmit+0x888> __qdisc_run(q); ffff8000113a99c0: aa1403e0 mov x0, x20 ffff8000113a99c4: 94000000 bl 0 <__qdisc_run> ffff8000113a99c4: R_AARCH64_CALL26 __qdisc_run smp_wmb(); ffff8000113a99c8: d5033abf dmb ishst s->sequence++; ffff8000113a99cc: b940c281 ldr w1, [x20,#192] if (qdisc->flags & TCQ_F_NOLOCK) ffff8000113a99d0: b9401280 ldr w0, [x20,#16] ffff8000113a99d4: 11000421 add w1, w1, #0x1 ffff8000113a99d8: b900c281 str w1, [x20,#192] rc = NET_XMIT_SUCCESS; ffff8000113a99dc: 52800016 mov w22, #0x0 // #0 ffff8000113a99e0: 3647e7a0 tbz w0, #8, ffff8000113a96d4 <__dev_queue_xmit+0x2e0> smp_store_release(&lock->locked, 0); ffff8000113a99e4: 91041283 add x3, x20, #0x104 ffff8000113a99e8: 089ffc76 stlrb w22, [x3] ffff8000113a99ec: 17ffff3a b ffff8000113a96d4 <__dev_queue_xmit+0x2e0> case 1: *(volatile __u8 *)p = *(__u8 *)res; break; ffff8000113a99f0: 39042282 strb w2, [x20,#264] ffff8000113a99f4: 17ffff65 b ffff8000113a9788 <__dev_queue_xmit+0x394> ffff8000113a99f8: 39042282 strb w2, [x20,#264] ffff8000113a99fc: 17ffff29 b ffff8000113a96a0 <__dev_queue_xmit+0x2ac> return data + offset; ffff8000113a9a00: 8b21c041 add x1, x2, w1, sxtw if (likely(th)) ffff8000113a9a04: b5ffdaa1 cbnz x1, ffff8000113a9558 <__dev_queue_xmit+0x164> ffff8000113a9a08: 17fffed7 b ffff8000113a9564 <__dev_queue_xmit+0x170> sk = inet_reqsk(sk)->rsk_listener; ffff8000113a9a0c: f9403000 ldr x0, [x0,#96] if (!sk) ffff8000113a9a10: b5ffd440 cbnz x0, ffff8000113a9498 <__dev_queue_xmit+0xa4> ffff8000113a9a14: 17fffeab b ffff8000113a94c0 <__dev_queue_xmit+0xcc> ffff8000113a9a18: 52800000 mov w0, #0x0 // #0 ffff8000113a9a1c: 91041294 add x20, x20, #0x104 ffff8000113a9a20: 089ffe80 stlrb w0, [x20] ffff8000113a9a24: 17ffff69 b ffff8000113a97c8 <__dev_queue_xmit+0x3d4> ffff8000113a9a28: 52800000 mov w0, #0x0 // #0 ffff8000113a9a2c: 91041282 add x2, x20, #0x104 ffff8000113a9a30: 089ffc40 stlrb w0, [x2] ffff8000113a9a34: 17ffff28 b ffff8000113a96d4 <__dev_queue_xmit+0x2e0> __READ_ONCE_SIZE; ffff8000113a9a38: b9410682 ldr w2, [x20,#260] if (unlikely(val)) ffff8000113a9a3c: 35000162 cbnz w2, ffff8000113a9a68 <__dev_queue_xmit+0x674> ffff8000113a9a40: 52800021 mov w1, #0x1 // #1 ffff8000113a9a44: d2800000 mov x0, #0x0 // #0 ffff8000113a9a48: 91041286 add x6, x20, #0x104 ffff8000113a9a4c: f98000d1 prfm pstl1strm, [x6] ffff8000113a9a50: 885ffcc3 ldaxr w3, [x6] ffff8000113a9a54: 4a000065 eor w5, w3, w0 ffff8000113a9a58: 35000065 cbnz w5, ffff8000113a9a64 <__dev_queue_xmit+0x670> ffff8000113a9a5c: 88057cc1 stxr w5, w1, [x6] ffff8000113a9a60: 35ffff85 cbnz w5, ffff8000113a9a50 <__dev_queue_xmit+0x65c> if (do_raw_spin_trylock(lock)) { ffff8000113a9a64: 34000043 cbz w3, ffff8000113a9a6c <__dev_queue_xmit+0x678> preempt_enable(); ffff8000113a9a68: 17ffff03 b ffff8000113a9674 <__dev_queue_xmit+0x280> case 1: *(volatile __u8 *)p = *(__u8 *)res; break; ffff8000113a9a6c: 39042282 strb w2, [x20,#264] ffff8000113a9a70: 17ffffb9 b ffff8000113a9954 <__dev_queue_xmit+0x560> if (unlikely(c == u)) ffff8000113a9a74: 34ffeb26 cbz w6, ffff8000113a97d8 <__dev_queue_xmit+0x3e4> ffff8000113a9a78: 2a0603e4 mov w4, w6 } while (!atomic_try_cmpxchg(v, &c, c + a)); ffff8000113a9a7c: 110004c5 add w5, w6, #0x1 __CMPXCHG_CASE(w, , mb_, 32, dmb ish, , l, "memory", K) ffff8000113a9a80: f9800071 prfm pstl1strm, [x3] ffff8000113a9a84: 885f7c60 ldxr w0, [x3] ffff8000113a9a88: 4a040001 eor w1, w0, w4 ffff8000113a9a8c: 35000081 cbnz w1, ffff8000113a9a9c <__dev_queue_xmit+0x6a8> ffff8000113a9a90: 8801fc65 stlxr w1, w5, [x3] ffff8000113a9a94: 35ffff81 cbnz w1, ffff8000113a9a84 <__dev_queue_xmit+0x690> ffff8000113a9a98: d5033bbf dmb ish if (unlikely(r != o)) ffff8000113a9a9c: 6b06001f cmp w0, w6 ffff8000113a9aa0: 54ffe5a0 b.eq ffff8000113a9754 <__dev_queue_xmit+0x360> ffff8000113a9aa4: 2a0003e6 mov w6, w0 ffff8000113a9aa8: 17fffff3 b ffff8000113a9a74 <__dev_queue_xmit+0x680> __this_cpu_inc(softnet_data.xmit.recursion); ffff8000113a9aac: 910002b5 add x21, x21, #0x0 ffff8000113a9aac: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a9ab0: d538d081 mrs x1, tpidr_el1 ffff8000113a9ab4: 9101e2b5 add x21, x21, #0x78 ffff8000113a9ab8: 78756822 ldrh w2, [x1,x21] skb = dev_hard_start_xmit(skb, dev, txq, &rc); ffff8000113a9abc: aa1303e0 mov x0, x19 ffff8000113a9ac0: 11000442 add w2, w2, #0x1 ffff8000113a9ac4: 78356822 strh w2, [x1,x21] ffff8000113a9ac8: 9101f3a3 add x3, x29, #0x7c ffff8000113a9acc: aa1603e1 mov x1, x22 ffff8000113a9ad0: aa1803e2 mov x2, x24 ffff8000113a9ad4: 94000000 bl ffff8000113a908c ffff8000113a9ad4: R_AARCH64_CALL26 dev_hard_start_xmit ffff8000113a9ad8: aa0003f3 mov x19, x0 ffff8000113a9adc: d538d080 mrs x0, tpidr_el1 __this_cpu_dec(softnet_data.xmit.recursion); ffff8000113a9ae0: 78756801 ldrh w1, [x0,x21] ffff8000113a9ae4: 51000421 sub w1, w1, #0x1 ffff8000113a9ae8: 78356801 strh w1, [x0,x21] if (likely(rc < NET_XMIT_MASK)) ffff8000113a9aec: b9407fa0 ldr w0, [x29,#124] ffff8000113a9af0: 7100381f cmp w0, #0xe ffff8000113a9af4: 54ffeaec b.gt ffff8000113a9850 <__dev_queue_xmit+0x45c> HARD_TX_UNLOCK(dev, txq); ffff8000113a9af8: f94066c0 ldr x0, [x22,#200] ffff8000113a9afc: 92740000 and x0, x0, #0x1000 ffff8000113a9b00: b5ffdfa0 cbnz x0, ffff8000113a96f4 <__dev_queue_xmit+0x300> txq->xmit_lock_owner = -1; ffff8000113a9b04: 12800001 mov w1, #0xffffffff // #-1 ffff8000113a9b08: b9008701 str w1, [x24,#132] smp_store_release(&lock->locked, 0); ffff8000113a9b0c: 91020318 add x24, x24, #0x80 ffff8000113a9b10: 089fff00 stlrb w0, [x24] preempt_enable(); ffff8000113a9b14: 17fffef8 b ffff8000113a96f4 <__dev_queue_xmit+0x300> __CMPXCHG_CASE(w, , acq_, 32, , a, , "memory", K) ffff8000113a9b18: 52800023 mov w3, #0x1 // #1 ffff8000113a9b1c: 91020300 add x0, x24, #0x80 ffff8000113a9b20: f9800011 prfm pstl1strm, [x0] ffff8000113a9b24: 885ffc01 ldaxr w1, [x0] ffff8000113a9b28: 4a020024 eor w4, w1, w2 ffff8000113a9b2c: 35000064 cbnz w4, ffff8000113a9b38 <__dev_queue_xmit+0x744> ffff8000113a9b30: 88047c03 stxr w4, w3, [x0] ffff8000113a9b34: 35ffff84 cbnz w4, ffff8000113a9b24 <__dev_queue_xmit+0x730> if (unlikely(r != o)) ffff8000113a9b38: 350009c1 cbnz w1, ffff8000113a9c70 <__dev_queue_xmit+0x87c> txq->xmit_lock_owner = cpu; ffff8000113a9b3c: b9008714 str w20, [x24,#132] ffff8000113a9b40: 17ffff41 b ffff8000113a9844 <__dev_queue_xmit+0x450> txq->xmit_lock_owner = -1; ffff8000113a9b44: 12800001 mov w1, #0xffffffff // #-1 ffff8000113a9b48: b9008701 str w1, [x24,#132] ffff8000113a9b4c: 91020318 add x24, x24, #0x80 ffff8000113a9b50: 089fff00 stlrb w0, [x24] ffff8000113a9b54: 17ffff42 b ffff8000113a985c <__dev_queue_xmit+0x468> net_crit_ratelimited("Dead loop on virtual device %s, fix it urgently!\n", ffff8000113a9b58: 94000000 bl 0 ffff8000113a9b58: R_AARCH64_CALL26 net_ratelimit ffff8000113a9b5c: 34ffe840 cbz w0, ffff8000113a9864 <__dev_queue_xmit+0x470> ffff8000113a9b60: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a9b60: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x6c0 ffff8000113a9b64: aa1603e1 mov x1, x22 ffff8000113a9b68: 91000000 add x0, x0, #0x0 ffff8000113a9b68: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x6c0 ffff8000113a9b6c: 94000000 bl 0 ffff8000113a9b6c: R_AARCH64_CALL26 printk ffff8000113a9b70: 17ffff3d b ffff8000113a9864 <__dev_queue_xmit+0x470> ffff8000113a9b74: b9400340 ldr w0, [x26] ffff8000113a9b78: 17fffe7b b ffff8000113a9564 <__dev_queue_xmit+0x170> } ffff8000113a9b7c: 94000000 bl 0 <__stack_chk_fail> ffff8000113a9b7c: R_AARCH64_CALL26 __stack_chk_fail DEFINE_EVENT(net_dev_template, net_dev_queue, ffff8000113a9b80: 90000001 adrp x1, 0 ffff8000113a9b80: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113a9b84: d538d082 mrs x2, tpidr_el1 ffff8000113a9b88: 91000021 add x1, x1, #0x0 ffff8000113a9b88: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a9b8c: b8616841 ldr w1, [x2,x1] ffff8000113a9b90: 52800803 mov w3, #0x40 // #64 ffff8000113a9b94: 1ac30c23 sdiv w3, w1, w3 ffff8000113a9b98: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113a9b98: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113a9b9c: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113a9ba0: 91000042 add x2, x2, #0x0 ffff8000113a9ba0: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113a9ba4: f8626862 ldr x2, [x3,x2] ffff8000113a9ba8: 9ac12441 lsr x1, x2, x1 ffff8000113a9bac: 3607d261 tbz w1, #0, ffff8000113a95f8 <__dev_queue_xmit+0x204> __READ_ONCE_SIZE; ffff8000113a9bb0: f9401015 ldr x21, [x0,#32] ffff8000113a9bb4: b40000f5 cbz x21, ffff8000113a9bd0 <__dev_queue_xmit+0x7dc> ffff8000113a9bb8: f94002a4 ldr x4, [x21] ffff8000113a9bbc: f94006a0 ldr x0, [x21,#8] ffff8000113a9bc0: aa1303e1 mov x1, x19 ffff8000113a9bc4: d63f0080 blr x4 ffff8000113a9bc8: f8418ea4 ldr x4, [x21,#24]! ffff8000113a9bcc: b5ffff84 cbnz x4, ffff8000113a9bbc <__dev_queue_xmit+0x7c8> ffff8000113a9bd0: 17fffe8a b ffff8000113a95f8 <__dev_queue_xmit+0x204> ffff8000113a9bd4: f941fed5 ldr x21, [x22,#1016] if (!miniq) ffff8000113a9bd8: b4000335 cbz x21, ffff8000113a9c3c <__dev_queue_xmit+0x848> mini_qdisc_bstats_cpu_update(miniq, skb); ffff8000113a9bdc: f9400aa0 ldr x0, [x21,#16] ffff8000113a9be0: aa1303e1 mov x1, x19 ffff8000113a9be4: 94000000 bl ffff80001139e37c <__my_cpu_offset> ffff8000113a9be4: R_AARCH64_CALL26 .text.unlikely switch (tcf_classify(skb, miniq->filter_list, &cl_res, false)) { ffff8000113a9be8: f94002a1 ldr x1, [x21] ffff8000113a9bec: aa1303e0 mov x0, x19 ffff8000113a9bf0: 910203a2 add x2, x29, #0x80 ffff8000113a9bf4: 52800003 mov w3, #0x0 // #0 ffff8000113a9bf8: 94000000 bl 0 ffff8000113a9bf8: R_AARCH64_CALL26 tcf_classify ffff8000113a9bfc: 7100201f cmp w0, #0x8 ffff8000113a9c00: 540001e8 b.hi ffff8000113a9c3c <__dev_queue_xmit+0x848> ffff8000113a9c04: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a9c04: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x8 ffff8000113a9c08: 91000021 add x1, x1, #0x0 ffff8000113a9c08: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x8 ffff8000113a9c0c: 38604822 ldrb w2, [x1,w0,uxtw] ffff8000113a9c10: 10000063 adr x3, ffff8000113a9c1c <__dev_queue_xmit+0x828> ffff8000113a9c14: 8b228862 add x2, x3, w2, sxtb #2 ffff8000113a9c18: d61f0040 br x2 __skb_tstamp_tx(skb, NULL, skb->sk, SCM_TSTAMP_SCHED); ffff8000113a9c1c: f9400e62 ldr x2, [x19,#24] ffff8000113a9c20: aa1303e0 mov x0, x19 ffff8000113a9c24: d2800001 mov x1, #0x0 // #0 ffff8000113a9c28: 52800023 mov w3, #0x1 // #1 ffff8000113a9c2c: 94000000 bl 0 <__skb_tstamp_tx> ffff8000113a9c2c: R_AARCH64_CALL26 __skb_tstamp_tx ffff8000113a9c30: 17fffe0b b ffff8000113a945c <__dev_queue_xmit+0x68> skb->tc_index = TC_H_MIN(cl_res.classid); ffff8000113a9c34: b9408ba0 ldr w0, [x29,#136] ffff8000113a9c38: 79010e60 strh w0, [x19,#134] if (!skb) ffff8000113a9c3c: b5ffcbd3 cbnz x19, ffff8000113a95b4 <__dev_queue_xmit+0x1c0> ffff8000113a9c40: 17fffead b ffff8000113a96f4 <__dev_queue_xmit+0x300> consume_skb(skb); ffff8000113a9c44: aa1303e0 mov x0, x19 *ret = NET_XMIT_SUCCESS; ffff8000113a9c48: b9007fbf str wzr, [x29,#124] consume_skb(skb); ffff8000113a9c4c: 94000000 bl 0 ffff8000113a9c4c: R_AARCH64_CALL26 consume_skb ffff8000113a9c50: 17fffea9 b ffff8000113a96f4 <__dev_queue_xmit+0x300> mini_qdisc_qstats_cpu_drop(miniq); ffff8000113a9c54: 910062a0 add x0, x21, #0x18 ffff8000113a9c58: 94000000 bl ffff80001139e37c <__my_cpu_offset> ffff8000113a9c58: R_AARCH64_CALL26 .text.unlikely+0x64 *ret = NET_XMIT_DROP; ffff8000113a9c5c: 52800021 mov w1, #0x1 // #1 kfree_skb(skb); ffff8000113a9c60: aa1303e0 mov x0, x19 *ret = NET_XMIT_DROP; ffff8000113a9c64: b9007fa1 str w1, [x29,#124] kfree_skb(skb); ffff8000113a9c68: 94000000 bl 0 ffff8000113a9c68: R_AARCH64_CALL26 kfree_skb ffff8000113a9c6c: 17fffea2 b ffff8000113a96f4 <__dev_queue_xmit+0x300> queued_spin_lock_slowpath(lock, val); ffff8000113a9c70: 94000000 bl 0 ffff8000113a9c70: R_AARCH64_CALL26 queued_spin_lock_slowpath txq->xmit_lock_owner = cpu; ffff8000113a9c74: b9008714 str w20, [x24,#132] ffff8000113a9c78: 17fffef3 b ffff8000113a9844 <__dev_queue_xmit+0x450> smp_store_release(&lock->locked, 0); ffff8000113a9c7c: 52800000 mov w0, #0x0 // #0 ffff8000113a9c80: 91040281 add x1, x20, #0x100 ffff8000113a9c84: 089ffc20 stlrb w0, [x1] contended = false; ffff8000113a9c88: 52800015 mov w21, #0x0 // #0 ffff8000113a9c8c: 17ffff4d b ffff8000113a99c0 <__dev_queue_xmit+0x5cc> /* Instead of calling kfree_skb() while root qdisc lock is held, * queue the skb for future freeing at end of __dev_xmit_skb() */ static inline void __qdisc_drop(struct sk_buff *skb, struct sk_buff **to_free) { skb->next = *to_free; ffff8000113a9c90: f94043a0 ldr x0, [x29,#128] rc = NET_XMIT_DROP; ffff8000113a9c94: 52800036 mov w22, #0x1 // #1 ffff8000113a9c98: f9000260 str x0, [x19] *to_free = skb; ffff8000113a9c9c: f90043b3 str x19, [x29,#128] ffff8000113a9ca0: 17fffe8d b ffff8000113a96d4 <__dev_queue_xmit+0x2e0> skb_do_redirect(skb); ffff8000113a9ca4: aa1303e0 mov x0, x19 ffff8000113a9ca8: 94000000 bl 0 ffff8000113a9ca8: R_AARCH64_CALL26 skb_do_redirect *ret = NET_XMIT_SUCCESS; ffff8000113a9cac: b9007fbf str wzr, [x29,#124] ffff8000113a9cb0: 17fffe91 b ffff8000113a96f4 <__dev_queue_xmit+0x300> net_crit_ratelimited("Virtual device %s asks to queue packet!\n", ffff8000113a9cb4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113a9cb4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x690 ffff8000113a9cb8: aa1603e1 mov x1, x22 ffff8000113a9cbc: 91000000 add x0, x0, #0x0 ffff8000113a9cbc: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x690 ffff8000113a9cc0: 94000000 bl 0 ffff8000113a9cc0: R_AARCH64_CALL26 printk ffff8000113a9cc4: 17fffee8 b ffff8000113a9864 <__dev_queue_xmit+0x470> ffff8000113a9cc8: 52800000 mov w0, #0x0 // #0 ffff8000113a9ccc: 91040294 add x20, x20, #0x100 ffff8000113a9cd0: 089ffe80 stlrb w0, [x20] ffff8000113a9cd4: 17fffe87 b ffff8000113a96f0 <__dev_queue_xmit+0x2fc> kfree_skb_list(to_free); ffff8000113a9cd8: 94000000 bl 0 ffff8000113a9cd8: R_AARCH64_CALL26 kfree_skb_list ffff8000113a9cdc: 17fffe83 b ffff8000113a96e8 <__dev_queue_xmit+0x2f4> ffff8000113a9ce0: 52800000 mov w0, #0x0 // #0 ffff8000113a9ce4: 91040288 add x8, x20, #0x100 ffff8000113a9ce8: 089ffd00 stlrb w0, [x8] contended = false; ffff8000113a9cec: 52800015 mov w21, #0x0 // #0 ffff8000113a9cf0: 17fffe71 b ffff8000113a96b4 <__dev_queue_xmit+0x2c0> return skb->len - skb->data_len; ffff8000113a9cf4: 4b040000 sub w0, w0, w4 if (hlen - offset >= len) ffff8000113a9cf8: 4b010000 sub w0, w0, w1 ffff8000113a9cfc: 71001c1f cmp w0, #0x7 ffff8000113a9d00: 5400016c b.gt ffff8000113a9d2c <__dev_queue_xmit+0x938> if (!skb || ffff8000113a9d04: b4000113 cbz x19, ffff8000113a9d24 <__dev_queue_xmit+0x930> skb_copy_bits(skb, offset, buffer, len) < 0) ffff8000113a9d08: 52800103 mov w3, #0x8 // #8 ffff8000113a9d0c: aa1303e0 mov x0, x19 ffff8000113a9d10: 910203a2 add x2, x29, #0x80 ffff8000113a9d14: 94000000 bl 0 ffff8000113a9d14: R_AARCH64_CALL26 skb_copy_bits ffff8000113a9d18: b9401aa3 ldr w3, [x21,#24] if (!skb || ffff8000113a9d1c: 37f80040 tbnz w0, #31, ffff8000113a9d24 <__dev_queue_xmit+0x930> hdr_len += sizeof(struct udphdr); ffff8000113a9d20: 11002338 add w24, w25, #0x8 ffff8000113a9d24: b9402a60 ldr w0, [x19,#40] ffff8000113a9d28: 17fffe0f b ffff8000113a9564 <__dev_queue_xmit+0x170> return data + offset; ffff8000113a9d2c: 8b21c041 add x1, x2, w1, sxtw if (skb_header_pointer(skb, skb_transport_offset(skb), ffff8000113a9d30: b5ffff81 cbnz x1, ffff8000113a9d20 <__dev_queue_xmit+0x92c> ffff8000113a9d34: 17fffffc b ffff8000113a9d24 <__dev_queue_xmit+0x930> ffff8000113a9d38: 52800023 mov w3, #0x1 // #1 ffff8000113a9d3c: 91040280 add x0, x20, #0x100 ffff8000113a9d40: d2800002 mov x2, #0x0 // #0 ffff8000113a9d44: f9800011 prfm pstl1strm, [x0] ffff8000113a9d48: 885ffc01 ldaxr w1, [x0] ffff8000113a9d4c: 4a020024 eor w4, w1, w2 ffff8000113a9d50: 35000064 cbnz w4, ffff8000113a9d5c <__dev_queue_xmit+0x968> ffff8000113a9d54: 88047c03 stxr w4, w3, [x0] ffff8000113a9d58: 35ffff84 cbnz w4, ffff8000113a9d48 <__dev_queue_xmit+0x954> ffff8000113a9d5c: 34ffc6c1 cbz w1, ffff8000113a9634 <__dev_queue_xmit+0x240> queued_spin_lock_slowpath(lock, val); ffff8000113a9d60: 94000000 bl 0 ffff8000113a9d60: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113a9d64: 17fffe34 b ffff8000113a9634 <__dev_queue_xmit+0x240> ffff8000113a9d68: aa0403e0 mov x0, x4 ffff8000113a9d6c: f90037a4 str x4, [x29,#104] ffff8000113a9d70: 94000000 bl 0 ffff8000113a9d70: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113a9d74: f94037a4 ldr x4, [x29,#104] ffff8000113a9d78: 17fffe39 b ffff8000113a965c <__dev_queue_xmit+0x268> ffff8000113a9d7c : { ffff8000113a9d7c: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113a9d80: 910003fd mov x29, sp ffff8000113a9d84: f9000bf3 str x19, [sp,#16] ffff8000113a9d88: aa0003f3 mov x19, x0 ffff8000113a9d8c: aa1e03e0 mov x0, x30 ffff8000113a9d90: 94000000 bl 0 <_mcount> ffff8000113a9d90: R_AARCH64_CALL26 _mcount return __dev_queue_xmit(skb, NULL); ffff8000113a9d94: aa1303e0 mov x0, x19 ffff8000113a9d98: d2800001 mov x1, #0x0 // #0 ffff8000113a9d9c: 97fffd96 bl ffff8000113a93f4 <__dev_queue_xmit> } ffff8000113a9da0: f9400bf3 ldr x19, [sp,#16] ffff8000113a9da4: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113a9da8: d65f03c0 ret ffff8000113a9dac : { ffff8000113a9dac: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113a9db0: 910003fd mov x29, sp ffff8000113a9db4: f9000bf3 str x19, [sp,#16] ffff8000113a9db8: aa0003f3 mov x19, x0 ffff8000113a9dbc: aa1e03e0 mov x0, x30 ffff8000113a9dc0: f90017a1 str x1, [x29,#40] ffff8000113a9dc4: 94000000 bl 0 <_mcount> ffff8000113a9dc4: R_AARCH64_CALL26 _mcount return __dev_queue_xmit(skb, sb_dev); ffff8000113a9dc8: f94017a1 ldr x1, [x29,#40] ffff8000113a9dcc: aa1303e0 mov x0, x19 ffff8000113a9dd0: 97fffd89 bl ffff8000113a93f4 <__dev_queue_xmit> } ffff8000113a9dd4: f9400bf3 ldr x19, [sp,#16] ffff8000113a9dd8: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113a9ddc: d65f03c0 ret ffff8000113a9de0 : { ffff8000113a9de0: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113a9de4: 910003fd mov x29, sp ffff8000113a9de8: a90153f3 stp x19, x20, [sp,#16] ffff8000113a9dec: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a9df0: a90363f7 stp x23, x24, [sp,#48] ffff8000113a9df4: aa0003f5 mov x21, x0 ffff8000113a9df8: aa1e03e0 mov x0, x30 ffff8000113a9dfc: aa0103f6 mov x22, x1 ffff8000113a9e00: 94000000 bl 0 <_mcount> ffff8000113a9e00: R_AARCH64_CALL26 _mcount struct net_device *dev = skb->dev; ffff8000113a9e04: f9400ab3 ldr x19, [x21,#16] txq = netdev_core_pick_tx(dev, skb, NULL); ffff8000113a9e08: aa1503e1 mov x1, x21 ffff8000113a9e0c: aa1303e0 mov x0, x19 ffff8000113a9e10: d2800002 mov x2, #0x0 // #0 ffff8000113a9e14: 94000000 bl ffff8000113a92e8 ffff8000113a9e14: R_AARCH64_CALL26 netdev_core_pick_tx HARD_TX_LOCK(dev, txq, cpu); ffff8000113a9e18: f9406664 ldr x4, [x19,#200] cpu = smp_processor_id(); ffff8000113a9e1c: 90000017 adrp x23, 0 ffff8000113a9e1c: R_AARCH64_ADR_PREL_PG_HI21 cpu_number HARD_TX_LOCK(dev, txq, cpu); ffff8000113a9e20: 92740084 and x4, x4, #0x1000 txq = netdev_core_pick_tx(dev, skb, NULL); ffff8000113a9e24: aa0003f4 mov x20, x0 cpu = smp_processor_id(); ffff8000113a9e28: 910002e3 add x3, x23, #0x0 ffff8000113a9e28: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a9e2c: d538d080 mrs x0, tpidr_el1 ffff8000113a9e30: b8636818 ldr w24, [x0,x3] HARD_TX_LOCK(dev, txq, cpu); ffff8000113a9e34: b4000644 cbz x4, ffff8000113a9efc return dev_queue->state & QUEUE_STATE_ANY_XOFF; ffff8000113a9e38: f9404a80 ldr x0, [x20,#144] ffff8000113a9e3c: 92400400 and x0, x0, #0x3 if (!netif_xmit_stopped(txq)) { ffff8000113a9e40: b4000380 cbz x0, ffff8000113a9eb0 bool free_skb = true; ffff8000113a9e44: 52800021 mov w1, #0x1 // #1 HARD_TX_UNLOCK(dev, txq); ffff8000113a9e48: f9406660 ldr x0, [x19,#200] ffff8000113a9e4c: 92740000 and x0, x0, #0x1000 ffff8000113a9e50: b40000e0 cbz x0, ffff8000113a9e6c if (free_skb) { ffff8000113a9e54: 35000161 cbnz w1, ffff8000113a9e80 } ffff8000113a9e58: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a9e5c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a9e60: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a9e64: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a9e68: d65f03c0 ret txq->xmit_lock_owner = -1; ffff8000113a9e6c: 12800002 mov w2, #0xffffffff // #-1 ffff8000113a9e70: b9008682 str w2, [x20,#132] smp_store_release(&lock->locked, 0); ffff8000113a9e74: 91020294 add x20, x20, #0x80 ffff8000113a9e78: 089ffe80 stlrb w0, [x20] if (free_skb) { ffff8000113a9e7c: 34fffee1 cbz w1, ffff8000113a9e58 ffff8000113a9e80: 90000000 adrp x0, 0 <__tracepoint_xdp_exception> ffff8000113a9e80: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_xdp_exception ffff8000113a9e84: 91000000 add x0, x0, #0x0 ffff8000113a9e84: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_xdp_exception ffff8000113a9e88: b9400801 ldr w1, [x0,#8] ffff8000113a9e8c: 6b1f003f cmp w1, wzr ffff8000113a9e90: 540005ac b.gt ffff8000113a9f44 kfree_skb(skb); ffff8000113a9e94: aa1503e0 mov x0, x21 ffff8000113a9e98: 94000000 bl 0 ffff8000113a9e98: R_AARCH64_CALL26 kfree_skb } ffff8000113a9e9c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a9ea0: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a9ea4: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a9ea8: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113a9eac: d65f03c0 ret __this_cpu_write(softnet_data.xmit.more, more); ffff8000113a9eb0: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113a9eb0: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned const struct net_device_ops *ops = dev->netdev_ops; ffff8000113a9eb4: f940fa62 ldr x2, [x19,#496] __this_cpu_write(softnet_data.xmit.more, more); ffff8000113a9eb8: 91000021 add x1, x1, #0x0 ffff8000113a9eb8: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113a9ebc: 9101e821 add x1, x1, #0x7a ffff8000113a9ec0: d538d083 mrs x3, tpidr_el1 ffff8000113a9ec4: 38216860 strb w0, [x3,x1] return ops->ndo_start_xmit(skb, dev); ffff8000113a9ec8: f9401042 ldr x2, [x2,#32] ffff8000113a9ecc: aa1503e0 mov x0, x21 ffff8000113a9ed0: aa1303e1 mov x1, x19 ffff8000113a9ed4: d63f0040 blr x2 if (rc == NETDEV_TX_OK) ffff8000113a9ed8: 35000280 cbnz w0, ffff8000113a9f28 if (txq->xmit_lock_owner != -1) ffff8000113a9edc: b9408680 ldr w0, [x20,#132] ffff8000113a9ee0: 3100041f cmn w0, #0x1 ffff8000113a9ee4: 54000080 b.eq ffff8000113a9ef4 txq->trans_start = jiffies; ffff8000113a9ee8: 90000000 adrp x0, 0 ffff8000113a9ee8: R_AARCH64_ADR_PREL_PG_HI21 jiffies ffff8000113a9eec: f9400000 ldr x0, [x0] ffff8000113a9eec: R_AARCH64_LDST64_ABS_LO12_NC jiffies ffff8000113a9ef0: f9004680 str x0, [x20,#136] free_skb = false; ffff8000113a9ef4: 52800001 mov w1, #0x0 // #0 ffff8000113a9ef8: 17ffffd4 b ffff8000113a9e48 ffff8000113a9efc: 52800022 mov w2, #0x1 // #1 ffff8000113a9f00: 91020280 add x0, x20, #0x80 ffff8000113a9f04: f9800011 prfm pstl1strm, [x0] ffff8000113a9f08: 885ffc01 ldaxr w1, [x0] ffff8000113a9f0c: 4a040023 eor w3, w1, w4 ffff8000113a9f10: 35000063 cbnz w3, ffff8000113a9f1c ffff8000113a9f14: 88037c02 stxr w3, w2, [x0] ffff8000113a9f18: 35ffff83 cbnz w3, ffff8000113a9f08 ffff8000113a9f1c: 350000e1 cbnz w1, ffff8000113a9f38 txq->xmit_lock_owner = cpu; ffff8000113a9f20: b9008698 str w24, [x20,#132] ffff8000113a9f24: 17ffffc5 b ffff8000113a9e38 if (likely(rc < NET_XMIT_MASK)) ffff8000113a9f28: 7100381f cmp w0, #0xe ffff8000113a9f2c: 54fff8cc b.gt ffff8000113a9e44 ffff8000113a9f30: 52800001 mov w1, #0x0 // #0 ffff8000113a9f34: 17ffffc5 b ffff8000113a9e48 queued_spin_lock_slowpath(lock, val); ffff8000113a9f38: 94000000 bl 0 ffff8000113a9f38: R_AARCH64_CALL26 queued_spin_lock_slowpath txq->xmit_lock_owner = cpu; ffff8000113a9f3c: b9008698 str w24, [x20,#132] ffff8000113a9f40: 17ffffbe b ffff8000113a9e38 { XDP_##x, #x }, #define __XDP_ACT_SYM_TAB \ __XDP_ACT_MAP(__XDP_ACT_SYM_FN) { -1, NULL } __XDP_ACT_MAP(__XDP_ACT_TP_FN) TRACE_EVENT(xdp_exception, ffff8000113a9f44: 910002f7 add x23, x23, #0x0 ffff8000113a9f44: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113a9f48: d538d081 mrs x1, tpidr_el1 ffff8000113a9f4c: b8776821 ldr w1, [x1,x23] ffff8000113a9f50: 52800803 mov w3, #0x40 // #64 ffff8000113a9f54: 1ac30c23 sdiv w3, w1, w3 ffff8000113a9f58: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113a9f58: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113a9f5c: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113a9f60: 91000042 add x2, x2, #0x0 ffff8000113a9f60: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113a9f64: f8626862 ldr x2, [x3,x2] ffff8000113a9f68: 9ac12441 lsr x1, x2, x1 ffff8000113a9f6c: 3607f941 tbz w1, #0, ffff8000113a9e94 ffff8000113a9f70: f9401014 ldr x20, [x0,#32] ffff8000113a9f74: b4000134 cbz x20, ffff8000113a9f98 ffff8000113a9f78: f9400284 ldr x4, [x20] ffff8000113a9f7c: f9400680 ldr x0, [x20,#8] ffff8000113a9f80: aa1303e1 mov x1, x19 ffff8000113a9f84: aa1603e2 mov x2, x22 ffff8000113a9f88: 52800063 mov w3, #0x3 // #3 ffff8000113a9f8c: d63f0080 blr x4 ffff8000113a9f90: f8418e84 ldr x4, [x20,#24]! ffff8000113a9f94: b5ffff44 cbnz x4, ffff8000113a9f7c ffff8000113a9f98: 17ffffbf b ffff8000113a9e94 ffff8000113a9f9c : int do_xdp_generic(struct bpf_prog *xdp_prog, struct sk_buff *skb) ffff8000113a9f9c: a9b47bfd stp x29, x30, [sp,#-192]! ffff8000113a9fa0: 910003fd mov x29, sp ffff8000113a9fa4: a90153f3 stp x19, x20, [sp,#16] ffff8000113a9fa8: a9025bf5 stp x21, x22, [sp,#32] ffff8000113a9fac: a90363f7 stp x23, x24, [sp,#48] ffff8000113a9fb0: a9046bf9 stp x25, x26, [sp,#64] ffff8000113a9fb4: a90573fb stp x27, x28, [sp,#80] ffff8000113a9fb8: aa0003f5 mov x21, x0 ffff8000113a9fbc: aa1e03e0 mov x0, x30 ffff8000113a9fc0: aa0103f3 mov x19, x1 ffff8000113a9fc4: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113a9fc4: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113a9fc8: 94000000 bl 0 <_mcount> ffff8000113a9fc8: R_AARCH64_CALL26 _mcount ffff8000113a9fcc: f9400285 ldr x5, [x20] ffff8000113a9fcc: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard } static inline bool skb_is_redirected(const struct sk_buff *skb) { #ifdef CONFIG_NET_REDIRECT return skb->redirected; ffff8000113a9fd0: 39420e64 ldrb w4, [x19,#131] ffff8000113a9fd4: f9005fa5 str x5, [x29,#184] if (skb_is_redirected(skb)) ffff8000113a9fd8: 363801a4 tbz w4, #7, ffff8000113aa00c return XDP_PASS; ffff8000113a9fdc: 52800040 mov w0, #0x2 // #2 } ffff8000113a9fe0: f9405fa2 ldr x2, [x29,#184] ffff8000113a9fe4: f9400281 ldr x1, [x20] ffff8000113a9fe4: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113a9fe8: eb01005f cmp x2, x1 ffff8000113a9fec: 54001b41 b.ne ffff8000113aa354 ffff8000113a9ff0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113a9ff4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113a9ff8: a94363f7 ldp x23, x24, [sp,#48] ffff8000113a9ffc: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113aa000: a94573fb ldp x27, x28, [sp,#80] ffff8000113aa004: a8cc7bfd ldp x29, x30, [sp],#192 ffff8000113aa008: d65f03c0 ret return skb->cloned && ffff8000113aa00c: 3941fa60 ldrb w0, [x19,#126] ffff8000113aa010: 360003e0 tbz w0, #0, ffff8000113aa08c static inline int skb_cloned(const struct sk_buff *skb) ffff8000113aa014: b940be64 ldr w4, [x19,#188] ffff8000113aa018: f9406263 ldr x3, [x19,#192] return skb->head + skb->end; ffff8000113aa01c: 8b244060 add x0, x3, w4, uxtw ffff8000113aa020: b9402000 ldr w0, [x0,#32] (atomic_read(&skb_shinfo(skb)->dataref) & SKB_DATAREF_MASK) != 1; ffff8000113aa024: 12003c00 and w0, w0, #0xffff return skb->cloned && ffff8000113aa028: 7100041f cmp w0, #0x1 ffff8000113aa02c: 54000320 b.eq ffff8000113aa090 ffff8000113aa030: f9406661 ldr x1, [x19,#200] ffff8000113aa034: b9407660 ldr w0, [x19,#116] ffff8000113aa038: 4b030021 sub w1, w1, w3 int troom = skb->tail + skb->data_len - skb->end; ffff8000113aa03c: b940ba62 ldr w2, [x19,#184] int hroom = XDP_PACKET_HEADROOM - skb_headroom(skb); ffff8000113aa040: 52802003 mov w3, #0x100 // #256 ffff8000113aa044: 4b010061 sub w1, w3, w1 int troom = skb->tail + skb->data_len - skb->end; ffff8000113aa048: 0b020000 add w0, w0, w2 if (pskb_expand_head(skb, ffff8000113aa04c: 6b1f003f cmp w1, wzr int troom = skb->tail + skb->data_len - skb->end; ffff8000113aa050: 4b040000 sub w0, w0, w4 if (pskb_expand_head(skb, ffff8000113aa054: 540010cd b.le ffff8000113aa26c hroom > 0 ? ALIGN(hroom, NET_SKB_PAD) : 0, ffff8000113aa058: 1100fc21 add w1, w1, #0x3f if (pskb_expand_head(skb, ffff8000113aa05c: 121a6421 and w1, w1, #0xffffffc0 ffff8000113aa060: 11020002 add w2, w0, #0x80 ffff8000113aa064: 6b1f001f cmp w0, wzr ffff8000113aa068: 1a9fc042 csel w2, w2, wzr, gt ffff8000113aa06c: aa1303e0 mov x0, x19 ffff8000113aa070: 52814403 mov w3, #0xa20 // #2592 ffff8000113aa074: 94000000 bl 0 ffff8000113aa074: R_AARCH64_CALL26 pskb_expand_head ffff8000113aa078: 340001e0 cbz w0, ffff8000113aa0b4 kfree_skb(skb); ffff8000113aa07c: aa1303e0 mov x0, x19 ffff8000113aa080: 94000000 bl 0 ffff8000113aa080: R_AARCH64_CALL26 kfree_skb return XDP_DROP; ffff8000113aa084: 52800020 mov w0, #0x1 // #1 ffff8000113aa088: 17ffffd6 b ffff8000113a9fe0 ffff8000113aa08c: f9406263 ldr x3, [x19,#192] static u32 netif_receive_generic_xdp(struct sk_buff *skb, ffff8000113aa090: b9407660 ldr w0, [x19,#116] if (skb_cloned(skb) || skb_is_nonlinear(skb) || ffff8000113aa094: 35000e40 cbnz w0, ffff8000113aa25c static u32 netif_receive_generic_xdp(struct sk_buff *skb, ffff8000113aa098: f9406662 ldr x2, [x19,#200] return skb->data - skb->head; ffff8000113aa09c: cb030044 sub x4, x2, x3 if (skb_cloned(skb) || skb_is_nonlinear(skb) || ffff8000113aa0a0: 7103fc9f cmp w4, #0xff ffff8000113aa0a4: 2a0403e1 mov w1, w4 ffff8000113aa0a8: 54000108 b.hi ffff8000113aa0c8 ffff8000113aa0ac: b940be64 ldr w4, [x19,#188] ffff8000113aa0b0: 17ffffe3 b ffff8000113aa03c static inline int skb_linearize(struct sk_buff *skb) ffff8000113aa0b4: b9407661 ldr w1, [x19,#116] return skb_is_nonlinear(skb) ? __skb_linearize(skb) : 0; ffff8000113aa0b8: 35001301 cbnz w1, ffff8000113aa318 ffff8000113aa0bc: f9406662 ldr x2, [x19,#200] ffff8000113aa0c0: f9406263 ldr x3, [x19,#192] ffff8000113aa0c4: cb030044 sub x4, x2, x3 return skb->head + skb->mac_header; ffff8000113aa0c8: 79416e78 ldrh w24, [x19,#182] return skb->len - skb->data_len; ffff8000113aa0cc: b940727c ldr w28, [x19,#112] return skb->head + skb->mac_header; ffff8000113aa0d0: 8b180063 add x3, x3, x24 mac_len = skb->data - skb_mac_header(skb); ffff8000113aa0d4: cb030058 sub x24, x2, x3 ffff8000113aa0d8: 92407f19 and x25, x24, #0xffffffff xdp->data = skb->data - mac_len; ffff8000113aa0dc: cb1903f9 neg x25, x25 return skb->len - skb->data_len; ffff8000113aa0e0: 4b000380 sub w0, w28, w0 ffff8000113aa0e4: 8b190057 add x23, x2, x25 hlen = skb_headlen(skb) + mac_len; ffff8000113aa0e8: 0b18001c add w28, w0, w24 xdp->data_end = xdp->data + hlen; ffff8000113aa0ec: 8b3cc2fc add x28, x23, w28, sxtw xdp->data_hard_start = skb->data - skb_headroom(skb); ffff8000113aa0f0: cb244044 sub x4, x2, w4, uxtw struct net_device *dev = skb->dev; ffff8000113aa0f4: f9400a61 ldr x1, [x19,#16] static struct netdev_rx_queue *netif_get_rxqueue(struct sk_buff *skb) ffff8000113aa0f8: 7940fa60 ldrh w0, [x19,#124] xdp->data_meta = xdp->data; ffff8000113aa0fc: f9004fb7 str x23, [x29,#152] xdp->data_end = xdp->data + hlen; ffff8000113aa100: f9004bbc str x28, [x29,#144] xdp->data_hard_start = skb->data - skb_headroom(skb); ffff8000113aa104: f90053a4 str x4, [x29,#160] xdp->data = skb->data - mac_len; ffff8000113aa108: f90047b7 str x23, [x29,#136] { #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS) && BITS_PER_LONG == 64 #ifdef __BIG_ENDIAN return 0x01 & ((*(const u64 *)addr) >> 56); #else return 0x01 & (*(const u64 *)addr); ffff8000113aa10c: f879685b ldr x27, [x2,x25] orig_eth_type = eth->h_proto; ffff8000113aa110: 79401afa ldrh w26, [x23,#12] rxqueue = dev->_rx; ffff8000113aa114: f9419036 ldr x22, [x1,#800] if (skb_rx_queue_recorded(skb)) { ffff8000113aa118: 35000ba0 cbnz w0, ffff8000113aa28c ffff8000113aa11c: 90000000 adrp x0, 0 ffff8000113aa11c: R_AARCH64_ADR_PREL_PG_HI21 bpf_stats_enabled_key ffff8000113aa120: b9400000 ldr w0, [x0] ffff8000113aa120: R_AARCH64_LDST32_ABS_LO12_NC bpf_stats_enabled_key xdp->rxq = &rxqueue->xdp_rxq; ffff8000113aa124: 910202d6 add x22, x22, #0x80 ffff8000113aa128: f9005bb6 str x22, [x29,#176] * can be released while still running, or map elements could be * freed early while still having concurrent users. XDP fastpath * already takes rcu_read_lock() when fetching the program, so * it's not necessary here anymore. */ return __BPF_PROG_RUN(prog, xdp, BPF_DISPATCHER_FUNC(xdp)); ffff8000113aa12c: 6b1f001f cmp w0, wzr ffff8000113aa130: 5400114c b.gt ffff8000113aa358 ffff8000113aa134: f9401aa2 ldr x2, [x21,#48] ffff8000113aa138: 910223a0 add x0, x29, #0x88 ffff8000113aa13c: 9100e2a1 add x1, x21, #0x38 ffff8000113aa140: 94000000 bl 0 ffff8000113aa140: R_AARCH64_CALL26 bpf_dispatcher_xdp_func ffff8000113aa144: 2a0003f6 mov w22, w0 off = xdp->data - orig_data; ffff8000113aa148: f94047a0 ldr x0, [x29,#136] ffff8000113aa14c: cb170017 sub x23, x0, x23 if (off) { ffff8000113aa150: 6b1f02ff cmp w23, wzr ffff8000113aa154: 540001e0 b.eq ffff8000113aa190 if (off > 0) ffff8000113aa158: 54000eac b.gt ffff8000113aa32c skb->data -= len; ffff8000113aa15c: f9406661 ldr x1, [x19,#200] skb->len += len; ffff8000113aa160: b9407263 ldr w3, [x19,#112] __skb_push(skb, -off); ffff8000113aa164: 4b1703e2 neg w2, w23 skb->data -= len; ffff8000113aa168: cb22c021 sub x1, x1, w2, sxtw skb->len += len; ffff8000113aa16c: 0b020062 add w2, w3, w2 skb->data -= len; ffff8000113aa170: f9006661 str x1, [x19,#200] skb->len += len; ffff8000113aa174: b9007262 str w2, [x19,#112] skb->mac_header += off; ffff8000113aa178: 79416e63 ldrh w3, [x19,#182] skb->network_header = skb->data - skb->head; ffff8000113aa17c: f9406262 ldr x2, [x19,#192] ffff8000113aa180: 0b0302f7 add w23, w23, w3 ffff8000113aa184: cb020021 sub x1, x1, x2 ffff8000113aa188: 79016e77 strh w23, [x19,#182] ffff8000113aa18c: 79016a61 strh w1, [x19,#180] off = orig_data_end - xdp->data_end; ffff8000113aa190: f9404ba1 ldr x1, [x29,#144] ffff8000113aa194: cb01039c sub x28, x28, x1 if (off != 0) { ffff8000113aa198: 3400015c cbz w28, ffff8000113aa1c0 skb->tail = skb->data - skb->head; ffff8000113aa19c: f9406664 ldr x4, [x19,#200] ffff8000113aa1a0: f9406263 ldr x3, [x19,#192] skb->len -= off; ffff8000113aa1a4: b9407262 ldr w2, [x19,#112] skb_set_tail_pointer(skb, xdp->data_end - xdp->data); ffff8000113aa1a8: cb000021 sub x1, x1, x0 ffff8000113aa1ac: cb030083 sub x3, x4, x3 skb->tail += offset; ffff8000113aa1b0: 0b030021 add w1, w1, w3 skb->len -= off; ffff8000113aa1b4: 4b1c005c sub w28, w2, w28 ffff8000113aa1b8: b900ba61 str w1, [x19,#184] ffff8000113aa1bc: b900727c str w28, [x19,#112] if ((orig_eth_type != eth->h_proto) || ffff8000113aa1c0: 79401801 ldrh w1, [x0,#12] ffff8000113aa1c4: 6b1a003f cmp w1, w26 ffff8000113aa1c8: 54000720 b.eq ffff8000113aa2ac skb->data -= len; ffff8000113aa1cc: f9406662 ldr x2, [x19,#200] skb->len += len; ffff8000113aa1d0: b9407260 ldr w0, [x19,#112] skb->data -= len; ffff8000113aa1d4: d1003842 sub x2, x2, #0xe skb->len += len; ffff8000113aa1d8: 11003800 add w0, w0, #0xe skb->protocol = eth_type_trans(skb, skb->dev); ffff8000113aa1dc: f9400a61 ldr x1, [x19,#16] ffff8000113aa1e0: b9007260 str w0, [x19,#112] skb->data -= len; ffff8000113aa1e4: f9006662 str x2, [x19,#200] ffff8000113aa1e8: aa1303e0 mov x0, x19 ffff8000113aa1ec: 94000000 bl 0 ffff8000113aa1ec: R_AARCH64_CALL26 eth_type_trans ffff8000113aa1f0: 79016260 strh w0, [x19,#176] switch (act) { ffff8000113aa1f4: 710012df cmp w22, #0x4 ffff8000113aa1f8: 540003e9 b.ls ffff8000113aa274 bpf_warn_invalid_xdp_action(act); ffff8000113aa1fc: 2a1603e0 mov w0, w22 ffff8000113aa200: 94000000 bl 0 ffff8000113aa200: R_AARCH64_CALL26 bpf_warn_invalid_xdp_action ffff8000113aa204: 90000000 adrp x0, 0 <__tracepoint_xdp_exception> ffff8000113aa204: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_xdp_exception ffff8000113aa208: 91000000 add x0, x0, #0x0 ffff8000113aa208: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_xdp_exception ffff8000113aa20c: b9400801 ldr w1, [x0,#8] trace_xdp_exception(skb->dev, xdp_prog, act); ffff8000113aa210: f9400a78 ldr x24, [x19,#16] ffff8000113aa214: 6b1f003f cmp w1, wzr ffff8000113aa218: 54000f2c b.gt ffff8000113aa3fc kfree_skb(skb); ffff8000113aa21c: aa1303e0 mov x0, x19 ffff8000113aa220: 94000000 bl 0 ffff8000113aa220: R_AARCH64_CALL26 kfree_skb if (act != XDP_PASS) { ffff8000113aa224: 71000adf cmp w22, #0x2 ffff8000113aa228: 54ffeda0 b.eq ffff8000113a9fdc switch (act) { ffff8000113aa22c: 71000edf cmp w22, #0x3 ffff8000113aa230: 540006a0 b.eq ffff8000113aa304 ffff8000113aa234: 710012df cmp w22, #0x4 ffff8000113aa238: 54fff261 b.ne ffff8000113aa084 err = xdp_do_generic_redirect(skb->dev, skb, ffff8000113aa23c: f9400a60 ldr x0, [x19,#16] ffff8000113aa240: aa1303e1 mov x1, x19 ffff8000113aa244: 910223a2 add x2, x29, #0x88 ffff8000113aa248: aa1503e3 mov x3, x21 ffff8000113aa24c: 94000000 bl 0 ffff8000113aa24c: R_AARCH64_CALL26 xdp_do_generic_redirect if (err) ffff8000113aa250: 35fff160 cbnz w0, ffff8000113aa07c return XDP_DROP; ffff8000113aa254: 52800020 mov w0, #0x1 // #1 ffff8000113aa258: 17ffff62 b ffff8000113a9fe0 ffff8000113aa25c: f9406661 ldr x1, [x19,#200] ffff8000113aa260: b940be64 ldr w4, [x19,#188] ffff8000113aa264: 4b030021 sub w1, w1, w3 ffff8000113aa268: 17ffff75 b ffff8000113aa03c if (pskb_expand_head(skb, ffff8000113aa26c: 52800001 mov w1, #0x0 // #0 ffff8000113aa270: 17ffff7c b ffff8000113aa060 switch (act) { ffff8000113aa274: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113aa274: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x14 ffff8000113aa278: 91000000 add x0, x0, #0x0 ffff8000113aa278: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x14 ffff8000113aa27c: 78765802 ldrh w2, [x0,w22,uxtw #1] ffff8000113aa280: 10000061 adr x1, ffff8000113aa28c ffff8000113aa284: 8b22a822 add x2, x1, w2, sxth #2 ffff8000113aa288: d61f0040 br x2 return skb->queue_mapping - 1; ffff8000113aa28c: 51000400 sub w0, w0, #0x1 if (unlikely(index >= dev->real_num_rx_queues)) { ffff8000113aa290: b9432c23 ldr w3, [x1,#812] ffff8000113aa294: 53003c02 uxth w2, w0 ffff8000113aa298: 6b03005f cmp w2, w3 ffff8000113aa29c: 54000962 b.cs ffff8000113aa3c8 rxqueue += index; ffff8000113aa2a0: d3783c42 ubfiz x2, x2, #8, #16 ffff8000113aa2a4: 8b0202d6 add x22, x22, x2 ffff8000113aa2a8: 17ffff9d b ffff8000113aa11c ffff8000113aa2ac: f9400000 ldr x0, [x0] if ((orig_eth_type != eth->h_proto) || ffff8000113aa2b0: 1200037b and w27, w27, #0x1 ffff8000113aa2b4: 12000000 and w0, w0, #0x1 ffff8000113aa2b8: 6b00037f cmp w27, w0 ffff8000113aa2bc: 54fff881 b.ne ffff8000113aa1cc ffff8000113aa2c0: 17ffffcd b ffff8000113aa1f4 metalen = xdp->data - xdp->data_meta; ffff8000113aa2c4: f9404fa0 ldr x0, [x29,#152] ffff8000113aa2c8: f94047a1 ldr x1, [x29,#136] ffff8000113aa2cc: cb000020 sub x0, x1, x0 if (metalen) ffff8000113aa2d0: 34ffe860 cbz w0, ffff8000113a9fdc return skb->head + skb->end; ffff8000113aa2d4: b940be61 ldr w1, [x19,#188] skb_shinfo(skb)->meta_len = meta_len; ffff8000113aa2d8: f9406262 ldr x2, [x19,#192] ffff8000113aa2dc: 8b010041 add x1, x2, x1 skb_metadata_set(skb, metalen); ffff8000113aa2e0: 39000420 strb w0, [x1,#1] ffff8000113aa2e4: 17ffff3e b ffff8000113a9fdc skb->data -= len; ffff8000113aa2e8: f9406661 ldr x1, [x19,#200] skb->len += len; ffff8000113aa2ec: b9407260 ldr w0, [x19,#112] skb->data -= len; ffff8000113aa2f0: 8b190039 add x25, x1, x25 skb->len += len; ffff8000113aa2f4: 0b180018 add w24, w0, w24 skb->data -= len; ffff8000113aa2f8: f9006679 str x25, [x19,#200] skb->len += len; ffff8000113aa2fc: b9007278 str w24, [x19,#112] ffff8000113aa300: 17ffffcb b ffff8000113aa22c generic_xdp_tx(skb, xdp_prog); ffff8000113aa304: aa1303e0 mov x0, x19 ffff8000113aa308: aa1503e1 mov x1, x21 ffff8000113aa30c: 94000000 bl ffff8000113a9de0 ffff8000113aa30c: R_AARCH64_CALL26 generic_xdp_tx return XDP_DROP; ffff8000113aa310: 52800020 mov w0, #0x1 // #1 ffff8000113aa314: 17ffff33 b ffff8000113a9fe0 return __pskb_pull_tail(skb, skb->data_len) ? 0 : -ENOMEM; ffff8000113aa318: aa1303e0 mov x0, x19 ffff8000113aa31c: 94000000 bl 0 <__pskb_pull_tail> ffff8000113aa31c: R_AARCH64_CALL26 __pskb_pull_tail ffff8000113aa320: b4ffeae0 cbz x0, ffff8000113aa07c ffff8000113aa324: b9407660 ldr w0, [x19,#116] ffff8000113aa328: 17ffff65 b ffff8000113aa0bc skb->len -= len; ffff8000113aa32c: b9407261 ldr w1, [x19,#112] BUG_ON(skb->len < skb->data_len); ffff8000113aa330: b9407662 ldr w2, [x19,#116] skb->len -= len; ffff8000113aa334: 4b170021 sub w1, w1, w23 ffff8000113aa338: b9007261 str w1, [x19,#112] BUG_ON(skb->len < skb->data_len); ffff8000113aa33c: 6b02003f cmp w1, w2 ffff8000113aa340: 540008c3 b.cc ffff8000113aa458 return skb->data += len; ffff8000113aa344: f9406661 ldr x1, [x19,#200] ffff8000113aa348: 8b374021 add x1, x1, w23, uxtw ffff8000113aa34c: f9006661 str x1, [x19,#200] ffff8000113aa350: 17ffff8a b ffff8000113aa178 } ffff8000113aa354: 94000000 bl 0 <__stack_chk_fail> ffff8000113aa354: R_AARCH64_CALL26 __stack_chk_fail ffff8000113aa358: 94000000 bl 0 ffff8000113aa358: R_AARCH64_CALL26 sched_clock ffff8000113aa35c: f9401aa2 ldr x2, [x21,#48] ffff8000113aa360: aa0003e3 mov x3, x0 ffff8000113aa364: 9100e2a1 add x1, x21, #0x38 ffff8000113aa368: 910223a0 add x0, x29, #0x88 ffff8000113aa36c: f90037a3 str x3, [x29,#104] ffff8000113aa370: 94000000 bl 0 ffff8000113aa370: R_AARCH64_CALL26 bpf_dispatcher_xdp_func ffff8000113aa374: 2a0003f6 mov w22, w0 ffff8000113aa378: f94012a0 ldr x0, [x21,#32] ffff8000113aa37c: f940fc01 ldr x1, [x0,#504] ffff8000113aa380: f9003ba1 str x1, [x29,#112] ffff8000113aa384: 97ffcffe bl ffff80001139e37c <__my_cpu_offset> ffff8000113aa388: f9403ba1 ldr x1, [x29,#112] ffff8000113aa38c: f8616804 ldr x4, [x0,x1] ffff8000113aa390: 8b010002 add x2, x0, x1 ffff8000113aa394: 91000484 add x4, x4, #0x1 ffff8000113aa398: f8216804 str x4, [x0,x1] ffff8000113aa39c: f9400441 ldr x1, [x2,#8] ffff8000113aa3a0: f9003fa2 str x2, [x29,#120] ffff8000113aa3a4: f9003ba1 str x1, [x29,#112] ffff8000113aa3a8: 94000000 bl 0 ffff8000113aa3a8: R_AARCH64_CALL26 sched_clock ffff8000113aa3ac: f9403ba1 ldr x1, [x29,#112] ffff8000113aa3b0: f94037a3 ldr x3, [x29,#104] ffff8000113aa3b4: 8b010000 add x0, x0, x1 ffff8000113aa3b8: f9403fa2 ldr x2, [x29,#120] ffff8000113aa3bc: cb030003 sub x3, x0, x3 ffff8000113aa3c0: f9000443 str x3, [x2,#8] ffff8000113aa3c4: 17ffff61 b ffff8000113aa148 WARN_ONCE(dev->real_num_rx_queues > 1, ffff8000113aa3c8: 7100047f cmp w3, #0x1 ffff8000113aa3cc: 54ffea89 b.ls ffff8000113aa11c ffff8000113aa3d0: 90000004 adrp x4, ffff80001139e37c <__my_cpu_offset> ffff8000113aa3d0: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113aa3d4: 91000084 add x4, x4, #0x0 ffff8000113aa3d4: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113aa3d8: 39405480 ldrb w0, [x4,#21] ffff8000113aa3dc: 35ffea00 cbnz w0, ffff8000113aa11c ffff8000113aa3e0: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113aa3e0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xe8 ffff8000113aa3e4: 52800025 mov w5, #0x1 // #1 ffff8000113aa3e8: 91000000 add x0, x0, #0x0 ffff8000113aa3e8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xe8 ffff8000113aa3ec: 39005485 strb w5, [x4,#21] ffff8000113aa3f0: 94000000 bl 0 <__warn_printk> ffff8000113aa3f0: R_AARCH64_CALL26 __warn_printk ffff8000113aa3f4: d4210000 brk #0x800 ffff8000113aa3f8: 17ffff49 b ffff8000113aa11c ffff8000113aa3fc: 90000001 adrp x1, 0 ffff8000113aa3fc: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113aa400: d538d082 mrs x2, tpidr_el1 ffff8000113aa404: 91000021 add x1, x1, #0x0 ffff8000113aa404: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113aa408: b8616841 ldr w1, [x2,x1] ffff8000113aa40c: 52800803 mov w3, #0x40 // #64 ffff8000113aa410: 1ac30c23 sdiv w3, w1, w3 ffff8000113aa414: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113aa414: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113aa418: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113aa41c: 91000042 add x2, x2, #0x0 ffff8000113aa41c: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113aa420: f8626862 ldr x2, [x3,x2] ffff8000113aa424: 9ac12441 lsr x1, x2, x1 ffff8000113aa428: 3607efa1 tbz w1, #0, ffff8000113aa21c ffff8000113aa42c: f9401017 ldr x23, [x0,#32] ffff8000113aa430: b4000137 cbz x23, ffff8000113aa454 ffff8000113aa434: f94002e4 ldr x4, [x23] ffff8000113aa438: f94006e0 ldr x0, [x23,#8] ffff8000113aa43c: aa1803e1 mov x1, x24 ffff8000113aa440: aa1503e2 mov x2, x21 ffff8000113aa444: 2a1603e3 mov w3, w22 ffff8000113aa448: d63f0080 blr x4 ffff8000113aa44c: f8418ee4 ldr x4, [x23,#24]! ffff8000113aa450: b5ffff44 cbnz x4, ffff8000113aa438 ffff8000113aa454: 17ffff72 b ffff8000113aa21c ffff8000113aa458: 94000000 bl ffff80001139e37c <__my_cpu_offset> ffff8000113aa458: R_AARCH64_CALL26 .text.unlikely+0xa0 ffff8000113aa45c : { ffff8000113aa45c: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113aa460: 910003fd mov x29, sp ffff8000113aa464: f9000bf3 str x19, [sp,#16] ffff8000113aa468: aa0003f3 mov x19, x0 ffff8000113aa46c: aa1e03e0 mov x0, x30 ffff8000113aa470: f90017a1 str x1, [x29,#40] ffff8000113aa474: 94000000 bl 0 <_mcount> ffff8000113aa474: R_AARCH64_CALL26 _mcount return XDP_PASS; ffff8000113aa478: 52800040 mov w0, #0x2 // #2 if (xdp_prog) { ffff8000113aa47c: f94017a1 ldr x1, [x29,#40] ffff8000113aa480: b4000073 cbz x19, ffff8000113aa48c ffff8000113aa484: aa1303e0 mov x0, x19 ffff8000113aa488: 97fffec5 bl ffff8000113a9f9c } ffff8000113aa48c: f9400bf3 ldr x19, [sp,#16] ffff8000113aa490: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113aa494: d65f03c0 ret ffff8000113aa498 <__netif_receive_skb_core>: { ffff8000113aa498: a9b47bfd stp x29, x30, [sp,#-192]! ffff8000113aa49c: 910003fd mov x29, sp ffff8000113aa4a0: a90153f3 stp x19, x20, [sp,#16] ffff8000113aa4a4: a9025bf5 stp x21, x22, [sp,#32] ffff8000113aa4a8: a90363f7 stp x23, x24, [sp,#48] ffff8000113aa4ac: a9046bf9 stp x25, x26, [sp,#64] ffff8000113aa4b0: a90573fb stp x27, x28, [sp,#80] ffff8000113aa4b4: f9003fa0 str x0, [x29,#120] ffff8000113aa4b8: aa1e03e0 mov x0, x30 ffff8000113aa4bc: 9000001a adrp x26, 0 <__stack_chk_guard> ffff8000113aa4bc: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113aa4c0: 53001c39 uxtb w25, w1 ffff8000113aa4c4: f90037a2 str x2, [x29,#104] ffff8000113aa4c8: 94000000 bl 0 <_mcount> ffff8000113aa4c8: R_AARCH64_CALL26 _mcount ffff8000113aa4cc: f9400340 ldr x0, [x26] ffff8000113aa4cc: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113aa4d0: 90000017 adrp x23, ffff80001139e37c <__my_cpu_offset> ffff8000113aa4d0: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113aa4d4: f9005fa0 str x0, [x29,#184] ffff8000113aa4d8: 910002e0 add x0, x23, #0x0 ffff8000113aa4d8: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113aa4dc: b9434800 ldr w0, [x0,#840] ffff8000113aa4e0: f9403fb4 ldr x20, [x29,#120] net_timestamp_check(!netdev_tstamp_prequeue, skb); ffff8000113aa4e4: 6b1f001f cmp w0, wzr ffff8000113aa4e8: 5400438c b.gt ffff8000113aad58 <__netif_receive_skb_core+0x8c0> ffff8000113aa4ec: 90000001 adrp x1, 0 <__tracepoint_netif_receive_skb> ffff8000113aa4ec: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_netif_receive_skb ffff8000113aa4f0: 91000021 add x1, x1, #0x0 ffff8000113aa4f0: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_netif_receive_skb ffff8000113aa4f4: b9400820 ldr w0, [x1,#8] ffff8000113aa4f8: 6b1f001f cmp w0, wzr ffff8000113aa4fc: 54003fcc b.gt ffff8000113aacf4 <__netif_receive_skb_core+0x85c> ffff8000113aa500: aa1403e0 mov x0, x20 skb->network_header = skb->data - skb->head; ffff8000113aa504: f9406402 ldr x2, [x0,#200] ffff8000113aa508: f9406001 ldr x1, [x0,#192] if (!skb_transport_header_was_set(skb)) ffff8000113aa50c: 79416403 ldrh w3, [x0,#178] ffff8000113aa510: cb010041 sub x1, x2, x1 ffff8000113aa514: 53003c21 uxth w1, w1 ffff8000113aa518: 529fffe2 mov w2, #0xffff // #65535 ffff8000113aa51c: 79016801 strh w1, [x0,#180] ffff8000113aa520: 6b02007f cmp w3, w2 orig_dev = skb->dev; ffff8000113aa524: f9400813 ldr x19, [x0,#16] if (!skb_transport_header_was_set(skb)) ffff8000113aa528: 54003260 b.eq ffff8000113aab74 <__netif_receive_skb_core+0x6dc> skb->mac_len = skb->network_header - skb->mac_header; ffff8000113aa52c: 79416c02 ldrh w2, [x0,#182] ffff8000113aa530: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113aa530: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113aa534: 4b020021 sub w1, w1, w2 __this_cpu_inc(softnet_data.processed); ffff8000113aa538: 90000015 adrp x21, ffff80001139e37c <__my_cpu_offset> ffff8000113aa538: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned ffff8000113aa53c: 910002d6 add x22, x22, #0x0 ffff8000113aa53c: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113aa540: 910002b5 add x21, x21, #0x0 ffff8000113aa540: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113aa544: 7900f001 strh w1, [x0,#120] int ret = NET_RX_DROP; ffff8000113aa548: 52800034 mov w20, #0x1 // #1 orig_dev = skb->dev; ffff8000113aa54c: aa1303e1 mov x1, x19 bool deliver_exact = false; ffff8000113aa550: b90077bf str wzr, [x29,#116] ffff8000113aa554: 912002d6 add x22, x22, #0x800 __this_cpu_inc(softnet_data.processed); ffff8000113aa558: 9100a2b5 add x21, x21, #0x28 skb->skb_iif = skb->dev->ifindex; ffff8000113aa55c: b9410022 ldr w2, [x1,#256] ffff8000113aa560: 910002e1 add x1, x23, #0x0 ffff8000113aa560: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113aa564: b9009002 str w2, [x0,#144] ffff8000113aa568: d538d080 mrs x0, tpidr_el1 __this_cpu_inc(softnet_data.processed); ffff8000113aa56c: b8756802 ldr w2, [x0,x21] ffff8000113aa570: 11000442 add w2, w2, #0x1 ffff8000113aa574: b8356802 str w2, [x0,x21] ffff8000113aa578: b9435820 ldr w0, [x1,#856] if (static_branch_unlikely(&generic_xdp_needed_key)) { ffff8000113aa57c: 6b1f001f cmp w0, wzr ffff8000113aa580: 540039ec b.gt ffff8000113aacbc <__netif_receive_skb_core+0x824> ffff8000113aa584: f9403fbc ldr x28, [x29,#120] if (skb->protocol == cpu_to_be16(ETH_P_8021Q) || ffff8000113aa588: 79416380 ldrh w0, [x28,#176] ffff8000113aa58c: 52951101 mov w1, #0xa888 // #43144 ffff8000113aa590: 6b01001f cmp w0, w1 ffff8000113aa594: 540028e0 b.eq ffff8000113aaab0 <__netif_receive_skb_core+0x618> ffff8000113aa598: 7102041f cmp w0, #0x81 ffff8000113aa59c: 540028a0 b.eq ffff8000113aaab0 <__netif_receive_skb_core+0x618> if (skb->tc_skip_classify) { ffff8000113aa5a0: 39420f80 ldrb w0, [x28,#131] ffff8000113aa5a4: 36281a00 tbz w0, #5, ffff8000113aa8e4 <__netif_receive_skb_core+0x44c> skb->tc_skip_classify = 0; ffff8000113aa5a8: 121a7800 and w0, w0, #0xffffffdf ffff8000113aa5ac: 39020f80 strb w0, [x28,#131] ffff8000113aa5b0: d2800018 mov x24, #0x0 // #0 if (pfmemalloc && !skb_pfmemalloc_protocol(skb)) ffff8000113aa5b4: 35001ad9 cbnz w25, ffff8000113aa90c <__netif_receive_skb_core+0x474> if (skb_vlan_tag_present(skb)) { ffff8000113aa5b8: 39420b80 ldrb w0, [x28,#130] ffff8000113aa5bc: 360014c0 tbz w0, #0, ffff8000113aa854 <__netif_receive_skb_core+0x3bc> if (pt_prev) { ffff8000113aa5c0: b4000378 cbz x24, ffff8000113aa62c <__netif_receive_skb_core+0x194> bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113aa5c4: b400011c cbz x28, ffff8000113aa5e4 <__netif_receive_skb_core+0x14c> return skb->head + skb->end; ffff8000113aa5c8: f9406381 ldr x1, [x28,#192] ffff8000113aa5cc: b940bf80 ldr w0, [x28,#188] ffff8000113aa5d0: 8b000020 add x0, x1, x0 bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113aa5d4: 39400c01 ldrb w1, [x0,#3] ffff8000113aa5d8: 36180061 tbz w1, #3, ffff8000113aa5e4 <__netif_receive_skb_core+0x14c> if (likely(!skb_zcopy(skb))) ffff8000113aa5dc: f9401400 ldr x0, [x0,#40] ffff8000113aa5e0: b50047c0 cbnz x0, ffff8000113aaed8 <__netif_receive_skb_core+0xa40> refcount_inc(&skb->users); ffff8000113aa5e4: 91035380 add x0, x28, #0xd4 ATOMIC_OPS(add, add, I) ffff8000113aa5e8: f9800011 prfm pstl1strm, [x0] ffff8000113aa5ec: 885f7c01 ldxr w1, [x0] ffff8000113aa5f0: 11000422 add w2, w1, #0x1 ffff8000113aa5f4: 88037c02 stxr w3, w2, [x0] ffff8000113aa5f8: 35ffffa3 cbnz w3, ffff8000113aa5ec <__netif_receive_skb_core+0x154> if (unlikely(!old)) ffff8000113aa5fc: 6b1f003f cmp w1, wzr ffff8000113aa600: 54004b00 b.eq ffff8000113aaf60 <__netif_receive_skb_core+0xac8> else if (unlikely(old < 0 || old + i < 0)) ffff8000113aa604: 540034cb b.lt ffff8000113aac9c <__netif_receive_skb_core+0x804> ffff8000113aa608: 3100043f cmn w1, #0x1 ffff8000113aa60c: 54003484 b.mi ffff8000113aac9c <__netif_receive_skb_core+0x804> return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); ffff8000113aa610: f9400b04 ldr x4, [x24,#16] ffff8000113aa614: f9400b81 ldr x1, [x28,#16] ffff8000113aa618: aa1c03e0 mov x0, x28 ffff8000113aa61c: aa1803e2 mov x2, x24 ffff8000113aa620: aa1303e3 mov x3, x19 ffff8000113aa624: d63f0080 blr x4 ffff8000113aa628: 2a0003f4 mov w20, w0 if (vlan_do_receive(&skb)) ffff8000113aa62c: 9101e3b8 add x24, x29, #0x78 ffff8000113aa630: aa1803e0 mov x0, x24 ffff8000113aa634: 94000000 bl 0 ffff8000113aa634: R_AARCH64_CALL26 vlan_do_receive ffff8000113aa638: 53001c00 uxtb w0, w0 ffff8000113aa63c: 35001060 cbnz w0, ffff8000113aa848 <__netif_receive_skb_core+0x3b0> else if (unlikely(!skb)) ffff8000113aa640: f9403fa5 ldr x5, [x29,#120] ffff8000113aa644: b4000ea5 cbz x5, ffff8000113aa818 <__netif_receive_skb_core+0x380> rx_handler = rcu_dereference(skb->dev->rx_handler); ffff8000113aa648: f94008a0 ldr x0, [x5,#16] ffff8000113aa64c: f941a004 ldr x4, [x0,#832] if (rx_handler) { ffff8000113aa650: b5001404 cbnz x4, ffff8000113aa8d0 <__netif_receive_skb_core+0x438> ffff8000113aa654: 394208a0 ldrb w0, [x5,#130] ffff8000113aa658: aa0503fc mov x28, x5 ffff8000113aa65c: 12000000 and w0, w0, #0x1 if (unlikely(skb_vlan_tag_present(skb))) { ffff8000113aa660: 35002d20 cbnz w0, ffff8000113aac04 <__netif_receive_skb_core+0x76c> ffff8000113aa664: d2800018 mov x24, #0x0 // #0 if (likely(!deliver_exact)) { ffff8000113aa668: b94077a5 ldr w5, [x29,#116] type = skb->protocol; ffff8000113aa66c: 79416399 ldrh w25, [x28,#176] if (likely(!deliver_exact)) { ffff8000113aa670: 35000625 cbnz w5, ffff8000113aa734 <__netif_receive_skb_core+0x29c> deliver_ptype_list_skb(skb, &pt_prev, orig_dev, type, ffff8000113aa674: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113aa674: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113aa678: 5ac00720 rev16 w0, w25 ffff8000113aa67c: 910002d6 add x22, x22, #0x0 ffff8000113aa67c: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113aa680: 9120c2d6 add x22, x22, #0x830 ffff8000113aa684: d37c0c00 ubfiz x0, x0, #4, #4 ffff8000113aa688: f8606ad5 ldr x21, [x22,x0] ffff8000113aa68c: 8b0002d6 add x22, x22, x0 list_for_each_entry_rcu(ptype, ptype_list, list) { ffff8000113aa690: eb1502df cmp x22, x21 ffff8000113aa694: d100c2b5 sub x21, x21, #0x30 ffff8000113aa698: 540004e0 b.eq ffff8000113aa734 <__netif_receive_skb_core+0x29c> refcount_inc(&skb->users); ffff8000113aa69c: 91035397 add x23, x28, #0xd4 ffff8000113aa6a0: 14000005 b ffff8000113aa6b4 <__netif_receive_skb_core+0x21c> ffff8000113aa6a4: f9401ab5 ldr x21, [x21,#48] list_for_each_entry_rcu(ptype, ptype_list, list) { ffff8000113aa6a8: eb1502df cmp x22, x21 ffff8000113aa6ac: d100c2b5 sub x21, x21, #0x30 ffff8000113aa6b0: 54000400 b.eq ffff8000113aa730 <__netif_receive_skb_core+0x298> if (ptype->type != type) ffff8000113aa6b4: 794002a1 ldrh w1, [x21] ffff8000113aa6b8: 6b19003f cmp w1, w25 ffff8000113aa6bc: 54ffff41 b.ne ffff8000113aa6a4 <__netif_receive_skb_core+0x20c> if (pt_prev) ffff8000113aa6c0: b4001798 cbz x24, ffff8000113aa9b0 <__netif_receive_skb_core+0x518> bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113aa6c4: b40000dc cbz x28, ffff8000113aa6dc <__netif_receive_skb_core+0x244> return skb->head + skb->end; ffff8000113aa6c8: f9406381 ldr x1, [x28,#192] ffff8000113aa6cc: b940bf80 ldr w0, [x28,#188] ffff8000113aa6d0: 8b000020 add x0, x1, x0 bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113aa6d4: 39400c01 ldrb w1, [x0,#3] ffff8000113aa6d8: 37181601 tbnz w1, #3, ffff8000113aa998 <__netif_receive_skb_core+0x500> ffff8000113aa6dc: f98002f1 prfm pstl1strm, [x23] ffff8000113aa6e0: 885f7ee0 ldxr w0, [x23] ffff8000113aa6e4: 11000401 add w1, w0, #0x1 ffff8000113aa6e8: 88027ee1 stxr w2, w1, [x23] ffff8000113aa6ec: 35ffffa2 cbnz w2, ffff8000113aa6e0 <__netif_receive_skb_core+0x248> if (unlikely(!old)) ffff8000113aa6f0: 6b1f001f cmp w0, wzr ffff8000113aa6f4: 54002dc0 b.eq ffff8000113aacac <__netif_receive_skb_core+0x814> else if (unlikely(old < 0 || old + i < 0)) ffff8000113aa6f8: 540035cb b.lt ffff8000113aadb0 <__netif_receive_skb_core+0x918> ffff8000113aa6fc: 3100041f cmn w0, #0x1 ffff8000113aa700: 54003584 b.mi ffff8000113aadb0 <__netif_receive_skb_core+0x918> return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); ffff8000113aa704: f9400b04 ldr x4, [x24,#16] ffff8000113aa708: f9400b81 ldr x1, [x28,#16] ffff8000113aa70c: aa1803e2 mov x2, x24 ffff8000113aa710: aa1c03e0 mov x0, x28 ffff8000113aa714: aa1303e3 mov x3, x19 ffff8000113aa718: d63f0080 blr x4 ffff8000113aa71c: aa1503f8 mov x24, x21 ffff8000113aa720: f9401ab5 ldr x21, [x21,#48] list_for_each_entry_rcu(ptype, ptype_list, list) { ffff8000113aa724: eb1502df cmp x22, x21 ffff8000113aa728: d100c2b5 sub x21, x21, #0x30 ffff8000113aa72c: 54fffc41 b.ne ffff8000113aa6b4 <__netif_receive_skb_core+0x21c> ffff8000113aa730: f9403fbc ldr x28, [x29,#120] ffff8000113aa734: f9404e75 ldr x21, [x19,#152] deliver_ptype_list_skb(skb, &pt_prev, orig_dev, type, ffff8000113aa738: 91026276 add x22, x19, #0x98 list_for_each_entry_rcu(ptype, ptype_list, list) { ffff8000113aa73c: eb1502df cmp x22, x21 ffff8000113aa740: d100c2b5 sub x21, x21, #0x30 ffff8000113aa744: 540004e0 b.eq ffff8000113aa7e0 <__netif_receive_skb_core+0x348> refcount_inc(&skb->users); ffff8000113aa748: 91035397 add x23, x28, #0xd4 ffff8000113aa74c: 14000005 b ffff8000113aa760 <__netif_receive_skb_core+0x2c8> ffff8000113aa750: f9401ab5 ldr x21, [x21,#48] list_for_each_entry_rcu(ptype, ptype_list, list) { ffff8000113aa754: eb1502df cmp x22, x21 ffff8000113aa758: d100c2b5 sub x21, x21, #0x30 ffff8000113aa75c: 54000400 b.eq ffff8000113aa7dc <__netif_receive_skb_core+0x344> if (ptype->type != type) ffff8000113aa760: 794002a1 ldrh w1, [x21] ffff8000113aa764: 6b19003f cmp w1, w25 ffff8000113aa768: 54ffff41 b.ne ffff8000113aa750 <__netif_receive_skb_core+0x2b8> if (pt_prev) ffff8000113aa76c: b4001138 cbz x24, ffff8000113aa990 <__netif_receive_skb_core+0x4f8> ffff8000113aa770: b40000dc cbz x28, ffff8000113aa788 <__netif_receive_skb_core+0x2f0> return skb->head + skb->end; ffff8000113aa774: f9406381 ldr x1, [x28,#192] ffff8000113aa778: b940bf80 ldr w0, [x28,#188] ffff8000113aa77c: 8b000020 add x0, x1, x0 bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113aa780: 39400c01 ldrb w1, [x0,#3] ffff8000113aa784: 37180fa1 tbnz w1, #3, ffff8000113aa978 <__netif_receive_skb_core+0x4e0> ffff8000113aa788: f98002f1 prfm pstl1strm, [x23] ffff8000113aa78c: 885f7ee0 ldxr w0, [x23] ffff8000113aa790: 11000401 add w1, w0, #0x1 ffff8000113aa794: 88027ee1 stxr w2, w1, [x23] ffff8000113aa798: 35ffffa2 cbnz w2, ffff8000113aa78c <__netif_receive_skb_core+0x2f4> if (unlikely(!old)) ffff8000113aa79c: 6b1f001f cmp w0, wzr ffff8000113aa7a0: 54002f60 b.eq ffff8000113aad8c <__netif_receive_skb_core+0x8f4> else if (unlikely(old < 0 || old + i < 0)) ffff8000113aa7a4: 54002ecb b.lt ffff8000113aad7c <__netif_receive_skb_core+0x8e4> ffff8000113aa7a8: 3100041f cmn w0, #0x1 ffff8000113aa7ac: 54002e84 b.mi ffff8000113aad7c <__netif_receive_skb_core+0x8e4> return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); ffff8000113aa7b0: f9400b04 ldr x4, [x24,#16] ffff8000113aa7b4: f9400b81 ldr x1, [x28,#16] ffff8000113aa7b8: aa1803e2 mov x2, x24 ffff8000113aa7bc: aa1c03e0 mov x0, x28 ffff8000113aa7c0: aa1303e3 mov x3, x19 ffff8000113aa7c4: d63f0080 blr x4 ffff8000113aa7c8: aa1503f8 mov x24, x21 ffff8000113aa7cc: f9401ab5 ldr x21, [x21,#48] list_for_each_entry_rcu(ptype, ptype_list, list) { ffff8000113aa7d0: eb1502df cmp x22, x21 ffff8000113aa7d4: d100c2b5 sub x21, x21, #0x30 ffff8000113aa7d8: 54fffc41 b.ne ffff8000113aa760 <__netif_receive_skb_core+0x2c8> ffff8000113aa7dc: f9403fbc ldr x28, [x29,#120] if (unlikely(skb->dev != orig_dev)) { ffff8000113aa7e0: f9400b97 ldr x23, [x28,#16] ffff8000113aa7e4: eb17027f cmp x19, x23 ffff8000113aa7e8: 54003c21 b.ne ffff8000113aaf6c <__netif_receive_skb_core+0xad4> if (pt_prev) { ffff8000113aa7ec: b4000a18 cbz x24, ffff8000113aa92c <__netif_receive_skb_core+0x494> ffff8000113aa7f0: b400011c cbz x28, ffff8000113aa810 <__netif_receive_skb_core+0x378> return skb->head + skb->end; ffff8000113aa7f4: f9406381 ldr x1, [x28,#192] ffff8000113aa7f8: b940bf80 ldr w0, [x28,#188] ffff8000113aa7fc: 8b000020 add x0, x1, x0 bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113aa800: 39400c01 ldrb w1, [x0,#3] ffff8000113aa804: 36180061 tbz w1, #3, ffff8000113aa810 <__netif_receive_skb_core+0x378> if (likely(!skb_zcopy(skb))) ffff8000113aa808: f9401400 ldr x0, [x0,#40] ffff8000113aa80c: b50039e0 cbnz x0, ffff8000113aaf48 <__netif_receive_skb_core+0xab0> *ppt_prev = pt_prev; ffff8000113aa810: f94037a5 ldr x5, [x29,#104] ffff8000113aa814: f90000b8 str x24, [x5] return ret; ffff8000113aa818: 2a1403e0 mov w0, w20 } ffff8000113aa81c: f9405fa2 ldr x2, [x29,#184] ffff8000113aa820: f9400341 ldr x1, [x26] ffff8000113aa820: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113aa824: eb01005f cmp x2, x1 ffff8000113aa828: 54002401 b.ne ffff8000113aaca8 <__netif_receive_skb_core+0x810> ffff8000113aa82c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113aa830: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113aa834: a94363f7 ldp x23, x24, [sp,#48] ffff8000113aa838: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113aa83c: a94573fb ldp x27, x28, [sp,#80] ffff8000113aa840: a8cc7bfd ldp x29, x30, [sp],#192 ffff8000113aa844: d65f03c0 ret ffff8000113aa848: f9403fa0 ldr x0, [x29,#120] ffff8000113aa84c: f9400801 ldr x1, [x0,#16] ffff8000113aa850: 17ffff43 b ffff8000113aa55c <__netif_receive_skb_core+0xc4> rx_handler = rcu_dereference(skb->dev->rx_handler); ffff8000113aa854: f9400b80 ldr x0, [x28,#16] ffff8000113aa858: f941a004 ldr x4, [x0,#832] if (rx_handler) { ffff8000113aa85c: b4fff064 cbz x4, ffff8000113aa668 <__netif_receive_skb_core+0x1d0> if (pt_prev) { ffff8000113aa860: b40010d8 cbz x24, ffff8000113aaa78 <__netif_receive_skb_core+0x5e0> bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113aa864: b40000dc cbz x28, ffff8000113aa87c <__netif_receive_skb_core+0x3e4> return skb->head + skb->end; ffff8000113aa868: f9406381 ldr x1, [x28,#192] ffff8000113aa86c: b940bf80 ldr w0, [x28,#188] ffff8000113aa870: 8b000020 add x0, x1, x0 bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113aa874: 39400c01 ldrb w1, [x0,#3] ffff8000113aa878: 37180ee1 tbnz w1, #3, ffff8000113aaa54 <__netif_receive_skb_core+0x5bc> refcount_inc(&skb->users); ffff8000113aa87c: 91035380 add x0, x28, #0xd4 ffff8000113aa880: f9800011 prfm pstl1strm, [x0] ffff8000113aa884: 885f7c01 ldxr w1, [x0] ffff8000113aa888: 11000422 add w2, w1, #0x1 ffff8000113aa88c: 88037c02 stxr w3, w2, [x0] ffff8000113aa890: 35ffffa3 cbnz w3, ffff8000113aa884 <__netif_receive_skb_core+0x3ec> if (unlikely(!old)) ffff8000113aa894: 6b1f003f cmp w1, wzr ffff8000113aa898: 54003e40 b.eq ffff8000113ab060 <__netif_receive_skb_core+0xbc8> else if (unlikely(old < 0 || old + i < 0)) ffff8000113aa89c: 5400280b b.lt ffff8000113aad9c <__netif_receive_skb_core+0x904> ffff8000113aa8a0: 3100043f cmn w1, #0x1 ffff8000113aa8a4: 540027c4 b.mi ffff8000113aad9c <__netif_receive_skb_core+0x904> return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); ffff8000113aa8a8: f9400b05 ldr x5, [x24,#16] ffff8000113aa8ac: f9400b81 ldr x1, [x28,#16] ffff8000113aa8b0: aa1803e2 mov x2, x24 ffff8000113aa8b4: f90033a4 str x4, [x29,#96] ffff8000113aa8b8: aa1c03e0 mov x0, x28 ffff8000113aa8bc: aa1303e3 mov x3, x19 ffff8000113aa8c0: d63f00a0 blr x5 ffff8000113aa8c4: f94033a4 ldr x4, [x29,#96] ffff8000113aa8c8: 2a0003f4 mov w20, w0 ffff8000113aa8cc: 9101e3b8 add x24, x29, #0x78 switch (rx_handler(&skb)) { ffff8000113aa8d0: aa1803e0 mov x0, x24 ffff8000113aa8d4: d63f0080 blr x4 ffff8000113aa8d8: 71000c1f cmp w0, #0x3 ffff8000113aa8dc: 54000429 b.ls ffff8000113aa960 <__netif_receive_skb_core+0x4c8> BUG(); ffff8000113aa8e0: d4210000 brk #0x800 ffff8000113aa8e4: d2800018 mov x24, #0x0 // #0 if (pfmemalloc) ffff8000113aa8e8: 34000699 cbz w25, ffff8000113aa9b8 <__netif_receive_skb_core+0x520> ffff8000113aa8ec: 910002e0 add x0, x23, #0x0 ffff8000113aa8ec: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113aa8f0: b9433800 ldr w0, [x0,#824] if (static_branch_unlikely(&ingress_needed_key)) { ffff8000113aa8f4: 6b1f001f cmp w0, wzr ffff8000113aa8f8: 5400264c b.gt ffff8000113aadc0 <__netif_receive_skb_core+0x928> } static inline void skb_reset_redirect(struct sk_buff *skb) { #ifdef CONFIG_NET_REDIRECT skb->redirected = 0; ffff8000113aa8fc: 39420f80 ldrb w0, [x28,#131] ffff8000113aa900: 12001800 and w0, w0, #0x7f ffff8000113aa904: 39020f80 strb w0, [x28,#131] if (pfmemalloc && !skb_pfmemalloc_protocol(skb)) ffff8000113aa908: 34ffe599 cbz w25, ffff8000113aa5b8 <__netif_receive_skb_core+0x120> switch (skb->protocol) { ffff8000113aa90c: 79416380 ldrh w0, [x28,#176] ffff8000113aa910: 7118201f cmp w0, #0x608 ffff8000113aa914: 54ffe520 b.eq ffff8000113aa5b8 <__netif_receive_skb_core+0x120> ffff8000113aa918: 54001408 b.hi ffff8000113aab98 <__netif_receive_skb_core+0x700> ffff8000113aa91c: 7100201f cmp w0, #0x8 ffff8000113aa920: 54ffe4c0 b.eq ffff8000113aa5b8 <__netif_receive_skb_core+0x120> ffff8000113aa924: 7102041f cmp w0, #0x81 ffff8000113aa928: 54ffe480 b.eq ffff8000113aa5b8 <__netif_receive_skb_core+0x120> if (!deliver_exact) ffff8000113aa92c: b94077a5 ldr w5, [x29,#116] atomic_long_inc(&skb->dev->rx_dropped); ffff8000113aa930: f9400b80 ldr x0, [x28,#16] if (!deliver_exact) ffff8000113aa934: 35001245 cbnz w5, ffff8000113aab7c <__netif_receive_skb_core+0x6e4> ATOMIC64_OPS(add, add, I) ffff8000113aa938: 91070006 add x6, x0, #0x1c0 ffff8000113aa93c: f98000d1 prfm pstl1strm, [x6] ffff8000113aa940: c85f7cc1 ldxr x1, [x6] ffff8000113aa944: 91000421 add x1, x1, #0x1 ffff8000113aa948: c8027cc1 stxr w2, x1, [x6] ffff8000113aa94c: 35ffffa2 cbnz w2, ffff8000113aa940 <__netif_receive_skb_core+0x4a8> kfree_skb(skb); ffff8000113aa950: f9403fa0 ldr x0, [x29,#120] ret = NET_RX_DROP; ffff8000113aa954: 52800034 mov w20, #0x1 // #1 kfree_skb(skb); ffff8000113aa958: 94000000 bl 0 ffff8000113aa958: R_AARCH64_CALL26 kfree_skb ffff8000113aa95c: 17ffffaf b ffff8000113aa818 <__netif_receive_skb_core+0x380> switch (rx_handler(&skb)) { ffff8000113aa960: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113aa960: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x20 ffff8000113aa964: 91000021 add x1, x1, #0x0 ffff8000113aa964: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x20 ffff8000113aa968: 38604823 ldrb w3, [x1,w0,uxtw] ffff8000113aa96c: 10000064 adr x4, ffff8000113aa978 <__netif_receive_skb_core+0x4e0> ffff8000113aa970: 8b238883 add x3, x4, w3, sxtb #2 ffff8000113aa974: d61f0060 br x3 if (likely(!skb_zcopy(skb))) ffff8000113aa978: f9401400 ldr x0, [x0,#40] ffff8000113aa97c: b4fff060 cbz x0, ffff8000113aa788 <__netif_receive_skb_core+0x2f0> return skb_copy_ubufs(skb, gfp_mask); ffff8000113aa980: aa1c03e0 mov x0, x28 ffff8000113aa984: 52814401 mov w1, #0xa20 // #2592 ffff8000113aa988: 94000000 bl 0 ffff8000113aa988: R_AARCH64_CALL26 skb_copy_ubufs if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) ffff8000113aa98c: 34ffefe0 cbz w0, ffff8000113aa788 <__netif_receive_skb_core+0x2f0> ffff8000113aa990: aa1503f8 mov x24, x21 ffff8000113aa994: 17ffff6f b ffff8000113aa750 <__netif_receive_skb_core+0x2b8> if (likely(!skb_zcopy(skb))) ffff8000113aa998: f9401400 ldr x0, [x0,#40] ffff8000113aa99c: b4ffea00 cbz x0, ffff8000113aa6dc <__netif_receive_skb_core+0x244> return skb_copy_ubufs(skb, gfp_mask); ffff8000113aa9a0: aa1c03e0 mov x0, x28 ffff8000113aa9a4: 52814401 mov w1, #0xa20 // #2592 ffff8000113aa9a8: 94000000 bl 0 ffff8000113aa9a8: R_AARCH64_CALL26 skb_copy_ubufs ffff8000113aa9ac: 34ffe980 cbz w0, ffff8000113aa6dc <__netif_receive_skb_core+0x244> ffff8000113aa9b0: aa1503f8 mov x24, x21 ffff8000113aa9b4: 17ffff3c b ffff8000113aa6a4 <__netif_receive_skb_core+0x20c> ffff8000113aa9b8: f94002c4 ldr x4, [x22] list_for_each_entry_rcu(ptype, &ptype_all, list) { ffff8000113aa9bc: eb0402df cmp x22, x4 ffff8000113aa9c0: d100c09b sub x27, x4, #0x30 ffff8000113aa9c4: 54000820 b.eq ffff8000113aaac8 <__netif_receive_skb_core+0x630> ffff8000113aa9c8: aa1803e2 mov x2, x24 if (pt_prev) ffff8000113aa9cc: b4000362 cbz x2, ffff8000113aaa38 <__netif_receive_skb_core+0x5a0> bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113aa9d0: b400011c cbz x28, ffff8000113aa9f0 <__netif_receive_skb_core+0x558> return skb->head + skb->end; ffff8000113aa9d4: f9406381 ldr x1, [x28,#192] ffff8000113aa9d8: b940bf80 ldr w0, [x28,#188] ffff8000113aa9dc: 8b000020 add x0, x1, x0 bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113aa9e0: 39400c01 ldrb w1, [x0,#3] ffff8000113aa9e4: 36180061 tbz w1, #3, ffff8000113aa9f0 <__netif_receive_skb_core+0x558> if (likely(!skb_zcopy(skb))) ffff8000113aa9e8: f9401400 ldr x0, [x0,#40] ffff8000113aa9ec: b50012c0 cbnz x0, ffff8000113aac44 <__netif_receive_skb_core+0x7ac> refcount_inc(&skb->users); ffff8000113aa9f0: 91035380 add x0, x28, #0xd4 ATOMIC_OPS(add, add, I) ffff8000113aa9f4: f9800011 prfm pstl1strm, [x0] ffff8000113aa9f8: 885f7c01 ldxr w1, [x0] ffff8000113aa9fc: 11000423 add w3, w1, #0x1 ffff8000113aaa00: 88067c03 stxr w6, w3, [x0] ffff8000113aaa04: 35ffffa6 cbnz w6, ffff8000113aa9f8 <__netif_receive_skb_core+0x560> if (unlikely(!old)) ffff8000113aaa08: 6b1f003f cmp w1, wzr ffff8000113aaa0c: 540013e0 b.eq ffff8000113aac88 <__netif_receive_skb_core+0x7f0> else if (unlikely(old < 0 || old + i < 0)) ffff8000113aaa10: 5400110b b.lt ffff8000113aac30 <__netif_receive_skb_core+0x798> ffff8000113aaa14: 3100043f cmn w1, #0x1 ffff8000113aaa18: 540010c4 b.mi ffff8000113aac30 <__netif_receive_skb_core+0x798> return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); ffff8000113aaa1c: f9400845 ldr x5, [x2,#16] ffff8000113aaa20: f9400b81 ldr x1, [x28,#16] ffff8000113aaa24: aa1c03e0 mov x0, x28 ffff8000113aaa28: aa1303e3 mov x3, x19 ffff8000113aaa2c: d63f00a0 blr x5 ffff8000113aaa30: 2a0003f4 mov w20, w0 ffff8000113aaa34: f9403fbc ldr x28, [x29,#120] ffff8000113aaa38: f9401b60 ldr x0, [x27,#48] list_for_each_entry_rcu(ptype, &ptype_all, list) { ffff8000113aaa3c: eb0002df cmp x22, x0 ffff8000113aaa40: d100c000 sub x0, x0, #0x30 ffff8000113aaa44: 54000440 b.eq ffff8000113aaacc <__netif_receive_skb_core+0x634> ffff8000113aaa48: aa1b03e2 mov x2, x27 ffff8000113aaa4c: aa0003fb mov x27, x0 ffff8000113aaa50: 17ffffdf b ffff8000113aa9cc <__netif_receive_skb_core+0x534> ffff8000113aaa54: f9401400 ldr x0, [x0,#40] ffff8000113aaa58: b4fff120 cbz x0, ffff8000113aa87c <__netif_receive_skb_core+0x3e4> return skb_copy_ubufs(skb, gfp_mask); ffff8000113aaa5c: aa1c03e0 mov x0, x28 ffff8000113aaa60: 52814401 mov w1, #0xa20 // #2592 ffff8000113aaa64: f90033a4 str x4, [x29,#96] ffff8000113aaa68: 94000000 bl 0 ffff8000113aaa68: R_AARCH64_CALL26 skb_copy_ubufs if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) ffff8000113aaa6c: f94033a4 ldr x4, [x29,#96] return -ENOMEM; ffff8000113aaa70: 12800174 mov w20, #0xfffffff4 // #-12 if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) ffff8000113aaa74: 34fff040 cbz w0, ffff8000113aa87c <__netif_receive_skb_core+0x3e4> ffff8000113aaa78: 9101e3b8 add x24, x29, #0x78 ffff8000113aaa7c: 17ffff95 b ffff8000113aa8d0 <__netif_receive_skb_core+0x438> ret = NET_RX_SUCCESS; ffff8000113aaa80: 52800014 mov w20, #0x0 // #0 ffff8000113aaa84: 17ffff65 b ffff8000113aa818 <__netif_receive_skb_core+0x380> ffff8000113aaa88: f9403fbc ldr x28, [x29,#120] deliver_exact = true; ffff8000113aaa8c: 52800025 mov w5, #0x1 // #1 ffff8000113aaa90: 39420b80 ldrb w0, [x28,#130] ffff8000113aaa94: b90077a5 str w5, [x29,#116] ffff8000113aaa98: 0a050000 and w0, w0, w5 ffff8000113aaa9c: 17fffef1 b ffff8000113aa660 <__netif_receive_skb_core+0x1c8> ffff8000113aaaa0: f9403fbc ldr x28, [x29,#120] ffff8000113aaaa4: 39420b80 ldrb w0, [x28,#130] ffff8000113aaaa8: 12000000 and w0, w0, #0x1 ffff8000113aaaac: 17fffeed b ffff8000113aa660 <__netif_receive_skb_core+0x1c8> skb = skb_vlan_untag(skb); ffff8000113aaab0: aa1c03e0 mov x0, x28 ffff8000113aaab4: 94000000 bl 0 ffff8000113aaab4: R_AARCH64_CALL26 skb_vlan_untag ffff8000113aaab8: f9003fa0 str x0, [x29,#120] if (unlikely(!skb)) ffff8000113aaabc: b4ffeae0 cbz x0, ffff8000113aa818 <__netif_receive_skb_core+0x380> ffff8000113aaac0: aa0003fc mov x28, x0 ffff8000113aaac4: 17fffeb7 b ffff8000113aa5a0 <__netif_receive_skb_core+0x108> list_for_each_entry_rcu(ptype, &ptype_all, list) { ffff8000113aaac8: aa1803fb mov x27, x24 ffff8000113aaacc: f9400b80 ldr x0, [x28,#16] ffff8000113aaad0: f8488c18 ldr x24, [x0,#136]! list_for_each_entry_rcu(ptype, &skb->dev->ptype_all, list) { ffff8000113aaad4: eb00031f cmp x24, x0 ffff8000113aaad8: d100c318 sub x24, x24, #0x30 ffff8000113aaadc: 540006c0 b.eq ffff8000113aabb4 <__netif_receive_skb_core+0x71c> if (pt_prev) ffff8000113aaae0: b400037b cbz x27, ffff8000113aab4c <__netif_receive_skb_core+0x6b4> bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113aaae4: b400011c cbz x28, ffff8000113aab04 <__netif_receive_skb_core+0x66c> return skb->head + skb->end; ffff8000113aaae8: f9406381 ldr x1, [x28,#192] ffff8000113aaaec: b940bf80 ldr w0, [x28,#188] ffff8000113aaaf0: 8b000020 add x0, x1, x0 bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113aaaf4: 39400c01 ldrb w1, [x0,#3] ffff8000113aaaf8: 36180061 tbz w1, #3, ffff8000113aab04 <__netif_receive_skb_core+0x66c> if (likely(!skb_zcopy(skb))) ffff8000113aaafc: f9401400 ldr x0, [x0,#40] ffff8000113aab00: b5000b80 cbnz x0, ffff8000113aac70 <__netif_receive_skb_core+0x7d8> refcount_inc(&skb->users); ffff8000113aab04: 91035380 add x0, x28, #0xd4 ffff8000113aab08: f9800011 prfm pstl1strm, [x0] ffff8000113aab0c: 885f7c01 ldxr w1, [x0] ffff8000113aab10: 11000422 add w2, w1, #0x1 ffff8000113aab14: 88037c02 stxr w3, w2, [x0] ffff8000113aab18: 35ffffa3 cbnz w3, ffff8000113aab0c <__netif_receive_skb_core+0x674> if (unlikely(!old)) ffff8000113aab1c: 6b1f003f cmp w1, wzr ffff8000113aab20: 54000a20 b.eq ffff8000113aac64 <__netif_receive_skb_core+0x7cc> else if (unlikely(old < 0 || old + i < 0)) ffff8000113aab24: 5400080b b.lt ffff8000113aac24 <__netif_receive_skb_core+0x78c> ffff8000113aab28: 3100043f cmn w1, #0x1 ffff8000113aab2c: 540007c4 b.mi ffff8000113aac24 <__netif_receive_skb_core+0x78c> return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); ffff8000113aab30: f9400b65 ldr x5, [x27,#16] ffff8000113aab34: f9400b81 ldr x1, [x28,#16] ffff8000113aab38: aa1c03e0 mov x0, x28 ffff8000113aab3c: aa1b03e2 mov x2, x27 ffff8000113aab40: aa1303e3 mov x3, x19 ffff8000113aab44: d63f00a0 blr x5 ffff8000113aab48: 2a0003f4 mov w20, w0 list_for_each_entry_rcu(ptype, &skb->dev->ptype_all, list) { ffff8000113aab4c: f9403fbc ldr x28, [x29,#120] ffff8000113aab50: f9401b00 ldr x0, [x24,#48] ffff8000113aab54: f9400b81 ldr x1, [x28,#16] ffff8000113aab58: d100c002 sub x2, x0, #0x30 ffff8000113aab5c: 91022021 add x1, x1, #0x88 ffff8000113aab60: eb01001f cmp x0, x1 ffff8000113aab64: 54ffec40 b.eq ffff8000113aa8ec <__netif_receive_skb_core+0x454> ffff8000113aab68: aa1803fb mov x27, x24 ffff8000113aab6c: aa0203f8 mov x24, x2 ffff8000113aab70: 17ffffdc b ffff8000113aaae0 <__netif_receive_skb_core+0x648> skb->transport_header = skb->data - skb->head; ffff8000113aab74: 79016401 strh w1, [x0,#178] ffff8000113aab78: 17fffe6d b ffff8000113aa52c <__netif_receive_skb_core+0x94> ATOMIC64_OPS(add, add, I) ffff8000113aab7c: 91074004 add x4, x0, #0x1d0 ffff8000113aab80: f9800091 prfm pstl1strm, [x4] ffff8000113aab84: c85f7c81 ldxr x1, [x4] ffff8000113aab88: 91000421 add x1, x1, #0x1 ffff8000113aab8c: c8027c81 stxr w2, x1, [x4] ffff8000113aab90: 35ffffa2 cbnz w2, ffff8000113aab84 <__netif_receive_skb_core+0x6ec> ffff8000113aab94: 17ffff6f b ffff8000113aa950 <__netif_receive_skb_core+0x4b8> switch (skb->protocol) { ffff8000113aab98: 52951101 mov w1, #0xa888 // #43144 ffff8000113aab9c: 6b01001f cmp w0, w1 ffff8000113aaba0: 54ffd0c0 b.eq ffff8000113aa5b8 <__netif_receive_skb_core+0x120> ffff8000113aaba4: 529bb0c1 mov w1, #0xdd86 // #56710 ffff8000113aaba8: 6b01001f cmp w0, w1 ffff8000113aabac: 54ffec01 b.ne ffff8000113aa92c <__netif_receive_skb_core+0x494> ffff8000113aabb0: 17fffe82 b ffff8000113aa5b8 <__netif_receive_skb_core+0x120> list_for_each_entry_rcu(ptype, &skb->dev->ptype_all, list) { ffff8000113aabb4: aa1b03f8 mov x24, x27 ffff8000113aabb8: 17ffff4d b ffff8000113aa8ec <__netif_receive_skb_core+0x454> } else if (skb->protocol == cpu_to_be16(ETH_P_8021Q) || ffff8000113aabbc: 79416380 ldrh w0, [x28,#176] ffff8000113aabc0: 52951106 mov w6, #0xa888 // #43144 ffff8000113aabc4: 6b06001f cmp w0, w6 ffff8000113aabc8: 54002301 b.ne ffff8000113ab028 <__netif_receive_skb_core+0xb90> skb->vlan_present = 0; ffff8000113aabcc: 39420b81 ldrb w1, [x28,#130] skb = skb_vlan_untag(skb); ffff8000113aabd0: aa1c03e0 mov x0, x28 ffff8000113aabd4: 121f7821 and w1, w1, #0xfffffffe ffff8000113aabd8: 39020b81 strb w1, [x28,#130] ffff8000113aabdc: 94000000 bl 0 ffff8000113aabdc: R_AARCH64_CALL26 skb_vlan_untag ffff8000113aabe0: f9003fa0 str x0, [x29,#120] if (unlikely(!skb)) ffff8000113aabe4: b4ffe1a0 cbz x0, ffff8000113aa818 <__netif_receive_skb_core+0x380> if (vlan_do_receive(&skb)) ffff8000113aabe8: aa1803e0 mov x0, x24 ffff8000113aabec: 94000000 bl 0 ffff8000113aabec: R_AARCH64_CALL26 vlan_do_receive ffff8000113aabf0: 53001c00 uxtb w0, w0 ffff8000113aabf4: 35ffe2a0 cbnz w0, ffff8000113aa848 <__netif_receive_skb_core+0x3b0> else if (unlikely(!skb)) ffff8000113aabf8: f9403fa5 ldr x5, [x29,#120] ffff8000113aabfc: b4ffe0e5 cbz x5, ffff8000113aa818 <__netif_receive_skb_core+0x380> ffff8000113aac00: aa0503fc mov x28, x5 if (skb_vlan_tag_get_id(skb)) { ffff8000113aac04: 79413780 ldrh w0, [x28,#154] ffff8000113aac08: 12002c00 and w0, w0, #0xfff ffff8000113aac0c: 34fffd80 cbz w0, ffff8000113aabbc <__netif_receive_skb_core+0x724> skb->pkt_type = PACKET_OTHERHOST; ffff8000113aac10: 39420380 ldrb w0, [x28,#128] ffff8000113aac14: 52800061 mov w1, #0x3 // #3 ffff8000113aac18: 33000820 bfxil w0, w1, #0, #3 ffff8000113aac1c: 39020380 strb w0, [x28,#128] ffff8000113aac20: 14000104 b ffff8000113ab030 <__netif_receive_skb_core+0xb98> refcount_warn_saturate(r, REFCOUNT_ADD_OVF); ffff8000113aac24: 52800021 mov w1, #0x1 // #1 ffff8000113aac28: 94000000 bl 0 ffff8000113aac28: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113aac2c: 17ffffc1 b ffff8000113aab30 <__netif_receive_skb_core+0x698> ffff8000113aac30: 52800021 mov w1, #0x1 // #1 ffff8000113aac34: f90033a2 str x2, [x29,#96] ffff8000113aac38: 94000000 bl 0 ffff8000113aac38: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113aac3c: f94033a2 ldr x2, [x29,#96] ffff8000113aac40: 17ffff77 b ffff8000113aaa1c <__netif_receive_skb_core+0x584> return skb_copy_ubufs(skb, gfp_mask); ffff8000113aac44: aa1c03e0 mov x0, x28 ffff8000113aac48: 52814401 mov w1, #0xa20 // #2592 ffff8000113aac4c: f90033a2 str x2, [x29,#96] ffff8000113aac50: 94000000 bl 0 ffff8000113aac50: R_AARCH64_CALL26 skb_copy_ubufs return -ENOMEM; ffff8000113aac54: 12800174 mov w20, #0xfffffff4 // #-12 if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) ffff8000113aac58: f94033a2 ldr x2, [x29,#96] ffff8000113aac5c: 35ffeec0 cbnz w0, ffff8000113aaa34 <__netif_receive_skb_core+0x59c> ffff8000113aac60: 17ffff64 b ffff8000113aa9f0 <__netif_receive_skb_core+0x558> refcount_warn_saturate(r, REFCOUNT_ADD_UAF); ffff8000113aac64: 52800041 mov w1, #0x2 // #2 ffff8000113aac68: 94000000 bl 0 ffff8000113aac68: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113aac6c: 17ffffb1 b ffff8000113aab30 <__netif_receive_skb_core+0x698> ffff8000113aac70: aa1c03e0 mov x0, x28 ffff8000113aac74: 52814401 mov w1, #0xa20 // #2592 ffff8000113aac78: 94000000 bl 0 ffff8000113aac78: R_AARCH64_CALL26 skb_copy_ubufs return -ENOMEM; ffff8000113aac7c: 12800174 mov w20, #0xfffffff4 // #-12 if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) ffff8000113aac80: 35fff660 cbnz w0, ffff8000113aab4c <__netif_receive_skb_core+0x6b4> ffff8000113aac84: 17ffffa0 b ffff8000113aab04 <__netif_receive_skb_core+0x66c> ffff8000113aac88: 52800041 mov w1, #0x2 // #2 ffff8000113aac8c: f90033a2 str x2, [x29,#96] ffff8000113aac90: 94000000 bl 0 ffff8000113aac90: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113aac94: f94033a2 ldr x2, [x29,#96] ffff8000113aac98: 17ffff61 b ffff8000113aaa1c <__netif_receive_skb_core+0x584> refcount_warn_saturate(r, REFCOUNT_ADD_OVF); ffff8000113aac9c: 52800021 mov w1, #0x1 // #1 ffff8000113aaca0: 94000000 bl 0 ffff8000113aaca0: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113aaca4: 17fffe5b b ffff8000113aa610 <__netif_receive_skb_core+0x178> } ffff8000113aaca8: 94000000 bl 0 <__stack_chk_fail> ffff8000113aaca8: R_AARCH64_CALL26 __stack_chk_fail refcount_warn_saturate(r, REFCOUNT_ADD_UAF); ffff8000113aacac: aa1703e0 mov x0, x23 ffff8000113aacb0: 52800041 mov w1, #0x2 // #2 ffff8000113aacb4: 94000000 bl 0 ffff8000113aacb4: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113aacb8: 17fffe93 b ffff8000113aa704 <__netif_receive_skb_core+0x26c> ret2 = do_xdp_generic(rcu_dereference(skb->dev->xdp_prog), skb); ffff8000113aacbc: f9403fa1 ldr x1, [x29,#120] ffff8000113aacc0: f9400820 ldr x0, [x1,#16] ffff8000113aacc4: f9419800 ldr x0, [x0,#816] if (xdp_prog) { ffff8000113aacc8: b4001c20 cbz x0, ffff8000113ab04c <__netif_receive_skb_core+0xbb4> ffff8000113aaccc: 97fffcb4 bl ffff8000113a9f9c if (ret2 != XDP_PASS) ffff8000113aacd0: 7100081f cmp w0, #0x2 ffff8000113aacd4: 54001b81 b.ne ffff8000113ab044 <__netif_receive_skb_core+0xbac> skb_reset_mac_len(skb); ffff8000113aacd8: f9403fa0 ldr x0, [x29,#120] skb->mac_len = skb->network_header - skb->mac_header; ffff8000113aacdc: 79416802 ldrh w2, [x0,#180] ffff8000113aace0: 79416c01 ldrh w1, [x0,#182] ffff8000113aace4: aa0003fc mov x28, x0 ffff8000113aace8: 4b010041 sub w1, w2, w1 ffff8000113aacec: 7900f001 strh w1, [x0,#120] ffff8000113aacf0: 17fffe26 b ffff8000113aa588 <__netif_receive_skb_core+0xf0> DEFINE_EVENT(net_dev_template, netif_receive_skb, ffff8000113aacf4: 90000000 adrp x0, 0 ffff8000113aacf4: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113aacf8: 91000000 add x0, x0, #0x0 ffff8000113aacf8: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113aacfc: d538d082 mrs x2, tpidr_el1 ffff8000113aad00: b8606842 ldr w2, [x2,x0] ffff8000113aad04: 90000000 adrp x0, 0 <__cpu_online_mask> ffff8000113aad04: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113aad08: 1100fc43 add w3, w2, #0x3f ffff8000113aad0c: 6b1f005f cmp w2, wzr ffff8000113aad10: 1a82b063 csel w3, w3, w2, lt ffff8000113aad14: 13067c63 asr w3, w3, #6 ffff8000113aad18: 91000000 add x0, x0, #0x0 ffff8000113aad18: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113aad1c: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113aad20: f8606863 ldr x3, [x3,x0] ffff8000113aad24: aa1403e0 mov x0, x20 ffff8000113aad28: 9ac22462 lsr x2, x3, x2 ffff8000113aad2c: 3607bec2 tbz w2, #0, ffff8000113aa504 <__netif_receive_skb_core+0x6c> ffff8000113aad30: f9401033 ldr x19, [x1,#32] ffff8000113aad34: b40000f3 cbz x19, ffff8000113aad50 <__netif_receive_skb_core+0x8b8> ffff8000113aad38: f9400262 ldr x2, [x19] ffff8000113aad3c: f9400660 ldr x0, [x19,#8] ffff8000113aad40: aa1403e1 mov x1, x20 ffff8000113aad44: d63f0040 blr x2 ffff8000113aad48: f8418e62 ldr x2, [x19,#24]! ffff8000113aad4c: b5ffff82 cbnz x2, ffff8000113aad3c <__netif_receive_skb_core+0x8a4> ffff8000113aad50: f9403fa0 ldr x0, [x29,#120] ffff8000113aad54: 17fffdec b ffff8000113aa504 <__netif_receive_skb_core+0x6c> net_timestamp_check(!netdev_tstamp_prequeue, skb); ffff8000113aad58: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113aad58: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly+0x94c ffff8000113aad5c: b9400000 ldr w0, [x0] ffff8000113aad5c: R_AARCH64_LDST32_ABS_LO12_NC .data..read_mostly+0x94c ffff8000113aad60: 35ffbc60 cbnz w0, ffff8000113aa4ec <__netif_receive_skb_core+0x54> ffff8000113aad64: f9401280 ldr x0, [x20,#32] ffff8000113aad68: b5ffbc20 cbnz x0, ffff8000113aa4ec <__netif_receive_skb_core+0x54> ffff8000113aad6c: 94000000 bl 0 ffff8000113aad6c: R_AARCH64_CALL26 ktime_get_with_offset skb->tstamp = ktime_get_real(); ffff8000113aad70: f9001280 str x0, [x20,#32] ffff8000113aad74: f9403fb4 ldr x20, [x29,#120] ffff8000113aad78: 17fffddd b ffff8000113aa4ec <__netif_receive_skb_core+0x54> refcount_warn_saturate(r, REFCOUNT_ADD_OVF); ffff8000113aad7c: aa1703e0 mov x0, x23 ffff8000113aad80: 52800021 mov w1, #0x1 // #1 ffff8000113aad84: 94000000 bl 0 ffff8000113aad84: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113aad88: 17fffe8a b ffff8000113aa7b0 <__netif_receive_skb_core+0x318> refcount_warn_saturate(r, REFCOUNT_ADD_UAF); ffff8000113aad8c: aa1703e0 mov x0, x23 ffff8000113aad90: 52800041 mov w1, #0x2 // #2 ffff8000113aad94: 94000000 bl 0 ffff8000113aad94: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113aad98: 17fffe86 b ffff8000113aa7b0 <__netif_receive_skb_core+0x318> refcount_warn_saturate(r, REFCOUNT_ADD_OVF); ffff8000113aad9c: 52800021 mov w1, #0x1 // #1 ffff8000113aada0: f90033a4 str x4, [x29,#96] ffff8000113aada4: 94000000 bl 0 ffff8000113aada4: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113aada8: f94033a4 ldr x4, [x29,#96] ffff8000113aadac: 17fffebf b ffff8000113aa8a8 <__netif_receive_skb_core+0x410> ffff8000113aadb0: aa1703e0 mov x0, x23 ffff8000113aadb4: 52800021 mov w1, #0x1 // #1 ffff8000113aadb8: 94000000 bl 0 ffff8000113aadb8: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113aadbc: 17fffe52 b ffff8000113aa704 <__netif_receive_skb_core+0x26c> struct mini_Qdisc *miniq = rcu_dereference_bh(skb->dev->miniq_ingress); ffff8000113aadc0: f9400b80 ldr x0, [x28,#16] ffff8000113aadc4: f941a806 ldr x6, [x0,#848] if (!miniq) ffff8000113aadc8: b4000466 cbz x6, ffff8000113aae54 <__netif_receive_skb_core+0x9bc> if (*pt_prev) { ffff8000113aadcc: b4000118 cbz x24, ffff8000113aadec <__netif_receive_skb_core+0x954> *ret = deliver_skb(skb, *pt_prev, orig_dev); ffff8000113aadd0: aa1c03e0 mov x0, x28 ffff8000113aadd4: aa1803e1 mov x1, x24 ffff8000113aadd8: aa1303e2 mov x2, x19 ffff8000113aaddc: f90033a6 str x6, [x29,#96] ffff8000113aade0: 97ffe020 bl ffff8000113a2e60 ffff8000113aade4: f94033a6 ldr x6, [x29,#96] ffff8000113aade8: 2a0003f4 mov w20, w0 skb->tc_at_ingress = 1; ffff8000113aadec: 39420f80 ldrb w0, [x28,#131] qdisc_skb_cb(skb)->pkt_len = skb->len; ffff8000113aadf0: b9407381 ldr w1, [x28,#112] skb->tc_at_ingress = 1; ffff8000113aadf4: 321a0000 orr w0, w0, #0x40 qdisc_skb_cb(skb)->pkt_len = skb->len; ffff8000113aadf8: b9002b81 str w1, [x28,#40] skb->tc_at_ingress = 1; ffff8000113aadfc: 39020f80 strb w0, [x28,#131] mini_qdisc_bstats_cpu_update(miniq, skb); ffff8000113aae00: f94008c0 ldr x0, [x6,#16] ffff8000113aae04: aa1c03e1 mov x1, x28 ffff8000113aae08: f90033a6 str x6, [x29,#96] ffff8000113aae0c: 94000000 bl ffff80001139e37c <__my_cpu_offset> ffff8000113aae0c: R_AARCH64_CALL26 .text.unlikely switch (tcf_classify_ingress(skb, miniq->block, miniq->filter_list, ffff8000113aae10: f94033a6 ldr x6, [x29,#96] ffff8000113aae14: aa1c03e0 mov x0, x28 ffff8000113aae18: f94004c1 ldr x1, [x6,#8] ffff8000113aae1c: f94000c2 ldr x2, [x6] ffff8000113aae20: 910223a3 add x3, x29, #0x88 ffff8000113aae24: 52800004 mov w4, #0x0 // #0 ffff8000113aae28: 94000000 bl 0 ffff8000113aae28: R_AARCH64_CALL26 tcf_classify_ingress ffff8000113aae2c: 7100241f cmp w0, #0x9 ffff8000113aae30: f94033a6 ldr x6, [x29,#96] ffff8000113aae34: 540000e8 b.hi ffff8000113aae50 <__netif_receive_skb_core+0x9b8> ffff8000113aae38: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113aae38: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x24 ffff8000113aae3c: 91000021 add x1, x1, #0x0 ffff8000113aae3c: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x24 ffff8000113aae40: 78605821 ldrh w1, [x1,w0,uxtw #1] ffff8000113aae44: 10000062 adr x2, ffff8000113aae50 <__netif_receive_skb_core+0x9b8> ffff8000113aae48: 8b21a841 add x1, x2, w1, sxth #2 ffff8000113aae4c: d61f0020 br x1 ffff8000113aae50: d2800018 mov x24, #0x0 // #0 skb = sch_handle_ingress(skb, &pt_prev, &ret, orig_dev); ffff8000113aae54: f9003fbc str x28, [x29,#120] if (!skb) ffff8000113aae58: b4ffce1c cbz x28, ffff8000113aa818 <__netif_receive_skb_core+0x380> static inline int nf_ingress(struct sk_buff *skb, struct packet_type **pt_prev, ffff8000113aae5c: f9400b80 ldr x0, [x28,#16] ffff8000113aae60: f941b000 ldr x0, [x0,#864] if (nf_hook_ingress_active(skb)) { ffff8000113aae64: b4ffd4c0 cbz x0, ffff8000113aa8fc <__netif_receive_skb_core+0x464> if (*pt_prev) { ffff8000113aae68: b40000d8 cbz x24, ffff8000113aae80 <__netif_receive_skb_core+0x9e8> *ret = deliver_skb(skb, *pt_prev, orig_dev); ffff8000113aae6c: aa1c03e0 mov x0, x28 ffff8000113aae70: aa1803e1 mov x1, x24 ffff8000113aae74: aa1303e2 mov x2, x19 ffff8000113aae78: 97ffdffa bl ffff8000113a2e60 ffff8000113aae7c: 2a0003f4 mov w20, w0 } /* caller must hold rcu_read_lock */ static inline int nf_hook_ingress(struct sk_buff *skb) { struct nf_hook_entries *e = rcu_dereference(skb->dev->nf_hooks_ingress); ffff8000113aae80: f9400b84 ldr x4, [x28,#16] ffff8000113aae84: f941b082 ldr x2, [x4,#864] int ret; /* Must recheck the ingress hook head, in the event it became NULL * after the check in nf_hook_ingress_active evaluated to true. */ if (unlikely(!e)) ffff8000113aae88: b4000202 cbz x2, ffff8000113aaec8 <__netif_receive_skb_core+0xa30> return pnet->net; ffff8000113aae8c: f9427886 ldr x6, [x4,#1264] return 0; nf_hook_state_init(&state, NF_NETDEV_INGRESS, NFPROTO_NETDEV, skb->dev, NULL, NULL, dev_net(skb->dev), NULL); ret = nf_hook_slow(skb, &state, e, 0); ffff8000113aae90: 52800003 mov w3, #0x0 // #0 struct sock *sk, struct net *net, int (*okfn)(struct net *, struct sock *, struct sk_buff *)) { p->hook = hook; p->pf = pf; ffff8000113aae94: 528000a5 mov w5, #0x5 // #5 ffff8000113aae98: aa1c03e0 mov x0, x28 ffff8000113aae9c: 910223a1 add x1, x29, #0x88 p->hook = hook; ffff8000113aaea0: b9008ba3 str w3, [x29,#136] p->pf = pf; ffff8000113aaea4: 390233a5 strb w5, [x29,#140] p->in = indev; ffff8000113aaea8: f9004ba4 str x4, [x29,#144] p->out = outdev; ffff8000113aaeac: f9004fbf str xzr, [x29,#152] p->sk = sk; ffff8000113aaeb0: f90053bf str xzr, [x29,#160] p->net = net; ffff8000113aaeb4: f90057a6 str x6, [x29,#168] p->okfn = okfn; ffff8000113aaeb8: f9005bbf str xzr, [x29,#176] ffff8000113aaebc: 94000000 bl 0 ffff8000113aaebc: R_AARCH64_CALL26 nf_hook_slow if (ret == 0) return -1; ffff8000113aaec0: 6b1f001f cmp w0, wzr ffff8000113aaec4: 5a9f1002 csinv w2, w0, wzr, ne if (nf_ingress(skb, &pt_prev, &ret, orig_dev) < 0) ffff8000113aaec8: 37ffca82 tbnz w2, #31, ffff8000113aa818 <__netif_receive_skb_core+0x380> ffff8000113aaecc: f9403fbc ldr x28, [x29,#120] ffff8000113aaed0: d2800018 mov x24, #0x0 // #0 ffff8000113aaed4: 17fffe8a b ffff8000113aa8fc <__netif_receive_skb_core+0x464> return skb_copy_ubufs(skb, gfp_mask); ffff8000113aaed8: aa1c03e0 mov x0, x28 ffff8000113aaedc: 52814401 mov w1, #0xa20 // #2592 ffff8000113aaee0: 94000000 bl 0 ffff8000113aaee0: R_AARCH64_CALL26 skb_copy_ubufs return -ENOMEM; ffff8000113aaee4: 12800174 mov w20, #0xfffffff4 // #-12 if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) ffff8000113aaee8: 35ffba20 cbnz w0, ffff8000113aa62c <__netif_receive_skb_core+0x194> ffff8000113aaeec: 17fffdbe b ffff8000113aa5e4 <__netif_receive_skb_core+0x14c> __skb_push(skb, skb->mac_len); ffff8000113aaef0: 7940f380 ldrh w0, [x28,#120] skb->data -= len; ffff8000113aaef4: f9406781 ldr x1, [x28,#200] skb->len += len; ffff8000113aaef8: b9407382 ldr w2, [x28,#112] skb->data -= len; ffff8000113aaefc: cb202021 sub x1, x1, w0, uxth skb->len += len; ffff8000113aaf00: 0b000040 add w0, w2, w0 ffff8000113aaf04: b9007380 str w0, [x28,#112] skb->data -= len; ffff8000113aaf08: f9006781 str x1, [x28,#200] skb_do_redirect(skb); ffff8000113aaf0c: aa1c03e0 mov x0, x28 ffff8000113aaf10: 94000000 bl 0 ffff8000113aaf10: R_AARCH64_CALL26 skb_do_redirect ffff8000113aaf14: 17fffe41 b ffff8000113aa818 <__netif_receive_skb_core+0x380> consume_skb(skb); ffff8000113aaf18: aa1c03e0 mov x0, x28 ffff8000113aaf1c: 94000000 bl 0 ffff8000113aaf1c: R_AARCH64_CALL26 consume_skb ffff8000113aaf20: 17fffe3e b ffff8000113aa818 <__netif_receive_skb_core+0x380> mini_qdisc_qstats_cpu_drop(miniq); ffff8000113aaf24: 910060c0 add x0, x6, #0x18 ffff8000113aaf28: 94000000 bl ffff80001139e37c <__my_cpu_offset> ffff8000113aaf28: R_AARCH64_CALL26 .text.unlikely+0x64 kfree_skb(skb); ffff8000113aaf2c: aa1c03e0 mov x0, x28 ffff8000113aaf30: 94000000 bl 0 ffff8000113aaf30: R_AARCH64_CALL26 kfree_skb ffff8000113aaf34: 17fffe39 b ffff8000113aa818 <__netif_receive_skb_core+0x380> skb->tc_index = TC_H_MIN(cl_res.classid); ffff8000113aaf38: b94093a0 ldr w0, [x29,#144] ffff8000113aaf3c: d2800018 mov x24, #0x0 // #0 ffff8000113aaf40: 79010f80 strh w0, [x28,#134] ffff8000113aaf44: 17ffffc4 b ffff8000113aae54 <__netif_receive_skb_core+0x9bc> return skb_copy_ubufs(skb, gfp_mask); ffff8000113aaf48: aa1c03e0 mov x0, x28 ffff8000113aaf4c: 52814401 mov w1, #0xa20 // #2592 ffff8000113aaf50: 94000000 bl 0 ffff8000113aaf50: R_AARCH64_CALL26 skb_copy_ubufs if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) ffff8000113aaf54: 34ffc5e0 cbz w0, ffff8000113aa810 <__netif_receive_skb_core+0x378> ffff8000113aaf58: f9403fbc ldr x28, [x29,#120] ffff8000113aaf5c: 17fffe74 b ffff8000113aa92c <__netif_receive_skb_core+0x494> refcount_warn_saturate(r, REFCOUNT_ADD_UAF); ffff8000113aaf60: 52800041 mov w1, #0x2 // #2 ffff8000113aaf64: 94000000 bl 0 ffff8000113aaf64: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113aaf68: 17fffdaa b ffff8000113aa610 <__netif_receive_skb_core+0x178> ffff8000113aaf6c: f9404ef6 ldr x22, [x23,#152] deliver_ptype_list_skb(skb, &pt_prev, orig_dev, type, ffff8000113aaf70: 910262f7 add x23, x23, #0x98 list_for_each_entry_rcu(ptype, ptype_list, list) { ffff8000113aaf74: eb1602ff cmp x23, x22 ffff8000113aaf78: d100c2d6 sub x22, x22, #0x30 ffff8000113aaf7c: 540006c0 b.eq ffff8000113ab054 <__netif_receive_skb_core+0xbbc> refcount_inc(&skb->users); ffff8000113aaf80: 91035395 add x21, x28, #0xd4 ffff8000113aaf84: 14000005 b ffff8000113aaf98 <__netif_receive_skb_core+0xb00> ffff8000113aaf88: f9401ad6 ldr x22, [x22,#48] list_for_each_entry_rcu(ptype, ptype_list, list) { ffff8000113aaf8c: eb1602ff cmp x23, x22 ffff8000113aaf90: d100c2d6 sub x22, x22, #0x30 ffff8000113aaf94: 54000600 b.eq ffff8000113ab054 <__netif_receive_skb_core+0xbbc> if (ptype->type != type) ffff8000113aaf98: 794002c0 ldrh w0, [x22] ffff8000113aaf9c: 6b19001f cmp w0, w25 ffff8000113aafa0: 54ffff41 b.ne ffff8000113aaf88 <__netif_receive_skb_core+0xaf0> if (pt_prev) ffff8000113aafa4: b40003f8 cbz x24, ffff8000113ab020 <__netif_receive_skb_core+0xb88> bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113aafa8: b400011c cbz x28, ffff8000113aafc8 <__netif_receive_skb_core+0xb30> return skb->head + skb->end; ffff8000113aafac: f9406381 ldr x1, [x28,#192] ffff8000113aafb0: b940bf80 ldr w0, [x28,#188] ffff8000113aafb4: 8b000020 add x0, x1, x0 bool is_zcopy = skb && skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY; ffff8000113aafb8: 39400c01 ldrb w1, [x0,#3] ffff8000113aafbc: 36180061 tbz w1, #3, ffff8000113aafc8 <__netif_receive_skb_core+0xb30> if (likely(!skb_zcopy(skb))) ffff8000113aafc0: f9401400 ldr x0, [x0,#40] ffff8000113aafc4: b5000260 cbnz x0, ffff8000113ab010 <__netif_receive_skb_core+0xb78> ATOMIC_OPS(add, add, I) ffff8000113aafc8: f98002b1 prfm pstl1strm, [x21] ffff8000113aafcc: 885f7ea0 ldxr w0, [x21] ffff8000113aafd0: 11000401 add w1, w0, #0x1 ffff8000113aafd4: 88027ea1 stxr w2, w1, [x21] ffff8000113aafd8: 35ffffa2 cbnz w2, ffff8000113aafcc <__netif_receive_skb_core+0xb34> if (unlikely(!old)) ffff8000113aafdc: 6b1f001f cmp w0, wzr ffff8000113aafe0: 54000520 b.eq ffff8000113ab084 <__netif_receive_skb_core+0xbec> else if (unlikely(old < 0 || old + i < 0)) ffff8000113aafe4: 5400048b b.lt ffff8000113ab074 <__netif_receive_skb_core+0xbdc> ffff8000113aafe8: 3100041f cmn w0, #0x1 ffff8000113aafec: 54000444 b.mi ffff8000113ab074 <__netif_receive_skb_core+0xbdc> return pt_prev->func(skb, skb->dev, pt_prev, orig_dev); ffff8000113aaff0: f9400b04 ldr x4, [x24,#16] ffff8000113aaff4: f9400b81 ldr x1, [x28,#16] ffff8000113aaff8: aa1803e2 mov x2, x24 ffff8000113aaffc: aa1c03e0 mov x0, x28 ffff8000113ab000: aa1303e3 mov x3, x19 ffff8000113ab004: d63f0080 blr x4 ffff8000113ab008: aa1603f8 mov x24, x22 ffff8000113ab00c: 17ffffdf b ffff8000113aaf88 <__netif_receive_skb_core+0xaf0> return skb_copy_ubufs(skb, gfp_mask); ffff8000113ab010: aa1c03e0 mov x0, x28 ffff8000113ab014: 52814401 mov w1, #0xa20 // #2592 ffff8000113ab018: 94000000 bl 0 ffff8000113ab018: R_AARCH64_CALL26 skb_copy_ubufs if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) ffff8000113ab01c: 34fffd60 cbz w0, ffff8000113aafc8 <__netif_receive_skb_core+0xb30> ffff8000113ab020: aa1603f8 mov x24, x22 ffff8000113ab024: 17ffffd9 b ffff8000113aaf88 <__netif_receive_skb_core+0xaf0> } else if (skb->protocol == cpu_to_be16(ETH_P_8021Q) || ffff8000113ab028: 7102041f cmp w0, #0x81 ffff8000113ab02c: 54ffdd00 b.eq ffff8000113aabcc <__netif_receive_skb_core+0x734> ffff8000113ab030: 39420b80 ldrb w0, [x28,#130] ffff8000113ab034: d2800018 mov x24, #0x0 // #0 ffff8000113ab038: 121f7800 and w0, w0, #0xfffffffe ffff8000113ab03c: 39020b80 strb w0, [x28,#130] ffff8000113ab040: 17fffd8a b ffff8000113aa668 <__netif_receive_skb_core+0x1d0> return NET_RX_DROP; ffff8000113ab044: 52800020 mov w0, #0x1 // #1 ffff8000113ab048: 17fffdf5 b ffff8000113aa81c <__netif_receive_skb_core+0x384> return XDP_PASS; ffff8000113ab04c: 52800040 mov w0, #0x2 // #2 ffff8000113ab050: 17ffff20 b ffff8000113aacd0 <__netif_receive_skb_core+0x838> ffff8000113ab054: f9403fbc ldr x28, [x29,#120] if (pt_prev) { ffff8000113ab058: b5ffbcd8 cbnz x24, ffff8000113aa7f0 <__netif_receive_skb_core+0x358> ffff8000113ab05c: 17fffe34 b ffff8000113aa92c <__netif_receive_skb_core+0x494> refcount_warn_saturate(r, REFCOUNT_ADD_UAF); ffff8000113ab060: 52800041 mov w1, #0x2 // #2 ffff8000113ab064: f90033a4 str x4, [x29,#96] ffff8000113ab068: 94000000 bl 0 ffff8000113ab068: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113ab06c: f94033a4 ldr x4, [x29,#96] ffff8000113ab070: 17fffe0e b ffff8000113aa8a8 <__netif_receive_skb_core+0x410> refcount_warn_saturate(r, REFCOUNT_ADD_OVF); ffff8000113ab074: aa1503e0 mov x0, x21 ffff8000113ab078: 52800021 mov w1, #0x1 // #1 ffff8000113ab07c: 94000000 bl 0 ffff8000113ab07c: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113ab080: 17ffffdc b ffff8000113aaff0 <__netif_receive_skb_core+0xb58> refcount_warn_saturate(r, REFCOUNT_ADD_UAF); ffff8000113ab084: aa1503e0 mov x0, x21 ffff8000113ab088: 52800041 mov w1, #0x2 // #2 ffff8000113ab08c: 94000000 bl 0 ffff8000113ab08c: R_AARCH64_CALL26 refcount_warn_saturate ffff8000113ab090: 17ffffd8 b ffff8000113aaff0 <__netif_receive_skb_core+0xb58> ffff8000113ab094 <__netif_receive_skb_one_core>: { ffff8000113ab094: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113ab098: 910003fd mov x29, sp ffff8000113ab09c: a90153f3 stp x19, x20, [sp,#16] ffff8000113ab0a0: f90013f5 str x21, [sp,#32] ffff8000113ab0a4: aa0003f3 mov x19, x0 ffff8000113ab0a8: aa1e03e0 mov x0, x30 ffff8000113ab0ac: 53001c35 uxtb w21, w1 ffff8000113ab0b0: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113ab0b0: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ab0b4: 94000000 bl 0 <_mcount> ffff8000113ab0b4: R_AARCH64_CALL26 _mcount struct packet_type *pt_prev = NULL; ffff8000113ab0b8: 910103a2 add x2, x29, #0x40 { ffff8000113ab0bc: f9400283 ldr x3, [x20] ffff8000113ab0bc: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard struct packet_type *pt_prev = NULL; ffff8000113ab0c0: f81f0c5f str xzr, [x2,#-16]! ret = __netif_receive_skb_core(skb, pfmemalloc, &pt_prev); ffff8000113ab0c4: 2a1503e1 mov w1, w21 ffff8000113ab0c8: aa1303e0 mov x0, x19 { ffff8000113ab0cc: f9001fa3 str x3, [x29,#56] struct net_device *orig_dev = skb->dev; ffff8000113ab0d0: f9400a75 ldr x21, [x19,#16] ret = __netif_receive_skb_core(skb, pfmemalloc, &pt_prev); ffff8000113ab0d4: 97fffcf1 bl ffff8000113aa498 <__netif_receive_skb_core> if (pt_prev) ffff8000113ab0d8: f9401ba2 ldr x2, [x29,#48] ffff8000113ab0dc: b40000c2 cbz x2, ffff8000113ab0f4 <__netif_receive_skb_one_core+0x60> ret = INDIRECT_CALL_INET(pt_prev->func, ipv6_rcv, ip_rcv, skb, ffff8000113ab0e0: f9400844 ldr x4, [x2,#16] ffff8000113ab0e4: f9400a61 ldr x1, [x19,#16] ffff8000113ab0e8: aa1303e0 mov x0, x19 ffff8000113ab0ec: aa1503e3 mov x3, x21 ffff8000113ab0f0: d63f0080 blr x4 } ffff8000113ab0f4: f9401fa2 ldr x2, [x29,#56] ffff8000113ab0f8: f9400281 ldr x1, [x20] ffff8000113ab0f8: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ab0fc: eb01005f cmp x2, x1 ffff8000113ab100: 540000a1 b.ne ffff8000113ab114 <__netif_receive_skb_one_core+0x80> ffff8000113ab104: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ab108: f94013f5 ldr x21, [sp,#32] ffff8000113ab10c: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113ab110: d65f03c0 ret ffff8000113ab114: 94000000 bl 0 <__stack_chk_fail> ffff8000113ab114: R_AARCH64_CALL26 __stack_chk_fail ffff8000113ab118 : { ffff8000113ab118: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113ab11c: 910003fd mov x29, sp ffff8000113ab120: f9000bf3 str x19, [sp,#16] ffff8000113ab124: aa0003f3 mov x19, x0 ffff8000113ab128: aa1e03e0 mov x0, x30 ffff8000113ab12c: 94000000 bl 0 <_mcount> ffff8000113ab12c: R_AARCH64_CALL26 _mcount ret = __netif_receive_skb_one_core(skb, false); ffff8000113ab130: 52800001 mov w1, #0x0 // #0 ffff8000113ab134: aa1303e0 mov x0, x19 ffff8000113ab138: 97ffffd7 bl ffff8000113ab094 <__netif_receive_skb_one_core> } ffff8000113ab13c: f9400bf3 ldr x19, [sp,#16] ffff8000113ab140: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113ab144: d65f03c0 ret ffff8000113ab148 <__netif_receive_skb>: { ffff8000113ab148: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113ab14c: 910003fd mov x29, sp ffff8000113ab150: a90153f3 stp x19, x20, [sp,#16] ffff8000113ab154: aa0003f3 mov x19, x0 ffff8000113ab158: aa1e03e0 mov x0, x30 ffff8000113ab15c: 94000000 bl 0 <_mcount> ffff8000113ab15c: R_AARCH64_CALL26 _mcount ffff8000113ab160: 90000000 adrp x0, 0 ffff8000113ab160: R_AARCH64_ADR_PREL_PG_HI21 memalloc_socks_key ffff8000113ab164: b9400000 ldr w0, [x0] ffff8000113ab164: R_AARCH64_LDST32_ABS_LO12_NC memalloc_socks_key if (sk_memalloc_socks() && skb_pfmemalloc(skb)) { ffff8000113ab168: 6b1f001f cmp w0, wzr ffff8000113ab16c: 540000ec b.gt ffff8000113ab188 <__netif_receive_skb+0x40> ret = __netif_receive_skb_one_core(skb, false); ffff8000113ab170: aa1303e0 mov x0, x19 ffff8000113ab174: 52800001 mov w1, #0x0 // #0 ffff8000113ab178: 97ffffc7 bl ffff8000113ab094 <__netif_receive_skb_one_core> } ffff8000113ab17c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ab180: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113ab184: d65f03c0 ret return unlikely(skb->pfmemalloc); ffff8000113ab188: 3941fa60 ldrb w0, [x19,#126] if (sk_memalloc_socks() && skb_pfmemalloc(skb)) { ffff8000113ab18c: 3637ff20 tbz w0, #6, ffff8000113ab170 <__netif_receive_skb+0x28> ffff8000113ab190: d5384114 mrs x20, sp_el0 current->flags = (current->flags & ~PF_MEMALLOC_NOFS) | flags; } static inline unsigned int memalloc_noreclaim_save(void) { unsigned int flags = current->flags & PF_MEMALLOC; ffff8000113ab194: b9403682 ldr w2, [x20,#52] ret = __netif_receive_skb_one_core(skb, true); ffff8000113ab198: aa1303e0 mov x0, x19 current->flags |= PF_MEMALLOC; ffff8000113ab19c: 32150041 orr w1, w2, #0x800 ffff8000113ab1a0: b9003681 str w1, [x20,#52] ffff8000113ab1a4: 52800021 mov w1, #0x1 // #1 unsigned int flags = current->flags & PF_MEMALLOC; ffff8000113ab1a8: 12150053 and w19, w2, #0x800 ffff8000113ab1ac: 97ffffba bl ffff8000113ab094 <__netif_receive_skb_one_core> return flags; } static inline void memalloc_noreclaim_restore(unsigned int flags) { current->flags = (current->flags & ~PF_MEMALLOC) | flags; ffff8000113ab1b0: b9403681 ldr w1, [x20,#52] ffff8000113ab1b4: 12147821 and w1, w1, #0xfffff7ff ffff8000113ab1b8: 2a130033 orr w19, w1, w19 ffff8000113ab1bc: b9003693 str w19, [x20,#52] ffff8000113ab1c0: 17ffffef b ffff8000113ab17c <__netif_receive_skb+0x34> ffff8000113ab1c4 : { ffff8000113ab1c4: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113ab1c8: 910003fd mov x29, sp ffff8000113ab1cc: a90153f3 stp x19, x20, [sp,#16] ffff8000113ab1d0: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ab1d4: aa0003f4 mov x20, x0 ffff8000113ab1d8: aa1e03e0 mov x0, x30 ffff8000113ab1dc: 94000000 bl 0 <_mcount> ffff8000113ab1dc: R_AARCH64_CALL26 _mcount ffff8000113ab1e0: 90000016 adrp x22, 0 <__stack_chk_guard> ffff8000113ab1e0: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ab1e4: f94002c0 ldr x0, [x22] ffff8000113ab1e4: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ab1e8: f90027a0 str x0, [x29,#72] ffff8000113ab1ec: 90000000 adrp x0, 0 <__tracepoint_netif_receive_skb_entry> ffff8000113ab1ec: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_netif_receive_skb_entry ffff8000113ab1f0: 91000000 add x0, x0, #0x0 ffff8000113ab1f0: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_netif_receive_skb_entry ffff8000113ab1f4: b9400801 ldr w1, [x0,#8] ffff8000113ab1f8: 6b1f003f cmp w1, wzr ffff8000113ab1fc: 5400080c b.gt ffff8000113ab2fc ffff8000113ab200: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ab200: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113ab204: 91000000 add x0, x0, #0x0 ffff8000113ab204: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113ab208: b9434800 ldr w0, [x0,#840] net_timestamp_check(netdev_tstamp_prequeue, skb); ffff8000113ab20c: 6b1f001f cmp w0, wzr ffff8000113ab210: 5400066c b.gt ffff8000113ab2dc if (skb_defer_rx_timestamp(skb)) ffff8000113ab214: aa1403e0 mov x0, x20 ffff8000113ab218: 94000000 bl 0 ffff8000113ab218: R_AARCH64_CALL26 skb_defer_rx_timestamp ffff8000113ab21c: 53001c00 uxtb w0, w0 return NET_RX_SUCCESS; ffff8000113ab220: 52800015 mov w21, #0x0 // #0 if (skb_defer_rx_timestamp(skb)) ffff8000113ab224: 340001e0 cbz w0, ffff8000113ab260 ffff8000113ab228: 90000000 adrp x0, 0 <__tracepoint_netif_receive_skb_exit> ffff8000113ab228: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_netif_receive_skb_exit ffff8000113ab22c: 91000000 add x0, x0, #0x0 ffff8000113ab22c: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_netif_receive_skb_exit ffff8000113ab230: b9400801 ldr w1, [x0,#8] ffff8000113ab234: 6b1f003f cmp w1, wzr ffff8000113ab238: 5400028c b.gt ffff8000113ab288 } ffff8000113ab23c: f94027a2 ldr x2, [x29,#72] ffff8000113ab240: f94002c1 ldr x1, [x22] ffff8000113ab240: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ab244: 2a1503e0 mov w0, w21 ffff8000113ab248: eb01005f cmp x2, x1 ffff8000113ab24c: 540001c1 b.ne ffff8000113ab284 ffff8000113ab250: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ab254: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ab258: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113ab25c: d65f03c0 ret ffff8000113ab260: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ab260: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113ab264: 91000000 add x0, x0, #0x0 ffff8000113ab264: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113ab268: b9495000 ldr w0, [x0,#2384] if (static_branch_unlikely(&rps_needed)) { ffff8000113ab26c: 6b15001f cmp w0, w21 ffff8000113ab270: 5400070c b.gt ffff8000113ab350 ret = __netif_receive_skb(skb); ffff8000113ab274: aa1403e0 mov x0, x20 ffff8000113ab278: 97ffffb4 bl ffff8000113ab148 <__netif_receive_skb> return ret; ffff8000113ab27c: 2a0003f5 mov w21, w0 ffff8000113ab280: 17ffffea b ffff8000113ab228 } ffff8000113ab284: 94000000 bl 0 <__stack_chk_fail> ffff8000113ab284: R_AARCH64_CALL26 __stack_chk_fail DEFINE_EVENT(net_dev_rx_exit_template, netif_receive_skb_exit, ffff8000113ab288: 90000001 adrp x1, 0 ffff8000113ab288: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113ab28c: d538d082 mrs x2, tpidr_el1 ffff8000113ab290: 91000021 add x1, x1, #0x0 ffff8000113ab290: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113ab294: b8616841 ldr w1, [x2,x1] ffff8000113ab298: 52800803 mov w3, #0x40 // #64 ffff8000113ab29c: 1ac30c23 sdiv w3, w1, w3 ffff8000113ab2a0: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113ab2a0: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113ab2a4: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113ab2a8: 91000042 add x2, x2, #0x0 ffff8000113ab2a8: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113ab2ac: f8626862 ldr x2, [x3,x2] ffff8000113ab2b0: 9ac12441 lsr x1, x2, x1 ffff8000113ab2b4: 3607fc41 tbz w1, #0, ffff8000113ab23c ffff8000113ab2b8: f9401013 ldr x19, [x0,#32] ffff8000113ab2bc: b40000f3 cbz x19, ffff8000113ab2d8 ffff8000113ab2c0: f9400262 ldr x2, [x19] ffff8000113ab2c4: f9400660 ldr x0, [x19,#8] ffff8000113ab2c8: 2a1503e1 mov w1, w21 ffff8000113ab2cc: d63f0040 blr x2 ffff8000113ab2d0: f8418e62 ldr x2, [x19,#24]! ffff8000113ab2d4: b5ffff82 cbnz x2, ffff8000113ab2c4 ffff8000113ab2d8: 17ffffd9 b ffff8000113ab23c net_timestamp_check(netdev_tstamp_prequeue, skb); ffff8000113ab2dc: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ab2dc: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly+0x94c ffff8000113ab2e0: b9400000 ldr w0, [x0] ffff8000113ab2e0: R_AARCH64_LDST32_ABS_LO12_NC .data..read_mostly+0x94c ffff8000113ab2e4: 34fff980 cbz w0, ffff8000113ab214 ffff8000113ab2e8: f9401280 ldr x0, [x20,#32] ffff8000113ab2ec: b5fff940 cbnz x0, ffff8000113ab214 ffff8000113ab2f0: 94000000 bl 0 ffff8000113ab2f0: R_AARCH64_CALL26 ktime_get_with_offset skb->tstamp = ktime_get_real(); ffff8000113ab2f4: f9001280 str x0, [x20,#32] ffff8000113ab2f8: 17ffffc7 b ffff8000113ab214 DEFINE_EVENT(net_dev_rx_verbose_template, netif_receive_skb_entry, ffff8000113ab2fc: 90000001 adrp x1, 0 ffff8000113ab2fc: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113ab300: d538d082 mrs x2, tpidr_el1 ffff8000113ab304: 91000021 add x1, x1, #0x0 ffff8000113ab304: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113ab308: b8616841 ldr w1, [x2,x1] ffff8000113ab30c: 52800803 mov w3, #0x40 // #64 ffff8000113ab310: 1ac30c23 sdiv w3, w1, w3 ffff8000113ab314: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113ab314: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113ab318: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113ab31c: 91000042 add x2, x2, #0x0 ffff8000113ab31c: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113ab320: f8626862 ldr x2, [x3,x2] ffff8000113ab324: 9ac12441 lsr x1, x2, x1 ffff8000113ab328: 3607f6c1 tbz w1, #0, ffff8000113ab200 ffff8000113ab32c: f9401013 ldr x19, [x0,#32] ffff8000113ab330: b40000f3 cbz x19, ffff8000113ab34c ffff8000113ab334: f9400262 ldr x2, [x19] ffff8000113ab338: f9400660 ldr x0, [x19,#8] ffff8000113ab33c: aa1403e1 mov x1, x20 ffff8000113ab340: d63f0040 blr x2 ffff8000113ab344: f8418e62 ldr x2, [x19,#24]! ffff8000113ab348: b5ffff82 cbnz x2, ffff8000113ab338 ffff8000113ab34c: 17ffffad b ffff8000113ab200 struct rps_dev_flow voidflow, *rflow = &voidflow; ffff8000113ab350: 910143a2 add x2, x29, #0x50 ffff8000113ab354: 9100e3a0 add x0, x29, #0x38 ffff8000113ab358: f81f0c40 str x0, [x2,#-16]! int cpu = get_rps_cpu(skb->dev, skb, &rflow); ffff8000113ab35c: f9400a80 ldr x0, [x20,#16] ffff8000113ab360: aa1403e1 mov x1, x20 ffff8000113ab364: 97ffd549 bl ffff8000113a0888 ffff8000113ab368: 2a0003e1 mov w1, w0 if (cpu >= 0) { ffff8000113ab36c: 37fff841 tbnz w1, #31, ffff8000113ab274 ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail); ffff8000113ab370: f94023a2 ldr x2, [x29,#64] ffff8000113ab374: aa1403e0 mov x0, x20 ffff8000113ab378: 91001042 add x2, x2, #0x4 ffff8000113ab37c: 97ffec97 bl ffff8000113a65d8 return ret; ffff8000113ab380: 2a0003f5 mov w21, w0 ffff8000113ab384: 17ffffa9 b ffff8000113ab228 ffff8000113ab388 : { ffff8000113ab388: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113ab38c: 910003fd mov x29, sp ffff8000113ab390: a90153f3 stp x19, x20, [sp,#16] ffff8000113ab394: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ab398: a90363f7 stp x23, x24, [sp,#48] ffff8000113ab39c: a9046bf9 stp x25, x26, [sp,#64] ffff8000113ab3a0: a90573fb stp x27, x28, [sp,#80] ffff8000113ab3a4: aa0003f3 mov x19, x0 ffff8000113ab3a8: aa1e03e0 mov x0, x30 ffff8000113ab3ac: 2a0103f6 mov w22, w1 ffff8000113ab3b0: 94000000 bl 0 <_mcount> ffff8000113ab3b0: R_AARCH64_CALL26 _mcount if (sd_has_rps_ipi_waiting(sd)) { ffff8000113ab3b4: f8528260 ldur x0, [x19,#-216] ffff8000113ab3b8: b4000120 cbz x0, ffff8000113ab3dc asm volatile(ALTERNATIVE( ffff8000113ab3bc: d2800c00 mov x0, #0x60 // #96 ffff8000113ab3c0: d50342df msr daifset, #0x2 struct softnet_data *remsd = sd->rps_ipi_list; ffff8000113ab3c4: f8528260 ldur x0, [x19,#-216] if (remsd) { ffff8000113ab3c8: b4000a00 cbz x0, ffff8000113ab508 sd->rps_ipi_list = NULL; ffff8000113ab3cc: f812827f stur xzr, [x19,#-216] asm volatile(ALTERNATIVE( ffff8000113ab3d0: d2801c01 mov x1, #0xe0 // #224 ffff8000113ab3d4: d50342ff msr daifclr, #0x2 net_rps_send_ipi(remsd); ffff8000113ab3d8: 97ffd814 bl ffff8000113a1428 napi->weight = dev_rx_weight; ffff8000113ab3dc: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ab3dc: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly+0x954 ffff8000113ab3e0: b9400000 ldr w0, [x0] ffff8000113ab3e0: R_AARCH64_LDST32_ABS_LO12_NC .data..read_mostly+0x954 ffff8000113ab3e4: d104427b sub x27, x19, #0x110 ffff8000113ab3e8: 91004375 add x21, x27, #0x10 ffff8000113ab3ec: b9001a60 str w0, [x19,#24] int work = 0; ffff8000113ab3f0: 52800014 mov w20, #0x0 // #0 ffff8000113ab3f4: d104027c sub x28, x19, #0x100 asm volatile(ALTERNATIVE( ffff8000113ab3f8: d2800c1a mov x26, #0x60 // #96 #if defined(arch_atomic_cmpxchg_acquire) static inline int atomic_cmpxchg_acquire(atomic_t *v, int old, int new) { kasan_check_write(v, sizeof(*v)); return arch_atomic_cmpxchg_acquire(v, old, new); ffff8000113ab3fc: d1001277 sub x23, x19, #0x4 __CMPXCHG_CASE(w, , acq_, 32, , a, , "memory", K) ffff8000113ab400: d2800019 mov x25, #0x0 // #0 ffff8000113ab404: 52800038 mov w24, #0x1 // #1 if (skb_queue_empty(&sd->input_pkt_queue)) { ffff8000113ab408: 9103e37b add x27, x27, #0xf8 ffff8000113ab40c: 14000012 b ffff8000113ab454 if (skb) ffff8000113ab410: b4000280 cbz x0, ffff8000113ab460 WRITE_ONCE(list->qlen, list->qlen - 1); ffff8000113ab414: b9401381 ldr w1, [x28,#16] ffff8000113ab418: 51000421 sub w1, w1, #0x1 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113ab41c: b8110261 stur w1, [x19,#-240] next = skb->next; ffff8000113ab420: f9400002 ldr x2, [x0] prev = skb->prev; ffff8000113ab424: f9400401 ldr x1, [x0,#8] skb->next = skb->prev = NULL; ffff8000113ab428: f900001f str xzr, [x0] ffff8000113ab42c: f900041f str xzr, [x0,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113ab430: f9000441 str x1, [x2,#8] ffff8000113ab434: f9000022 str x2, [x1] __netif_receive_skb(skb); ffff8000113ab438: 97ffff44 bl ffff8000113ab148 <__netif_receive_skb> sd->input_queue_head++; ffff8000113ab43c: b8570260 ldur w0, [x19,#-144] if (++work >= quota) ffff8000113ab440: 11000694 add w20, w20, #0x1 ffff8000113ab444: 11000400 add w0, w0, #0x1 ffff8000113ab448: b8170260 stur w0, [x19,#-144] ffff8000113ab44c: 6b16029f cmp w20, w22 ffff8000113ab450: 5400046a b.ge ffff8000113ab4dc struct sk_buff *skb = list_->next; ffff8000113ab454: f9400380 ldr x0, [x28] if (skb == (struct sk_buff *)list_) ffff8000113ab458: eb15001f cmp x0, x21 ffff8000113ab45c: 54fffda1 b.ne ffff8000113ab410 ffff8000113ab460: d50342df msr daifset, #0x2 ffff8000113ab464: f98002f1 prfm pstl1strm, [x23] ffff8000113ab468: 885ffee1 ldaxr w1, [x23] ffff8000113ab46c: 4a190020 eor w0, w1, w25 ffff8000113ab470: 35000060 cbnz w0, ffff8000113ab47c ffff8000113ab474: 88007ef8 stxr w0, w24, [x23] ffff8000113ab478: 35ffff80 cbnz w0, ffff8000113ab468 ffff8000113ab47c: 350004c1 cbnz w1, ffff8000113ab514 return list->next == (const struct sk_buff *) list; ffff8000113ab480: f85e8260 ldur x0, [x19,#-24] list->qlen = 0; ffff8000113ab484: 52800021 mov w1, #0x1 // #1 if (skb_queue_empty(&sd->input_pkt_queue)) { ffff8000113ab488: eb00037f cmp x27, x0 ffff8000113ab48c: 54000380 b.eq ffff8000113ab4fc __skb_queue_splice(list, head->prev, (struct sk_buff *) head); ffff8000113ab490: f9400783 ldr x3, [x28,#8] static inline void skb_queue_splice_tail_init(struct sk_buff_head *list, ffff8000113ab494: f85f0262 ldur x2, [x19,#-16] ffff8000113ab498: f9000403 str x3, [x0,#8] ffff8000113ab49c: f9000060 str x0, [x3] ffff8000113ab4a0: f9000055 str x21, [x2] ffff8000113ab4a4: f8108262 stur x2, [x19,#-248] head->qlen += list->qlen; ffff8000113ab4a8: b9401380 ldr w0, [x28,#16] ffff8000113ab4ac: b85f8262 ldur w2, [x19,#-8] ffff8000113ab4b0: 0b000040 add w0, w2, w0 ffff8000113ab4b4: b9001380 str w0, [x28,#16] list->prev = list->next = (struct sk_buff *)list; ffff8000113ab4b8: f81e827b stur x27, [x19,#-24] ffff8000113ab4bc: f81f027b stur x27, [x19,#-16] list->qlen = 0; ffff8000113ab4c0: b81f827f stur wzr, [x19,#-8] smp_store_release(&lock->locked, 0); ffff8000113ab4c4: 52800000 mov w0, #0x0 // #0 ffff8000113ab4c8: d1001262 sub x2, x19, #0x4 ffff8000113ab4cc: 089ffc40 stlrb w0, [x2] asm volatile(ALTERNATIVE( ffff8000113ab4d0: d2801c00 mov x0, #0xe0 // #224 ffff8000113ab4d4: d50342ff msr daifclr, #0x2 while (again) { ffff8000113ab4d8: 35fffbe1 cbnz w1, ffff8000113ab454 } ffff8000113ab4dc: 2a1403e0 mov w0, w20 ffff8000113ab4e0: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ab4e4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ab4e8: a94363f7 ldp x23, x24, [sp,#48] ffff8000113ab4ec: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113ab4f0: a94573fb ldp x27, x28, [sp,#80] ffff8000113ab4f4: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113ab4f8: d65f03c0 ret napi->state = 0; ffff8000113ab4fc: f9000a7f str xzr, [x19,#16] again = false; ffff8000113ab500: 52800001 mov w1, #0x0 // #0 ffff8000113ab504: 17fffff0 b ffff8000113ab4c4 ffff8000113ab508: d2801c00 mov x0, #0xe0 // #224 ffff8000113ab50c: d50342ff msr daifclr, #0x2 ffff8000113ab510: 17ffffb3 b ffff8000113ab3dc queued_spin_lock_slowpath(lock, val); ffff8000113ab514: aa1703e0 mov x0, x23 ffff8000113ab518: 94000000 bl 0 ffff8000113ab518: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113ab51c: 17ffffd9 b ffff8000113ab480 ffff8000113ab520 <__netif_receive_skb_list_core>: { ffff8000113ab520: a9b77bfd stp x29, x30, [sp,#-144]! ffff8000113ab524: 910003fd mov x29, sp ffff8000113ab528: a90153f3 stp x19, x20, [sp,#16] ffff8000113ab52c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ab530: a90363f7 stp x23, x24, [sp,#48] ffff8000113ab534: a9046bf9 stp x25, x26, [sp,#64] ffff8000113ab538: a90573fb stp x27, x28, [sp,#80] ffff8000113ab53c: aa0003fa mov x26, x0 ffff8000113ab540: 53001c21 uxtb w1, w1 ffff8000113ab544: aa1e03e0 mov x0, x30 ffff8000113ab548: b9006fa1 str w1, [x29,#108] ffff8000113ab54c: 94000000 bl 0 <_mcount> ffff8000113ab54c: R_AARCH64_CALL26 _mcount ffff8000113ab550: 90000001 adrp x1, 0 <__stack_chk_guard> ffff8000113ab550: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ab554: f9400020 ldr x0, [x1] ffff8000113ab554: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard list_for_each_entry_safe(skb, next, head, list) { ffff8000113ab558: f9400355 ldr x21, [x26] WRITE_ONCE(list->next, list); ffff8000113ab55c: 9101e3b3 add x19, x29, #0x78 { ffff8000113ab560: f90047a0 str x0, [x29,#136] ffff8000113ab564: f9003fb3 str x19, [x29,#120] list->prev = list; ffff8000113ab568: f90043b3 str x19, [x29,#128] list_for_each_entry_safe(skb, next, head, list) { ffff8000113ab56c: eb1a02bf cmp x21, x26 ffff8000113ab570: f94002b6 ldr x22, [x21] ffff8000113ab574: aa1503f8 mov x24, x21 ffff8000113ab578: 54000c40 b.eq ffff8000113ab700 <__netif_receive_skb_list_core+0x1e0> struct net_device *od_curr = NULL; ffff8000113ab57c: d2800017 mov x23, #0x0 // #0 struct packet_type *pt_curr = NULL; ffff8000113ab580: aa1703f4 mov x20, x23 ffff8000113ab584: 1400001a b ffff8000113ab5ec <__netif_receive_skb_list_core+0xcc> INDIRECT_CALL_INET(pt_prev->list_func, ipv6_list_rcv, ffff8000113ab588: aa1403e1 mov x1, x20 ffff8000113ab58c: aa1303e0 mov x0, x19 ffff8000113ab590: aa1703e2 mov x2, x23 ffff8000113ab594: d63f0060 blr x3 ffff8000113ab598: f9403bb4 ldr x20, [x29,#112] struct net_device *orig_dev = skb->dev; ffff8000113ab59c: aa1903f7 mov x23, x25 ffff8000113ab5a0: f9003fb3 str x19, [x29,#120] ffff8000113ab5a4: f9000673 str x19, [x19,#8] ffff8000113ab5a8: aa1303f9 mov x25, x19 if (!__list_add_valid(new, prev, next)) ffff8000113ab5ac: aa1803e0 mov x0, x24 ffff8000113ab5b0: aa1903e1 mov x1, x25 ffff8000113ab5b4: aa1303e2 mov x2, x19 ffff8000113ab5b8: 94000000 bl 0 <__list_add_valid> ffff8000113ab5b8: R_AARCH64_CALL26 __list_add_valid ffff8000113ab5bc: 53001c00 uxtb w0, w0 ffff8000113ab5c0: 340000a0 cbz w0, ffff8000113ab5d4 <__netif_receive_skb_list_core+0xb4> next->prev = new; ffff8000113ab5c4: f9000678 str x24, [x19,#8] new->next = next; ffff8000113ab5c8: f90002b3 str x19, [x21] new->prev = prev; ffff8000113ab5cc: f90006b9 str x25, [x21,#8] ffff8000113ab5d0: f9000338 str x24, [x25] list_for_each_entry_safe(skb, next, head, list) { ffff8000113ab5d4: eb1a02df cmp x22, x26 ffff8000113ab5d8: f94002c0 ldr x0, [x22] ffff8000113ab5dc: aa1603f8 mov x24, x22 ffff8000113ab5e0: 540007c0 b.eq ffff8000113ab6d8 <__netif_receive_skb_list_core+0x1b8> ffff8000113ab5e4: aa1603f5 mov x21, x22 ffff8000113ab5e8: aa0003f6 mov x22, x0 if (!__list_del_entry_valid(entry)) ffff8000113ab5ec: aa1803e0 mov x0, x24 struct net_device *orig_dev = skb->dev; ffff8000113ab5f0: f9400ab9 ldr x25, [x21,#16] struct packet_type *pt_prev = NULL; ffff8000113ab5f4: f9003bbf str xzr, [x29,#112] ffff8000113ab5f8: 94000000 bl 0 <__list_del_entry_valid> ffff8000113ab5f8: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113ab5fc: 53001c00 uxtb w0, w0 ffff8000113ab600: 340000a0 cbz w0, ffff8000113ab614 <__netif_receive_skb_list_core+0xf4> __list_del(entry->prev, entry->next); ffff8000113ab604: f94006a0 ldr x0, [x21,#8] ffff8000113ab608: f94002a1 ldr x1, [x21] next->prev = prev; ffff8000113ab60c: f9000420 str x0, [x1,#8] ffff8000113ab610: f9000001 str x1, [x0] __netif_receive_skb_core(skb, pfmemalloc, &pt_prev); ffff8000113ab614: 3941b3a1 ldrb w1, [x29,#108] ffff8000113ab618: 9101c3a2 add x2, x29, #0x70 skb->next = NULL; ffff8000113ab61c: f90002bf str xzr, [x21] ffff8000113ab620: aa1503e0 mov x0, x21 ffff8000113ab624: 97fffb9d bl ffff8000113aa498 <__netif_receive_skb_core> if (!pt_prev) ffff8000113ab628: f9403ba2 ldr x2, [x29,#112] ffff8000113ab62c: b4fffd42 cbz x2, ffff8000113ab5d4 <__netif_receive_skb_list_core+0xb4> if (pt_curr != pt_prev || od_curr != orig_dev) { ffff8000113ab630: eb02029f cmp x20, x2 ffff8000113ab634: 54000460 b.eq ffff8000113ab6c0 <__netif_receive_skb_list_core+0x1a0> if (!pt_prev) ffff8000113ab638: b40004d4 cbz x20, ffff8000113ab6d0 <__netif_receive_skb_list_core+0x1b0> __READ_ONCE_SIZE; ffff8000113ab63c: f9403fa0 ldr x0, [x29,#120] if (list_empty(head)) ffff8000113ab640: eb00027f cmp x19, x0 ffff8000113ab644: 54000460 b.eq ffff8000113ab6d0 <__netif_receive_skb_list_core+0x1b0> if (pt_prev->list_func != NULL) ffff8000113ab648: f9400e83 ldr x3, [x20,#24] ffff8000113ab64c: b5fff9e3 cbnz x3, ffff8000113ab588 <__netif_receive_skb_list_core+0x68> list_for_each_entry_safe(skb, next, head, list) { ffff8000113ab650: f940027c ldr x28, [x19] ffff8000113ab654: eb13039f cmp x28, x19 ffff8000113ab658: f940039b ldr x27, [x28] ffff8000113ab65c: aa1c03e0 mov x0, x28 ffff8000113ab660: 54000081 b.ne ffff8000113ab670 <__netif_receive_skb_list_core+0x150> ffff8000113ab664: 1400001b b ffff8000113ab6d0 <__netif_receive_skb_list_core+0x1b0> ffff8000113ab668: aa1b03fc mov x28, x27 ffff8000113ab66c: aa0203fb mov x27, x2 if (!__list_del_entry_valid(entry)) ffff8000113ab670: 94000000 bl 0 <__list_del_entry_valid> ffff8000113ab670: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113ab674: 53001c00 uxtb w0, w0 ffff8000113ab678: 340000a0 cbz w0, ffff8000113ab68c <__netif_receive_skb_list_core+0x16c> __list_del(entry->prev, entry->next); ffff8000113ab67c: f9400780 ldr x0, [x28,#8] ffff8000113ab680: f9400382 ldr x2, [x28] next->prev = prev; ffff8000113ab684: f9000440 str x0, [x2,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113ab688: f9000002 str x2, [x0] ffff8000113ab68c: f900039f str xzr, [x28] pt_prev->func(skb, skb->dev, pt_prev, orig_dev); ffff8000113ab690: f9400a85 ldr x5, [x20,#16] ffff8000113ab694: f9400b81 ldr x1, [x28,#16] ffff8000113ab698: aa1403e2 mov x2, x20 ffff8000113ab69c: aa1c03e0 mov x0, x28 ffff8000113ab6a0: aa1703e3 mov x3, x23 ffff8000113ab6a4: d63f00a0 blr x5 list_for_each_entry_safe(skb, next, head, list) { ffff8000113ab6a8: eb13037f cmp x27, x19 ffff8000113ab6ac: f9400362 ldr x2, [x27] ffff8000113ab6b0: aa1b03e0 mov x0, x27 ffff8000113ab6b4: 54fffda1 b.ne ffff8000113ab668 <__netif_receive_skb_list_core+0x148> ffff8000113ab6b8: f9403bb4 ldr x20, [x29,#112] ffff8000113ab6bc: 17ffffb8 b ffff8000113ab59c <__netif_receive_skb_list_core+0x7c> if (pt_curr != pt_prev || od_curr != orig_dev) { ffff8000113ab6c0: eb1902ff cmp x23, x25 ffff8000113ab6c4: 54fffbc1 b.ne ffff8000113ab63c <__netif_receive_skb_list_core+0x11c> ffff8000113ab6c8: f9400679 ldr x25, [x19,#8] ffff8000113ab6cc: 17ffffb8 b ffff8000113ab5ac <__netif_receive_skb_list_core+0x8c> list_for_each_entry_safe(skb, next, head, list) { ffff8000113ab6d0: aa0203f4 mov x20, x2 ffff8000113ab6d4: 17ffffb2 b ffff8000113ab59c <__netif_receive_skb_list_core+0x7c> if (!pt_prev) ffff8000113ab6d8: b4000154 cbz x20, ffff8000113ab700 <__netif_receive_skb_list_core+0x1e0> __READ_ONCE_SIZE; ffff8000113ab6dc: f9403fa0 ldr x0, [x29,#120] if (list_empty(head)) ffff8000113ab6e0: eb00027f cmp x19, x0 ffff8000113ab6e4: 540000e0 b.eq ffff8000113ab700 <__netif_receive_skb_list_core+0x1e0> if (pt_prev->list_func != NULL) ffff8000113ab6e8: f9400e83 ldr x3, [x20,#24] ffff8000113ab6ec: b4000223 cbz x3, ffff8000113ab730 <__netif_receive_skb_list_core+0x210> INDIRECT_CALL_INET(pt_prev->list_func, ipv6_list_rcv, ffff8000113ab6f0: aa1303e0 mov x0, x19 ffff8000113ab6f4: aa1403e1 mov x1, x20 ffff8000113ab6f8: aa1703e2 mov x2, x23 ffff8000113ab6fc: d63f0060 blr x3 } ffff8000113ab700: 90000002 adrp x2, 0 <__stack_chk_guard> ffff8000113ab700: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ab704: f94047a1 ldr x1, [x29,#136] ffff8000113ab708: f9400040 ldr x0, [x2] ffff8000113ab708: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ab70c: eb00003f cmp x1, x0 ffff8000113ab710: 54000461 b.ne ffff8000113ab79c <__netif_receive_skb_list_core+0x27c> ffff8000113ab714: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ab718: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ab71c: a94363f7 ldp x23, x24, [sp,#48] ffff8000113ab720: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113ab724: a94573fb ldp x27, x28, [sp,#80] ffff8000113ab728: a8c97bfd ldp x29, x30, [sp],#144 ffff8000113ab72c: d65f03c0 ret list_for_each_entry_safe(skb, next, head, list) { ffff8000113ab730: f9400276 ldr x22, [x19] ffff8000113ab734: eb1302df cmp x22, x19 ffff8000113ab738: f94002d5 ldr x21, [x22] ffff8000113ab73c: aa1603e0 mov x0, x22 ffff8000113ab740: 54000081 b.ne ffff8000113ab750 <__netif_receive_skb_list_core+0x230> ffff8000113ab744: 17ffffef b ffff8000113ab700 <__netif_receive_skb_list_core+0x1e0> ffff8000113ab748: aa1503f6 mov x22, x21 ffff8000113ab74c: aa0103f5 mov x21, x1 if (!__list_del_entry_valid(entry)) ffff8000113ab750: 94000000 bl 0 <__list_del_entry_valid> ffff8000113ab750: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113ab754: 53001c00 uxtb w0, w0 ffff8000113ab758: 340000a0 cbz w0, ffff8000113ab76c <__netif_receive_skb_list_core+0x24c> __list_del(entry->prev, entry->next); ffff8000113ab75c: f94006c0 ldr x0, [x22,#8] ffff8000113ab760: f94002c1 ldr x1, [x22] next->prev = prev; ffff8000113ab764: f9000420 str x0, [x1,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113ab768: f9000001 str x1, [x0] ffff8000113ab76c: f90002df str xzr, [x22] pt_prev->func(skb, skb->dev, pt_prev, orig_dev); ffff8000113ab770: f9400ac1 ldr x1, [x22,#16] ffff8000113ab774: f9400a84 ldr x4, [x20,#16] ffff8000113ab778: aa1603e0 mov x0, x22 ffff8000113ab77c: aa1403e2 mov x2, x20 ffff8000113ab780: aa1703e3 mov x3, x23 ffff8000113ab784: d63f0080 blr x4 list_for_each_entry_safe(skb, next, head, list) { ffff8000113ab788: eb1302bf cmp x21, x19 ffff8000113ab78c: f94002a1 ldr x1, [x21] ffff8000113ab790: aa1503e0 mov x0, x21 ffff8000113ab794: 54fffda1 b.ne ffff8000113ab748 <__netif_receive_skb_list_core+0x228> ffff8000113ab798: 17ffffda b ffff8000113ab700 <__netif_receive_skb_list_core+0x1e0> } ffff8000113ab79c: 94000000 bl 0 <__stack_chk_fail> ffff8000113ab79c: R_AARCH64_CALL26 __stack_chk_fail ffff8000113ab7a0 : { ffff8000113ab7a0: a9b67bfd stp x29, x30, [sp,#-160]! ffff8000113ab7a4: 910003fd mov x29, sp ffff8000113ab7a8: a90153f3 stp x19, x20, [sp,#16] ffff8000113ab7ac: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ab7b0: a90363f7 stp x23, x24, [sp,#48] ffff8000113ab7b4: a9046bf9 stp x25, x26, [sp,#64] ffff8000113ab7b8: f9002bfb str x27, [sp,#80] ffff8000113ab7bc: aa0003f3 mov x19, x0 ffff8000113ab7c0: aa1e03e0 mov x0, x30 ffff8000113ab7c4: 94000000 bl 0 <_mcount> ffff8000113ab7c4: R_AARCH64_CALL26 _mcount ffff8000113ab7c8: 90000017 adrp x23, 0 <__stack_chk_guard> ffff8000113ab7c8: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ab7cc: f94002e0 ldr x0, [x23] ffff8000113ab7cc: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard list_for_each_entry_safe(skb, next, head, list) { ffff8000113ab7d0: f9400275 ldr x21, [x19] WRITE_ONCE(list->next, list); ffff8000113ab7d4: 9101e3b8 add x24, x29, #0x78 { ffff8000113ab7d8: f9004fa0 str x0, [x29,#152] ffff8000113ab7dc: f9003fb8 str x24, [x29,#120] list->prev = list; ffff8000113ab7e0: f90043b8 str x24, [x29,#128] list_for_each_entry_safe(skb, next, head, list) { ffff8000113ab7e4: eb1302bf cmp x21, x19 ffff8000113ab7e8: f94002b4 ldr x20, [x21] ffff8000113ab7ec: aa1503f6 mov x22, x21 ffff8000113ab7f0: 90000019 adrp x25, ffff80001139e37c <__my_cpu_offset> ffff8000113ab7f0: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113ab7f4: 9000001a adrp x26, ffff80001139e37c <__my_cpu_offset> ffff8000113ab7f4: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113ab7f8: 54000101 b.ne ffff8000113ab818 ffff8000113ab7fc: 14000027 b ffff8000113ab898 ffff8000113ab800: eb13029f cmp x20, x19 ffff8000113ab804: f9400280 ldr x0, [x20] ffff8000113ab808: aa1403f6 mov x22, x20 ffff8000113ab80c: 54000460 b.eq ffff8000113ab898 ffff8000113ab810: aa1403f5 mov x21, x20 ffff8000113ab814: aa0003f4 mov x20, x0 __READ_ONCE_SIZE; ffff8000113ab818: 91000320 add x0, x25, #0x0 ffff8000113ab818: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113ab81c: b9434800 ldr w0, [x0,#840] net_timestamp_check(netdev_tstamp_prequeue, skb); ffff8000113ab820: 6b1f001f cmp w0, wzr ffff8000113ab824: 540010ac b.gt ffff8000113aba38 if (!__list_del_entry_valid(entry)) ffff8000113ab828: aa1603e0 mov x0, x22 ffff8000113ab82c: 94000000 bl 0 <__list_del_entry_valid> ffff8000113ab82c: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113ab830: 53001c00 uxtb w0, w0 ffff8000113ab834: 340000a0 cbz w0, ffff8000113ab848 __list_del(entry->prev, entry->next); ffff8000113ab838: f94006a0 ldr x0, [x21,#8] ffff8000113ab83c: f94002a1 ldr x1, [x21] next->prev = prev; ffff8000113ab840: f9000420 str x0, [x1,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113ab844: f9000001 str x1, [x0] ffff8000113ab848: f90002bf str xzr, [x21] if (!skb_defer_rx_timestamp(skb)) ffff8000113ab84c: aa1503e0 mov x0, x21 ffff8000113ab850: 94000000 bl 0 ffff8000113ab850: R_AARCH64_CALL26 skb_defer_rx_timestamp ffff8000113ab854: 53001c00 uxtb w0, w0 ffff8000113ab858: 35fffd40 cbnz w0, ffff8000113ab800 __list_add(new, head->prev, head); ffff8000113ab85c: f940071b ldr x27, [x24,#8] if (!__list_add_valid(new, prev, next)) ffff8000113ab860: aa1603e0 mov x0, x22 ffff8000113ab864: aa1b03e1 mov x1, x27 ffff8000113ab868: aa1803e2 mov x2, x24 ffff8000113ab86c: 94000000 bl 0 <__list_add_valid> ffff8000113ab86c: R_AARCH64_CALL26 __list_add_valid ffff8000113ab870: 53001c00 uxtb w0, w0 ffff8000113ab874: 34fffc60 cbz w0, ffff8000113ab800 next->prev = new; ffff8000113ab878: f9000716 str x22, [x24,#8] new->next = next; ffff8000113ab87c: f90002b8 str x24, [x21] new->prev = prev; ffff8000113ab880: f90006bb str x27, [x21,#8] ffff8000113ab884: f9000376 str x22, [x27] list_for_each_entry_safe(skb, next, head, list) { ffff8000113ab888: eb13029f cmp x20, x19 ffff8000113ab88c: f9400280 ldr x0, [x20] ffff8000113ab890: aa1403f6 mov x22, x20 ffff8000113ab894: 54fffbe1 b.ne ffff8000113ab810 __READ_ONCE_SIZE; ffff8000113ab898: f9403fa0 ldr x0, [x29,#120] if (!list_empty(list)) { ffff8000113ab89c: eb00031f cmp x24, x0 ffff8000113ab8a0: 54000140 b.eq ffff8000113ab8c8 struct list_head *first = list->next; ffff8000113ab8a4: f9403fa2 ldr x2, [x29,#120] __list_splice(list, head, head->next); ffff8000113ab8a8: f9400260 ldr x0, [x19] struct list_head *last = list->prev; ffff8000113ab8ac: f94043a1 ldr x1, [x29,#128] first->prev = prev; ffff8000113ab8b0: f9000453 str x19, [x2,#8] prev->next = first; ffff8000113ab8b4: f9000262 str x2, [x19] last->next = next; ffff8000113ab8b8: f9000020 str x0, [x1] next->prev = last; ffff8000113ab8bc: f9000401 str x1, [x0,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113ab8c0: f9003fb8 str x24, [x29,#120] list->prev = list; ffff8000113ab8c4: f90043b8 str x24, [x29,#128] __READ_ONCE_SIZE; ffff8000113ab8c8: 9100035a add x26, x26, #0x0 ffff8000113ab8c8: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113ab8cc: b9495340 ldr w0, [x26,#2384] if (static_branch_unlikely(&rps_needed)) { ffff8000113ab8d0: 6b1f001f cmp w0, wzr ffff8000113ab8d4: 54000c2c b.gt ffff8000113aba58 list_for_each_entry_safe(skb, next, head, list) { ffff8000113ab8d8: f9400261 ldr x1, [x19] ffff8000113ab8dc: eb01027f cmp x19, x1 ffff8000113ab8e0: f9400034 ldr x20, [x1] ffff8000113ab8e4: aa0103e2 mov x2, x1 ffff8000113ab8e8: 540009c0 b.eq ffff8000113aba20 unsigned long noreclaim_flag = 0; ffff8000113ab8ec: d2800018 mov x24, #0x0 // #0 ffff8000113ab8f0: 90000019 adrp x25, 0 ffff8000113ab8f0: R_AARCH64_ADR_PREL_PG_HI21 memalloc_socks_key ffff8000113ab8f4: d538411a mrs x26, sp_el0 bool pfmemalloc = false; /* Is current sublist PF_MEMALLOC? */ ffff8000113ab8f8: 2a1803f6 mov w22, w24 ffff8000113ab8fc: 91000339 add x25, x25, #0x0 ffff8000113ab8fc: R_AARCH64_ADD_ABS_LO12_NC memalloc_socks_key ffff8000113ab900: aa1a03fb mov x27, x26 list->next = head->next; ffff8000113ab904: 910223b5 add x21, x29, #0x88 ffff8000113ab908: 1400000c b ffff8000113ab938 unsigned int flags = current->flags & PF_MEMALLOC; ffff8000113ab90c: b9403760 ldr w0, [x27,#52] ffff8000113ab910: 12150018 and w24, w0, #0x800 current->flags |= PF_MEMALLOC; ffff8000113ab914: 32150000 orr w0, w0, #0x800 ffff8000113ab918: b9003760 str w0, [x27,#52] noreclaim_flag = memalloc_noreclaim_save(); ffff8000113ab91c: 2a1803f8 mov w24, w24 list_for_each_entry_safe(skb, next, head, list) { ffff8000113ab920: eb14027f cmp x19, x20 ffff8000113ab924: f9400280 ldr x0, [x20] ffff8000113ab928: aa1403e2 mov x2, x20 ffff8000113ab92c: 54000460 b.eq ffff8000113ab9b8 ffff8000113ab930: aa1403e1 mov x1, x20 ffff8000113ab934: aa0003f4 mov x20, x0 ffff8000113ab938: b9400323 ldr w3, [x25] if ((sk_memalloc_socks() && skb_pfmemalloc(skb)) != pfmemalloc) { ffff8000113ab93c: 52800000 mov w0, #0x0 // #0 ffff8000113ab940: 6b00007f cmp w3, w0 ffff8000113ab944: 5400074c b.gt ffff8000113aba2c ffff8000113ab948: 6b0002df cmp w22, w0 ffff8000113ab94c: 54fffea0 b.eq ffff8000113ab920 if (head->next == entry) { ffff8000113ab950: f9400260 ldr x0, [x19] ffff8000113ab954: eb02001f cmp x0, x2 ffff8000113ab958: 540005e0 b.eq ffff8000113aba14 list->next = head->next; ffff8000113ab95c: f90002a0 str x0, [x21] list->next->prev = list; ffff8000113ab960: f9000415 str x21, [x0,#8] list->prev = entry->prev; ffff8000113ab964: f9400420 ldr x0, [x1,#8] ffff8000113ab968: f90006a0 str x0, [x21,#8] list->prev->next = list; ffff8000113ab96c: f9000015 str x21, [x0] head->next = entry; ffff8000113ab970: f9000262 str x2, [x19] entry->prev = head; ffff8000113ab974: f9000433 str x19, [x1,#8] ffff8000113ab978: f94047a0 ldr x0, [x29,#136] if (!list_empty(&sublist)) ffff8000113ab97c: eb0002bf cmp x21, x0 ffff8000113ab980: 54000080 b.eq ffff8000113ab990 __netif_receive_skb_list_core(&sublist, pfmemalloc); ffff8000113ab984: aa1503e0 mov x0, x21 ffff8000113ab988: 2a1603e1 mov w1, w22 ffff8000113ab98c: 97fffee5 bl ffff8000113ab520 <__netif_receive_skb_list_core> pfmemalloc = !pfmemalloc; ffff8000113ab990: 520002d6 eor w22, w22, #0x1 if (pfmemalloc) ffff8000113ab994: 35fffbd6 cbnz w22, ffff8000113ab90c current->flags = (current->flags & ~PF_MEMALLOC) | flags; ffff8000113ab998: b9403740 ldr w0, [x26,#52] list_for_each_entry_safe(skb, next, head, list) { ffff8000113ab99c: eb14027f cmp x19, x20 ffff8000113ab9a0: 12147800 and w0, w0, #0xfffff7ff ffff8000113ab9a4: 2a180000 orr w0, w0, w24 ffff8000113ab9a8: b9003740 str w0, [x26,#52] ffff8000113ab9ac: f9400280 ldr x0, [x20] ffff8000113ab9b0: aa1403e2 mov x2, x20 ffff8000113ab9b4: 54fffbe1 b.ne ffff8000113ab930 ffff8000113ab9b8: f9400260 ldr x0, [x19] if (!list_empty(head)) ffff8000113ab9bc: eb00027f cmp x19, x0 ffff8000113ab9c0: 54000080 b.eq ffff8000113ab9d0 __netif_receive_skb_list_core(head, pfmemalloc); ffff8000113ab9c4: aa1303e0 mov x0, x19 ffff8000113ab9c8: 2a1603e1 mov w1, w22 ffff8000113ab9cc: 97fffed5 bl ffff8000113ab520 <__netif_receive_skb_list_core> if (pfmemalloc) ffff8000113ab9d0: 340000d6 cbz w22, ffff8000113ab9e8 ffff8000113ab9d4: d5384100 mrs x0, sp_el0 ffff8000113ab9d8: b9403401 ldr w1, [x0,#52] ffff8000113ab9dc: 12147821 and w1, w1, #0xfffff7ff ffff8000113ab9e0: 2a180038 orr w24, w1, w24 ffff8000113ab9e4: b9003418 str w24, [x0,#52] } ffff8000113ab9e8: f9404fa1 ldr x1, [x29,#152] ffff8000113ab9ec: f94002e0 ldr x0, [x23] ffff8000113ab9ec: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ab9f0: eb00003f cmp x1, x0 ffff8000113ab9f4: 540007a1 b.ne ffff8000113abae8 ffff8000113ab9f8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ab9fc: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113aba00: a94363f7 ldp x23, x24, [sp,#48] ffff8000113aba04: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113aba08: f9402bfb ldr x27, [sp,#80] ffff8000113aba0c: a8ca7bfd ldp x29, x30, [sp],#160 ffff8000113aba10: d65f03c0 ret case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113aba14: f90047b5 str x21, [x29,#136] list->prev = list; ffff8000113aba18: f90006b5 str x21, [x21,#8] ffff8000113aba1c: 17ffffd7 b ffff8000113ab978 unsigned long noreclaim_flag = 0; ffff8000113aba20: d2800018 mov x24, #0x0 // #0 bool pfmemalloc = false; /* Is current sublist PF_MEMALLOC? */ ffff8000113aba24: 2a1803f6 mov w22, w24 ffff8000113aba28: 17ffffe4 b ffff8000113ab9b8 return unlikely(skb->pfmemalloc); ffff8000113aba2c: 3941f820 ldrb w0, [x1,#126] if ((sk_memalloc_socks() && skb_pfmemalloc(skb)) != pfmemalloc) { ffff8000113aba30: d3461800 ubfx x0, x0, #6, #1 ffff8000113aba34: 17ffffc5 b ffff8000113ab948 net_timestamp_check(netdev_tstamp_prequeue, skb); ffff8000113aba38: 91000340 add x0, x26, #0x0 ffff8000113aba38: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113aba3c: b9494c00 ldr w0, [x0,#2380] ffff8000113aba40: 34ffef40 cbz w0, ffff8000113ab828 ffff8000113aba44: f94012a0 ldr x0, [x21,#32] ffff8000113aba48: b5ffef00 cbnz x0, ffff8000113ab828 ffff8000113aba4c: 94000000 bl 0 ffff8000113aba4c: R_AARCH64_CALL26 ktime_get_with_offset skb->tstamp = ktime_get_real(); ffff8000113aba50: f90012a0 str x0, [x21,#32] ffff8000113aba54: 17ffff75 b ffff8000113ab828 list_for_each_entry_safe(skb, next, head, list) { ffff8000113aba58: f9400274 ldr x20, [x19] ffff8000113aba5c: 9101c3b8 add x24, x29, #0x70 ffff8000113aba60: eb13029f cmp x20, x19 ffff8000113aba64: f9400295 ldr x21, [x20] ffff8000113aba68: aa1403f6 mov x22, x20 ffff8000113aba6c: 54000081 b.ne ffff8000113aba7c ffff8000113aba70: 17ffffec b ffff8000113aba20 ffff8000113aba74: aa1503f4 mov x20, x21 ffff8000113aba78: aa0003f5 mov x21, x0 struct rps_dev_flow voidflow, *rflow = &voidflow; ffff8000113aba7c: f90047b8 str x24, [x29,#136] int cpu = get_rps_cpu(skb->dev, skb, &rflow); ffff8000113aba80: f9400a80 ldr x0, [x20,#16] ffff8000113aba84: aa1403e1 mov x1, x20 ffff8000113aba88: 910223a2 add x2, x29, #0x88 ffff8000113aba8c: 97ffd37f bl ffff8000113a0888 ffff8000113aba90: 2a0003e1 mov w1, w0 if (cpu >= 0) { ffff8000113aba94: 37f80201 tbnz w1, #31, ffff8000113abad4 if (!__list_del_entry_valid(entry)) ffff8000113aba98: aa1603e0 mov x0, x22 ffff8000113aba9c: f90037a1 str x1, [x29,#104] ffff8000113abaa0: 94000000 bl 0 <__list_del_entry_valid> ffff8000113abaa0: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113abaa4: 53001c00 uxtb w0, w0 ffff8000113abaa8: f94037a1 ldr x1, [x29,#104] ffff8000113abaac: 340000a0 cbz w0, ffff8000113abac0 __list_del(entry->prev, entry->next); ffff8000113abab0: f9400680 ldr x0, [x20,#8] ffff8000113abab4: f9400282 ldr x2, [x20] next->prev = prev; ffff8000113abab8: f9000440 str x0, [x2,#8] ffff8000113ababc: f9000002 str x2, [x0] skb->next = NULL; ffff8000113abac0: f900029f str xzr, [x20] enqueue_to_backlog(skb, cpu, &rflow->last_qtail); ffff8000113abac4: f94047a2 ldr x2, [x29,#136] ffff8000113abac8: aa1403e0 mov x0, x20 ffff8000113abacc: 91001042 add x2, x2, #0x4 ffff8000113abad0: 97ffeac2 bl ffff8000113a65d8 list_for_each_entry_safe(skb, next, head, list) { ffff8000113abad4: eb1302bf cmp x21, x19 ffff8000113abad8: f94002a0 ldr x0, [x21] ffff8000113abadc: aa1503f6 mov x22, x21 ffff8000113abae0: 54fffca1 b.ne ffff8000113aba74 ffff8000113abae4: 17ffff7d b ffff8000113ab8d8 } ffff8000113abae8: 94000000 bl 0 <__stack_chk_fail> ffff8000113abae8: R_AARCH64_CALL26 __stack_chk_fail ffff8000113abaec : { ffff8000113abaec: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113abaf0: 910003fd mov x29, sp ffff8000113abaf4: a90153f3 stp x19, x20, [sp,#16] ffff8000113abaf8: a9025bf5 stp x21, x22, [sp,#32] ffff8000113abafc: a90363f7 stp x23, x24, [sp,#48] ffff8000113abb00: aa0003f5 mov x21, x0 ffff8000113abb04: aa1e03e0 mov x0, x30 ffff8000113abb08: 94000000 bl 0 <_mcount> ffff8000113abb08: R_AARCH64_CALL26 _mcount __READ_ONCE_SIZE; ffff8000113abb0c: f94002a0 ldr x0, [x21] if (list_empty(head)) ffff8000113abb10: eb0002bf cmp x21, x0 ffff8000113abb14: 540001a0 b.eq ffff8000113abb48 ffff8000113abb18: 90000016 adrp x22, 0 <__tracepoint_netif_receive_skb_list_entry> ffff8000113abb18: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_netif_receive_skb_list_entry ffff8000113abb1c: 910002c0 add x0, x22, #0x0 ffff8000113abb1c: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_netif_receive_skb_list_entry ffff8000113abb20: b9400800 ldr w0, [x0,#8] ffff8000113abb24: 6b1f001f cmp w0, wzr ffff8000113abb28: 540001ac b.gt ffff8000113abb5c netif_receive_skb_list_internal(head); ffff8000113abb2c: aa1503e0 mov x0, x21 ffff8000113abb30: 97ffff1c bl ffff8000113ab7a0 ffff8000113abb34: 90000000 adrp x0, 0 <__tracepoint_netif_receive_skb_list_exit> ffff8000113abb34: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_netif_receive_skb_list_exit ffff8000113abb38: 91000000 add x0, x0, #0x0 ffff8000113abb38: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_netif_receive_skb_list_exit ffff8000113abb3c: b9400801 ldr w1, [x0,#8] ffff8000113abb40: 6b1f003f cmp w1, wzr ffff8000113abb44: 5400050c b.gt ffff8000113abbe4 } ffff8000113abb48: a94153f3 ldp x19, x20, [sp,#16] ffff8000113abb4c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113abb50: a94363f7 ldp x23, x24, [sp,#48] ffff8000113abb54: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113abb58: d65f03c0 ret list_for_each_entry(skb, head, list) ffff8000113abb5c: f94002b4 ldr x20, [x21] ffff8000113abb60: eb15029f cmp x20, x21 ffff8000113abb64: 54fffe40 b.eq ffff8000113abb2c DEFINE_EVENT(net_dev_rx_verbose_template, netif_receive_skb_list_entry, ffff8000113abb68: 90000017 adrp x23, 0 ffff8000113abb68: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113abb6c: 90000018 adrp x24, 0 <__cpu_online_mask> ffff8000113abb6c: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113abb70: 910002f7 add x23, x23, #0x0 ffff8000113abb70: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113abb74: 91000318 add x24, x24, #0x0 ffff8000113abb74: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113abb78: 14000004 b ffff8000113abb88 ffff8000113abb7c: f9400294 ldr x20, [x20] ffff8000113abb80: eb15029f cmp x20, x21 ffff8000113abb84: 54fffd40 b.eq ffff8000113abb2c ffff8000113abb88: 910002c1 add x1, x22, #0x0 ffff8000113abb88: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_netif_receive_skb_list_entry ffff8000113abb8c: b9400820 ldr w0, [x1,#8] ffff8000113abb90: 6b1f001f cmp w0, wzr ffff8000113abb94: 54ffff4d b.le ffff8000113abb7c ffff8000113abb98: d538d080 mrs x0, tpidr_el1 ffff8000113abb9c: b8776800 ldr w0, [x0,x23] ffff8000113abba0: 1100fc02 add w2, w0, #0x3f ffff8000113abba4: 6b1f001f cmp w0, wzr ffff8000113abba8: 1a80b042 csel w2, w2, w0, lt ffff8000113abbac: 13067c42 asr w2, w2, #6 ffff8000113abbb0: 937d7c42 sbfiz x2, x2, #3, #32 ffff8000113abbb4: f8786842 ldr x2, [x2,x24] ffff8000113abbb8: 9ac02440 lsr x0, x2, x0 ffff8000113abbbc: 3607fe00 tbz w0, #0, ffff8000113abb7c ffff8000113abbc0: f9401033 ldr x19, [x1,#32] ffff8000113abbc4: b40000f3 cbz x19, ffff8000113abbe0 ffff8000113abbc8: f9400262 ldr x2, [x19] ffff8000113abbcc: f9400660 ldr x0, [x19,#8] ffff8000113abbd0: aa1403e1 mov x1, x20 ffff8000113abbd4: d63f0040 blr x2 ffff8000113abbd8: f8418e62 ldr x2, [x19,#24]! ffff8000113abbdc: b5ffff82 cbnz x2, ffff8000113abbcc ffff8000113abbe0: 17ffffe7 b ffff8000113abb7c TP_PROTO(int ret), TP_ARGS(ret) ); DEFINE_EVENT(net_dev_rx_exit_template, netif_receive_skb_list_exit, ffff8000113abbe4: 90000001 adrp x1, 0 ffff8000113abbe4: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113abbe8: d538d082 mrs x2, tpidr_el1 ffff8000113abbec: 91000021 add x1, x1, #0x0 ffff8000113abbec: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113abbf0: b8616841 ldr w1, [x2,x1] ffff8000113abbf4: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113abbf4: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113abbf8: 1100fc23 add w3, w1, #0x3f ffff8000113abbfc: 6b1f003f cmp w1, wzr ffff8000113abc00: 1a81b063 csel w3, w3, w1, lt ffff8000113abc04: 13067c63 asr w3, w3, #6 ffff8000113abc08: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113abc0c: 91000042 add x2, x2, #0x0 ffff8000113abc0c: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113abc10: f8626862 ldr x2, [x3,x2] ffff8000113abc14: 9ac12441 lsr x1, x2, x1 ffff8000113abc18: 3607f981 tbz w1, #0, ffff8000113abb48 ffff8000113abc1c: f9401013 ldr x19, [x0,#32] ffff8000113abc20: b40000f3 cbz x19, ffff8000113abc3c ffff8000113abc24: f9400262 ldr x2, [x19] ffff8000113abc28: f9400660 ldr x0, [x19,#8] ffff8000113abc2c: 52800001 mov w1, #0x0 // #0 ffff8000113abc30: d63f0040 blr x2 ffff8000113abc34: f8418e62 ldr x2, [x19,#24]! ffff8000113abc38: b5ffff82 cbnz x2, ffff8000113abc28 } ffff8000113abc3c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113abc40: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113abc44: a94363f7 ldp x23, x24, [sp,#48] ffff8000113abc48: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113abc4c: d65f03c0 ret ffff8000113abc50 : static void gro_normal_list(struct napi_struct *napi) ffff8000113abc50: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113abc54: 910003fd mov x29, sp ffff8000113abc58: a90153f3 stp x19, x20, [sp,#16] ffff8000113abc5c: aa0003f4 mov x20, x0 ffff8000113abc60: aa1e03e0 mov x0, x30 netif_receive_skb_list_internal(&napi->rx_list); ffff8000113abc64: 91042293 add x19, x20, #0x108 static void gro_normal_list(struct napi_struct *napi) ffff8000113abc68: 94000000 bl 0 <_mcount> ffff8000113abc68: R_AARCH64_CALL26 _mcount netif_receive_skb_list_internal(&napi->rx_list); ffff8000113abc6c: aa1303e0 mov x0, x19 ffff8000113abc70: 97fffecc bl ffff8000113ab7a0 case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113abc74: f9008693 str x19, [x20,#264] list->prev = list; ffff8000113abc78: f9000673 str x19, [x19,#8] napi->rx_count = 0; ffff8000113abc7c: b9011a9f str wzr, [x20,#280] } ffff8000113abc80: a94153f3 ldp x19, x20, [sp,#16] ffff8000113abc84: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113abc88: d65f03c0 ret ffff8000113abc8c : { ffff8000113abc8c: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113abc90: 910003fd mov x29, sp ffff8000113abc94: a90153f3 stp x19, x20, [sp,#16] ffff8000113abc98: a9025bf5 stp x21, x22, [sp,#32] ffff8000113abc9c: aa0003f4 mov x20, x0 list_add_tail(&skb->list, &napi->rx_list); ffff8000113abca0: 91042015 add x21, x0, #0x108 { ffff8000113abca4: aa1e03e0 mov x0, x30 ffff8000113abca8: aa0103f3 mov x19, x1 ffff8000113abcac: 94000000 bl 0 <_mcount> ffff8000113abcac: R_AARCH64_CALL26 _mcount __list_add(new, head->prev, head); ffff8000113abcb0: f9408a96 ldr x22, [x20,#272] if (!__list_add_valid(new, prev, next)) ffff8000113abcb4: aa1303e0 mov x0, x19 ffff8000113abcb8: aa1603e1 mov x1, x22 ffff8000113abcbc: aa1503e2 mov x2, x21 ffff8000113abcc0: 94000000 bl 0 <__list_add_valid> ffff8000113abcc0: R_AARCH64_CALL26 __list_add_valid ffff8000113abcc4: 53001c00 uxtb w0, w0 ffff8000113abcc8: 340000a0 cbz w0, ffff8000113abcdc next->prev = new; ffff8000113abccc: f9008a93 str x19, [x20,#272] new->next = next; ffff8000113abcd0: f9000275 str x21, [x19] new->prev = prev; ffff8000113abcd4: f9000676 str x22, [x19,#8] ffff8000113abcd8: f90002d3 str x19, [x22] if (++napi->rx_count >= gro_normal_batch) ffff8000113abcdc: b9411a80 ldr w0, [x20,#280] ffff8000113abce0: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113abce0: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly+0x958 ffff8000113abce4: b9400021 ldr w1, [x1] ffff8000113abce4: R_AARCH64_LDST32_ABS_LO12_NC .data..read_mostly+0x958 ffff8000113abce8: 11000400 add w0, w0, #0x1 ffff8000113abcec: b9011a80 str w0, [x20,#280] ffff8000113abcf0: 6b01001f cmp w0, w1 ffff8000113abcf4: 5400004b b.lt ffff8000113abcfc if (!napi->rx_count) ffff8000113abcf8: 350000a0 cbnz w0, ffff8000113abd0c } ffff8000113abcfc: a94153f3 ldp x19, x20, [sp,#16] ffff8000113abd00: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113abd04: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113abd08: d65f03c0 ret ffff8000113abd0c: aa1403e0 mov x0, x20 ffff8000113abd10: 97ffffd0 bl ffff8000113abc50 ffff8000113abd14: a94153f3 ldp x19, x20, [sp,#16] ffff8000113abd18: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113abd1c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113abd20: d65f03c0 ret ffff8000113abd24 : static int napi_gro_complete(struct napi_struct *napi, struct sk_buff *skb) ffff8000113abd24: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113abd28: 910003fd mov x29, sp ffff8000113abd2c: a90153f3 stp x19, x20, [sp,#16] ffff8000113abd30: a9025bf5 stp x21, x22, [sp,#32] ffff8000113abd34: aa0003f5 mov x21, x0 ffff8000113abd38: aa1e03e0 mov x0, x30 ffff8000113abd3c: aa0103f3 mov x19, x1 ffff8000113abd40: 94000000 bl 0 <_mcount> ffff8000113abd40: R_AARCH64_CALL26 _mcount if (NAPI_GRO_CB(skb)->count == 1) { ffff8000113abd44: 79407a61 ldrh w1, [x19,#60] __be16 type = skb->protocol; ffff8000113abd48: 79416263 ldrh w3, [x19,#176] if (NAPI_GRO_CB(skb)->count == 1) { ffff8000113abd4c: 7100043f cmp w1, #0x1 ffff8000113abd50: 54000580 b.eq ffff8000113abe00 __READ_ONCE_SIZE; ffff8000113abd54: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113abd54: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113abd58: 910002c4 add x4, x22, #0x0 ffff8000113abd58: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113abd5c: f9440882 ldr x2, [x4,#2064] ffff8000113abd60: 91204084 add x4, x4, #0x810 list_for_each_entry_rcu(ptype, head, list) { ffff8000113abd64: eb04005f cmp x2, x4 ffff8000113abd68: aa0203f4 mov x20, x2 ffff8000113abd6c: d1008042 sub x2, x2, #0x20 ffff8000113abd70: 54000120 b.eq ffff8000113abd94 if (ptype->type != type || !ptype->callbacks.gro_complete) ffff8000113abd74: 79400041 ldrh w1, [x2] ffff8000113abd78: 6b03003f cmp w1, w3 ffff8000113abd7c: 54000260 b.eq ffff8000113abdc8 ffff8000113abd80: f9401042 ldr x2, [x2,#32] list_for_each_entry_rcu(ptype, head, list) { ffff8000113abd84: eb04005f cmp x2, x4 ffff8000113abd88: aa0203f4 mov x20, x2 ffff8000113abd8c: d1008042 sub x2, x2, #0x20 ffff8000113abd90: 54ffff21 b.ne ffff8000113abd74 int err = -ENOENT; ffff8000113abd94: 12800020 mov w0, #0xfffffffe // #-2 if (err) { ffff8000113abd98: 34000240 cbz w0, ffff8000113abde0 WARN_ON(&ptype->list == head); ffff8000113abd9c: 910002d6 add x22, x22, #0x0 ffff8000113abd9c: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113abda0: 912042d6 add x22, x22, #0x810 ffff8000113abda4: eb16029f cmp x20, x22 ffff8000113abda8: 540003c0 b.eq ffff8000113abe20 kfree_skb(skb); ffff8000113abdac: aa1303e0 mov x0, x19 ffff8000113abdb0: 94000000 bl 0 ffff8000113abdb0: R_AARCH64_CALL26 kfree_skb } ffff8000113abdb4: 52800000 mov w0, #0x0 // #0 ffff8000113abdb8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113abdbc: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113abdc0: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113abdc4: d65f03c0 ret if (ptype->type != type || !ptype->callbacks.gro_complete) ffff8000113abdc8: f9400c45 ldr x5, [x2,#24] ffff8000113abdcc: b4fffda5 cbz x5, ffff8000113abd80 err = INDIRECT_CALL_INET(ptype->callbacks.gro_complete, ffff8000113abdd0: aa1303e0 mov x0, x19 ffff8000113abdd4: 52800001 mov w1, #0x0 // #0 ffff8000113abdd8: d63f00a0 blr x5 if (err) { ffff8000113abddc: 35fffe00 cbnz w0, ffff8000113abd9c gro_normal_one(napi, skb); ffff8000113abde0: aa1503e0 mov x0, x21 ffff8000113abde4: aa1303e1 mov x1, x19 ffff8000113abde8: 97ffffa9 bl ffff8000113abc8c } ffff8000113abdec: 52800000 mov w0, #0x0 // #0 ffff8000113abdf0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113abdf4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113abdf8: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113abdfc: d65f03c0 ret skb_shinfo(skb)->gso_size = 0; ffff8000113abe00: f9406261 ldr x1, [x19,#192] return skb->head + skb->end; ffff8000113abe04: b940be60 ldr w0, [x19,#188] ffff8000113abe08: 8b000020 add x0, x1, x0 ffff8000113abe0c: 7900081f strh wzr, [x0,#4] gro_normal_one(napi, skb); ffff8000113abe10: aa1303e1 mov x1, x19 ffff8000113abe14: aa1503e0 mov x0, x21 ffff8000113abe18: 97ffff9d bl ffff8000113abc8c ffff8000113abe1c: 17fffff4 b ffff8000113abdec WARN_ON(&ptype->list == head); ffff8000113abe20: d4210000 brk #0x800 ffff8000113abe24: 17ffffe2 b ffff8000113abdac ffff8000113abe28 : { ffff8000113abe28: a9b87bfd stp x29, x30, [sp,#-128]! ffff8000113abe2c: 910003fd mov x29, sp ffff8000113abe30: a90153f3 stp x19, x20, [sp,#16] ffff8000113abe34: a9025bf5 stp x21, x22, [sp,#32] ffff8000113abe38: a90363f7 stp x23, x24, [sp,#48] ffff8000113abe3c: a9046bf9 stp x25, x26, [sp,#64] ffff8000113abe40: a90573fb stp x27, x28, [sp,#80] ffff8000113abe44: aa0003f6 mov x22, x0 ffff8000113abe48: aa1e03e0 mov x0, x30 ffff8000113abe4c: aa0103f5 mov x21, x1 ffff8000113abe50: 94000000 bl 0 <_mcount> ffff8000113abe50: R_AARCH64_CALL26 _mcount if (netif_elide_gro(skb->dev)) ffff8000113abe54: f9400aa0 ldr x0, [x21,#16] static enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb) ffff8000113abe58: b94096ba ldr w26, [x21,#148] if (!(dev->features & NETIF_F_GRO) || dev->xdp_prog) ffff8000113abe5c: f9406401 ldr x1, [x0,#200] u32 hash = skb_get_hash_raw(skb) & (GRO_HASH_BUCKETS - 1); ffff8000113abe60: 12000b59 and w25, w26, #0x7 __be16 type = skb->protocol; ffff8000113abe64: 794162b7 ldrh w23, [x21,#176] ffff8000113abe68: 36700061 tbz w1, #14, ffff8000113abe74 ffff8000113abe6c: f9419801 ldr x1, [x0,#816] ffff8000113abe70: b4000621 cbz x1, ffff8000113abf34 ffff8000113abe74: 9100a2b3 add x19, x21, #0x28 ffff8000113abe78: 2a1903f8 mov w24, w25 ret = GRO_NORMAL; ffff8000113abe7c: 52800074 mov w20, #0x3 // #3 return skb->len - skb->data_len; ffff8000113abe80: b94072a2 ldr w2, [x21,#112] ffff8000113abe84: b94076a1 ldr w1, [x21,#116] grow = skb_gro_offset(skb) - skb_headlen(skb); ffff8000113abe88: b9400e60 ldr w0, [x19,#12] ffff8000113abe8c: 4b010041 sub w1, w2, w1 ffff8000113abe90: 4b010001 sub w1, w0, w1 if (grow > 0) ffff8000113abe94: 6b1f003f cmp w1, wzr ffff8000113abe98: 5400006d b.le ffff8000113abea4 gro_pull_from_frag0(skb, grow); ffff8000113abe9c: aa1503e0 mov x0, x21 ffff8000113abea0: 97ffd3d9 bl ffff8000113a0e04 if (napi->gro_hash[hash].count) { ffff8000113abea4: 8b180707 add x7, x24, x24, lsl #1 ffff8000113abea8: 8b070ec7 add x7, x22, x7, lsl #3 ffff8000113abeac: b94050e0 ldr w0, [x7,#80] ffff8000113abeb0: 34000220 cbz w0, ffff8000113abef4 ffff8000113abeb4: f94012c0 ldr x0, [x22,#32] ffff8000113abeb8: 9ad92400 lsr x0, x0, x25 if (!test_bit(hash, &napi->gro_bitmask)) ffff8000113abebc: 370000c0 tbnz w0, #0, ffff8000113abed4 *p |= mask; ffff8000113abec0: f94012c0 ldr x0, [x22,#32] unsigned long mask = BIT_MASK(nr); ffff8000113abec4: d2800021 mov x1, #0x1 // #1 ffff8000113abec8: 9ad92026 lsl x6, x1, x25 *p |= mask; ffff8000113abecc: aa060006 orr x6, x0, x6 ffff8000113abed0: f90012c6 str x6, [x22,#32] } ffff8000113abed4: 2a1403e0 mov w0, w20 ffff8000113abed8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113abedc: a94153f3 ldp x19, x20, [sp,#16] ffff8000113abee0: a94363f7 ldp x23, x24, [sp,#48] ffff8000113abee4: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113abee8: a94573fb ldp x27, x28, [sp,#80] ffff8000113abeec: a8c87bfd ldp x29, x30, [sp],#128 ffff8000113abef0: d65f03c0 ret return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ffff8000113abef4: f94012c0 ldr x0, [x22,#32] ffff8000113abef8: 9ad92400 lsr x0, x0, x25 } else if (test_bit(hash, &napi->gro_bitmask)) { ffff8000113abefc: 3607fec0 tbz w0, #0, ffff8000113abed4 *p &= ~mask; ffff8000113abf00: f94012c0 ldr x0, [x22,#32] unsigned long mask = BIT_MASK(nr); ffff8000113abf04: d2800021 mov x1, #0x1 // #1 ffff8000113abf08: 9ad92026 lsl x6, x1, x25 *p &= ~mask; ffff8000113abf0c: 8a260006 bic x6, x0, x6 ffff8000113abf10: f90012c6 str x6, [x22,#32] } ffff8000113abf14: 2a1403e0 mov w0, w20 ffff8000113abf18: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113abf1c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113abf20: a94363f7 ldp x23, x24, [sp,#48] ffff8000113abf24: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113abf28: a94573fb ldp x27, x28, [sp,#80] ffff8000113abf2c: a8c87bfd ldp x29, x30, [sp],#128 ffff8000113abf30: d65f03c0 ret head = &napi->gro_hash[hash & (GRO_HASH_BUCKETS - 1)].list; ffff8000113abf34: 2a1903f8 mov w24, w25 ffff8000113abf38: 8b180701 add x1, x24, x24, lsl #1 ffff8000113abf3c: d37df021 lsl x1, x1, #3 ffff8000113abf40: 91010021 add x1, x1, #0x40 list_for_each_entry(p, head, list) { ffff8000113abf44: f8616ad3 ldr x19, [x22,x1] head = &napi->gro_hash[hash & (GRO_HASH_BUCKETS - 1)].list; ffff8000113abf48: 8b0102db add x27, x22, x1 ffff8000113abf4c: f9003ba1 str x1, [x29,#112] list_for_each_entry(p, head, list) { ffff8000113abf50: eb13037f cmp x27, x19 unsigned int maclen = skb->dev->hard_header_len; ffff8000113abf54: 79448c06 ldrh w6, [x0,#582] list_for_each_entry(p, head, list) { ffff8000113abf58: 54000a60 b.eq ffff8000113ac0a4 diffs = memcmp(skb_mac_header(p), ffff8000113abf5c: 53003cc7 uxth w7, w6 ffff8000113abf60: f9003fa7 str x7, [x29,#120] ffff8000113abf64: 14000007 b ffff8000113abf80 NAPI_GRO_CB(p)->same_flow = 0; ffff8000113abf68: 39408a83 ldrb w3, [x20,#34] ffff8000113abf6c: 121f7863 and w3, w3, #0xfffffffe ffff8000113abf70: 39008a83 strb w3, [x20,#34] list_for_each_entry(p, head, list) { ffff8000113abf74: f9400273 ldr x19, [x19] ffff8000113abf78: eb13037f cmp x27, x19 ffff8000113abf7c: 54000940 b.eq ffff8000113ac0a4 NAPI_GRO_CB(p)->flush = 0; ffff8000113abf80: 9100a274 add x20, x19, #0x28 ffff8000113abf84: 7900229f strh wzr, [x20,#16] if (hash != skb_get_hash_raw(p)) { ffff8000113abf88: b9409663 ldr w3, [x19,#148] ffff8000113abf8c: 6b03035f cmp w26, w3 ffff8000113abf90: 54fffec1 b.ne ffff8000113abf68 diffs |= skb_vlan_tag_present(p) ^ skb_vlan_tag_present(skb); ffff8000113abf94: 39420a60 ldrb w0, [x19,#130] ffff8000113abf98: 39420abc ldrb w28, [x21,#130] diffs = (unsigned long)p->dev ^ (unsigned long)skb->dev; ffff8000113abf9c: f9400aa2 ldr x2, [x21,#16] ffff8000113abfa0: f9400a61 ldr x1, [x19,#16] diffs |= skb_vlan_tag_present(p) ^ skb_vlan_tag_present(skb); ffff8000113abfa4: 12000000 and w0, w0, #0x1 ffff8000113abfa8: ca00039c eor x28, x28, x0 diffs = (unsigned long)p->dev ^ (unsigned long)skb->dev; ffff8000113abfac: ca010041 eor x1, x2, x1 diffs |= skb_vlan_tag_present(p) ^ skb_vlan_tag_present(skb); ffff8000113abfb0: 9240039c and x28, x28, #0x1 ffff8000113abfb4: aa01039c orr x28, x28, x1 if (skb_vlan_tag_present(p)) ffff8000113abfb8: 340000c0 cbz w0, ffff8000113abfd0 diffs |= skb_vlan_tag_get(p) ^ skb_vlan_tag_get(skb); ffff8000113abfbc: 794136a1 ldrh w1, [x21,#154] ffff8000113abfc0: 79413660 ldrh w0, [x19,#154] ffff8000113abfc4: 4a000020 eor w0, w1, w0 ffff8000113abfc8: 53003c00 uxth w0, w0 ffff8000113abfcc: aa00039c orr x28, x28, x0 struct sk_buff *p; ffff8000113abfd0: f9402e60 ldr x0, [x19,#88] struct sk_buff *skb) ffff8000113abfd4: f9402ea1 ldr x1, [x21,#88] if (!(skb_a->_skb_refdst | skb_b->_skb_refdst)) ffff8000113abfd8: aa010002 orr x2, x0, x1 ffff8000113abfdc: b40001c2 cbz x2, ffff8000113ac014 return (struct dst_entry *)(skb->_skb_refdst & SKB_DST_PTRMASK); ffff8000113abfe0: 927ff800 and x0, x0, #0xfffffffffffffffe if (!a != !b || a->type != b->type) ffff8000113abfe4: eb1f001f cmp x0, xzr ffff8000113abfe8: 927ff821 and x1, x1, #0xfffffffffffffffe ffff8000113abfec: 1a9f17e3 cset w3, eq ffff8000113abff0: eb1f003f cmp x1, xzr ffff8000113abff4: 1a9f17e2 cset w2, eq ffff8000113abff8: 6b02007f cmp w3, w2 ffff8000113abffc: d2800022 mov x2, #0x1 // #1 ffff8000113ac000: 540000a1 b.ne ffff8000113ac014 ffff8000113ac004: b9407003 ldr w3, [x0,#112] ffff8000113ac008: b9407024 ldr w4, [x1,#112] ffff8000113ac00c: 6b04007f cmp w3, w4 ffff8000113ac010: 54001500 b.eq ffff8000113ac2b0 static inline u8 skb_metadata_len(const struct sk_buff *skb) ffff8000113ac014: f9406260 ldr x0, [x19,#192] return skb->head + skb->end; ffff8000113ac018: b940be63 ldr w3, [x19,#188] static inline u8 skb_metadata_len(const struct sk_buff *skb) ffff8000113ac01c: f94062a1 ldr x1, [x21,#192] return skb->head + skb->end; ffff8000113ac020: b940bea4 ldr w4, [x21,#188] return skb_shinfo(skb)->meta_len; ffff8000113ac024: 8b030003 add x3, x0, x3 ffff8000113ac028: 8b040024 add x4, x1, x4 ffff8000113ac02c: 39400485 ldrb w5, [x4,#1] ffff8000113ac030: 39400463 ldrb w3, [x3,#1] diffs |= skb_metadata_dst_cmp(p, skb); ffff8000113ac034: aa1c0042 orr x2, x2, x28 if (!(len_a | len_b)) ffff8000113ac038: 2a0300aa orr w10, w5, w3 ffff8000113ac03c: d2800004 mov x4, #0x0 // #0 ffff8000113ac040: 3400008a cbz w10, ffff8000113ac050 true : __skb_metadata_differs(skb_a, skb_b, len_a); ffff8000113ac044: 6b05007f cmp w3, w5 ffff8000113ac048: d2800024 mov x4, #0x1 // #1 ffff8000113ac04c: 540006a0 b.eq ffff8000113ac120 if (maclen == ETH_HLEN) ffff8000113ac050: 710038df cmp w6, #0xe diffs |= skb_metadata_differs(p, skb); ffff8000113ac054: aa040042 orr x2, x2, x4 if (maclen == ETH_HLEN) ffff8000113ac058: 540004a0 b.eq ffff8000113ac0ec else if (!diffs) ffff8000113ac05c: b5000142 cbnz x2, ffff8000113ac084 return skb->head + skb->mac_header; ffff8000113ac060: 79416ea2 ldrh w2, [x21,#182] ffff8000113ac064: 79416e63 ldrh w3, [x19,#182] return __builtin_memcmp(p, q, size); ffff8000113ac068: 8b020021 add x1, x1, x2 ffff8000113ac06c: f9403fa2 ldr x2, [x29,#120] ffff8000113ac070: 8b030000 add x0, x0, x3 ffff8000113ac074: f90037a6 str x6, [x29,#104] ffff8000113ac078: 94000000 bl 0 ffff8000113ac078: R_AARCH64_CALL26 memcmp diffs = memcmp(skb_mac_header(p), ffff8000113ac07c: f94037a6 ldr x6, [x29,#104] ffff8000113ac080: 93407c02 sxtw x2, w0 NAPI_GRO_CB(p)->same_flow = !diffs; ffff8000113ac084: 39408a80 ldrb w0, [x20,#34] ffff8000113ac088: eb1f005f cmp x2, xzr ffff8000113ac08c: 1a9f17e1 cset w1, eq ffff8000113ac090: 33000020 bfxil w0, w1, #0, #1 ffff8000113ac094: 39008a80 strb w0, [x20,#34] list_for_each_entry(p, head, list) { ffff8000113ac098: f9400273 ldr x19, [x19] ffff8000113ac09c: eb13037f cmp x27, x19 ffff8000113ac0a0: 54fff701 b.ne ffff8000113abf80 ffff8000113ac0a4: 9000001a adrp x26, ffff80001139e37c <__my_cpu_offset> ffff8000113ac0a4: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113ac0a8: 91000342 add x2, x26, #0x0 ffff8000113ac0a8: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113ac0ac: f9440840 ldr x0, [x2,#2064] ffff8000113ac0b0: 91204042 add x2, x2, #0x810 list_for_each_entry_rcu(ptype, head, list) { ffff8000113ac0b4: eb02001f cmp x0, x2 ffff8000113ac0b8: aa0003f4 mov x20, x0 ffff8000113ac0bc: d1008000 sub x0, x0, #0x20 ffff8000113ac0c0: 54000120 b.eq ffff8000113ac0e4 if (ptype->type != type || !ptype->callbacks.gro_receive) ffff8000113ac0c4: 79400001 ldrh w1, [x0] ffff8000113ac0c8: 6b17003f cmp w1, w23 ffff8000113ac0cc: 54000480 b.eq ffff8000113ac15c ffff8000113ac0d0: f9401000 ldr x0, [x0,#32] list_for_each_entry_rcu(ptype, head, list) { ffff8000113ac0d4: eb02001f cmp x0, x2 ffff8000113ac0d8: aa0003f4 mov x20, x0 ffff8000113ac0dc: d1008000 sub x0, x0, #0x20 ffff8000113ac0e0: 54ffff21 b.ne ffff8000113ac0c4 struct sk_buff *pp = NULL; ffff8000113ac0e4: d2800001 mov x1, #0x0 // #0 ffff8000113ac0e8: 1400004f b ffff8000113ac224 ffff8000113ac0ec: 79416ea3 ldrh w3, [x21,#182] ffff8000113ac0f0: 79416e64 ldrh w4, [x19,#182] ffff8000113ac0f4: 8b030025 add x5, x1, x3 ffff8000113ac0f8: 8b04000a add x10, x0, x4 * Use two long XOR, ORed together, with an overlap of two bytes. * [a0 a1 a2 a3 a4 a5 a6 a7 ] ^ [b0 b1 b2 b3 b4 b5 b6 b7 ] | * [a6 a7 a8 a9 a10 a11 a12 a13] ^ [b6 b7 b8 b9 b10 b11 b12 b13] * This means the [a6 a7] ^ [b6 b7] part is done two times. */ fold = *(unsigned long *)a ^ *(unsigned long *)b; ffff8000113ac0fc: f8636821 ldr x1, [x1,x3] ffff8000113ac100: f8646804 ldr x4, [x0,x4] fold |= *(unsigned long *)(a + 6) ^ *(unsigned long *)(b + 6); ffff8000113ac104: f84060a3 ldur x3, [x5,#6] ffff8000113ac108: f8406140 ldur x0, [x10,#6] fold = *(unsigned long *)a ^ *(unsigned long *)b; ffff8000113ac10c: ca010081 eor x1, x4, x1 fold |= *(unsigned long *)(a + 6) ^ *(unsigned long *)(b + 6); ffff8000113ac110: ca030000 eor x0, x0, x3 ffff8000113ac114: aa010000 orr x0, x0, x1 diffs |= compare_ether_header(skb_mac_header(p), ffff8000113ac118: aa000042 orr x2, x2, x0 ffff8000113ac11c: 17ffffda b ffff8000113ac084 ffff8000113ac120: 79416e64 ldrh w4, [x19,#182] ffff8000113ac124: 79416ea5 ldrh w5, [x21,#182] switch (meta_len) { ffff8000113ac128: 51001063 sub w3, w3, #0x4 ffff8000113ac12c: 7100707f cmp w3, #0x1c return skb->head + skb->mac_header; ffff8000113ac130: 8b040004 add x4, x0, x4 ffff8000113ac134: 8b050025 add x5, x1, x5 switch (meta_len) { ffff8000113ac138: 54000069 b.ls ffff8000113ac144 ffff8000113ac13c: d2800004 mov x4, #0x0 // #0 ffff8000113ac140: 17ffffc4 b ffff8000113ac050 ffff8000113ac144: 90000007 adrp x7, ffff80001139e37c <__my_cpu_offset> ffff8000113ac144: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x38 ffff8000113ac148: 910000e7 add x7, x7, #0x0 ffff8000113ac148: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x38 ffff8000113ac14c: 786358e7 ldrh w7, [x7,w3,uxtw #1] ffff8000113ac150: 10000068 adr x8, ffff8000113ac15c ffff8000113ac154: 8b27a907 add x7, x8, w7, sxth #2 ffff8000113ac158: d61f00e0 br x7 if (ptype->type != type || !ptype->callbacks.gro_receive) ffff8000113ac15c: f9400801 ldr x1, [x0,#16] ffff8000113ac160: b4fffb81 cbz x1, ffff8000113ac0d0 skb->network_header = skb->data - skb->head; ffff8000113ac164: f94062a1 ldr x1, [x21,#192] return NAPI_GRO_CB(skb)->data_offset; ffff8000113ac168: 9100a2b3 add x19, x21, #0x28 ffff8000113ac16c: f94066a2 ldr x2, [x21,#200] skb->network_header += offset; ffff8000113ac170: b9400e64 ldr w4, [x19,#12] skb->network_header = skb->data - skb->head; ffff8000113ac174: cb010042 sub x2, x2, x1 skb->mac_len = skb->network_header - skb->mac_header; ffff8000113ac178: 79416ea3 ldrh w3, [x21,#182] skb->network_header += offset; ffff8000113ac17c: 0b020082 add w2, w4, w2 ffff8000113ac180: 53003c42 uxth w2, w2 skb->mac_len = skb->network_header - skb->mac_header; ffff8000113ac184: 4b030043 sub w3, w2, w3 ffff8000113ac188: 7900f2a3 strh w3, [x21,#120] skb->network_header += offset; ffff8000113ac18c: 79016aa2 strh w2, [x21,#180] NAPI_GRO_CB(skb)->same_flow = 0; ffff8000113ac190: 39408a62 ldrb w2, [x19,#34] ffff8000113ac194: 52800023 mov w3, #0x1 // #1 ffff8000113ac198: 121f7842 and w2, w2, #0xfffffffe ffff8000113ac19c: 39008a62 strb w2, [x19,#34] return skb->head + skb->end; ffff8000113ac1a0: b940bea2 ldr w2, [x21,#188] ffff8000113ac1a4: 8b020021 add x1, x1, x2 NAPI_GRO_CB(skb)->flush = skb_is_gso(skb) || skb_has_frag_list(skb); ffff8000113ac1a8: 79400822 ldrh w2, [x1,#4] ffff8000113ac1ac: 35000082 cbnz w2, ffff8000113ac1bc ffff8000113ac1b0: f9400421 ldr x1, [x1,#8] ffff8000113ac1b4: eb1f003f cmp x1, xzr ffff8000113ac1b8: 1a9f07e3 cset w3, ne NAPI_GRO_CB(skb)->free = 0; ffff8000113ac1bc: 39408a64 ldrb w4, [x19,#34] NAPI_GRO_CB(skb)->recursion_counter = 0; ffff8000113ac1c0: 39408e61 ldrb w1, [x19,#35] NAPI_GRO_CB(skb)->free = 0; ffff8000113ac1c4: 12001484 and w4, w4, #0x3f NAPI_GRO_CB(skb)->is_fou = 0; ffff8000113ac1c8: 12196421 and w1, w1, #0xffffff81 NAPI_GRO_CB(skb)->is_atomic = 1; ffff8000113ac1cc: 321e0021 orr w1, w1, #0x4 NAPI_GRO_CB(skb)->encap_mark = 0; ffff8000113ac1d0: 121e7882 and w2, w4, #0xfffffffd NAPI_GRO_CB(skb)->flush = skb_is_gso(skb) || skb_has_frag_list(skb); ffff8000113ac1d4: 79002263 strh w3, [x19,#16] NAPI_GRO_CB(skb)->encap_mark = 0; ffff8000113ac1d8: 39008a62 strb w2, [x19,#34] NAPI_GRO_CB(skb)->is_atomic = 1; ffff8000113ac1dc: 39008e61 strb w1, [x19,#35] NAPI_GRO_CB(skb)->gro_remcsum_start = 0; ffff8000113ac1e0: 79002e7f strh wzr, [x19,#22] switch (skb->ip_summed) { ffff8000113ac1e4: 394202a1 ldrb w1, [x21,#128] ffff8000113ac1e8: d3451821 ubfx x1, x1, #5, #2 ffff8000113ac1ec: 7100043f cmp w1, #0x1 ffff8000113ac1f0: 540008e0 b.eq ffff8000113ac30c ffff8000113ac1f4: 7100083f cmp w1, #0x2 ffff8000113ac1f8: 54000721 b.ne ffff8000113ac2dc NAPI_GRO_CB(skb)->csum = skb->csum; ffff8000113ac1fc: b9408aa1 ldr w1, [x21,#136] NAPI_GRO_CB(skb)->csum_valid = 1; ffff8000113ac200: 321e0042 orr w2, w2, #0x4 NAPI_GRO_CB(skb)->csum_cnt = 0; ffff8000113ac204: 121a7042 and w2, w2, #0xffffffc7 NAPI_GRO_CB(skb)->csum = skb->csum; ffff8000113ac208: b9002661 str w1, [x19,#36] NAPI_GRO_CB(skb)->csum_cnt = 0; ffff8000113ac20c: 39008a62 strb w2, [x19,#34] pp = INDIRECT_CALL_INET(ptype->callbacks.gro_receive, ffff8000113ac210: f9400802 ldr x2, [x0,#16] ffff8000113ac214: aa1503e1 mov x1, x21 ffff8000113ac218: aa1b03e0 mov x0, x27 ffff8000113ac21c: d63f0040 blr x2 ffff8000113ac220: aa0003e1 mov x1, x0 if (&ptype->list == head) ffff8000113ac224: 91000357 add x23, x26, #0x0 ffff8000113ac224: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113ac228: 912042f7 add x23, x23, #0x810 ffff8000113ac22c: eb17029f cmp x20, x23 ffff8000113ac230: 9100a2b3 add x19, x21, #0x28 ffff8000113ac234: 54ffe240 b.eq ffff8000113abe7c if (PTR_ERR(pp) == -EINPROGRESS) { ffff8000113ac238: b101cc3f cmn x1, #0x73 ret = GRO_CONSUMED; ffff8000113ac23c: 528000b4 mov w20, #0x5 // #5 if (PTR_ERR(pp) == -EINPROGRESS) { ffff8000113ac240: 54ffe320 b.eq ffff8000113abea4 same_flow = NAPI_GRO_CB(skb)->same_flow; ffff8000113ac244: 9100a2b3 add x19, x21, #0x28 ffff8000113ac248: 39408a60 ldrb w0, [x19,#34] ffff8000113ac24c: 12000014 and w20, w0, #0x1 ret = NAPI_GRO_CB(skb)->free ? GRO_MERGED_FREE : GRO_MERGED; ffff8000113ac250: d3461c17 ubfx x23, x0, #6, #2 if (pp) { ffff8000113ac254: b4000261 cbz x1, ffff8000113ac2a0 if (!__list_del_entry_valid(entry)) ffff8000113ac258: aa0103e0 mov x0, x1 ffff8000113ac25c: f90037a1 str x1, [x29,#104] ffff8000113ac260: 94000000 bl 0 <__list_del_entry_valid> ffff8000113ac260: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113ac264: 53001c00 uxtb w0, w0 ffff8000113ac268: f94037a1 ldr x1, [x29,#104] ffff8000113ac26c: 340000a0 cbz w0, ffff8000113ac280 __list_del(entry->prev, entry->next); ffff8000113ac270: f9400420 ldr x0, [x1,#8] ffff8000113ac274: f9400022 ldr x2, [x1] next->prev = prev; ffff8000113ac278: f9000440 str x0, [x2,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113ac27c: f9000002 str x2, [x0] skb->next = NULL; ffff8000113ac280: f900003f str xzr, [x1] napi_gro_complete(napi, pp); ffff8000113ac284: aa1603e0 mov x0, x22 ffff8000113ac288: 97fffea7 bl ffff8000113abd24 napi->gro_hash[hash].count--; ffff8000113ac28c: 8b180700 add x0, x24, x24, lsl #1 ffff8000113ac290: 8b000ec0 add x0, x22, x0, lsl #3 ffff8000113ac294: b9405001 ldr w1, [x0,#80] ffff8000113ac298: 51000421 sub w1, w1, #0x1 ffff8000113ac29c: b9005001 str w1, [x0,#80] if (same_flow) ffff8000113ac2a0: 34000454 cbz w20, ffff8000113ac328 ret = NAPI_GRO_CB(skb)->free ? GRO_MERGED_FREE : GRO_MERGED; ffff8000113ac2a4: 6b1f02ff cmp w23, wzr ffff8000113ac2a8: 1a9f07f4 cset w20, ne ffff8000113ac2ac: 17fffefe b ffff8000113abea4 switch (a->type) { ffff8000113ac2b0: 340001c3 cbz w3, ffff8000113ac2e8 ffff8000113ac2b4: 7100047f cmp w3, #0x1 ffff8000113ac2b8: 54ffeae1 b.ne ffff8000113ac014 ffff8000113ac2bc: d2800202 mov x2, #0x10 // #16 ffff8000113ac2c0: 9101e000 add x0, x0, #0x78 ffff8000113ac2c4: 9101e021 add x1, x1, #0x78 ffff8000113ac2c8: f90037a6 str x6, [x29,#104] ffff8000113ac2cc: 94000000 bl 0 ffff8000113ac2cc: R_AARCH64_CALL26 memcmp ffff8000113ac2d0: 93407c02 sxtw x2, w0 ffff8000113ac2d4: f94037a6 ldr x6, [x29,#104] ffff8000113ac2d8: 17ffff4f b ffff8000113ac014 NAPI_GRO_CB(skb)->csum_valid = 0; ffff8000113ac2dc: 121a6884 and w4, w4, #0xffffffc1 ffff8000113ac2e0: 39008a64 strb w4, [x19,#34] ffff8000113ac2e4: 17ffffcb b ffff8000113ac210 return memcmp(&a->u.tun_info, &b->u.tun_info, ffff8000113ac2e8: 39430002 ldrb w2, [x0,#192] ffff8000113ac2ec: 9101e021 add x1, x1, #0x78 ffff8000113ac2f0: 91014042 add x2, x2, #0x50 ffff8000113ac2f4: 9101e000 add x0, x0, #0x78 ffff8000113ac2f8: f90037a6 str x6, [x29,#104] ffff8000113ac2fc: 94000000 bl 0 ffff8000113ac2fc: R_AARCH64_CALL26 memcmp ffff8000113ac300: 93407c02 sxtw x2, w0 ffff8000113ac304: f94037a6 ldr x6, [x29,#104] ffff8000113ac308: 17ffff43 b ffff8000113ac014 NAPI_GRO_CB(skb)->csum_cnt = skb->csum_level + 1; ffff8000113ac30c: 39420aa1 ldrb w1, [x21,#130] ffff8000113ac310: d3420c21 ubfx x1, x1, #2, #2 ffff8000113ac314: 11000421 add w1, w1, #0x1 ffff8000113ac318: 331d0822 bfi w2, w1, #3, #3 NAPI_GRO_CB(skb)->csum_valid = 0; ffff8000113ac31c: 121d7842 and w2, w2, #0xfffffffb ffff8000113ac320: 39008a62 strb w2, [x19,#34] break; ffff8000113ac324: 17ffffbb b ffff8000113ac210 if (NAPI_GRO_CB(skb)->flush) ffff8000113ac328: 79402260 ldrh w0, [x19,#16] ffff8000113ac32c: 35ffda80 cbnz w0, ffff8000113abe7c if (unlikely(napi->gro_hash[hash].count >= MAX_GRO_SKBS)) { ffff8000113ac330: 8b180700 add x0, x24, x24, lsl #1 ffff8000113ac334: 8b000ec0 add x0, x22, x0, lsl #3 ffff8000113ac338: b9405001 ldr w1, [x0,#80] ffff8000113ac33c: 71001c3f cmp w1, #0x7 ffff8000113ac340: 54000b2c b.gt ffff8000113ac4a4 napi->gro_hash[hash].count++; ffff8000113ac344: 11000421 add w1, w1, #0x1 ffff8000113ac348: b9005001 str w1, [x0,#80] NAPI_GRO_CB(skb)->age = jiffies; ffff8000113ac34c: 90000000 adrp x0, 0 ffff8000113ac34c: R_AARCH64_ADR_PREL_PG_HI21 jiffies ffff8000113ac350: f9400000 ldr x0, [x0] ffff8000113ac350: R_AARCH64_LDST64_ABS_LO12_NC jiffies NAPI_GRO_CB(skb)->count = 1; ffff8000113ac354: 52800021 mov w1, #0x1 // #1 ffff8000113ac358: 79002a61 strh w1, [x19,#20] NAPI_GRO_CB(skb)->age = jiffies; ffff8000113ac35c: f9000e60 str x0, [x19,#24] NAPI_GRO_CB(skb)->last = skb; ffff8000113ac360: f9001675 str x21, [x19,#40] return skb->len - NAPI_GRO_CB(skb)->data_offset; ffff8000113ac364: b94072a2 ldr w2, [x21,#112] return skb->head + skb->end; ffff8000113ac368: b940bea0 ldr w0, [x21,#188] skb_shinfo(skb)->gso_size = skb_gro_len(skb); ffff8000113ac36c: f94062a3 ldr x3, [x21,#192] ffff8000113ac370: b9400e61 ldr w1, [x19,#12] ffff8000113ac374: 8b000060 add x0, x3, x0 ffff8000113ac378: 4b010041 sub w1, w2, w1 __list_add(new, head, head->next); ffff8000113ac37c: f9403ba7 ldr x7, [x29,#112] ffff8000113ac380: 79000801 strh w1, [x0,#4] ffff8000113ac384: f8676ad7 ldr x23, [x22,x7] if (!__list_add_valid(new, prev, next)) ffff8000113ac388: aa1503e0 mov x0, x21 ffff8000113ac38c: aa1b03e1 mov x1, x27 ffff8000113ac390: aa1703e2 mov x2, x23 ffff8000113ac394: 94000000 bl 0 <__list_add_valid> ffff8000113ac394: R_AARCH64_CALL26 __list_add_valid ffff8000113ac398: 53001c00 uxtb w0, w0 ret = GRO_HELD; ffff8000113ac39c: 52800054 mov w20, #0x2 // #2 ffff8000113ac3a0: 34ffd700 cbz w0, ffff8000113abe80 next->prev = new; ffff8000113ac3a4: f90006f5 str x21, [x23,#8] ffff8000113ac3a8: f9403ba8 ldr x8, [x29,#112] new->next = next; ffff8000113ac3ac: f90002b7 str x23, [x21] new->prev = prev; ffff8000113ac3b0: f90006bb str x27, [x21,#8] ffff8000113ac3b4: f8286ad5 str x21, [x22,x8] ffff8000113ac3b8: 17fffeb2 b ffff8000113abe80 u64 diffs = 0; ffff8000113ac3bc: d280000a mov x10, #0x0 // #0 case 8: diffs |= __it_diff(a, b, 64); ffff8000113ac3c0: f85f80a5 ldur x5, [x5,#-8] ffff8000113ac3c4: f85f8083 ldur x3, [x4,#-8] ffff8000113ac3c8: ca0300a3 eor x3, x5, x3 ffff8000113ac3cc: aa0a0063 orr x3, x3, x10 true : __skb_metadata_differs(skb_a, skb_b, len_a); ffff8000113ac3d0: eb1f007f cmp x3, xzr ffff8000113ac3d4: 9a9f07e4 cset x4, ne ffff8000113ac3d8: 17ffff1e b ffff8000113ac050 u64 diffs = 0; ffff8000113ac3dc: d280000a mov x10, #0x0 // #0 case 24: diffs |= __it_diff(a, b, 64); ffff8000113ac3e0: f85f80ab ldur x11, [x5,#-8] ffff8000113ac3e4: f85f8083 ldur x3, [x4,#-8] ffff8000113ac3e8: d10020a5 sub x5, x5, #0x8 ffff8000113ac3ec: ca030163 eor x3, x11, x3 ffff8000113ac3f0: aa0a0063 orr x3, x3, x10 ffff8000113ac3f4: d1002084 sub x4, x4, #0x8 case 16: diffs |= __it_diff(a, b, 64); ffff8000113ac3f8: f85f80ab ldur x11, [x5,#-8] ffff8000113ac3fc: f85f808a ldur x10, [x4,#-8] ffff8000113ac400: d10020a5 sub x5, x5, #0x8 ffff8000113ac404: ca0a016a eor x10, x11, x10 ffff8000113ac408: d1002084 sub x4, x4, #0x8 ffff8000113ac40c: aa03014a orr x10, x10, x3 ffff8000113ac410: 17ffffec b ffff8000113ac3c0 u64 diffs = 0; ffff8000113ac414: d280000a mov x10, #0x0 // #0 case 20: diffs |= __it_diff(a, b, 64); ffff8000113ac418: f85f80ab ldur x11, [x5,#-8] ffff8000113ac41c: f85f8083 ldur x3, [x4,#-8] ffff8000113ac420: d10020a5 sub x5, x5, #0x8 ffff8000113ac424: ca030163 eor x3, x11, x3 ffff8000113ac428: aa0a0063 orr x3, x3, x10 ffff8000113ac42c: d1002084 sub x4, x4, #0x8 case 12: diffs |= __it_diff(a, b, 64); ffff8000113ac430: f85f80ab ldur x11, [x5,#-8] ffff8000113ac434: f85f808a ldur x10, [x4,#-8] ffff8000113ac438: d10020a5 sub x5, x5, #0x8 ffff8000113ac43c: ca0a016a eor x10, x11, x10 ffff8000113ac440: d1002084 sub x4, x4, #0x8 ffff8000113ac444: aa03014a orr x10, x10, x3 case 4: diffs |= __it_diff(a, b, 32); ffff8000113ac448: b85fc0a5 ldur w5, [x5,#-4] ffff8000113ac44c: b85fc083 ldur w3, [x4,#-4] ffff8000113ac450: 4a0300a3 eor w3, w5, w3 ffff8000113ac454: aa0a0063 orr x3, x3, x10 ffff8000113ac458: 17ffffde b ffff8000113ac3d0 u64 diffs = 0; ffff8000113ac45c: d2800003 mov x3, #0x0 // #0 ffff8000113ac460: 17ffffe6 b ffff8000113ac3f8 ffff8000113ac464: d2800003 mov x3, #0x0 // #0 ffff8000113ac468: 17fffff2 b ffff8000113ac430 ffff8000113ac46c: d280000a mov x10, #0x0 // #0 ffff8000113ac470: 17fffff6 b ffff8000113ac448 case 32: diffs |= __it_diff(a, b, 64); ffff8000113ac474: f85f808a ldur x10, [x4,#-8] ffff8000113ac478: f85f80a3 ldur x3, [x5,#-8] ffff8000113ac47c: d1002084 sub x4, x4, #0x8 ffff8000113ac480: ca03014a eor x10, x10, x3 ffff8000113ac484: d10020a5 sub x5, x5, #0x8 ffff8000113ac488: 17ffffd6 b ffff8000113ac3e0 case 28: diffs |= __it_diff(a, b, 64); ffff8000113ac48c: f85f808a ldur x10, [x4,#-8] ffff8000113ac490: f85f80a3 ldur x3, [x5,#-8] ffff8000113ac494: d1002084 sub x4, x4, #0x8 ffff8000113ac498: ca03014a eor x10, x10, x3 ffff8000113ac49c: d10020a5 sub x5, x5, #0x8 ffff8000113ac4a0: 17ffffde b ffff8000113ac418 struct list_head *gro_head; ffff8000113ac4a4: f9400761 ldr x1, [x27,#8] if (WARN_ON_ONCE(!oldest)) ffff8000113ac4a8: b4000121 cbz x1, ffff8000113ac4cc __list_del_entry(&skb->list); ffff8000113ac4ac: aa0103e0 mov x0, x1 ffff8000113ac4b0: f90037a1 str x1, [x29,#104] ffff8000113ac4b4: 97ffd512 bl ffff8000113a18fc <__list_del_entry> skb->next = NULL; ffff8000113ac4b8: f94037a1 ldr x1, [x29,#104] napi_gro_complete(napi, oldest); ffff8000113ac4bc: aa1603e0 mov x0, x22 ffff8000113ac4c0: f900003f str xzr, [x1] ffff8000113ac4c4: 97fffe18 bl ffff8000113abd24 ffff8000113ac4c8: 17ffffa1 b ffff8000113ac34c if (WARN_ON_ONCE(!oldest)) ffff8000113ac4cc: d4210000 brk #0x800 ffff8000113ac4d0: 17ffff9f b ffff8000113ac34c ffff8000113ac4d4 : { ffff8000113ac4d4: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113ac4d8: 910003fd mov x29, sp ffff8000113ac4dc: a90153f3 stp x19, x20, [sp,#16] ffff8000113ac4e0: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ac4e4: aa0003f6 mov x22, x0 ffff8000113ac4e8: aa1e03e0 mov x0, x30 ffff8000113ac4ec: aa0103f5 mov x21, x1 ffff8000113ac4f0: 94000000 bl 0 <_mcount> ffff8000113ac4f0: R_AARCH64_CALL26 _mcount __READ_ONCE_SIZE; ffff8000113ac4f4: 90000000 adrp x0, 0 <__tracepoint_napi_gro_receive_entry> ffff8000113ac4f4: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_napi_gro_receive_entry ffff8000113ac4f8: 91000000 add x0, x0, #0x0 ffff8000113ac4f8: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_napi_gro_receive_entry gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb) ffff8000113ac4fc: b94182c2 ldr w2, [x22,#384] ffff8000113ac500: b9400801 ldr w1, [x0,#8] ffff8000113ac504: b9009ea2 str w2, [x21,#156] ffff8000113ac508: 6b1f003f cmp w1, wzr ffff8000113ac50c: 5400080c b.gt ffff8000113ac60c skb_gro_reset_offset(skb); ffff8000113ac510: aa1503e0 mov x0, x21 ffff8000113ac514: 97ffd3e3 bl ffff8000113a14a0 ret = napi_skb_finish(napi, skb, dev_gro_receive(napi, skb)); ffff8000113ac518: aa1603e0 mov x0, x22 ffff8000113ac51c: aa1503e1 mov x1, x21 ffff8000113ac520: 97fffe42 bl ffff8000113abe28 switch (ret) { ffff8000113ac524: 71000c1f cmp w0, #0x3 ret = napi_skb_finish(napi, skb, dev_gro_receive(napi, skb)); ffff8000113ac528: 2a0003f4 mov w20, w0 switch (ret) { ffff8000113ac52c: 54000320 b.eq ffff8000113ac590 ffff8000113ac530: 7100101f cmp w0, #0x4 ffff8000113ac534: 54000280 b.eq ffff8000113ac584 ffff8000113ac538: 7100041f cmp w0, #0x1 ffff8000113ac53c: 54000160 b.eq ffff8000113ac568 ffff8000113ac540: 90000000 adrp x0, 0 <__tracepoint_napi_gro_receive_exit> ffff8000113ac540: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_napi_gro_receive_exit ffff8000113ac544: 91000000 add x0, x0, #0x0 ffff8000113ac544: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_napi_gro_receive_exit ffff8000113ac548: b9400801 ldr w1, [x0,#8] ffff8000113ac54c: 6b1f003f cmp w1, wzr ffff8000113ac550: 540002cc b.gt ffff8000113ac5a8 } ffff8000113ac554: 2a1403e0 mov w0, w20 ffff8000113ac558: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ac55c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ac560: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113ac564: d65f03c0 ret if (NAPI_GRO_CB(skb)->free == NAPI_GRO_FREE_STOLEN_HEAD) ffff8000113ac568: 39412aa0 ldrb w0, [x21,#74] ffff8000113ac56c: d3461c00 ubfx x0, x0, #6, #2 ffff8000113ac570: 7100081f cmp w0, #0x2 napi_skb_free_stolen_head(skb); ffff8000113ac574: aa1503e0 mov x0, x21 if (NAPI_GRO_CB(skb)->free == NAPI_GRO_FREE_STOLEN_HEAD) ffff8000113ac578: 54000140 b.eq ffff8000113ac5a0 __kfree_skb(skb); ffff8000113ac57c: 94000000 bl 0 <__kfree_skb> ffff8000113ac57c: R_AARCH64_CALL26 __kfree_skb ffff8000113ac580: 17fffff0 b ffff8000113ac540 kfree_skb(skb); ffff8000113ac584: aa1503e0 mov x0, x21 ffff8000113ac588: 94000000 bl 0 ffff8000113ac588: R_AARCH64_CALL26 kfree_skb ffff8000113ac58c: 17ffffed b ffff8000113ac540 gro_normal_one(napi, skb); ffff8000113ac590: aa1603e0 mov x0, x22 ffff8000113ac594: aa1503e1 mov x1, x21 ffff8000113ac598: 97fffdbd bl ffff8000113abc8c ffff8000113ac59c: 17ffffe9 b ffff8000113ac540 napi_skb_free_stolen_head(skb); ffff8000113ac5a0: 97ffd878 bl ffff8000113a2780 ffff8000113ac5a4: 17ffffe7 b ffff8000113ac540 DEFINE_EVENT(net_dev_rx_exit_template, napi_gro_receive_exit, ffff8000113ac5a8: 90000001 adrp x1, 0 ffff8000113ac5a8: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113ac5ac: d538d082 mrs x2, tpidr_el1 ffff8000113ac5b0: 91000021 add x1, x1, #0x0 ffff8000113ac5b0: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113ac5b4: b8616841 ldr w1, [x2,x1] return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ffff8000113ac5b8: 52800803 mov w3, #0x40 // #64 ffff8000113ac5bc: 1ac30c23 sdiv w3, w1, w3 ffff8000113ac5c0: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113ac5c0: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113ac5c4: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113ac5c8: 91000042 add x2, x2, #0x0 ffff8000113ac5c8: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113ac5cc: f8626862 ldr x2, [x3,x2] ffff8000113ac5d0: 9ac12441 lsr x1, x2, x1 ffff8000113ac5d4: 3607fc01 tbz w1, #0, ffff8000113ac554 ffff8000113ac5d8: f9401013 ldr x19, [x0,#32] ffff8000113ac5dc: b40000f3 cbz x19, ffff8000113ac5f8 ffff8000113ac5e0: f9400262 ldr x2, [x19] ffff8000113ac5e4: f9400660 ldr x0, [x19,#8] ffff8000113ac5e8: 2a1403e1 mov w1, w20 ffff8000113ac5ec: d63f0040 blr x2 ffff8000113ac5f0: f8418e62 ldr x2, [x19,#24]! ffff8000113ac5f4: b5ffff82 cbnz x2, ffff8000113ac5e4 } ffff8000113ac5f8: 2a1403e0 mov w0, w20 ffff8000113ac5fc: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ac600: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ac604: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113ac608: d65f03c0 ret DEFINE_EVENT(net_dev_rx_verbose_template, napi_gro_receive_entry, ffff8000113ac60c: 90000001 adrp x1, 0 ffff8000113ac60c: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113ac610: d538d082 mrs x2, tpidr_el1 ffff8000113ac614: 91000021 add x1, x1, #0x0 ffff8000113ac614: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113ac618: b8616841 ldr w1, [x2,x1] ffff8000113ac61c: 52800803 mov w3, #0x40 // #64 ffff8000113ac620: 1ac30c23 sdiv w3, w1, w3 ffff8000113ac624: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113ac624: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113ac628: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113ac62c: 91000042 add x2, x2, #0x0 ffff8000113ac62c: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113ac630: f8626862 ldr x2, [x3,x2] ffff8000113ac634: 9ac12441 lsr x1, x2, x1 ffff8000113ac638: 3607f6c1 tbz w1, #0, ffff8000113ac510 ffff8000113ac63c: f9401013 ldr x19, [x0,#32] ffff8000113ac640: b40000f3 cbz x19, ffff8000113ac65c ffff8000113ac644: f9400262 ldr x2, [x19] ffff8000113ac648: f9400660 ldr x0, [x19,#8] ffff8000113ac64c: aa1503e1 mov x1, x21 ffff8000113ac650: d63f0040 blr x2 ffff8000113ac654: f8418e62 ldr x2, [x19,#24]! ffff8000113ac658: b5ffff82 cbnz x2, ffff8000113ac648 ffff8000113ac65c: 17ffffad b ffff8000113ac510 ffff8000113ac660 : { ffff8000113ac660: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113ac664: 910003fd mov x29, sp ffff8000113ac668: a90153f3 stp x19, x20, [sp,#16] ffff8000113ac66c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ac670: aa0003f6 mov x22, x0 ffff8000113ac674: aa1e03e0 mov x0, x30 ffff8000113ac678: 94000000 bl 0 <_mcount> ffff8000113ac678: R_AARCH64_CALL26 _mcount struct sk_buff *skb = napi->skb; ffff8000113ac67c: f94082d3 ldr x19, [x22,#256] napi->skb = NULL; ffff8000113ac680: f90082df str xzr, [x22,#256] skb->mac_header = skb->data - skb->head; ffff8000113ac684: f9406662 ldr x2, [x19,#200] ffff8000113ac688: f9406261 ldr x1, [x19,#192] skb_gro_reset_offset(skb); ffff8000113ac68c: aa1303e0 mov x0, x19 ffff8000113ac690: cb010041 sub x1, x2, x1 ffff8000113ac694: 79016e61 strh w1, [x19,#182] ffff8000113ac698: 97ffd382 bl ffff8000113a14a0 return NAPI_GRO_CB(skb)->frag0_len < hlen; ffff8000113ac69c: 9100a275 add x21, x19, #0x28 if (unlikely(skb_gro_header_hard(skb, hlen))) { ffff8000113ac6a0: b9400aa0 ldr w0, [x21,#8] if (!pskb_may_pull(skb, hlen)) ffff8000113ac6a4: 528001c1 mov w1, #0xe // #14 ffff8000113ac6a8: 7100341f cmp w0, #0xd ffff8000113ac6ac: aa1303e0 mov x0, x19 ffff8000113ac6b0: 54000d49 b.ls ffff8000113ac858 eth = (const struct ethhdr *)skb->data; ffff8000113ac6b4: f9406674 ldr x20, [x19,#200] gro_pull_from_frag0(skb, hlen); ffff8000113ac6b8: 97ffd1d3 bl ffff8000113a0e04 NAPI_GRO_CB(skb)->frag0 += hlen; ffff8000113ac6bc: f9401660 ldr x0, [x19,#40] ffff8000113ac6c0: 91003800 add x0, x0, #0xe ffff8000113ac6c4: f9001660 str x0, [x19,#40] NAPI_GRO_CB(skb)->frag0_len -= hlen; ffff8000113ac6c8: b9400aa0 ldr w0, [x21,#8] ffff8000113ac6cc: 51003800 sub w0, w0, #0xe ffff8000113ac6d0: b9000aa0 str w0, [x21,#8] skb->len -= len; ffff8000113ac6d4: b9407260 ldr w0, [x19,#112] BUG_ON(skb->len < skb->data_len); ffff8000113ac6d8: b9407661 ldr w1, [x19,#116] skb->len -= len; ffff8000113ac6dc: 51003800 sub w0, w0, #0xe ffff8000113ac6e0: b9007260 str w0, [x19,#112] BUG_ON(skb->len < skb->data_len); ffff8000113ac6e4: 6b01001f cmp w0, w1 ffff8000113ac6e8: 54000b63 b.cc ffff8000113ac854 return skb->data += len; ffff8000113ac6ec: f9406661 ldr x1, [x19,#200] return GRO_DROP; ffff8000113ac6f0: 52800080 mov w0, #0x4 // #4 ffff8000113ac6f4: 91003821 add x1, x1, #0xe ffff8000113ac6f8: f9006661 str x1, [x19,#200] skb->protocol = eth->h_proto; ffff8000113ac6fc: 79401a81 ldrh w1, [x20,#12] ffff8000113ac700: 79016261 strh w1, [x19,#176] if (!skb) ffff8000113ac704: b4000273 cbz x19, ffff8000113ac750 ffff8000113ac708: 90000000 adrp x0, 0 <__tracepoint_napi_gro_frags_entry> ffff8000113ac708: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_napi_gro_frags_entry ffff8000113ac70c: 91000000 add x0, x0, #0x0 ffff8000113ac70c: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_napi_gro_frags_entry ffff8000113ac710: b9400801 ldr w1, [x0,#8] ffff8000113ac714: 6b1f003f cmp w1, wzr ffff8000113ac718: 54000b6c b.gt ffff8000113ac884 ret = napi_frags_finish(napi, skb, dev_gro_receive(napi, skb)); ffff8000113ac71c: aa1603e0 mov x0, x22 ffff8000113ac720: aa1303e1 mov x1, x19 ffff8000113ac724: 97fffdc1 bl ffff8000113abe28 ffff8000113ac728: 2a0003f4 mov w20, w0 switch (ret) { ffff8000113ac72c: 51000400 sub w0, w0, #0x1 ffff8000113ac730: 71000c1f cmp w0, #0x3 ffff8000113ac734: 54000169 b.ls ffff8000113ac760 ffff8000113ac738: 90000001 adrp x1, 0 <__tracepoint_napi_gro_frags_exit> ffff8000113ac738: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_napi_gro_frags_exit ffff8000113ac73c: 91000021 add x1, x1, #0x0 ffff8000113ac73c: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_napi_gro_frags_exit ffff8000113ac740: b9400820 ldr w0, [x1,#8] ffff8000113ac744: 6b1f001f cmp w0, wzr ffff8000113ac748: 540005ac b.gt ffff8000113ac7fc ret = napi_frags_finish(napi, skb, dev_gro_receive(napi, skb)); ffff8000113ac74c: 2a1403e0 mov w0, w20 } ffff8000113ac750: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ac754: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ac758: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113ac75c: d65f03c0 ret switch (ret) { ffff8000113ac760: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113ac760: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x74 ffff8000113ac764: 91000021 add x1, x1, #0x0 ffff8000113ac764: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x74 ffff8000113ac768: 38604822 ldrb w2, [x1,w0,uxtw] ffff8000113ac76c: 10000063 adr x3, ffff8000113ac778 ffff8000113ac770: 8b228862 add x2, x3, w2, sxtb #2 ffff8000113ac774: d61f0040 br x2 if (NAPI_GRO_CB(skb)->free == NAPI_GRO_FREE_STOLEN_HEAD) ffff8000113ac778: 39408aa0 ldrb w0, [x21,#34] ffff8000113ac77c: d3461c00 ubfx x0, x0, #6, #2 ffff8000113ac780: 7100081f cmp w0, #0x2 ffff8000113ac784: 54000360 b.eq ffff8000113ac7f0 napi_reuse_skb(napi, skb); ffff8000113ac788: 9100e2c0 add x0, x22, #0x38 ffff8000113ac78c: 910402c1 add x1, x22, #0x100 ffff8000113ac790: aa1303e2 mov x2, x19 ffff8000113ac794: 97ffd813 bl ffff8000113a27e0 ffff8000113ac798: 90000001 adrp x1, 0 <__tracepoint_napi_gro_frags_exit> ffff8000113ac798: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_napi_gro_frags_exit ffff8000113ac79c: 91000021 add x1, x1, #0x0 ffff8000113ac79c: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_napi_gro_frags_exit ffff8000113ac7a0: b9400820 ldr w0, [x1,#8] ffff8000113ac7a4: 6b1f001f cmp w0, wzr ffff8000113ac7a8: 54fffd2d b.le ffff8000113ac74c ffff8000113ac7ac: 14000014 b ffff8000113ac7fc skb->data -= len; ffff8000113ac7b0: f9406662 ldr x2, [x19,#200] skb->len += len; ffff8000113ac7b4: b9407260 ldr w0, [x19,#112] skb->data -= len; ffff8000113ac7b8: d1003842 sub x2, x2, #0xe skb->len += len; ffff8000113ac7bc: 11003800 add w0, w0, #0xe skb->protocol = eth_type_trans(skb, skb->dev); ffff8000113ac7c0: f9400a61 ldr x1, [x19,#16] ffff8000113ac7c4: b9007260 str w0, [x19,#112] skb->data -= len; ffff8000113ac7c8: f9006662 str x2, [x19,#200] ffff8000113ac7cc: aa1303e0 mov x0, x19 ffff8000113ac7d0: 94000000 bl 0 ffff8000113ac7d0: R_AARCH64_CALL26 eth_type_trans ffff8000113ac7d4: 79016260 strh w0, [x19,#176] if (ret == GRO_NORMAL) ffff8000113ac7d8: 71000e9f cmp w20, #0x3 ffff8000113ac7dc: 54fffae1 b.ne ffff8000113ac738 gro_normal_one(napi, skb); ffff8000113ac7e0: aa1603e0 mov x0, x22 ffff8000113ac7e4: aa1303e1 mov x1, x19 ffff8000113ac7e8: 97fffd29 bl ffff8000113abc8c ffff8000113ac7ec: 17ffffd3 b ffff8000113ac738 napi_skb_free_stolen_head(skb); ffff8000113ac7f0: aa1303e0 mov x0, x19 ffff8000113ac7f4: 97ffd7e3 bl ffff8000113a2780 ffff8000113ac7f8: 17ffffd0 b ffff8000113ac738 DEFINE_EVENT(net_dev_rx_exit_template, napi_gro_frags_exit, ffff8000113ac7fc: 90000000 adrp x0, 0 ffff8000113ac7fc: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113ac800: 91000000 add x0, x0, #0x0 ffff8000113ac800: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113ac804: d538d082 mrs x2, tpidr_el1 ffff8000113ac808: b8606842 ldr w2, [x2,x0] ffff8000113ac80c: 52800803 mov w3, #0x40 // #64 ffff8000113ac810: 1ac30c43 sdiv w3, w2, w3 ffff8000113ac814: 90000000 adrp x0, 0 <__cpu_online_mask> ffff8000113ac814: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113ac818: 91000000 add x0, x0, #0x0 ffff8000113ac818: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113ac81c: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113ac820: f8606863 ldr x3, [x3,x0] ret = napi_frags_finish(napi, skb, dev_gro_receive(napi, skb)); ffff8000113ac824: 2a1403e0 mov w0, w20 ffff8000113ac828: 9ac22462 lsr x2, x3, x2 ffff8000113ac82c: 3607f922 tbz w2, #0, ffff8000113ac750 ffff8000113ac830: f9401033 ldr x19, [x1,#32] ffff8000113ac834: b40000f3 cbz x19, ffff8000113ac850 ffff8000113ac838: f9400262 ldr x2, [x19] ffff8000113ac83c: f9400660 ldr x0, [x19,#8] ffff8000113ac840: 2a1403e1 mov w1, w20 ffff8000113ac844: d63f0040 blr x2 ffff8000113ac848: f8418e62 ldr x2, [x19,#24]! ffff8000113ac84c: b5ffff82 cbnz x2, ffff8000113ac83c ffff8000113ac850: 17ffffbf b ffff8000113ac74c ffff8000113ac854: 94000000 bl ffff80001139e37c <__my_cpu_offset> ffff8000113ac854: R_AARCH64_CALL26 .text.unlikely+0xa0 ffff8000113ac858: 97ffd137 bl ffff8000113a0d34 ffff8000113ac85c: 53001c00 uxtb w0, w0 ffff8000113ac860: 350003c0 cbnz w0, ffff8000113ac8d8 net_warn_ratelimited("%s: dropping impossible skb from %s\n", ffff8000113ac864: 94000000 bl 0 ffff8000113ac864: R_AARCH64_CALL26 net_ratelimit ffff8000113ac868: 35000420 cbnz w0, ffff8000113ac8ec napi_reuse_skb(napi, skb); ffff8000113ac86c: 9100e2c0 add x0, x22, #0x38 ffff8000113ac870: 910402c1 add x1, x22, #0x100 ffff8000113ac874: aa1303e2 mov x2, x19 ffff8000113ac878: 97ffd7da bl ffff8000113a27e0 return GRO_DROP; ffff8000113ac87c: 52800080 mov w0, #0x4 // #4 ffff8000113ac880: 17ffffb4 b ffff8000113ac750 DEFINE_EVENT(net_dev_rx_verbose_template, napi_gro_frags_entry, ffff8000113ac884: 90000001 adrp x1, 0 ffff8000113ac884: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113ac888: d538d082 mrs x2, tpidr_el1 ffff8000113ac88c: 91000021 add x1, x1, #0x0 ffff8000113ac88c: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113ac890: b8616841 ldr w1, [x2,x1] ffff8000113ac894: 52800803 mov w3, #0x40 // #64 ffff8000113ac898: 1ac30c23 sdiv w3, w1, w3 ffff8000113ac89c: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113ac89c: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113ac8a0: 937d7c63 sbfiz x3, x3, #3, #32 ffff8000113ac8a4: 91000042 add x2, x2, #0x0 ffff8000113ac8a4: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113ac8a8: f8626862 ldr x2, [x3,x2] ffff8000113ac8ac: 9ac12441 lsr x1, x2, x1 ffff8000113ac8b0: 3607f361 tbz w1, #0, ffff8000113ac71c ffff8000113ac8b4: f9401014 ldr x20, [x0,#32] ffff8000113ac8b8: b40000f4 cbz x20, ffff8000113ac8d4 ffff8000113ac8bc: f9400282 ldr x2, [x20] ffff8000113ac8c0: f9400680 ldr x0, [x20,#8] ffff8000113ac8c4: aa1303e1 mov x1, x19 ffff8000113ac8c8: d63f0040 blr x2 ffff8000113ac8cc: f8418e82 ldr x2, [x20,#24]! ffff8000113ac8d0: b5ffff82 cbnz x2, ffff8000113ac8c0 ffff8000113ac8d4: 17ffff92 b ffff8000113ac71c NAPI_GRO_CB(skb)->frag0 = NULL; ffff8000113ac8d8: f900167f str xzr, [x19,#40] NAPI_GRO_CB(skb)->frag0_len = 0; ffff8000113ac8dc: b9000abf str wzr, [x21,#8] return skb->data + offset; ffff8000113ac8e0: f9406674 ldr x20, [x19,#200] if (unlikely(!eth)) { ffff8000113ac8e4: b5ffef94 cbnz x20, ffff8000113ac6d4 ffff8000113ac8e8: 17ffffdf b ffff8000113ac864 net_warn_ratelimited("%s: dropping impossible skb from %s\n", ffff8000113ac8ec: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113ac8ec: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113ac8f0: f9401ec2 ldr x2, [x22,#56] ffff8000113ac8f4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ac8f4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x6f8 ffff8000113ac8f8: 91000021 add x1, x1, #0x0 ffff8000113ac8f8: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113ac8fc: 91020021 add x1, x1, #0x80 ffff8000113ac900: 91000000 add x0, x0, #0x0 ffff8000113ac900: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x6f8 ffff8000113ac904: 94000000 bl 0 ffff8000113ac904: R_AARCH64_CALL26 printk ffff8000113ac908: 17ffffd9 b ffff8000113ac86c ffff8000113ac90c : { ffff8000113ac90c: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113ac910: 910003fd mov x29, sp ffff8000113ac914: a90153f3 stp x19, x20, [sp,#16] ffff8000113ac918: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ac91c: a90363f7 stp x23, x24, [sp,#48] ffff8000113ac920: a9046bf9 stp x25, x26, [sp,#64] ffff8000113ac924: a90573fb stp x27, x28, [sp,#80] unsigned long bitmask = napi->gro_bitmask; ffff8000113ac928: aa0003fb mov x27, x0 { ffff8000113ac92c: aa0003f6 mov x22, x0 ffff8000113ac930: aa1e03e0 mov x0, x30 ffff8000113ac934: 53001c37 uxtb w23, w1 ffff8000113ac938: 94000000 bl 0 <_mcount> ffff8000113ac938: R_AARCH64_CALL26 _mcount unsigned long bitmask = napi->gro_bitmask; ffff8000113ac93c: f8420f7a ldr x26, [x27,#32]! unsigned int i, base = ~0U; ffff8000113ac940: 12800019 mov w25, #0xffffffff // #-1 if (flush_old && NAPI_GRO_CB(skb)->age == jiffies) ffff8000113ac944: 90000018 adrp x24, 0 ffff8000113ac944: R_AARCH64_ADR_PREL_PG_HI21 jiffies * the libc and compiler builtin ffs routines, therefore * differs in spirit from the above ffz (man ffs). */ static __always_inline int ffs(int x) { return __builtin_ffs(x); ffff8000113ac948: 5ac00340 rbit w0, w26 ffff8000113ac94c: 6b1f035f cmp w26, wzr ffff8000113ac950: 5ac01000 clz w0, w0 ffff8000113ac954: 1a8007e0 csinc w0, wzr, w0, eq while ((i = ffs(bitmask)) != 0) { ffff8000113ac958: 340007c0 cbz w0, ffff8000113aca50 base += i; ffff8000113ac95c: 0b000339 add w25, w25, w0 struct list_head *head = &napi->gro_hash[index].list; ffff8000113ac960: 2a1903e1 mov w1, w25 ffff8000113ac964: 8b010421 add x1, x1, x1, lsl #1 ffff8000113ac968: d37df021 lsl x1, x1, #3 ffff8000113ac96c: 91010035 add x21, x1, #0x40 ffff8000113ac970: 8b1502d5 add x21, x22, x21 list_for_each_entry_safe_reverse(skb, p, head, list) { ffff8000113ac974: f94006b3 ldr x19, [x21,#8] bitmask >>= i; ffff8000113ac978: 9ac0275a lsr x26, x26, x0 list_for_each_entry_safe_reverse(skb, p, head, list) { ffff8000113ac97c: eb1302bf cmp x21, x19 ffff8000113ac980: f940067c ldr x28, [x19,#8] ffff8000113ac984: aa1303e0 mov x0, x19 napi->gro_hash[index].count--; ffff8000113ac988: 8b0102d4 add x20, x22, x1 list_for_each_entry_safe_reverse(skb, p, head, list) { ffff8000113ac98c: 54000360 b.eq ffff8000113ac9f8 if (flush_old && NAPI_GRO_CB(skb)->age == jiffies) ffff8000113ac990: 340000b7 cbz w23, ffff8000113ac9a4 ffff8000113ac994: f9402263 ldr x3, [x19,#64] ffff8000113ac998: f9400301 ldr x1, [x24] ffff8000113ac998: R_AARCH64_LDST64_ABS_LO12_NC jiffies ffff8000113ac99c: eb01007f cmp x3, x1 ffff8000113ac9a0: 54fffd40 b.eq ffff8000113ac948 if (!__list_del_entry_valid(entry)) ffff8000113ac9a4: 94000000 bl 0 <__list_del_entry_valid> ffff8000113ac9a4: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113ac9a8: 53001c03 uxtb w3, w0 napi_gro_complete(napi, skb); ffff8000113ac9ac: aa1303e1 mov x1, x19 ffff8000113ac9b0: aa1603e0 mov x0, x22 ffff8000113ac9b4: 340000a3 cbz w3, ffff8000113ac9c8 __list_del(entry->prev, entry->next); ffff8000113ac9b8: f9400264 ldr x4, [x19] ffff8000113ac9bc: f9400663 ldr x3, [x19,#8] next->prev = prev; ffff8000113ac9c0: f9000483 str x3, [x4,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113ac9c4: f9000064 str x4, [x3] skb->next = NULL; ffff8000113ac9c8: f900027f str xzr, [x19] ffff8000113ac9cc: 97fffcd6 bl ffff8000113abd24 napi->gro_hash[index].count--; ffff8000113ac9d0: b9405281 ldr w1, [x20,#80] list_for_each_entry_safe_reverse(skb, p, head, list) { ffff8000113ac9d4: eb1c02bf cmp x21, x28 napi->gro_hash[index].count--; ffff8000113ac9d8: 51000421 sub w1, w1, #0x1 ffff8000113ac9dc: b9005281 str w1, [x20,#80] list_for_each_entry_safe_reverse(skb, p, head, list) { ffff8000113ac9e0: f9400783 ldr x3, [x28,#8] ffff8000113ac9e4: aa1c03e0 mov x0, x28 ffff8000113ac9e8: 540000a0 b.eq ffff8000113ac9fc ffff8000113ac9ec: aa1c03f3 mov x19, x28 ffff8000113ac9f0: aa0303fc mov x28, x3 ffff8000113ac9f4: 17ffffe7 b ffff8000113ac990 ffff8000113ac9f8: b9405281 ldr w1, [x20,#80] if (!napi->gro_hash[index].count) ffff8000113ac9fc: 35fffa61 cbnz w1, ffff8000113ac948 unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); ffff8000113aca00: 6b1f033f cmp w25, wzr ffff8000113aca04: 1100ff20 add w0, w25, #0x3f unsigned long mask = BIT_MASK(nr); ffff8000113aca08: 131f7f21 asr w1, w25, #31 ffff8000113aca0c: 531a7c21 lsr w1, w1, #26 unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); ffff8000113aca10: 1a99b000 csel w0, w0, w25, lt unsigned long mask = BIT_MASK(nr); ffff8000113aca14: 0b010323 add w3, w25, w1 unsigned long *p = ((unsigned long *)addr) + BIT_WORD(nr); ffff8000113aca18: 13067c00 asr w0, w0, #6 ffff8000113aca1c: 937d7c00 sbfiz x0, x0, #3, #32 unsigned long mask = BIT_MASK(nr); ffff8000113aca20: 12001463 and w3, w3, #0x3f *p &= ~mask; ffff8000113aca24: f8606b62 ldr x2, [x27,x0] unsigned long mask = BIT_MASK(nr); ffff8000113aca28: 4b010061 sub w1, w3, w1 ffff8000113aca2c: d2800023 mov x3, #0x1 // #1 ffff8000113aca30: 9ac12061 lsl x1, x3, x1 *p &= ~mask; ffff8000113aca34: 8a210041 bic x1, x2, x1 ffff8000113aca38: f8206b61 str x1, [x27,x0] ffff8000113aca3c: 5ac00340 rbit w0, w26 ffff8000113aca40: 6b1f035f cmp w26, wzr ffff8000113aca44: 5ac01000 clz w0, w0 ffff8000113aca48: 1a8007e0 csinc w0, wzr, w0, eq while ((i = ffs(bitmask)) != 0) { ffff8000113aca4c: 35fff880 cbnz w0, ffff8000113ac95c } ffff8000113aca50: a94153f3 ldp x19, x20, [sp,#16] ffff8000113aca54: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113aca58: a94363f7 ldp x23, x24, [sp,#48] ffff8000113aca5c: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113aca60: a94573fb ldp x27, x28, [sp,#80] ffff8000113aca64: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113aca68: d65f03c0 ret ffff8000113aca6c : { ffff8000113aca6c: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113aca70: 910003fd mov x29, sp ffff8000113aca74: a90153f3 stp x19, x20, [sp,#16] ffff8000113aca78: a9025bf5 stp x21, x22, [sp,#32] ffff8000113aca7c: aa0003f3 mov x19, x0 ffff8000113aca80: aa1e03e0 mov x0, x30 ffff8000113aca84: f9001fa1 str x1, [x29,#56] ffff8000113aca88: 94000000 bl 0 <_mcount> ffff8000113aca88: R_AARCH64_CALL26 _mcount if (unlikely(n->state & (NAPIF_STATE_NPSVC | ffff8000113aca8c: f9400a74 ldr x20, [x19,#16] ffff8000113aca90: d2800900 mov x0, #0x48 // #72 ffff8000113aca94: 8a000294 and x20, x20, x0 ffff8000113aca98: f9401fa1 ldr x1, [x29,#56] ffff8000113aca9c: b5000694 cbnz x20, ffff8000113acb6c if (n->gro_bitmask) { ffff8000113acaa0: f9401260 ldr x0, [x19,#32] ffff8000113acaa4: b40001e0 cbz x0, ffff8000113acae0 if (work_done) ffff8000113acaa8: 34000501 cbz w1, ffff8000113acb48 timeout = n->dev->gro_flush_timeout; ffff8000113acaac: f9401e61 ldr x1, [x19,#56] napi_gro_flush(n, !!timeout); ffff8000113acab0: aa1303e0 mov x0, x19 timeout = n->dev->gro_flush_timeout; ffff8000113acab4: f9419c36 ldr x22, [x1,#824] napi_gro_flush(n, !!timeout); ffff8000113acab8: eb1f02df cmp x22, xzr ffff8000113acabc: 1a9f07f5 cset w21, ne ffff8000113acac0: 2a1503e1 mov w1, w21 ffff8000113acac4: 94000000 bl ffff8000113ac90c ffff8000113acac4: R_AARCH64_CALL26 napi_gro_flush if (timeout) ffff8000113acac8: 340000d5 cbz w21, ffff8000113acae0 * softirq based mode is considered for debug purpose only! */ static inline void hrtimer_start(struct hrtimer *timer, ktime_t tim, const enum hrtimer_mode mode) { hrtimer_start_range_ns(timer, tim, 0, mode); ffff8000113acacc: 91048260 add x0, x19, #0x120 ffff8000113acad0: aa1603e1 mov x1, x22 ffff8000113acad4: aa1403e2 mov x2, x20 ffff8000113acad8: 52800063 mov w3, #0x3 // #3 ffff8000113acadc: 94000000 bl 0 ffff8000113acadc: R_AARCH64_CALL26 hrtimer_start_range_ns if (!napi->rx_count) ffff8000113acae0: b9411a60 ldr w0, [x19,#280] ffff8000113acae4: 350003a0 cbnz w0, ffff8000113acb58 __READ_ONCE_SIZE; ffff8000113acae8: f9400260 ldr x0, [x19] if (unlikely(!list_empty(&n->poll_list))) { ffff8000113acaec: eb00027f cmp x19, x0 ffff8000113acaf0: 54000421 b.ne ffff8000113acb74 ffff8000113acaf4: 91004262 add x2, x19, #0x10 ffff8000113acaf8: f9400a61 ldr x1, [x19,#16] WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED)); ffff8000113acafc: 36000341 tbz w1, #0, ffff8000113acb64 new = val & ~(NAPIF_STATE_MISSED | NAPIF_STATE_SCHED); ffff8000113acb00: 927ef423 and x3, x1, #0xfffffffffffffffc new |= (val & NAPIF_STATE_MISSED) / NAPIF_STATE_MISSED * ffff8000113acb04: 927f0024 and x4, x1, #0x2 ffff8000113acb08: aa440463 orr x3, x3, x4, lsr #1 __CMPXCHG_CASE( , , mb_, 64, dmb ish, , l, "memory", L) ffff8000113acb0c: f9800051 prfm pstl1strm, [x2] ffff8000113acb10: c85f7c45 ldxr x5, [x2] ffff8000113acb14: ca0100a0 eor x0, x5, x1 ffff8000113acb18: b5000080 cbnz x0, ffff8000113acb28 ffff8000113acb1c: c800fc43 stlxr w0, x3, [x2] ffff8000113acb20: 35ffff80 cbnz w0, ffff8000113acb10 ffff8000113acb24: d5033bbf dmb ish } while (cmpxchg(&n->state, val, new) != val); ffff8000113acb28: eb05003f cmp x1, x5 ffff8000113acb2c: 54fffe61 b.ne ffff8000113acaf8 return true; ffff8000113acb30: 52800020 mov w0, #0x1 // #1 if (unlikely(val & NAPIF_STATE_MISSED)) { ffff8000113acb34: b5000364 cbnz x4, ffff8000113acba0 } ffff8000113acb38: a94153f3 ldp x19, x20, [sp,#16] ffff8000113acb3c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113acb40: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113acb44: d65f03c0 ret napi_gro_flush(n, !!timeout); ffff8000113acb48: aa1303e0 mov x0, x19 ffff8000113acb4c: 94000000 bl ffff8000113ac90c ffff8000113acb4c: R_AARCH64_CALL26 napi_gro_flush if (!napi->rx_count) ffff8000113acb50: b9411a60 ldr w0, [x19,#280] ffff8000113acb54: 34fffca0 cbz w0, ffff8000113acae8 ffff8000113acb58: aa1303e0 mov x0, x19 ffff8000113acb5c: 97fffc3d bl ffff8000113abc50 ffff8000113acb60: 17ffffe2 b ffff8000113acae8 WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED)); ffff8000113acb64: d4210000 brk #0x800 ffff8000113acb68: 17ffffe6 b ffff8000113acb00 return false; ffff8000113acb6c: 52800000 mov w0, #0x0 // #0 ffff8000113acb70: 17fffff2 b ffff8000113acb38 asm volatile(ALTERNATIVE( ffff8000113acb74: d53b4234 mrs x20, daif asm volatile(ALTERNATIVE( ffff8000113acb78: 12190280 and w0, w20, #0x80 if (!arch_irqs_disabled_flags(flags)) ffff8000113acb7c: 35000060 cbnz w0, ffff8000113acb88 asm volatile(ALTERNATIVE( ffff8000113acb80: d2800c00 mov x0, #0x60 // #96 ffff8000113acb84: d50342df msr daifset, #0x2 __list_del_entry(entry); ffff8000113acb88: aa1303e0 mov x0, x19 ffff8000113acb8c: 97ffd35c bl ffff8000113a18fc <__list_del_entry> case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113acb90: f9000273 str x19, [x19] list->prev = list; ffff8000113acb94: f9000673 str x19, [x19,#8] asm volatile(ALTERNATIVE( ffff8000113acb98: d51b4234 msr daif, x20 ffff8000113acb9c: 17ffffd6 b ffff8000113acaf4 __napi_schedule(n); ffff8000113acba0: aa1303e0 mov x0, x19 ffff8000113acba4: 94000000 bl ffff8000113a5864 <__napi_schedule> ffff8000113acba4: R_AARCH64_CALL26 __napi_schedule return false; ffff8000113acba8: 52800000 mov w0, #0x0 // #0 ffff8000113acbac: 17ffffe3 b ffff8000113acb38 ffff8000113acbb0 : { ffff8000113acbb0: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113acbb4: 910003fd mov x29, sp ffff8000113acbb8: a90153f3 stp x19, x20, [sp,#16] ffff8000113acbbc: a9025bf5 stp x21, x22, [sp,#32] ffff8000113acbc0: aa0003f3 mov x19, x0 ffff8000113acbc4: aa1e03e0 mov x0, x30 ffff8000113acbc8: aa0103f6 mov x22, x1 ffff8000113acbcc: 94000000 bl 0 <_mcount> ffff8000113acbcc: R_AARCH64_CALL26 _mcount ATOMIC64_OPS(andnot, bic, ) ffff8000113acbd0: d2800040 mov x0, #0x2 // #2 ffff8000113acbd4: 91004263 add x3, x19, #0x10 ffff8000113acbd8: f9800071 prfm pstl1strm, [x3] ffff8000113acbdc: c85f7c61 ldxr x1, [x3] ffff8000113acbe0: 8a200021 bic x1, x1, x0 ffff8000113acbe4: c8027c61 stxr w2, x1, [x3] ffff8000113acbe8: 35ffffa2 cbnz w2, ffff8000113acbdc ffff8000113acbec: d2800814 mov x20, #0x40 // #64 ffff8000113acbf0: f9800071 prfm pstl1strm, [x3] ffff8000113acbf4: c85f7c60 ldxr x0, [x3] ffff8000113acbf8: 8a340000 bic x0, x0, x20 ffff8000113acbfc: c8017c60 stxr w1, x0, [x3] ffff8000113acc00: 35ffffa1 cbnz w1, ffff8000113acbf4 ffff8000113acc04: d5384100 mrs x0, sp_el0 __READ_ONCE_SIZE; ffff8000113acc08: b9401801 ldr w1, [x0,#24] ffff8000113acc0c: 11080021 add w1, w1, #0x200 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113acc10: b9001801 str w1, [x0,#24] rc = napi->poll(napi, BUSY_POLL_BUDGET); ffff8000113acc14: f9401662 ldr x2, [x19,#40] ffff8000113acc18: 52800101 mov w1, #0x8 // #8 ffff8000113acc1c: aa1303e0 mov x0, x19 ffff8000113acc20: d63f0040 blr x2 ffff8000113acc24: 2a0003f5 mov w21, w0 __READ_ONCE_SIZE; ffff8000113acc28: 90000000 adrp x0, 0 <__tracepoint_napi_poll> ffff8000113acc28: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_napi_poll ffff8000113acc2c: 91000000 add x0, x0, #0x0 ffff8000113acc2c: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_napi_poll ffff8000113acc30: b9400801 ldr w1, [x0,#8] ffff8000113acc34: 6b1f003f cmp w1, wzr ffff8000113acc38: 540003cc b.gt ffff8000113accb0 static inline void netpoll_poll_unlock(void *have) { struct napi_struct *napi = have; if (napi) ffff8000113acc3c: b4000096 cbz x22, ffff8000113acc4c smp_store_release(&napi->poll_owner, -1); ffff8000113acc40: 12800000 mov w0, #0xffffffff // #-1 ffff8000113acc44: 9100c2d6 add x22, x22, #0x30 ffff8000113acc48: 889ffec0 stlr w0, [x22] if (rc == BUSY_POLL_BUDGET) { ffff8000113acc4c: 710022bf cmp w21, #0x8 ffff8000113acc50: 54000120 b.eq ffff8000113acc74 ffff8000113acc54: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113acc54: R_AARCH64_ADR_PREL_PG_HI21 .text+0xe8d8 ffff8000113acc58: 91000000 add x0, x0, #0x0 ffff8000113acc58: R_AARCH64_ADD_ABS_LO12_NC .text+0xe8d8 ffff8000113acc5c: 52804001 mov w1, #0x200 // #512 ffff8000113acc60: 94000000 bl 0 <__local_bh_enable_ip> ffff8000113acc60: R_AARCH64_CALL26 __local_bh_enable_ip } ffff8000113acc64: a94153f3 ldp x19, x20, [sp,#16] ffff8000113acc68: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113acc6c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113acc70: d65f03c0 ret if (!napi->rx_count) ffff8000113acc74: b9411a60 ldr w0, [x19,#280] ffff8000113acc78: 35000160 cbnz w0, ffff8000113acca4 __napi_schedule(napi); ffff8000113acc7c: aa1303e0 mov x0, x19 ffff8000113acc80: 94000000 bl ffff8000113a5864 <__napi_schedule> ffff8000113acc80: R_AARCH64_CALL26 __napi_schedule ffff8000113acc84: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113acc84: R_AARCH64_ADR_PREL_PG_HI21 .text+0xe8d8 ffff8000113acc88: 91000000 add x0, x0, #0x0 ffff8000113acc88: R_AARCH64_ADD_ABS_LO12_NC .text+0xe8d8 ffff8000113acc8c: 52804001 mov w1, #0x200 // #512 ffff8000113acc90: 94000000 bl 0 <__local_bh_enable_ip> ffff8000113acc90: R_AARCH64_CALL26 __local_bh_enable_ip } ffff8000113acc94: a94153f3 ldp x19, x20, [sp,#16] ffff8000113acc98: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113acc9c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113acca0: d65f03c0 ret ffff8000113acca4: aa1303e0 mov x0, x19 ffff8000113acca8: 97fffbea bl ffff8000113abc50 ffff8000113accac: 17fffff4 b ffff8000113acc7c #include #include #define NO_DEV "(no_device)" TRACE_EVENT(napi_poll, ffff8000113accb0: 90000001 adrp x1, 0 ffff8000113accb0: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113accb4: d538d082 mrs x2, tpidr_el1 ffff8000113accb8: 91000021 add x1, x1, #0x0 ffff8000113accb8: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113accbc: b8616841 ldr w1, [x2,x1] return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); ffff8000113accc0: 90000002 adrp x2, 0 <__cpu_online_mask> ffff8000113accc0: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113accc4: 1ad40c34 sdiv w20, w1, w20 ffff8000113accc8: 937d7e94 sbfiz x20, x20, #3, #32 ffff8000113acccc: 91000042 add x2, x2, #0x0 ffff8000113acccc: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113accd0: f8626a82 ldr x2, [x20,x2] ffff8000113accd4: 9ac12441 lsr x1, x2, x1 ffff8000113accd8: 3607fb21 tbz w1, #0, ffff8000113acc3c ffff8000113accdc: f9401014 ldr x20, [x0,#32] ffff8000113acce0: b4000134 cbz x20, ffff8000113acd04 ffff8000113acce4: f9400284 ldr x4, [x20] ffff8000113acce8: f9400680 ldr x0, [x20,#8] ffff8000113accec: aa1303e1 mov x1, x19 ffff8000113accf0: 2a1503e2 mov w2, w21 ffff8000113accf4: 52800103 mov w3, #0x8 // #8 ffff8000113accf8: d63f0080 blr x4 ffff8000113accfc: f8418e84 ldr x4, [x20,#24]! ffff8000113acd00: b5ffff44 cbnz x4, ffff8000113acce8 ffff8000113acd04: 17ffffce b ffff8000113acc3c ffff8000113acd08 : { ffff8000113acd08: a9b87bfd stp x29, x30, [sp,#-128]! ffff8000113acd0c: 910003fd mov x29, sp ffff8000113acd10: a90153f3 stp x19, x20, [sp,#16] ffff8000113acd14: a9025bf5 stp x21, x22, [sp,#32] ffff8000113acd18: a90363f7 stp x23, x24, [sp,#48] ffff8000113acd1c: a9046bf9 stp x25, x26, [sp,#64] ffff8000113acd20: a90573fb stp x27, x28, [sp,#80] ffff8000113acd24: 2a0003f6 mov w22, w0 ffff8000113acd28: aa0103f4 mov x20, x1 ffff8000113acd2c: aa1e03e0 mov x0, x30 ffff8000113acd30: aa0203f8 mov x24, x2 ffff8000113acd34: 94000000 bl 0 <_mcount> ffff8000113acd34: R_AARCH64_CALL26 _mcount unsigned long start_time = loop_end ? busy_loop_current_time() : 0; ffff8000113acd38: b4001054 cbz x20, ffff8000113acf40 return sched_clock(); } static inline u64 local_clock(void) { return sched_clock(); ffff8000113acd3c: 94000000 bl 0 ffff8000113acd3c: R_AARCH64_CALL26 sched_clock return (unsigned long)(local_clock() >> 10); ffff8000113acd40: d34afc19 lsr x25, x0, #10 ffff8000113acd44: 9000001c adrp x28, ffff80001139e37c <__my_cpu_offset> ffff8000113acd44: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113acd48: 9100039c add x28, x28, #0x0 ffff8000113acd48: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff8000113acd4c: 9000001a adrp x26, 0 ffff8000113acd4c: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113acd50: 8b360f9c add x28, x28, w22, uxtb #3 ffff8000113acd54: 90000017 adrp x23, ffff80001139e37c <__my_cpu_offset> ffff8000113acd54: R_AARCH64_ADR_PREL_PG_HI21 .text+0xea9c ffff8000113acd58: 9100035a add x26, x26, #0x0 ffff8000113acd58: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113acd5c: f9003bbc str x28, [x29,#112] void *have_poll_lock = NULL; ffff8000113acd60: f9003fbf str xzr, [x29,#120] ffff8000113acd64: 910002f7 add x23, x23, #0x0 ffff8000113acd64: R_AARCH64_ADD_ABS_LO12_NC .text+0xea9c int owner = smp_processor_id(); ffff8000113acd68: f90037ba str x26, [x29,#104] ffff8000113acd6c: f9403ba5 ldr x5, [x29,#112] ffff8000113acd70: f94000a4 ldr x4, [x5] hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) ffff8000113acd74: b4000ea4 cbz x4, ffff8000113acf48 ffff8000113acd78: d105c09b sub x27, x4, #0x170 ffff8000113acd7c: b40000db cbz x27, ffff8000113acd94 if (napi->napi_id == napi_id) ffff8000113acd80: b9418360 ldr w0, [x27,#384] ffff8000113acd84: 6b0002df cmp w22, w0 ffff8000113acd88: 54000140 b.eq ffff8000113acdb0 ffff8000113acd8c: f940bb64 ldr x4, [x27,#368] hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) ffff8000113acd90: b5ffff44 cbnz x4, ffff8000113acd78 } ffff8000113acd94: a94153f3 ldp x19, x20, [sp,#16] ffff8000113acd98: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113acd9c: a94363f7 ldp x23, x24, [sp,#48] ffff8000113acda0: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113acda4: a94573fb ldp x27, x28, [sp,#80] ffff8000113acda8: a8c87bfd ldp x29, x30, [sp],#128 ffff8000113acdac: d65f03c0 ret ffff8000113acdb0: 90000000 adrp x0, 0 <__cpu_online_mask> ffff8000113acdb0: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask ffff8000113acdb4: 91000000 add x0, x0, #0x0 ffff8000113acdb4: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask napi_poll = NULL; ffff8000113acdb8: d2800015 mov x21, #0x0 // #0 ffff8000113acdbc: f90033a0 str x0, [x29,#96] ffff8000113acdc0: 14000023 b ffff8000113ace4c work = napi_poll(napi, BUSY_POLL_BUDGET); ffff8000113acdc4: 52800101 mov w1, #0x8 // #8 ffff8000113acdc8: aa1b03e0 mov x0, x27 ffff8000113acdcc: d63f02a0 blr x21 ffff8000113acdd0: 2a0003f3 mov w19, w0 ffff8000113acdd4: 90000000 adrp x0, 0 <__tracepoint_napi_poll> ffff8000113acdd4: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_napi_poll ffff8000113acdd8: 91000000 add x0, x0, #0x0 ffff8000113acdd8: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_napi_poll ffff8000113acddc: b9400801 ldr w1, [x0,#8] ffff8000113acde0: 6b1f003f cmp w1, wzr ffff8000113acde4: 54000d2c b.gt ffff8000113acf88 if (!napi->rx_count) ffff8000113acde8: b9411b60 ldr w0, [x27,#280] ffff8000113acdec: 350009a0 cbnz w0, ffff8000113acf20 if (work > 0) ffff8000113acdf0: 6b1f027f cmp w19, wzr ffff8000113acdf4: 5400012d b.le ffff8000113ace18 ffff8000113acdf8: f9401f60 ldr x0, [x27,#56] ffff8000113acdfc: d538d081 mrs x1, tpidr_el1 __NET_ADD_STATS(dev_net(napi->dev), ffff8000113ace00: f9427800 ldr x0, [x0,#1264] ffff8000113ace04: f940c800 ldr x0, [x0,#400] ffff8000113ace08: 910b8000 add x0, x0, #0x2e0 ffff8000113ace0c: f8606822 ldr x2, [x1,x0] ffff8000113ace10: 8b33c053 add x19, x2, w19, sxtw ffff8000113ace14: f8206833 str x19, [x1,x0] ffff8000113ace18: aa1703e0 mov x0, x23 ffff8000113ace1c: 52804001 mov w1, #0x200 // #512 ffff8000113ace20: 94000000 bl 0 <__local_bh_enable_ip> ffff8000113ace20: R_AARCH64_CALL26 __local_bh_enable_ip if (!loop_end || loop_end(loop_end_arg, start_time)) ffff8000113ace24: b4000854 cbz x20, ffff8000113acf2c ffff8000113ace28: aa1803e0 mov x0, x24 ffff8000113ace2c: aa1903e1 mov x1, x25 ffff8000113ace30: d63f0280 blr x20 ffff8000113ace34: 53001c00 uxtb w0, w0 ffff8000113ace38: 350007a0 cbnz w0, ffff8000113acf2c ffff8000113ace3c: d5384100 mrs x0, sp_el0 ffff8000113ace40: f9400000 ldr x0, [x0] if (unlikely(need_resched())) { ffff8000113ace44: 370808c0 tbnz w0, #1, ffff8000113acf5c #ifndef __ASSEMBLY__ static inline void cpu_relax(void) { asm volatile("yield" ::: "memory"); ffff8000113ace48: d503203f yield ffff8000113ace4c: d5384100 mrs x0, sp_el0 ffff8000113ace50: b9401801 ldr w1, [x0,#24] ffff8000113ace54: 11080021 add w1, w1, #0x200 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113ace58: b9001801 str w1, [x0,#24] if (!napi_poll) { ffff8000113ace5c: b5fffb55 cbnz x21, ffff8000113acdc4 __READ_ONCE_SIZE; ffff8000113ace60: f9400b60 ldr x0, [x27,#16] if (val & (NAPIF_STATE_DISABLE | NAPIF_STATE_SCHED | ffff8000113ace64: d28008a1 mov x1, #0x45 // #69 ffff8000113ace68: ea01001f tst x0, x1 ffff8000113ace6c: 54fffd61 b.ne ffff8000113ace18 if (cmpxchg(&napi->state, val, ffff8000113ace70: d2800821 mov x1, #0x41 // #65 ffff8000113ace74: aa010001 orr x1, x0, x1 __CMPXCHG_CASE( , , mb_, 64, dmb ish, , l, "memory", L) ffff8000113ace78: 91004367 add x7, x27, #0x10 ffff8000113ace7c: f98000f1 prfm pstl1strm, [x7] ffff8000113ace80: c85f7ce2 ldxr x2, [x7] ffff8000113ace84: ca000043 eor x3, x2, x0 ffff8000113ace88: b5000083 cbnz x3, ffff8000113ace98 ffff8000113ace8c: c803fce1 stlxr w3, x1, [x7] ffff8000113ace90: 35ffff83 cbnz w3, ffff8000113ace80 ffff8000113ace94: d5033bbf dmb ish ffff8000113ace98: eb02001f cmp x0, x2 ffff8000113ace9c: 54fffbe1 b.ne ffff8000113ace18 struct net_device *dev = napi->dev; ffff8000113acea0: f9401f60 ldr x0, [x27,#56] if (dev && dev->npinfo) { ffff8000113acea4: b4000560 cbz x0, ffff8000113acf50 ffff8000113acea8: f9427400 ldr x0, [x0,#1256] ffff8000113aceac: b4000520 cbz x0, ffff8000113acf50 while (cmpxchg(&napi->poll_owner, -1, owner) != -1) ffff8000113aceb0: f94037a5 ldr x5, [x29,#104] ffff8000113aceb4: d538d080 mrs x0, tpidr_el1 ffff8000113aceb8: b8a56803 ldrsw x3, [x0,x5] __CMPXCHG_CASE(w, , mb_, 32, dmb ish, , l, "memory", K) ffff8000113acebc: b2407fe1 mov x1, #0xffffffff // #4294967295 ffff8000113acec0: 9100c360 add x0, x27, #0x30 } __CMPXCHG_GEN() __CMPXCHG_GEN(_acq) __CMPXCHG_GEN(_rel) __CMPXCHG_GEN(_mb) ffff8000113acec4: 2a0303e2 mov w2, w3 ffff8000113acec8: f9800011 prfm pstl1strm, [x0] ffff8000113acecc: 885f7c05 ldxr w5, [x0] ffff8000113aced0: 4a0100a6 eor w6, w5, w1 ffff8000113aced4: 35000086 cbnz w6, ffff8000113acee4 ffff8000113aced8: 8806fc03 stlxr w6, w3, [x0] ffff8000113acedc: 35ffff86 cbnz w6, ffff8000113acecc ffff8000113acee0: d5033bbf dmb ish ffff8000113acee4: 310004bf cmn w5, #0x1 ffff8000113acee8: 54000160 b.eq ffff8000113acf14 ffff8000113aceec: d503203f yield ffff8000113acef0: f9800011 prfm pstl1strm, [x0] ffff8000113acef4: 885f7c03 ldxr w3, [x0] ffff8000113acef8: 4a010065 eor w5, w3, w1 ffff8000113acefc: 35000085 cbnz w5, ffff8000113acf0c ffff8000113acf00: 8805fc02 stlxr w5, w2, [x0] ffff8000113acf04: 35ffff85 cbnz w5, ffff8000113acef4 ffff8000113acf08: d5033bbf dmb ish ffff8000113acf0c: 3100047f cmn w3, #0x1 ffff8000113acf10: 54fffee1 b.ne ffff8000113aceec ffff8000113acf14: f9003fbb str x27, [x29,#120] napi_poll = napi->poll; ffff8000113acf18: f9401775 ldr x21, [x27,#40] ffff8000113acf1c: 17ffffaa b ffff8000113acdc4 ffff8000113acf20: aa1b03e0 mov x0, x27 ffff8000113acf24: 97fffb4b bl ffff8000113abc50 ffff8000113acf28: 17ffffb2 b ffff8000113acdf0 if (napi_poll) ffff8000113acf2c: b4000095 cbz x21, ffff8000113acf3c busy_poll_stop(napi, have_poll_lock); ffff8000113acf30: f9403fa1 ldr x1, [x29,#120] ffff8000113acf34: aa1b03e0 mov x0, x27 ffff8000113acf38: 97ffff1e bl ffff8000113acbb0 preempt_enable(); ffff8000113acf3c: 17ffff96 b ffff8000113acd94 unsigned long start_time = loop_end ? busy_loop_current_time() : 0; ffff8000113acf40: aa1403f9 mov x25, x20 ffff8000113acf44: 17ffff80 b ffff8000113acd44 hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) ffff8000113acf48: aa0403fb mov x27, x4 ffff8000113acf4c: 17ffff8c b ffff8000113acd7c return NULL; ffff8000113acf50: f9003fb5 str x21, [x29,#120] napi_poll = napi->poll; ffff8000113acf54: f9401775 ldr x21, [x27,#40] ffff8000113acf58: 17ffff9b b ffff8000113acdc4 if (napi_poll) ffff8000113acf5c: b4000095 cbz x21, ffff8000113acf6c busy_poll_stop(napi, have_poll_lock); ffff8000113acf60: f9403fa1 ldr x1, [x29,#120] ffff8000113acf64: aa1b03e0 mov x0, x27 ffff8000113acf68: 97ffff12 bl ffff8000113acbb0 cond_resched(); ffff8000113acf6c: 94000000 bl 0 <_cond_resched> ffff8000113acf6c: R_AARCH64_CALL26 _cond_resched if (loop_end(loop_end_arg, start_time)) ffff8000113acf70: aa1803e0 mov x0, x24 ffff8000113acf74: aa1903e1 mov x1, x25 ffff8000113acf78: d63f0280 blr x20 ffff8000113acf7c: 53001c00 uxtb w0, w0 ffff8000113acf80: 34ffef60 cbz w0, ffff8000113acd6c ffff8000113acf84: 17ffff84 b ffff8000113acd94 ffff8000113acf88: d538d081 mrs x1, tpidr_el1 ffff8000113acf8c: b87a6821 ldr w1, [x1,x26] ffff8000113acf90: f94033a7 ldr x7, [x29,#96] ffff8000113acf94: 1100fc22 add w2, w1, #0x3f ffff8000113acf98: 6b1f003f cmp w1, wzr ffff8000113acf9c: 1a81b042 csel w2, w2, w1, lt ffff8000113acfa0: 13067c42 asr w2, w2, #6 ffff8000113acfa4: 937d7c42 sbfiz x2, x2, #3, #32 ffff8000113acfa8: f8676842 ldr x2, [x2,x7] ffff8000113acfac: 9ac12441 lsr x1, x2, x1 ffff8000113acfb0: 3607f1c1 tbz w1, #0, ffff8000113acde8 ffff8000113acfb4: f940101c ldr x28, [x0,#32] ffff8000113acfb8: b400013c cbz x28, ffff8000113acfdc ffff8000113acfbc: f9400386 ldr x6, [x28] ffff8000113acfc0: f9400780 ldr x0, [x28,#8] ffff8000113acfc4: aa1b03e1 mov x1, x27 ffff8000113acfc8: 2a1303e2 mov w2, w19 ffff8000113acfcc: 52800103 mov w3, #0x8 // #8 ffff8000113acfd0: d63f00c0 blr x6 ffff8000113acfd4: f8418f86 ldr x6, [x28,#24]! ffff8000113acfd8: b5ffff46 cbnz x6, ffff8000113acfc0 ffff8000113acfdc: 17ffff83 b ffff8000113acde8 ffff8000113acfe0 : { ffff8000113acfe0: a9b47bfd stp x29, x30, [sp,#-192]! ffff8000113acfe4: 910003fd mov x29, sp ffff8000113acfe8: a90153f3 stp x19, x20, [sp,#16] ffff8000113acfec: a9025bf5 stp x21, x22, [sp,#32] ffff8000113acff0: a90363f7 stp x23, x24, [sp,#48] ffff8000113acff4: a9046bf9 stp x25, x26, [sp,#64] ffff8000113acff8: a90573fb stp x27, x28, [sp,#80] ffff8000113acffc: aa1e03e0 mov x0, x30 ffff8000113ad000: 94000000 bl 0 <_mcount> ffff8000113ad000: R_AARCH64_CALL26 _mcount usecs_to_jiffies(netdev_budget_usecs); ffff8000113ad004: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff8000113ad004: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly ffff8000113ad008: 91000273 add x19, x19, #0x0 ffff8000113ad008: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly { ffff8000113ad00c: 90000000 adrp x0, 0 <__stack_chk_guard> ffff8000113ad00c: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ad010: f9400001 ldr x1, [x0] ffff8000113ad010: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard struct softnet_data *sd = this_cpu_ptr(&softnet_data); ffff8000113ad014: 90000019 adrp x25, ffff80001139e37c <__my_cpu_offset> ffff8000113ad014: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned if (__builtin_constant_p(u)) { if (u > jiffies_to_usecs(MAX_JIFFY_OFFSET)) return MAX_JIFFY_OFFSET; return _usecs_to_jiffies(u); } else { return __usecs_to_jiffies(u); ffff8000113ad018: b9495e60 ldr w0, [x19,#2396] ffff8000113ad01c: 91000339 add x25, x25, #0x0 ffff8000113ad01c: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff8000113ad020: d538d084 mrs x4, tpidr_el1 ffff8000113ad024: f9003fb9 str x25, [x29,#120] ffff8000113ad028: f9003ba4 str x4, [x29,#112] { ffff8000113ad02c: f9005fa1 str x1, [x29,#184] ffff8000113ad030: 94000000 bl 0 <__usecs_to_jiffies> ffff8000113ad030: R_AARCH64_CALL26 __usecs_to_jiffies unsigned long time_limit = jiffies + ffff8000113ad034: 90000016 adrp x22, 0 ffff8000113ad034: R_AARCH64_ADR_PREL_PG_HI21 jiffies struct softnet_data *sd = this_cpu_ptr(&softnet_data); ffff8000113ad038: f9403ba4 ldr x4, [x29,#112] unsigned long time_limit = jiffies + ffff8000113ad03c: f94002d7 ldr x23, [x22] ffff8000113ad03c: R_AARCH64_LDST64_ABS_LO12_NC jiffies LIST_HEAD(repoll); ffff8000113ad040: 9102a3a6 add x6, x29, #0xa8 LIST_HEAD(list); ffff8000113ad044: 910263b4 add x20, x29, #0x98 struct softnet_data *sd = this_cpu_ptr(&softnet_data); ffff8000113ad048: f9403fa7 ldr x7, [x29,#120] ffff8000113ad04c: 8b070084 add x4, x4, x7 unsigned long time_limit = jiffies + ffff8000113ad050: 8b170017 add x23, x0, x23 LIST_HEAD(repoll); ffff8000113ad054: f90047a6 str x6, [x29,#136] struct softnet_data *sd = this_cpu_ptr(&softnet_data); ffff8000113ad058: f9003fa7 str x7, [x29,#120] ffff8000113ad05c: f90043a4 str x4, [x29,#128] int budget = netdev_budget; ffff8000113ad060: b9496273 ldr w19, [x19,#2400] LIST_HEAD(list); ffff8000113ad064: f9004fb4 str x20, [x29,#152] ffff8000113ad068: f90053b4 str x20, [x29,#160] LIST_HEAD(repoll); ffff8000113ad06c: f90057a6 str x6, [x29,#168] ffff8000113ad070: f9005ba6 str x6, [x29,#176] asm volatile(ALTERNATIVE( ffff8000113ad074: d2800c00 mov x0, #0x60 // #96 ffff8000113ad078: d50342df msr daifset, #0x2 ffff8000113ad07c: f9403ba6 ldr x6, [x29,#112] ffff8000113ad080: f9403fa4 ldr x4, [x29,#120] if (!list_empty(list)) { ffff8000113ad084: f94043a7 ldr x7, [x29,#128] ffff8000113ad088: f86468c0 ldr x0, [x6,x4] ffff8000113ad08c: eb0000ff cmp x7, x0 ffff8000113ad090: 54000140 b.eq ffff8000113ad0b8 struct list_head *first = list->next; ffff8000113ad094: f86468c2 ldr x2, [x6,x4] struct list_head *last = list->prev; ffff8000113ad098: f94004e1 ldr x1, [x7,#8] __list_splice(list, head, head->next); ffff8000113ad09c: f9404fa0 ldr x0, [x29,#152] first->prev = prev; ffff8000113ad0a0: f9000454 str x20, [x2,#8] prev->next = first; ffff8000113ad0a4: f9004fa2 str x2, [x29,#152] last->next = next; ffff8000113ad0a8: f9000020 str x0, [x1] next->prev = last; ffff8000113ad0ac: f9000401 str x1, [x0,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113ad0b0: f82468c7 str x7, [x6,x4] list->prev = list; ffff8000113ad0b4: f90004e7 str x7, [x7,#8] asm volatile(ALTERNATIVE( ffff8000113ad0b8: d2801c00 mov x0, #0xe0 // #224 ffff8000113ad0bc: d50342ff msr daifclr, #0x2 ffff8000113ad0c0: 90000000 adrp x0, 0 <__cpu_online_mask> ffff8000113ad0c0: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask int owner = smp_processor_id(); ffff8000113ad0c4: 90000015 adrp x21, 0 ffff8000113ad0c4: R_AARCH64_ADR_PREL_PG_HI21 cpu_number ffff8000113ad0c8: 91000000 add x0, x0, #0x0 ffff8000113ad0c8: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113ad0cc: 910002b5 add x21, x21, #0x0 ffff8000113ad0cc: R_AARCH64_ADD_ABS_LO12_NC cpu_number ffff8000113ad0d0: f90033a0 str x0, [x29,#96] ffff8000113ad0d4: f90037b5 str x21, [x29,#104] __READ_ONCE_SIZE; ffff8000113ad0d8: f9404fa0 ldr x0, [x29,#152] if (list_empty(&list)) { ffff8000113ad0dc: eb00029f cmp x20, x0 ffff8000113ad0e0: 540014a0 b.eq ffff8000113ad374 n = list_first_entry(&list, struct napi_struct, poll_list); ffff8000113ad0e4: f940029c ldr x28, [x20] if (!__list_del_entry_valid(entry)) ffff8000113ad0e8: aa1c03e0 mov x0, x28 ffff8000113ad0ec: 94000000 bl 0 <__list_del_entry_valid> ffff8000113ad0ec: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113ad0f0: 53001c00 uxtb w0, w0 ffff8000113ad0f4: 340000a0 cbz w0, ffff8000113ad108 __list_del(entry->prev, entry->next); ffff8000113ad0f8: f9400780 ldr x0, [x28,#8] ffff8000113ad0fc: f9400381 ldr x1, [x28] next->prev = prev; ffff8000113ad100: f9000420 str x0, [x1,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113ad104: f9000001 str x1, [x0] struct net_device *dev = napi->dev; ffff8000113ad108: f9401f80 ldr x0, [x28,#56] ffff8000113ad10c: f900039c str x28, [x28] list->prev = list; ffff8000113ad110: f900079c str x28, [x28,#8] if (dev && dev->npinfo) { ffff8000113ad114: b4001440 cbz x0, ffff8000113ad39c ffff8000113ad118: f9427409 ldr x9, [x0,#1256] ffff8000113ad11c: b40013c9 cbz x9, ffff8000113ad394 ffff8000113ad120: d538d080 mrs x0, tpidr_el1 while (cmpxchg(&napi->poll_owner, -1, owner) != -1) ffff8000113ad124: b8b56800 ldrsw x0, [x0,x21] ffff8000113ad128: 9100c382 add x2, x28, #0x30 ffff8000113ad12c: 2a0003e3 mov w3, w0 ffff8000113ad130: b2407fe4 mov x4, #0xffffffff // #4294967295 ffff8000113ad134: f9800051 prfm pstl1strm, [x2] ffff8000113ad138: 885f7c41 ldxr w1, [x2] ffff8000113ad13c: 4a040025 eor w5, w1, w4 ffff8000113ad140: 35000085 cbnz w5, ffff8000113ad150 ffff8000113ad144: 8805fc40 stlxr w5, w0, [x2] ffff8000113ad148: 35ffff85 cbnz w5, ffff8000113ad138 ffff8000113ad14c: d5033bbf dmb ish ffff8000113ad150: 3100043f cmn w1, #0x1 ffff8000113ad154: 54000160 b.eq ffff8000113ad180 ffff8000113ad158: d503203f yield ffff8000113ad15c: f9800051 prfm pstl1strm, [x2] ffff8000113ad160: 885f7c45 ldxr w5, [x2] ffff8000113ad164: 4a0400a0 eor w0, w5, w4 ffff8000113ad168: 35000080 cbnz w0, ffff8000113ad178 ffff8000113ad16c: 8800fc43 stlxr w0, w3, [x2] ffff8000113ad170: 35ffff80 cbnz w0, ffff8000113ad160 ffff8000113ad174: d5033bbf dmb ish ffff8000113ad178: 310004bf cmn w5, #0x1 ffff8000113ad17c: 54fffee1 b.ne ffff8000113ad158 return napi; ffff8000113ad180: aa1c03f9 mov x25, x28 ffff8000113ad184: f9400b80 ldr x0, [x28,#16] weight = n->weight; ffff8000113ad188: b9401b9b ldr w27, [x28,#24] work = 0; ffff8000113ad18c: 5280001a mov w26, #0x0 // #0 if (test_bit(NAPI_STATE_SCHED, &n->state)) { ffff8000113ad190: 37000b00 tbnz w0, #0, ffff8000113ad2f0 WARN_ON_ONCE(work > weight); ffff8000113ad194: 6b1a037f cmp w27, w26 ffff8000113ad198: 540010cb b.lt ffff8000113ad3b0 if (likely(work < weight)) ffff8000113ad19c: 6b1a037f cmp w27, w26 ffff8000113ad1a0: 540010ed b.le ffff8000113ad3bc if (napi) ffff8000113ad1a4: b4000099 cbz x25, ffff8000113ad1b4 smp_store_release(&napi->poll_owner, -1); ffff8000113ad1a8: 12800000 mov w0, #0xffffffff // #-1 ffff8000113ad1ac: 9100c339 add x25, x25, #0x30 ffff8000113ad1b0: 889fff20 stlr w0, [x25] budget -= napi_poll(n, &repoll); ffff8000113ad1b4: 4b1a0273 sub w19, w19, w26 if (unlikely(budget <= 0 || ffff8000113ad1b8: 6b1f027f cmp w19, wzr ffff8000113ad1bc: 5400008d b.le ffff8000113ad1cc ffff8000113ad1c0: f94002c0 ldr x0, [x22] ffff8000113ad1c0: R_AARCH64_LDST64_ABS_LO12_NC jiffies ffff8000113ad1c4: cb170000 sub x0, x0, x23 ffff8000113ad1c8: b7fff880 tbnz x0, #63, ffff8000113ad0d8 sd->time_squeeze++; ffff8000113ad1cc: f94043a4 ldr x4, [x29,#128] ffff8000113ad1d0: b9402c80 ldr w0, [x4,#44] ffff8000113ad1d4: 11000400 add w0, w0, #0x1 ffff8000113ad1d8: b9002c80 str w0, [x4,#44] asm volatile(ALTERNATIVE( ffff8000113ad1dc: d2800c00 mov x0, #0x60 // #96 ffff8000113ad1e0: d50342df msr daifset, #0x2 __READ_ONCE_SIZE; ffff8000113ad1e4: f9403ba7 ldr x7, [x29,#112] ffff8000113ad1e8: f9403fa6 ldr x6, [x29,#120] if (!list_empty(list)) { ffff8000113ad1ec: f94043a4 ldr x4, [x29,#128] ffff8000113ad1f0: f86668e0 ldr x0, [x7,x6] ffff8000113ad1f4: eb00009f cmp x4, x0 ffff8000113ad1f8: 54000140 b.eq ffff8000113ad220 __list_splice(list, head->prev, head); ffff8000113ad1fc: f94053a1 ldr x1, [x29,#160] struct list_head *first = list->next; ffff8000113ad200: f86668e2 ldr x2, [x7,x6] struct list_head *last = list->prev; ffff8000113ad204: f9400480 ldr x0, [x4,#8] first->prev = prev; ffff8000113ad208: f9000441 str x1, [x2,#8] prev->next = first; ffff8000113ad20c: f9000022 str x2, [x1] last->next = next; ffff8000113ad210: f9000014 str x20, [x0] next->prev = last; ffff8000113ad214: f90053a0 str x0, [x29,#160] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113ad218: f82668e4 str x4, [x7,x6] list->prev = list; ffff8000113ad21c: f9000484 str x4, [x4,#8] __READ_ONCE_SIZE; ffff8000113ad220: f94057a0 ldr x0, [x29,#168] if (!list_empty(list)) ffff8000113ad224: f94047a6 ldr x6, [x29,#136] ffff8000113ad228: eb0000df cmp x6, x0 ffff8000113ad22c: 54000100 b.eq ffff8000113ad24c __list_splice(list, head->prev, head); ffff8000113ad230: f94053a1 ldr x1, [x29,#160] struct list_head *first = list->next; ffff8000113ad234: f94057a2 ldr x2, [x29,#168] struct list_head *last = list->prev; ffff8000113ad238: f9405ba0 ldr x0, [x29,#176] first->prev = prev; ffff8000113ad23c: f9000441 str x1, [x2,#8] prev->next = first; ffff8000113ad240: f9000022 str x2, [x1] last->next = next; ffff8000113ad244: f9000014 str x20, [x0] next->prev = last; ffff8000113ad248: f90053a0 str x0, [x29,#160] ffff8000113ad24c: f9404fa0 ldr x0, [x29,#152] if (!list_empty(list)) ffff8000113ad250: eb00029f cmp x20, x0 ffff8000113ad254: 54000160 b.eq ffff8000113ad280 struct list_head *first = list->next; ffff8000113ad258: f9404fa2 ldr x2, [x29,#152] __list_splice(list, head, head->next); ffff8000113ad25c: f9403ba4 ldr x4, [x29,#112] ffff8000113ad260: f9403fa7 ldr x7, [x29,#120] first->prev = prev; ffff8000113ad264: f94043a6 ldr x6, [x29,#128] __list_splice(list, head, head->next); ffff8000113ad268: f8676880 ldr x0, [x4,x7] struct list_head *last = list->prev; ffff8000113ad26c: f94053a1 ldr x1, [x29,#160] first->prev = prev; ffff8000113ad270: f9000446 str x6, [x2,#8] prev->next = first; ffff8000113ad274: f8276882 str x2, [x4,x7] last->next = next; ffff8000113ad278: f9000020 str x0, [x1] next->prev = last; ffff8000113ad27c: f9000401 str x1, [x0,#8] ffff8000113ad280: f9403ba4 ldr x4, [x29,#112] ffff8000113ad284: f9403fa7 ldr x7, [x29,#120] if (!list_empty(&sd->poll_list)) ffff8000113ad288: f94043a6 ldr x6, [x29,#128] ffff8000113ad28c: f8676880 ldr x0, [x4,x7] ffff8000113ad290: eb0000df cmp x6, x0 ffff8000113ad294: 54000060 b.eq ffff8000113ad2a0 __raise_softirq_irqoff(NET_RX_SOFTIRQ); ffff8000113ad298: 52800060 mov w0, #0x3 // #3 ffff8000113ad29c: 94000000 bl 0 <__raise_softirq_irqoff> ffff8000113ad29c: R_AARCH64_CALL26 __raise_softirq_irqoff struct softnet_data *remsd = sd->rps_ipi_list; ffff8000113ad2a0: f94043a7 ldr x7, [x29,#128] ffff8000113ad2a4: f9401ce0 ldr x0, [x7,#56] if (remsd) { ffff8000113ad2a8: b40007e0 cbz x0, ffff8000113ad3a4 sd->rps_ipi_list = NULL; ffff8000113ad2ac: f9001cff str xzr, [x7,#56] asm volatile(ALTERNATIVE( ffff8000113ad2b0: d2801c01 mov x1, #0xe0 // #224 ffff8000113ad2b4: d50342ff msr daifclr, #0x2 net_rps_send_ipi(remsd); ffff8000113ad2b8: 97ffd05c bl ffff8000113a1428 __kfree_skb_flush(); ffff8000113ad2bc: 94000000 bl 0 <__kfree_skb_flush> ffff8000113ad2bc: R_AARCH64_CALL26 __kfree_skb_flush } ffff8000113ad2c0: 90000002 adrp x2, 0 <__stack_chk_guard> ffff8000113ad2c0: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ad2c4: f9405fa1 ldr x1, [x29,#184] ffff8000113ad2c8: f9400040 ldr x0, [x2] ffff8000113ad2c8: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ad2cc: eb00003f cmp x1, x0 ffff8000113ad2d0: 54000741 b.ne ffff8000113ad3b8 ffff8000113ad2d4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ad2d8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ad2dc: a94363f7 ldp x23, x24, [sp,#48] ffff8000113ad2e0: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113ad2e4: a94573fb ldp x27, x28, [sp,#80] ffff8000113ad2e8: a8cc7bfd ldp x29, x30, [sp],#192 ffff8000113ad2ec: d65f03c0 ret work = n->poll(n, weight); ffff8000113ad2f0: f9401782 ldr x2, [x28,#40] ffff8000113ad2f4: 2a1b03e1 mov w1, w27 ffff8000113ad2f8: aa1c03e0 mov x0, x28 ffff8000113ad2fc: d63f0040 blr x2 ffff8000113ad300: 2a0003fa mov w26, w0 ffff8000113ad304: 90000000 adrp x0, 0 <__tracepoint_napi_poll> ffff8000113ad304: R_AARCH64_ADR_PREL_PG_HI21 __tracepoint_napi_poll ffff8000113ad308: 91000000 add x0, x0, #0x0 ffff8000113ad308: R_AARCH64_ADD_ABS_LO12_NC __tracepoint_napi_poll ffff8000113ad30c: b9400801 ldr w1, [x0,#8] ffff8000113ad310: 6b1f003f cmp w1, wzr ffff8000113ad314: 54fff40d b.le ffff8000113ad194 ffff8000113ad318: f94037a4 ldr x4, [x29,#104] ffff8000113ad31c: d538d081 mrs x1, tpidr_el1 ffff8000113ad320: b8646821 ldr w1, [x1,x4] ffff8000113ad324: f94033a6 ldr x6, [x29,#96] ffff8000113ad328: 1100fc22 add w2, w1, #0x3f ffff8000113ad32c: 6b1f003f cmp w1, wzr ffff8000113ad330: 1a81b042 csel w2, w2, w1, lt ffff8000113ad334: 13067c42 asr w2, w2, #6 ffff8000113ad338: 937d7c42 sbfiz x2, x2, #3, #32 ffff8000113ad33c: f8666842 ldr x2, [x2,x6] ffff8000113ad340: 9ac12441 lsr x1, x2, x1 ffff8000113ad344: 3607f281 tbz w1, #0, ffff8000113ad194 ffff8000113ad348: f9401018 ldr x24, [x0,#32] ffff8000113ad34c: b4000138 cbz x24, ffff8000113ad370 ffff8000113ad350: f9400308 ldr x8, [x24] ffff8000113ad354: f9400700 ldr x0, [x24,#8] ffff8000113ad358: aa1c03e1 mov x1, x28 ffff8000113ad35c: 2a1a03e2 mov w2, w26 ffff8000113ad360: 2a1b03e3 mov w3, w27 ffff8000113ad364: d63f0100 blr x8 ffff8000113ad368: f8418f08 ldr x8, [x24,#24]! ffff8000113ad36c: b5ffff48 cbnz x8, ffff8000113ad354 ffff8000113ad370: 17ffff89 b ffff8000113ad194 if (!sd_has_rps_ipi_waiting(sd) && list_empty(&repoll)) ffff8000113ad374: f94043a4 ldr x4, [x29,#128] ffff8000113ad378: f9401c80 ldr x0, [x4,#56] ffff8000113ad37c: b5fff300 cbnz x0, ffff8000113ad1dc ffff8000113ad380: f94057a0 ldr x0, [x29,#168] ffff8000113ad384: f94047a6 ldr x6, [x29,#136] ffff8000113ad388: eb0000df cmp x6, x0 ffff8000113ad38c: 54fff281 b.ne ffff8000113ad1dc ffff8000113ad390: 17ffffcb b ffff8000113ad2bc return NULL; ffff8000113ad394: aa0903f9 mov x25, x9 ffff8000113ad398: 17ffff7b b ffff8000113ad184 ffff8000113ad39c: aa0003f9 mov x25, x0 ffff8000113ad3a0: 17ffff79 b ffff8000113ad184 ffff8000113ad3a4: d2801c00 mov x0, #0xe0 // #224 ffff8000113ad3a8: d50342ff msr daifclr, #0x2 ffff8000113ad3ac: 17ffffc4 b ffff8000113ad2bc WARN_ON_ONCE(work > weight); ffff8000113ad3b0: d4210000 brk #0x800 ffff8000113ad3b4: 17ffff7a b ffff8000113ad19c } ffff8000113ad3b8: 94000000 bl 0 <__stack_chk_fail> ffff8000113ad3b8: R_AARCH64_CALL26 __stack_chk_fail ffff8000113ad3bc: f9400b81 ldr x1, [x28,#16] ffff8000113ad3c0: 927e0021 and x1, x1, #0x4 if (unlikely(napi_disable_pending(n))) { ffff8000113ad3c4: b5000321 cbnz x1, ffff8000113ad428 if (n->gro_bitmask) { ffff8000113ad3c8: f9401380 ldr x0, [x28,#32] ffff8000113ad3cc: b4000060 cbz x0, ffff8000113ad3d8 napi_gro_flush(n, HZ >= 1000); ffff8000113ad3d0: aa1c03e0 mov x0, x28 ffff8000113ad3d4: 94000000 bl ffff8000113ac90c ffff8000113ad3d4: R_AARCH64_CALL26 napi_gro_flush if (!napi->rx_count) ffff8000113ad3d8: b9411b80 ldr w0, [x28,#280] ffff8000113ad3dc: 34000060 cbz w0, ffff8000113ad3e8 ffff8000113ad3e0: aa1c03e0 mov x0, x28 ffff8000113ad3e4: 97fffa1b bl ffff8000113abc50 ffff8000113ad3e8: f9400380 ldr x0, [x28] if (unlikely(!list_empty(&n->poll_list))) { ffff8000113ad3ec: eb00039f cmp x28, x0 ffff8000113ad3f0: 54000241 b.ne ffff8000113ad438 __list_add(new, head->prev, head); ffff8000113ad3f4: f9405bbb ldr x27, [x29,#176] if (!__list_add_valid(new, prev, next)) ffff8000113ad3f8: aa1c03e0 mov x0, x28 ffff8000113ad3fc: aa1b03e1 mov x1, x27 ffff8000113ad400: 9102a3a2 add x2, x29, #0xa8 ffff8000113ad404: 94000000 bl 0 <__list_add_valid> ffff8000113ad404: R_AARCH64_CALL26 __list_add_valid ffff8000113ad408: 53001c00 uxtb w0, w0 ffff8000113ad40c: 34ffecc0 cbz w0, ffff8000113ad1a4 next->prev = new; ffff8000113ad410: f9005bbc str x28, [x29,#176] new->next = next; ffff8000113ad414: 9102a3a0 add x0, x29, #0xa8 ffff8000113ad418: f9000380 str x0, [x28] new->prev = prev; ffff8000113ad41c: f900079b str x27, [x28,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113ad420: f900037c str x28, [x27] ffff8000113ad424: 17ffff60 b ffff8000113ad1a4 return napi_complete_done(n, 0); ffff8000113ad428: aa1c03e0 mov x0, x28 ffff8000113ad42c: 52800001 mov w1, #0x0 // #0 ffff8000113ad430: 94000000 bl ffff8000113aca6c ffff8000113ad430: R_AARCH64_CALL26 napi_complete_done ffff8000113ad434: 17ffff5c b ffff8000113ad1a4 pr_warn_once("%s: Budget exhausted after napi rescheduled\n", ffff8000113ad438: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ad438: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113ad43c: 91000000 add x0, x0, #0x0 ffff8000113ad43c: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113ad440: 39405801 ldrb w1, [x0,#22] ffff8000113ad444: 35ffeb01 cbnz w1, ffff8000113ad1a4 ffff8000113ad448: 52800022 mov w2, #0x1 // #1 ffff8000113ad44c: f9401f81 ldr x1, [x28,#56] ffff8000113ad450: 39005802 strb w2, [x0,#22] ffff8000113ad454: b5000061 cbnz x1, ffff8000113ad460 ffff8000113ad458: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113ad458: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x720 ffff8000113ad45c: 91000021 add x1, x1, #0x0 ffff8000113ad45c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x720 ffff8000113ad460: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ad460: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x728 ffff8000113ad464: 91000000 add x0, x0, #0x0 ffff8000113ad464: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x728 ffff8000113ad468: 94000000 bl 0 ffff8000113ad468: R_AARCH64_CALL26 printk ffff8000113ad46c: 17ffff4e b ffff8000113ad1a4 ffff8000113ad470 : { ffff8000113ad470: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113ad474: 910003fd mov x29, sp ffff8000113ad478: a90153f3 stp x19, x20, [sp,#16] ffff8000113ad47c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ad480: f9001bf7 str x23, [sp,#48] list_for_each_entry(iter, &dev->adj_list.upper, list) { ffff8000113ad484: aa0003f7 mov x23, x0 { ffff8000113ad488: aa0003f5 mov x21, x0 ffff8000113ad48c: aa1e03e0 mov x0, x30 ffff8000113ad490: aa0103f6 mov x22, x1 ffff8000113ad494: 94000000 bl 0 <_mcount> ffff8000113ad494: R_AARCH64_CALL26 _mcount list_for_each_entry(iter, &dev->adj_list.upper, list) { ffff8000113ad498: f84a8ef3 ldr x19, [x23,#168]! ffff8000113ad49c: f9427ab4 ldr x20, [x21,#1264] ffff8000113ad4a0: eb1302ff cmp x23, x19 ffff8000113ad4a4: d1006273 sub x19, x19, #0x18 ffff8000113ad4a8: 54000120 b.eq ffff8000113ad4cc if (!net_eq(net, dev_net(iter->dev))) ffff8000113ad4ac: f9400260 ldr x0, [x19] ffff8000113ad4b0: f9427801 ldr x1, [x0,#1264] ffff8000113ad4b4: eb01029f cmp x20, x1 ffff8000113ad4b8: 540002e0 b.eq ffff8000113ad514 list_for_each_entry(iter, &dev->adj_list.upper, list) { ffff8000113ad4bc: f9400e73 ldr x19, [x19,#24] ffff8000113ad4c0: eb1302ff cmp x23, x19 ffff8000113ad4c4: d1006273 sub x19, x19, #0x18 ffff8000113ad4c8: 54ffff21 b.ne ffff8000113ad4ac list_for_each_entry(iter, &dev->adj_list.lower, list) { ffff8000113ad4cc: aa1503f7 mov x23, x21 ffff8000113ad4d0: f84b8ef3 ldr x19, [x23,#184]! ffff8000113ad4d4: eb1302ff cmp x23, x19 ffff8000113ad4d8: d1006273 sub x19, x19, #0x18 ffff8000113ad4dc: 54000120 b.eq ffff8000113ad500 if (!net_eq(net, dev_net(iter->dev))) ffff8000113ad4e0: f9400260 ldr x0, [x19] ffff8000113ad4e4: f9427803 ldr x3, [x0,#1264] ffff8000113ad4e8: eb03029f cmp x20, x3 ffff8000113ad4ec: 54000240 b.eq ffff8000113ad534 list_for_each_entry(iter, &dev->adj_list.lower, list) { ffff8000113ad4f0: f9400e73 ldr x19, [x19,#24] ffff8000113ad4f4: eb1302ff cmp x23, x19 ffff8000113ad4f8: d1006273 sub x19, x19, #0x18 ffff8000113ad4fc: 54ffff21 b.ne ffff8000113ad4e0 } ffff8000113ad500: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ad504: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ad508: f9401bf7 ldr x23, [sp,#48] ffff8000113ad50c: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113ad510: d65f03c0 ret netdev_adjacent_sysfs_del(iter->dev, oldname, ffff8000113ad514: 9102e002 add x2, x0, #0xb8 ffff8000113ad518: aa1603e1 mov x1, x22 ffff8000113ad51c: 97ffcea0 bl ffff8000113a0f9c &iter->dev->adj_list.lower); ffff8000113ad520: f9400260 ldr x0, [x19] netdev_adjacent_sysfs_add(iter->dev, dev, ffff8000113ad524: aa1503e1 mov x1, x21 ffff8000113ad528: 9102e002 add x2, x0, #0xb8 ffff8000113ad52c: 97ffce77 bl ffff8000113a0f08 ffff8000113ad530: 17ffffe3 b ffff8000113ad4bc netdev_adjacent_sysfs_del(iter->dev, oldname, ffff8000113ad534: 9102a002 add x2, x0, #0xa8 ffff8000113ad538: aa1603e1 mov x1, x22 ffff8000113ad53c: 97ffce98 bl ffff8000113a0f9c &iter->dev->adj_list.upper); ffff8000113ad540: f9400260 ldr x0, [x19] netdev_adjacent_sysfs_add(iter->dev, dev, ffff8000113ad544: aa1503e1 mov x1, x21 ffff8000113ad548: 9102a002 add x2, x0, #0xa8 ffff8000113ad54c: 97ffce6f bl ffff8000113a0f08 ffff8000113ad550: 17ffffe8 b ffff8000113ad4f0 ffff8000113ad554 : { ffff8000113ad554: a9b57bfd stp x29, x30, [sp,#-176]! ffff8000113ad558: 910003fd mov x29, sp ffff8000113ad55c: a90153f3 stp x19, x20, [sp,#16] ffff8000113ad560: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ad564: a90363f7 stp x23, x24, [sp,#48] ffff8000113ad568: a9046bf9 stp x25, x26, [sp,#64] ffff8000113ad56c: a90573fb stp x27, x28, [sp,#80] ffff8000113ad570: aa0003f4 mov x20, x0 ffff8000113ad574: aa1e03e0 mov x0, x30 ffff8000113ad578: aa0103fc mov x28, x1 ffff8000113ad57c: aa1e03f9 mov x25, x30 ffff8000113ad580: 94000000 bl 0 <_mcount> ffff8000113ad580: R_AARCH64_CALL26 _mcount ffff8000113ad584: 90000001 adrp x1, 0 <__stack_chk_guard> ffff8000113ad584: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ad588: f9400020 ldr x0, [x1] ffff8000113ad588: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ad58c: f90057a0 str x0, [x29,#168] ASSERT_RTNL(); ffff8000113ad590: 94000000 bl 0 ffff8000113ad590: R_AARCH64_CALL26 rtnl_is_locked ffff8000113ad594: 340016e0 cbz w0, ffff8000113ad870 ffff8000113ad598: f9427a83 ldr x3, [x20,#1264] ffff8000113ad59c: f9003ba3 str x3, [x29,#112] BUG_ON(!dev_net(dev)); ffff8000113ad5a0: b4001663 cbz x3, ffff8000113ad86c if (dev->flags & IFF_UP && ffff8000113ad5a4: b9422a80 ldr w0, [x20,#552] ffff8000113ad5a8: 36000200 tbz w0, #0, ffff8000113ad5e8 likely(!(dev->priv_flags & IFF_LIVE_RENAME_OK))) ffff8000113ad5ac: b9422e81 ldr w1, [x20,#556] return -EBUSY; ffff8000113ad5b0: 128001e0 mov w0, #0xfffffff0 // #-16 if (dev->flags & IFF_UP && ffff8000113ad5b4: 37f001a1 tbnz w1, #30, ffff8000113ad5e8 } ffff8000113ad5b8: 90000003 adrp x3, 0 <__stack_chk_guard> ffff8000113ad5b8: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ad5bc: f94057a2 ldr x2, [x29,#168] ffff8000113ad5c0: f9400061 ldr x1, [x3] ffff8000113ad5c0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ad5c4: eb01005f cmp x2, x1 ffff8000113ad5c8: 54001501 b.ne ffff8000113ad868 ffff8000113ad5cc: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ad5d0: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ad5d4: a94363f7 ldp x23, x24, [sp,#48] ffff8000113ad5d8: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113ad5dc: a94573fb ldp x27, x28, [sp,#80] ffff8000113ad5e0: a8cb7bfd ldp x29, x30, [sp],#176 ffff8000113ad5e4: d65f03c0 ret s->sequence++; ffff8000113ad5e8: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113ad5e8: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113ad5ec: 91000073 add x19, x3, #0x0 ffff8000113ad5ec: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113ad5f0: b9435260 ldr w0, [x19,#848] ffff8000113ad5f4: 11000400 add w0, w0, #0x1 ffff8000113ad5f8: b9035260 str w0, [x19,#848] smp_wmb(); ffff8000113ad5fc: d5033abf dmb ishst if (strncmp(newname, dev->name, IFNAMSIZ) == 0) { ffff8000113ad600: d2800202 mov x2, #0x10 // #16 ffff8000113ad604: aa1c03e0 mov x0, x28 ffff8000113ad608: aa1403e1 mov x1, x20 ffff8000113ad60c: 94000000 bl 0 ffff8000113ad60c: R_AARCH64_CALL26 strncmp ffff8000113ad610: 34000d40 cbz w0, ffff8000113ad7b8 return __builtin_memcpy(p, q, size); ffff8000113ad614: a9401684 ldp x4, x5, [x20] err = dev_get_valid_name(net, dev, newname); ffff8000113ad618: f9403ba0 ldr x0, [x29,#112] ffff8000113ad61c: 910263b8 add x24, x29, #0x98 ffff8000113ad620: aa1403e1 mov x1, x20 ffff8000113ad624: aa1c03e2 mov x2, x28 ffff8000113ad628: a9001704 stp x4, x5, [x24] ffff8000113ad62c: 97ffd13a bl ffff8000113a1b14 ffff8000113ad630: 2a0003fa mov w26, w0 if (err < 0) { ffff8000113ad634: 37f80f7a tbnz w26, #31, ffff8000113ad820 if (oldname[0] && !strchr(oldname, '%')) ffff8000113ad638: 394263a0 ldrb w0, [x29,#152] ffff8000113ad63c: 35000c80 cbnz w0, ffff8000113ad7cc old_assign_type = dev->name_assign_type; ffff8000113ad640: 3949f282 ldrb w2, [x20,#636] s->sequence++; ffff8000113ad644: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113ad644: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113ad648: 91000037 add x23, x1, #0x0 ffff8000113ad648: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113ad64c: 91144283 add x3, x20, #0x510 dev->name_assign_type = NET_NAME_RENAMED; ffff8000113ad650: 52800080 mov w0, #0x4 // #4 old_assign_type = dev->name_assign_type; ffff8000113ad654: b9007fa2 str w2, [x29,#124] ffff8000113ad658: f90037a3 str x3, [x29,#104] dev->name_assign_type = NET_NAME_RENAMED; ffff8000113ad65c: 3909f280 strb w0, [x20,#636] __CMPXCHG_CASE(w, , acq_, 32, , a, , "memory", K) ffff8000113ad660: 910cc2f3 add x19, x23, #0x330 ffff8000113ad664: d2800016 mov x22, #0x0 // #0 ffff8000113ad668: 52801ff5 mov w21, #0xff // #255 ffff8000113ad66c: d538411b mrs x27, sp_el0 ffff8000113ad670: 14000011 b ffff8000113ad6b4 ffff8000113ad674: 52800022 mov w2, #0x1 // #1 ffff8000113ad678: 4b000042 sub w2, w2, w0 if (err >= 0) { ffff8000113ad67c: 37f80dfa tbnz w26, #31, ffff8000113ad838 s->sequence++; ffff8000113ad680: b94352e1 ldr w1, [x23,#848] ffff8000113ad684: 11000421 add w1, w1, #0x1 ffff8000113ad688: b90352e1 str w1, [x23,#848] smp_wmb(); ffff8000113ad68c: d5033abf dmb ishst ffff8000113ad690: a9401704 ldp x4, x5, [x24] dev->name_assign_type = old_assign_type; ffff8000113ad694: 3941f3a0 ldrb w0, [x29,#124] ffff8000113ad698: a9001684 stp x4, x5, [x20] ffff8000113ad69c: a9401784 ldp x4, x5, [x28] ffff8000113ad6a0: 2a0203fa mov w26, w2 old_assign_type = NET_NAME_RENAMED; ffff8000113ad6a4: 52800082 mov w2, #0x4 // #4 ffff8000113ad6a8: a9001704 stp x4, x5, [x24] dev->name_assign_type = old_assign_type; ffff8000113ad6ac: 3909f280 strb w0, [x20,#636] old_assign_type = NET_NAME_RENAMED; ffff8000113ad6b0: b9007fa2 str w2, [x29,#124] ret = device_rename(&dev->dev, dev->name); ffff8000113ad6b4: f94037a0 ldr x0, [x29,#104] ffff8000113ad6b8: aa1403e1 mov x1, x20 ffff8000113ad6bc: 94000000 bl 0 ffff8000113ad6bc: R_AARCH64_CALL26 device_rename if (ret) { ffff8000113ad6c0: 350009a0 cbnz w0, ffff8000113ad7f4 smp_wmb(); ffff8000113ad6c4: d5033abf dmb ishst s->sequence++; ffff8000113ad6c8: b94352e2 ldr w2, [x23,#848] netdev_adjacent_rename_links(dev, oldname); ffff8000113ad6cc: aa1403e0 mov x0, x20 ffff8000113ad6d0: 11000442 add w2, w2, #0x1 ffff8000113ad6d4: aa1803e1 mov x1, x24 ffff8000113ad6d8: b90352e2 str w2, [x23,#848] ffff8000113ad6dc: 94000000 bl ffff8000113ad470 ffff8000113ad6dc: R_AARCH64_CALL26 netdev_adjacent_rename_links __READ_ONCE_SIZE; ffff8000113ad6e0: b9401b60 ldr w0, [x27,#24] ffff8000113ad6e4: 11080000 add w0, w0, #0x200 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113ad6e8: b9001b60 str w0, [x27,#24] ffff8000113ad6ec: f9800271 prfm pstl1strm, [x19] ffff8000113ad6f0: 885ffe60 ldaxr w0, [x19] ffff8000113ad6f4: 4a160001 eor w1, w0, w22 ffff8000113ad6f8: 35000061 cbnz w1, ffff8000113ad704 ffff8000113ad6fc: 88017e75 stxr w1, w21, [x19] ffff8000113ad700: 35ffff81 cbnz w1, ffff8000113ad6f0 if (likely(atomic_try_cmpxchg_acquire(&lock->cnts, &cnts, _QW_LOCKED))) ffff8000113ad704: 35000a60 cbnz w0, ffff8000113ad850 netdev_name_node_del(dev->name_node); ffff8000113ad708: f9400a80 ldr x0, [x20,#16] struct hlist_node *next = n->next; ffff8000113ad70c: f9400001 ldr x1, [x0] struct hlist_node **pprev = n->pprev; ffff8000113ad710: f9400402 ldr x2, [x0,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113ad714: f9000041 str x1, [x2] if (next) ffff8000113ad718: b4000041 cbz x1, ffff8000113ad720 ffff8000113ad71c: f9000422 str x2, [x1,#8] ffff8000113ad720: d2802441 mov x1, #0x122 // #290 ffff8000113ad724: f2fbd5a1 movk x1, #0xdead, lsl #48 ffff8000113ad728: f9000401 str x1, [x0,#8] smp_store_release(&lock->wlocked, 0); ffff8000113ad72c: 52800000 mov w0, #0x0 // #0 ffff8000113ad730: 089ffe60 stlrb w0, [x19] ffff8000113ad734: 52804001 mov w1, #0x200 // #512 ffff8000113ad738: aa1903e0 mov x0, x25 ffff8000113ad73c: 94000000 bl 0 <__local_bh_enable_ip> ffff8000113ad73c: R_AARCH64_CALL26 __local_bh_enable_ip synchronize_rcu(); ffff8000113ad740: 94000000 bl 0 ffff8000113ad740: R_AARCH64_CALL26 synchronize_rcu ffff8000113ad744: d5384100 mrs x0, sp_el0 __READ_ONCE_SIZE; ffff8000113ad748: b9401801 ldr w1, [x0,#24] ffff8000113ad74c: 11080021 add w1, w1, #0x200 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113ad750: b9001801 str w1, [x0,#24] ffff8000113ad754: f9800271 prfm pstl1strm, [x19] ffff8000113ad758: 885ffe60 ldaxr w0, [x19] ffff8000113ad75c: 4a160001 eor w1, w0, w22 ffff8000113ad760: 35000061 cbnz w1, ffff8000113ad76c ffff8000113ad764: 88017e75 stxr w1, w21, [x19] ffff8000113ad768: 35ffff81 cbnz w1, ffff8000113ad758 if (likely(atomic_try_cmpxchg_acquire(&lock->cnts, &cnts, _QW_LOCKED))) ffff8000113ad76c: 35000780 cbnz w0, ffff8000113ad85c netdev_name_node_add(net, dev->name_node); ffff8000113ad770: f9403ba0 ldr x0, [x29,#112] ffff8000113ad774: f9400a81 ldr x1, [x20,#16] ffff8000113ad778: 97ffd60a bl ffff8000113a2fa0 smp_store_release(&lock->wlocked, 0); ffff8000113ad77c: 52800000 mov w0, #0x0 // #0 ffff8000113ad780: 089ffe60 stlrb w0, [x19] ffff8000113ad784: 52804001 mov w1, #0x200 // #512 ffff8000113ad788: aa1903e0 mov x0, x25 ffff8000113ad78c: 94000000 bl 0 <__local_bh_enable_ip> ffff8000113ad78c: R_AARCH64_CALL26 __local_bh_enable_ip return call_netdevice_notifiers_info(val, &info); ffff8000113ad790: d2800160 mov x0, #0xb // #11 ffff8000113ad794: 910223a1 add x1, x29, #0x88 struct netdev_notifier_info info = { ffff8000113ad798: f90047b4 str x20, [x29,#136] ffff8000113ad79c: f9004bbf str xzr, [x29,#144] return call_netdevice_notifiers_info(val, &info); ffff8000113ad7a0: 97ffca56 bl ffff8000113a00f8 ret &= ~NOTIFY_STOP_MASK; ffff8000113ad7a4: 12107800 and w0, w0, #0xffff7fff return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff8000113ad7a8: 7100041f cmp w0, #0x1 ffff8000113ad7ac: 54fff64c b.gt ffff8000113ad674 ffff8000113ad7b0: 2a1a03e0 mov w0, w26 ffff8000113ad7b4: 17ffff81 b ffff8000113ad5b8 smp_wmb(); ffff8000113ad7b8: d5033abf dmb ishst s->sequence++; ffff8000113ad7bc: b9435261 ldr w1, [x19,#848] ffff8000113ad7c0: 11000421 add w1, w1, #0x1 ffff8000113ad7c4: b9035261 str w1, [x19,#848] return 0; ffff8000113ad7c8: 17ffff7c b ffff8000113ad5b8 if (oldname[0] && !strchr(oldname, '%')) ffff8000113ad7cc: aa1803e0 mov x0, x24 ffff8000113ad7d0: 528004a1 mov w1, #0x25 // #37 ffff8000113ad7d4: 94000000 bl 0 ffff8000113ad7d4: R_AARCH64_CALL26 strchr ffff8000113ad7d8: b5fff340 cbnz x0, ffff8000113ad640 netdev_info(dev, "renamed from %s\n", oldname); ffff8000113ad7dc: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113ad7dc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x758 ffff8000113ad7e0: aa1403e0 mov x0, x20 ffff8000113ad7e4: 91000021 add x1, x1, #0x0 ffff8000113ad7e4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x758 ffff8000113ad7e8: aa1803e2 mov x2, x24 ffff8000113ad7ec: 94000000 bl ffff80001139eaac <__netdev_walk_all_upper_dev+0x30> ffff8000113ad7ec: R_AARCH64_CALL26 netdev_info ffff8000113ad7f0: 17ffff94 b ffff8000113ad640 ffff8000113ad7f4: a9400f02 ldp x2, x3, [x24] dev->name_assign_type = old_assign_type; ffff8000113ad7f8: 3941f3a1 ldrb w1, [x29,#124] ffff8000113ad7fc: a9000e82 stp x2, x3, [x20] ffff8000113ad800: 3909f281 strb w1, [x20,#636] smp_wmb(); ffff8000113ad804: d5033abf dmb ishst s->sequence++; ffff8000113ad808: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113ad808: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113ad80c: 91000041 add x1, x2, #0x0 ffff8000113ad80c: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113ad810: b9435022 ldr w2, [x1,#848] ffff8000113ad814: 11000442 add w2, w2, #0x1 ffff8000113ad818: b9035022 str w2, [x1,#848] return ret; ffff8000113ad81c: 17ffff67 b ffff8000113ad5b8 smp_wmb(); ffff8000113ad820: d5033abf dmb ishst s->sequence++; ffff8000113ad824: b9435261 ldr w1, [x19,#848] return err; ffff8000113ad828: 2a1a03e0 mov w0, w26 ffff8000113ad82c: 11000421 add w1, w1, #0x1 ffff8000113ad830: b9035261 str w1, [x19,#848] ffff8000113ad834: 17ffff61 b ffff8000113ad5b8 pr_err("%s: name change rollback failed: %d\n", ffff8000113ad838: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ad838: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x770 ffff8000113ad83c: 91000000 add x0, x0, #0x0 ffff8000113ad83c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x770 ffff8000113ad840: aa1403e1 mov x1, x20 ffff8000113ad844: 94000000 bl 0 ffff8000113ad844: R_AARCH64_CALL26 printk ffff8000113ad848: 2a1a03e0 mov w0, w26 ffff8000113ad84c: 17ffff5b b ffff8000113ad5b8 queued_write_lock_slowpath(lock); ffff8000113ad850: aa1303e0 mov x0, x19 ffff8000113ad854: 94000000 bl 0 ffff8000113ad854: R_AARCH64_CALL26 queued_write_lock_slowpath ffff8000113ad858: 17ffffac b ffff8000113ad708 ffff8000113ad85c: aa1303e0 mov x0, x19 ffff8000113ad860: 94000000 bl 0 ffff8000113ad860: R_AARCH64_CALL26 queued_write_lock_slowpath ffff8000113ad864: 17ffffc3 b ffff8000113ad770 } ffff8000113ad868: 94000000 bl 0 <__stack_chk_fail> ffff8000113ad868: R_AARCH64_CALL26 __stack_chk_fail BUG_ON(!dev_net(dev)); ffff8000113ad86c: d4210000 brk #0x800 ASSERT_RTNL(); ffff8000113ad870: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113ad870: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113ad874: 91000063 add x3, x3, #0x0 ffff8000113ad874: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113ad878: 39405c60 ldrb w0, [x3,#23] ffff8000113ad87c: 35ffe8e0 cbnz w0, ffff8000113ad598 ffff8000113ad880: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ad880: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113ad884: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113ad884: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113ad888: 52800024 mov w4, #0x1 // #1 ffff8000113ad88c: 91000000 add x0, x0, #0x0 ffff8000113ad88c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113ad890: 91000021 add x1, x1, #0x0 ffff8000113ad890: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113ad894: 52809742 mov w2, #0x4ba // #1210 ffff8000113ad898: 39005c64 strb w4, [x3,#23] ffff8000113ad89c: 94000000 bl 0 <__warn_printk> ffff8000113ad89c: R_AARCH64_CALL26 __warn_printk ffff8000113ad8a0: d4210000 brk #0x800 ffff8000113ad8a4: 17ffff3d b ffff8000113ad598 ffff8000113ad8a8 <__dev_notify_flags>: { ffff8000113ad8a8: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113ad8ac: 910003fd mov x29, sp ffff8000113ad8b0: a90153f3 stp x19, x20, [sp,#16] ffff8000113ad8b4: f90013f5 str x21, [sp,#32] ffff8000113ad8b8: aa0003f3 mov x19, x0 ffff8000113ad8bc: aa1e03e0 mov x0, x30 ffff8000113ad8c0: 2a0103f5 mov w21, w1 ffff8000113ad8c4: f9001fa2 str x2, [x29,#56] ffff8000113ad8c8: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113ad8c8: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ad8cc: 94000000 bl 0 <_mcount> ffff8000113ad8cc: R_AARCH64_CALL26 _mcount ffff8000113ad8d0: f9400280 ldr x0, [x20] ffff8000113ad8d0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard unsigned int changes = dev->flags ^ old_flags; ffff8000113ad8d4: b9422a63 ldr w3, [x19,#552] if (gchanges) ffff8000113ad8d8: f9401fa2 ldr x2, [x29,#56] { ffff8000113ad8dc: f9002fa0 str x0, [x29,#88] unsigned int changes = dev->flags ^ old_flags; ffff8000113ad8e0: 4a0302b5 eor w21, w21, w3 if (gchanges) ffff8000113ad8e4: 350002c2 cbnz w2, ffff8000113ad93c <__dev_notify_flags+0x94> if (changes & IFF_UP) { ffff8000113ad8e8: 36000115 tbz w21, #0, ffff8000113ad908 <__dev_notify_flags+0x60> if (dev->flags & IFF_UP) ffff8000113ad8ec: 37000343 tbnz w3, #0, ffff8000113ad954 <__dev_notify_flags+0xac> return call_netdevice_notifiers_info(val, &info); ffff8000113ad8f0: d2800040 mov x0, #0x2 // #2 ffff8000113ad8f4: 910103a1 add x1, x29, #0x40 struct netdev_notifier_info info = { ffff8000113ad8f8: f90023b3 str x19, [x29,#64] ffff8000113ad8fc: f90027bf str xzr, [x29,#72] return call_netdevice_notifiers_info(val, &info); ffff8000113ad900: 97ffc9fe bl ffff8000113a00f8 ffff8000113ad904: b9422a63 ldr w3, [x19,#552] if (dev->flags & IFF_UP && ffff8000113ad908: 360000a3 tbz w3, #0, ffff8000113ad91c <__dev_notify_flags+0x74> (changes & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI | IFF_VOLATILE))) { ffff8000113ad90c: 529e1480 mov w0, #0xf0a4 // #61604 ffff8000113ad910: 72bfff00 movk w0, #0xfff8, lsl #16 if (dev->flags & IFF_UP && ffff8000113ad914: 6a0002bf tst w21, w0 ffff8000113ad918: 54000221 b.ne ffff8000113ad95c <__dev_notify_flags+0xb4> } ffff8000113ad91c: f9402fa1 ldr x1, [x29,#88] ffff8000113ad920: f9400280 ldr x0, [x20] ffff8000113ad920: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ad924: eb00003f cmp x1, x0 ffff8000113ad928: 540002a1 b.ne ffff8000113ad97c <__dev_notify_flags+0xd4> ffff8000113ad92c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ad930: f94013f5 ldr x21, [sp,#32] ffff8000113ad934: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113ad938: d65f03c0 ret rtmsg_ifinfo(RTM_NEWLINK, dev, gchanges, GFP_ATOMIC); ffff8000113ad93c: 52814403 mov w3, #0xa20 // #2592 ffff8000113ad940: 52800200 mov w0, #0x10 // #16 ffff8000113ad944: aa1303e1 mov x1, x19 ffff8000113ad948: 94000000 bl 0 ffff8000113ad948: R_AARCH64_CALL26 rtmsg_ifinfo ffff8000113ad94c: b9422a63 ldr w3, [x19,#552] ffff8000113ad950: 17ffffe6 b ffff8000113ad8e8 <__dev_notify_flags+0x40> return call_netdevice_notifiers_info(val, &info); ffff8000113ad954: d2800020 mov x0, #0x1 // #1 ffff8000113ad958: 17ffffe7 b ffff8000113ad8f4 <__dev_notify_flags+0x4c> struct netdev_notifier_change_info change_info = { ffff8000113ad95c: a9047fbf stp xzr, xzr, [x29,#64] ffff8000113ad960: f9002bbf str xzr, [x29,#80] call_netdevice_notifiers_info(NETDEV_CHANGE, &change_info.info); ffff8000113ad964: 910103a1 add x1, x29, #0x40 ffff8000113ad968: d2800080 mov x0, #0x4 // #4 struct netdev_notifier_change_info change_info = { ffff8000113ad96c: f90023b3 str x19, [x29,#64] ffff8000113ad970: b90053b5 str w21, [x29,#80] call_netdevice_notifiers_info(NETDEV_CHANGE, &change_info.info); ffff8000113ad974: 97ffc9e1 bl ffff8000113a00f8 ffff8000113ad978: 17ffffe9 b ffff8000113ad91c <__dev_notify_flags+0x74> } ffff8000113ad97c: 94000000 bl 0 <__stack_chk_fail> ffff8000113ad97c: R_AARCH64_CALL26 __stack_chk_fail ffff8000113ad980 <__dev_set_promiscuity>: { ffff8000113ad980: d10203ff sub sp, sp, #0x80 ffff8000113ad984: a9027bfd stp x29, x30, [sp,#32] ffff8000113ad988: 910083fd add x29, sp, #0x20 ffff8000113ad98c: a90353f3 stp x19, x20, [sp,#48] ffff8000113ad990: a9045bf5 stp x21, x22, [sp,#64] ffff8000113ad994: a90563f7 stp x23, x24, [sp,#80] ffff8000113ad998: a9066bf9 stp x25, x26, [sp,#96] ffff8000113ad99c: aa0003f3 mov x19, x0 ffff8000113ad9a0: aa1e03e0 mov x0, x30 ffff8000113ad9a4: 2a0103f4 mov w20, w1 ffff8000113ad9a8: 53001c56 uxtb w22, w2 ffff8000113ad9ac: 94000000 bl 0 <_mcount> ffff8000113ad9ac: R_AARCH64_CALL26 _mcount unsigned int old_flags = dev->flags; ffff8000113ad9b0: b9422a75 ldr w21, [x19,#552] ASSERT_RTNL(); ffff8000113ad9b4: 94000000 bl 0 ffff8000113ad9b4: R_AARCH64_CALL26 rtnl_is_locked ffff8000113ad9b8: 34000460 cbz w0, ffff8000113ada44 <__dev_set_promiscuity+0xc4> dev->flags |= IFF_PROMISC; ffff8000113ad9bc: b9422a64 ldr w4, [x19,#552] dev->promiscuity += inc; ffff8000113ad9c0: b942d261 ldr w1, [x19,#720] dev->flags |= IFF_PROMISC; ffff8000113ad9c4: 32180080 orr w0, w4, #0x100 dev->promiscuity += inc; ffff8000113ad9c8: 0b010283 add w3, w20, w1 dev->flags |= IFF_PROMISC; ffff8000113ad9cc: b9022a60 str w0, [x19,#552] dev->promiscuity += inc; ffff8000113ad9d0: b902d263 str w3, [x19,#720] if (dev->promiscuity == 0) { ffff8000113ad9d4: 35000083 cbnz w3, ffff8000113ad9e4 <__dev_set_promiscuity+0x64> if (inc < 0) ffff8000113ad9d8: 36f80294 tbz w20, #31, ffff8000113ada28 <__dev_set_promiscuity+0xa8> dev->flags &= ~IFF_PROMISC; ffff8000113ad9dc: 12177880 and w0, w4, #0xfffffeff ffff8000113ad9e0: b9022a60 str w0, [x19,#552] if (dev->flags != old_flags) { ffff8000113ad9e4: 6b0002bf cmp w21, w0 ffff8000113ad9e8: 540004a1 b.ne ffff8000113ada7c <__dev_set_promiscuity+0xfc> return 0; ffff8000113ad9ec: 52800014 mov w20, #0x0 // #0 if (notify) ffff8000113ad9f0: 340000b6 cbz w22, ffff8000113ada04 <__dev_set_promiscuity+0x84> __dev_notify_flags(dev, old_flags, IFF_PROMISC); ffff8000113ad9f4: aa1303e0 mov x0, x19 ffff8000113ad9f8: 2a1503e1 mov w1, w21 ffff8000113ad9fc: 52802002 mov w2, #0x100 // #256 ffff8000113ada00: 94000000 bl ffff8000113ad8a8 <__dev_notify_flags> ffff8000113ada00: R_AARCH64_CALL26 __dev_notify_flags } ffff8000113ada04: d10083bf sub sp, x29, #0x20 ffff8000113ada08: 2a1403e0 mov w0, w20 ffff8000113ada0c: a9445bf5 ldp x21, x22, [sp,#64] ffff8000113ada10: a94353f3 ldp x19, x20, [sp,#48] ffff8000113ada14: a94563f7 ldp x23, x24, [sp,#80] ffff8000113ada18: a9466bf9 ldp x25, x26, [sp,#96] ffff8000113ada1c: a9427bfd ldp x29, x30, [sp,#32] ffff8000113ada20: 910203ff add sp, sp, #0x80 ffff8000113ada24: d65f03c0 ret pr_warn("%s: promiscuity touches roof, set promiscuity failed. promiscuity feature of device might be broken.\n", ffff8000113ada28: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ada28: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x7a8 dev->promiscuity -= inc; ffff8000113ada2c: b902d261 str w1, [x19,#720] pr_warn("%s: promiscuity touches roof, set promiscuity failed. promiscuity feature of device might be broken.\n", ffff8000113ada30: 91000000 add x0, x0, #0x0 ffff8000113ada30: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x7a8 ffff8000113ada34: aa1303e1 mov x1, x19 ffff8000113ada38: 94000000 bl 0 ffff8000113ada38: R_AARCH64_CALL26 printk return -EOVERFLOW; ffff8000113ada3c: 12800954 mov w20, #0xffffffb5 // #-75 ffff8000113ada40: 17fffff1 b ffff8000113ada04 <__dev_set_promiscuity+0x84> ASSERT_RTNL(); ffff8000113ada44: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113ada44: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113ada48: 91000063 add x3, x3, #0x0 ffff8000113ada48: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113ada4c: 39406060 ldrb w0, [x3,#24] ffff8000113ada50: 35fffb60 cbnz w0, ffff8000113ad9bc <__dev_set_promiscuity+0x3c> ffff8000113ada54: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ada54: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113ada58: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113ada58: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113ada5c: 52800024 mov w4, #0x1 // #1 ffff8000113ada60: 91000000 add x0, x0, #0x0 ffff8000113ada60: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113ada64: 91000021 add x1, x1, #0x0 ffff8000113ada64: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113ada68: 5283dd82 mov w2, #0x1eec // #7916 ffff8000113ada6c: 39006064 strb w4, [x3,#24] ffff8000113ada70: 94000000 bl 0 <__warn_printk> ffff8000113ada70: R_AARCH64_CALL26 __warn_printk ffff8000113ada74: d4210000 brk #0x800 ffff8000113ada78: 17ffffd1 b ffff8000113ad9bc <__dev_set_promiscuity+0x3c> pr_info("device %s %s promiscuous mode\n", ffff8000113ada7c: 36400220 tbz w0, #8, ffff8000113adac0 <__dev_set_promiscuity+0x140> ffff8000113ada80: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113ada80: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x798 ffff8000113ada84: 91000042 add x2, x2, #0x0 ffff8000113ada84: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x798 ffff8000113ada88: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ada88: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x810 ffff8000113ada8c: 91000000 add x0, x0, #0x0 ffff8000113ada8c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x810 ffff8000113ada90: aa1303e1 mov x1, x19 ffff8000113ada94: 94000000 bl 0 ffff8000113ada94: R_AARCH64_CALL26 printk if (audit_enabled) { ffff8000113ada98: 90000000 adrp x0, 0 ffff8000113ada98: R_AARCH64_ADR_PREL_PG_HI21 audit_enabled ffff8000113ada9c: b9400000 ldr w0, [x0] ffff8000113ada9c: R_AARCH64_LDST32_ABS_LO12_NC audit_enabled ffff8000113adaa0: 35000160 cbnz w0, ffff8000113adacc <__dev_set_promiscuity+0x14c> if (ops->ndo_change_rx_flags) ffff8000113adaa4: f940fa60 ldr x0, [x19,#496] ffff8000113adaa8: f9401c02 ldr x2, [x0,#56] ffff8000113adaac: b4fffa02 cbz x2, ffff8000113ad9ec <__dev_set_promiscuity+0x6c> ops->ndo_change_rx_flags(dev, flags); ffff8000113adab0: aa1303e0 mov x0, x19 ffff8000113adab4: 52802001 mov w1, #0x100 // #256 ffff8000113adab8: d63f0040 blr x2 ffff8000113adabc: 17ffffcc b ffff8000113ad9ec <__dev_set_promiscuity+0x6c> pr_info("device %s %s promiscuous mode\n", ffff8000113adac0: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113adac0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x7a0 ffff8000113adac4: 91000042 add x2, x2, #0x0 ffff8000113adac4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x7a0 ffff8000113adac8: 17fffff0 b ffff8000113ada88 <__dev_set_promiscuity+0x108> ffff8000113adacc: d5384114 mrs x20, sp_el0 audit_log(audit_context(), GFP_ATOMIC, ffff8000113adad0: b9422a65 ldr w5, [x19,#552] current_uid_gid(&uid, &gid); ffff8000113adad4: f9446680 ldr x0, [x20,#2248] audit_log(audit_context(), GFP_ATOMIC, ffff8000113adad8: 90000017 adrp x23, 0 ffff8000113adad8: R_AARCH64_ADR_PREL_PG_HI21 init_user_ns ffff8000113adadc: 910002f7 add x23, x23, #0x0 ffff8000113adadc: R_AARCH64_ADD_ABS_LO12_NC init_user_ns ffff8000113adae0: b9498a81 ldr w1, [x20,#2440] current_uid_gid(&uid, &gid); ffff8000113adae4: b9400419 ldr w25, [x0,#4] ffff8000113adae8: b940081a ldr w26, [x0,#8] audit_log(audit_context(), GFP_ATOMIC, ffff8000113adaec: 121800a5 and w5, w5, #0x100 ffff8000113adaf0: aa1703e0 mov x0, x23 task->audit_context = ctx; } static inline struct audit_context *audit_context(void) { return current->audit_context; ffff8000113adaf4: f944c298 ldr x24, [x20,#2432] ffff8000113adaf8: f9002ba5 str x5, [x29,#80] ffff8000113adafc: 94000000 bl 0 ffff8000113adafc: R_AARCH64_CALL26 from_kuid ffff8000113adb00: 2a0003e7 mov w7, w0 ffff8000113adb04: 2a1903e1 mov w1, w25 ffff8000113adb08: aa1703e0 mov x0, x23 ffff8000113adb0c: f9002fa7 str x7, [x29,#88] ffff8000113adb10: 94000000 bl 0 ffff8000113adb10: R_AARCH64_CALL26 from_kuid ffff8000113adb14: 2a0003f9 mov w25, w0 ffff8000113adb18: 2a1a03e1 mov w1, w26 ffff8000113adb1c: aa1703e0 mov x0, x23 ffff8000113adb20: 94000000 bl 0 ffff8000113adb20: R_AARCH64_CALL26 from_kgid ffff8000113adb24: b90003f9 str w25, [sp] ffff8000113adb28: b9000be0 str w0, [sp,#8] ffff8000113adb2c: b9498e80 ldr w0, [x20,#2444] ffff8000113adb30: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113adb30: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x838 ffff8000113adb34: f9402ba5 ldr x5, [x29,#80] ffff8000113adb38: f9402fa7 ldr x7, [x29,#88] ffff8000113adb3c: b90013e0 str w0, [sp,#16] ffff8000113adb40: 52814401 mov w1, #0xa20 // #2592 ffff8000113adb44: aa1803e0 mov x0, x24 ffff8000113adb48: 5280d482 mov w2, #0x6a4 // #1700 ffff8000113adb4c: 91000063 add x3, x3, #0x0 ffff8000113adb4c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x838 ffff8000113adb50: aa1303e4 mov x4, x19 ffff8000113adb54: 121802a6 and w6, w21, #0x100 ffff8000113adb58: 94000000 bl 0 ffff8000113adb58: R_AARCH64_CALL26 audit_log ffff8000113adb5c: 17ffffd2 b ffff8000113adaa4 <__dev_set_promiscuity+0x124> ffff8000113adb60 <__dev_set_rx_mode>: { ffff8000113adb60: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113adb64: 910003fd mov x29, sp ffff8000113adb68: a90153f3 stp x19, x20, [sp,#16] ffff8000113adb6c: f90013f5 str x21, [sp,#32] ffff8000113adb70: aa0003f3 mov x19, x0 ffff8000113adb74: aa1e03e0 mov x0, x30 ffff8000113adb78: 94000000 bl 0 <_mcount> ffff8000113adb78: R_AARCH64_CALL26 _mcount if (!(dev->flags&IFF_UP)) ffff8000113adb7c: b9422a60 ldr w0, [x19,#552] const struct net_device_ops *ops = dev->netdev_ops; ffff8000113adb80: f940fa74 ldr x20, [x19,#496] if (!(dev->flags&IFF_UP)) ffff8000113adb84: 360001a0 tbz w0, #0, ffff8000113adbb8 <__dev_set_rx_mode+0x58> ffff8000113adb88: f9402260 ldr x0, [x19,#64] if (!netif_device_present(dev)) ffff8000113adb8c: 36080160 tbz w0, #1, ffff8000113adbb8 <__dev_set_rx_mode+0x58> if (!(dev->priv_flags & IFF_UNICAST_FLT)) { ffff8000113adb90: b9422e60 ldr w0, [x19,#556] ffff8000113adb94: 376000a0 tbnz w0, #12, ffff8000113adba8 <__dev_set_rx_mode+0x48> if (!netdev_uc_empty(dev) && !dev->uc_promisc) { ffff8000113adb98: b9429275 ldr w21, [x19,#656] ffff8000113adb9c: 35000175 cbnz w21, ffff8000113adbc8 <__dev_set_rx_mode+0x68> } else if (netdev_uc_empty(dev) && dev->uc_promisc) { ffff8000113adba0: 3949f660 ldrb w0, [x19,#637] ffff8000113adba4: 35000220 cbnz w0, ffff8000113adbe8 <__dev_set_rx_mode+0x88> if (ops->ndo_set_rx_mode) ffff8000113adba8: f9402281 ldr x1, [x20,#64] ffff8000113adbac: b4000061 cbz x1, ffff8000113adbb8 <__dev_set_rx_mode+0x58> ops->ndo_set_rx_mode(dev); ffff8000113adbb0: aa1303e0 mov x0, x19 ffff8000113adbb4: d63f0020 blr x1 } ffff8000113adbb8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113adbbc: f94013f5 ldr x21, [sp,#32] ffff8000113adbc0: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113adbc4: d65f03c0 ret if (!netdev_uc_empty(dev) && !dev->uc_promisc) { ffff8000113adbc8: 3949f662 ldrb w2, [x19,#637] ffff8000113adbcc: 35fffee2 cbnz w2, ffff8000113adba8 <__dev_set_rx_mode+0x48> __dev_set_promiscuity(dev, 1, false); ffff8000113adbd0: aa1303e0 mov x0, x19 ffff8000113adbd4: 52800021 mov w1, #0x1 // #1 ffff8000113adbd8: 97ffff6a bl ffff8000113ad980 <__dev_set_promiscuity> dev->uc_promisc = true; ffff8000113adbdc: 52800020 mov w0, #0x1 // #1 ffff8000113adbe0: 3909f660 strb w0, [x19,#637] ffff8000113adbe4: 17fffff1 b ffff8000113adba8 <__dev_set_rx_mode+0x48> __dev_set_promiscuity(dev, -1, false); ffff8000113adbe8: aa1303e0 mov x0, x19 ffff8000113adbec: 12800001 mov w1, #0xffffffff // #-1 ffff8000113adbf0: 2a1503e2 mov w2, w21 ffff8000113adbf4: 97ffff63 bl ffff8000113ad980 <__dev_set_promiscuity> dev->uc_promisc = false; ffff8000113adbf8: 3909f675 strb w21, [x19,#637] ffff8000113adbfc: 17ffffeb b ffff8000113adba8 <__dev_set_rx_mode+0x48> ffff8000113adc00 : { ffff8000113adc00: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113adc04: 910003fd mov x29, sp ffff8000113adc08: a90153f3 stp x19, x20, [sp,#16] ffff8000113adc0c: aa0003f3 mov x19, x0 ffff8000113adc10: aa1e03e0 mov x0, x30 ffff8000113adc14: aa1e03f4 mov x20, x30 ffff8000113adc18: 94000000 bl 0 <_mcount> ffff8000113adc18: R_AARCH64_CALL26 _mcount ffff8000113adc1c: d5384100 mrs x0, sp_el0 __READ_ONCE_SIZE; ffff8000113adc20: b9401801 ldr w1, [x0,#24] ffff8000113adc24: 11080021 add w1, w1, #0x200 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113adc28: b9001801 str w1, [x0,#24] ffff8000113adc2c: 52800023 mov w3, #0x1 // #1 ffff8000113adc30: 9109e260 add x0, x19, #0x278 ffff8000113adc34: d2800002 mov x2, #0x0 // #0 ffff8000113adc38: f9800011 prfm pstl1strm, [x0] ffff8000113adc3c: 885ffc01 ldaxr w1, [x0] ffff8000113adc40: 4a020024 eor w4, w1, w2 ffff8000113adc44: 35000064 cbnz w4, ffff8000113adc50 ffff8000113adc48: 88047c03 stxr w4, w3, [x0] ffff8000113adc4c: 35ffff84 cbnz w4, ffff8000113adc3c ffff8000113adc50: 35000181 cbnz w1, ffff8000113adc80 __dev_set_rx_mode(dev); ffff8000113adc54: aa1303e0 mov x0, x19 ffff8000113adc58: 94000000 bl ffff8000113adb60 <__dev_set_rx_mode> ffff8000113adc58: R_AARCH64_CALL26 __dev_set_rx_mode smp_store_release(&lock->locked, 0); ffff8000113adc5c: 52800000 mov w0, #0x0 // #0 ffff8000113adc60: 9109e273 add x19, x19, #0x278 ffff8000113adc64: 089ffe60 stlrb w0, [x19] __local_bh_enable_ip(_RET_IP_, SOFTIRQ_LOCK_OFFSET); ffff8000113adc68: 52804001 mov w1, #0x200 // #512 ffff8000113adc6c: aa1403e0 mov x0, x20 ffff8000113adc70: 94000000 bl 0 <__local_bh_enable_ip> ffff8000113adc70: R_AARCH64_CALL26 __local_bh_enable_ip } ffff8000113adc74: a94153f3 ldp x19, x20, [sp,#16] ffff8000113adc78: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113adc7c: d65f03c0 ret queued_spin_lock_slowpath(lock, val); ffff8000113adc80: 94000000 bl 0 ffff8000113adc80: R_AARCH64_CALL26 queued_spin_lock_slowpath ffff8000113adc84: 17fffff4 b ffff8000113adc54 ffff8000113adc88 <__dev_open>: { ffff8000113adc88: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113adc8c: 910003fd mov x29, sp ffff8000113adc90: a90153f3 stp x19, x20, [sp,#16] ffff8000113adc94: a9025bf5 stp x21, x22, [sp,#32] ffff8000113adc98: aa0003f3 mov x19, x0 ffff8000113adc9c: aa1e03e0 mov x0, x30 ffff8000113adca0: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113adca0: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113adca4: aa0103f5 mov x21, x1 ffff8000113adca8: 94000000 bl 0 <_mcount> ffff8000113adca8: R_AARCH64_CALL26 _mcount ffff8000113adcac: f9400280 ldr x0, [x20] ffff8000113adcac: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard const struct net_device_ops *ops = dev->netdev_ops; ffff8000113adcb0: f940fa76 ldr x22, [x19,#496] { ffff8000113adcb4: f90027a0 str x0, [x29,#72] ASSERT_RTNL(); ffff8000113adcb8: 94000000 bl 0 ffff8000113adcb8: R_AARCH64_CALL26 rtnl_is_locked ffff8000113adcbc: 340008e0 cbz w0, ffff8000113addd8 <__dev_open+0x150> ffff8000113adcc0: f9402260 ldr x0, [x19,#64] if (!netif_device_present(dev)) ffff8000113adcc4: 36080800 tbz w0, #1, ffff8000113addc4 <__dev_open+0x13c> netpoll_poll_disable(dev); ffff8000113adcc8: aa1303e0 mov x0, x19 ffff8000113adccc: 94000000 bl 0 ffff8000113adccc: R_AARCH64_CALL26 netpoll_poll_disable return call_netdevice_notifiers_info(val, &info); ffff8000113adcd0: d28001c0 mov x0, #0xe // #14 ffff8000113adcd4: 9100e3a1 add x1, x29, #0x38 struct netdev_notifier_info info = { ffff8000113adcd8: f9001fb3 str x19, [x29,#56] ffff8000113adcdc: f90023b5 str x21, [x29,#64] return call_netdevice_notifiers_info(val, &info); ffff8000113adce0: 97ffc906 bl ffff8000113a00f8 ret &= ~NOTIFY_STOP_MASK; ffff8000113adce4: 12107800 and w0, w0, #0xffff7fff return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff8000113adce8: 7100041f cmp w0, #0x1 ffff8000113adcec: 5400016d b.le ffff8000113add18 <__dev_open+0x90> ffff8000113adcf0: 52800021 mov w1, #0x1 // #1 ffff8000113adcf4: 4b000020 sub w0, w1, w0 } ffff8000113adcf8: f94027a2 ldr x2, [x29,#72] ffff8000113adcfc: f9400281 ldr x1, [x20] ffff8000113adcfc: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113add00: eb01005f cmp x2, x1 ffff8000113add04: 54000681 b.ne ffff8000113addd4 <__dev_open+0x14c> ffff8000113add08: a94153f3 ldp x19, x20, [sp,#16] ffff8000113add0c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113add10: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113add14: d65f03c0 ret ATOMIC64_OPS(or, orr, L) ffff8000113add18: 91010262 add x2, x19, #0x40 ffff8000113add1c: f9800051 prfm pstl1strm, [x2] ffff8000113add20: c85f7c40 ldxr x0, [x2] ffff8000113add24: b2400000 orr x0, x0, #0x1 ffff8000113add28: c8017c40 stxr w1, x0, [x2] ffff8000113add2c: 35ffffa1 cbnz w1, ffff8000113add20 <__dev_open+0x98> if (ops->ndo_validate_addr) ffff8000113add30: f9402ac1 ldr x1, [x22,#80] ffff8000113add34: b4000201 cbz x1, ffff8000113add74 <__dev_open+0xec> ret = ops->ndo_validate_addr(dev); ffff8000113add38: aa1303e0 mov x0, x19 ffff8000113add3c: d63f0020 blr x1 ffff8000113add40: 2a0003f5 mov w21, w0 if (!ret && ops->ndo_open) ffff8000113add44: 34000180 cbz w0, ffff8000113add74 <__dev_open+0xec> netpoll_poll_enable(dev); ffff8000113add48: aa1303e0 mov x0, x19 ffff8000113add4c: 94000000 bl 0 ffff8000113add4c: R_AARCH64_CALL26 netpoll_poll_enable ATOMIC64_OPS(andnot, bic, ) ffff8000113add50: d2800021 mov x1, #0x1 // #1 ffff8000113add54: 91010263 add x3, x19, #0x40 ffff8000113add58: f9800071 prfm pstl1strm, [x3] ffff8000113add5c: c85f7c60 ldxr x0, [x3] ffff8000113add60: 8a210000 bic x0, x0, x1 ffff8000113add64: c8027c60 stxr w2, x0, [x3] ffff8000113add68: 35ffffa2 cbnz w2, ffff8000113add5c <__dev_open+0xd4> ffff8000113add6c: 2a1503e0 mov w0, w21 ffff8000113add70: 17ffffe2 b ffff8000113adcf8 <__dev_open+0x70> if (!ret && ops->ndo_open) ffff8000113add74: f9400ac1 ldr x1, [x22,#16] ret = ops->ndo_open(dev); ffff8000113add78: aa1303e0 mov x0, x19 if (!ret && ops->ndo_open) ffff8000113add7c: b4000281 cbz x1, ffff8000113addcc <__dev_open+0x144> ret = ops->ndo_open(dev); ffff8000113add80: d63f0020 blr x1 ffff8000113add84: 2a0003f5 mov w21, w0 netpoll_poll_enable(dev); ffff8000113add88: aa1303e0 mov x0, x19 ffff8000113add8c: 94000000 bl 0 ffff8000113add8c: R_AARCH64_CALL26 netpoll_poll_enable if (ret) ffff8000113add90: 35fffe15 cbnz w21, ffff8000113add50 <__dev_open+0xc8> dev->flags |= IFF_UP; ffff8000113add94: b9422a61 ldr w1, [x19,#552] dev_set_rx_mode(dev); ffff8000113add98: aa1303e0 mov x0, x19 dev->flags |= IFF_UP; ffff8000113add9c: 32000021 orr w1, w1, #0x1 ffff8000113adda0: b9022a61 str w1, [x19,#552] dev_set_rx_mode(dev); ffff8000113adda4: 94000000 bl ffff8000113adc00 ffff8000113adda4: R_AARCH64_CALL26 dev_set_rx_mode dev_activate(dev); ffff8000113adda8: aa1303e0 mov x0, x19 ffff8000113addac: 94000000 bl 0 ffff8000113addac: R_AARCH64_CALL26 dev_activate add_device_randomness(dev->dev_addr, dev->addr_len); ffff8000113addb0: f9418e60 ldr x0, [x19,#792] ffff8000113addb4: 3949be61 ldrb w1, [x19,#623] ffff8000113addb8: 94000000 bl 0 ffff8000113addb8: R_AARCH64_CALL26 add_device_randomness ffff8000113addbc: 52800000 mov w0, #0x0 // #0 ffff8000113addc0: 17ffffce b ffff8000113adcf8 <__dev_open+0x70> return -ENODEV; ffff8000113addc4: 12800240 mov w0, #0xffffffed // #-19 ffff8000113addc8: 17ffffcc b ffff8000113adcf8 <__dev_open+0x70> netpoll_poll_enable(dev); ffff8000113addcc: 94000000 bl 0 ffff8000113addcc: R_AARCH64_CALL26 netpoll_poll_enable ffff8000113addd0: 17fffff1 b ffff8000113add94 <__dev_open+0x10c> } ffff8000113addd4: 94000000 bl 0 <__stack_chk_fail> ffff8000113addd4: R_AARCH64_CALL26 __stack_chk_fail ASSERT_RTNL(); ffff8000113addd8: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113addd8: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113adddc: 91000063 add x3, x3, #0x0 ffff8000113adddc: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113adde0: 39406460 ldrb w0, [x3,#25] ffff8000113adde4: 35fff6e0 cbnz w0, ffff8000113adcc0 <__dev_open+0x38> ffff8000113adde8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113adde8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113addec: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113addec: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113addf0: 52800024 mov w4, #0x1 // #1 ffff8000113addf4: 91000000 add x0, x0, #0x0 ffff8000113addf4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113addf8: 91000021 add x1, x1, #0x0 ffff8000113addf8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113addfc: 5280b0c2 mov w2, #0x586 // #1414 ffff8000113ade00: 39006464 strb w4, [x3,#25] ffff8000113ade04: 94000000 bl 0 <__warn_printk> ffff8000113ade04: R_AARCH64_CALL26 __warn_printk ffff8000113ade08: d4210000 brk #0x800 ffff8000113ade0c: 17ffffad b ffff8000113adcc0 <__dev_open+0x38> ffff8000113ade10 : { ffff8000113ade10: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113ade14: 910003fd mov x29, sp ffff8000113ade18: a90153f3 stp x19, x20, [sp,#16] ffff8000113ade1c: f90013f5 str x21, [sp,#32] ffff8000113ade20: aa0003f4 mov x20, x0 ffff8000113ade24: aa1e03e0 mov x0, x30 ffff8000113ade28: f9001fa1 str x1, [x29,#56] ffff8000113ade2c: 90000013 adrp x19, 0 <__stack_chk_guard> ffff8000113ade2c: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ade30: 94000000 bl 0 <_mcount> ffff8000113ade30: R_AARCH64_CALL26 _mcount ffff8000113ade34: f9400260 ldr x0, [x19] ffff8000113ade34: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard if (dev->flags & IFF_UP) ffff8000113ade38: b9422a82 ldr w2, [x20,#552] { ffff8000113ade3c: f9002fa0 str x0, [x29,#88] if (dev->flags & IFF_UP) ffff8000113ade40: f9401fa1 ldr x1, [x29,#56] return 0; ffff8000113ade44: 52800000 mov w0, #0x0 // #0 if (dev->flags & IFF_UP) ffff8000113ade48: 36000122 tbz w2, #0, ffff8000113ade6c } ffff8000113ade4c: f9402fa2 ldr x2, [x29,#88] ffff8000113ade50: f9400261 ldr x1, [x19] ffff8000113ade50: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ade54: eb01005f cmp x2, x1 ffff8000113ade58: 540002a1 b.ne ffff8000113adeac ffff8000113ade5c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ade60: f94013f5 ldr x21, [sp,#32] ffff8000113ade64: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113ade68: d65f03c0 ret ret = __dev_open(dev, extack); ffff8000113ade6c: aa1403e0 mov x0, x20 ffff8000113ade70: 97ffff86 bl ffff8000113adc88 <__dev_open> ffff8000113ade74: 2a0003f5 mov w21, w0 if (ret < 0) ffff8000113ade78: 37f80175 tbnz w21, #31, ffff8000113adea4 rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_UP|IFF_RUNNING, GFP_KERNEL); ffff8000113ade7c: 52800200 mov w0, #0x10 // #16 ffff8000113ade80: aa1403e1 mov x1, x20 ffff8000113ade84: 52800822 mov w2, #0x41 // #65 ffff8000113ade88: 52819803 mov w3, #0xcc0 // #3264 ffff8000113ade8c: 94000000 bl 0 ffff8000113ade8c: R_AARCH64_CALL26 rtmsg_ifinfo return call_netdevice_notifiers_info(val, &info); ffff8000113ade90: d2800020 mov x0, #0x1 // #1 ffff8000113ade94: 910123a1 add x1, x29, #0x48 struct netdev_notifier_info info = { ffff8000113ade98: f90027b4 str x20, [x29,#72] ffff8000113ade9c: f9002bbf str xzr, [x29,#80] return call_netdevice_notifiers_info(val, &info); ffff8000113adea0: 97ffc896 bl ffff8000113a00f8 ret = __dev_open(dev, extack); ffff8000113adea4: 2a1503e0 mov w0, w21 ffff8000113adea8: 17ffffe9 b ffff8000113ade4c } ffff8000113adeac: 94000000 bl 0 <__stack_chk_fail> ffff8000113adeac: R_AARCH64_CALL26 __stack_chk_fail ffff8000113adeb0 : { ffff8000113adeb0: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113adeb4: 910003fd mov x29, sp ffff8000113adeb8: a90153f3 stp x19, x20, [sp,#16] ffff8000113adebc: f90013f5 str x21, [sp,#32] ffff8000113adec0: aa0003f3 mov x19, x0 ffff8000113adec4: aa1e03e0 mov x0, x30 ffff8000113adec8: f9001fa1 str x1, [x29,#56] ffff8000113adecc: 94000000 bl 0 <_mcount> ffff8000113adecc: R_AARCH64_CALL26 _mcount err = __dev_set_promiscuity(dev, inc, true); ffff8000113aded0: f9401fa1 ldr x1, [x29,#56] ffff8000113aded4: aa1303e0 mov x0, x19 ffff8000113aded8: 52800022 mov w2, #0x1 // #1 unsigned int old_flags = dev->flags; ffff8000113adedc: b9422a75 ldr w21, [x19,#552] err = __dev_set_promiscuity(dev, inc, true); ffff8000113adee0: 97fffea8 bl ffff8000113ad980 <__dev_set_promiscuity> ffff8000113adee4: 2a0003f4 mov w20, w0 if (err < 0) ffff8000113adee8: 37f800d4 tbnz w20, #31, ffff8000113adf00 if (dev->flags != old_flags) ffff8000113adeec: b9422a60 ldr w0, [x19,#552] ffff8000113adef0: 6b15001f cmp w0, w21 ffff8000113adef4: 54000060 b.eq ffff8000113adf00 dev_set_rx_mode(dev); ffff8000113adef8: aa1303e0 mov x0, x19 ffff8000113adefc: 94000000 bl ffff8000113adc00 ffff8000113adefc: R_AARCH64_CALL26 dev_set_rx_mode } ffff8000113adf00: 2a1403e0 mov w0, w20 ffff8000113adf04: f94013f5 ldr x21, [sp,#32] ffff8000113adf08: a94153f3 ldp x19, x20, [sp,#16] ffff8000113adf0c: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113adf10: d65f03c0 ret ffff8000113adf14 <__dev_set_allmulti>: { ffff8000113adf14: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113adf18: 910003fd mov x29, sp ffff8000113adf1c: a90153f3 stp x19, x20, [sp,#16] ffff8000113adf20: a9025bf5 stp x21, x22, [sp,#32] ffff8000113adf24: f9001bf7 str x23, [sp,#48] ffff8000113adf28: aa0003f3 mov x19, x0 ffff8000113adf2c: aa1e03e0 mov x0, x30 ffff8000113adf30: 2a0103f4 mov w20, w1 ffff8000113adf34: 53001c56 uxtb w22, w2 ffff8000113adf38: 94000000 bl 0 <_mcount> ffff8000113adf38: R_AARCH64_CALL26 _mcount unsigned int old_flags = dev->flags, old_gflags = dev->gflags; ffff8000113adf3c: b9422a75 ldr w21, [x19,#552] ffff8000113adf40: 79446277 ldrh w23, [x19,#560] ASSERT_RTNL(); ffff8000113adf44: 94000000 bl 0 ffff8000113adf44: R_AARCH64_CALL26 rtnl_is_locked ffff8000113adf48: 34000520 cbz w0, ffff8000113adfec <__dev_set_allmulti+0xd8> dev->flags |= IFF_ALLMULTI; ffff8000113adf4c: b9422a64 ldr w4, [x19,#552] dev->allmulti += inc; ffff8000113adf50: b942d661 ldr w1, [x19,#724] dev->flags |= IFF_ALLMULTI; ffff8000113adf54: 32170080 orr w0, w4, #0x200 dev->allmulti += inc; ffff8000113adf58: 0b010283 add w3, w20, w1 dev->flags |= IFF_ALLMULTI; ffff8000113adf5c: b9022a60 str w0, [x19,#552] dev->allmulti += inc; ffff8000113adf60: b902d663 str w3, [x19,#724] if (dev->allmulti == 0) { ffff8000113adf64: 35000083 cbnz w3, ffff8000113adf74 <__dev_set_allmulti+0x60> if (inc < 0) ffff8000113adf68: 36f80354 tbz w20, #31, ffff8000113adfd0 <__dev_set_allmulti+0xbc> dev->flags &= ~IFF_ALLMULTI; ffff8000113adf6c: 12167880 and w0, w4, #0xfffffdff ffff8000113adf70: b9022a60 str w0, [x19,#552] if (dev->flags ^ old_flags) { ffff8000113adf74: 6b0002bf cmp w21, w0 ffff8000113adf78: 54000140 b.eq ffff8000113adfa0 <__dev_set_allmulti+0x8c> if (ops->ndo_change_rx_flags) ffff8000113adf7c: f940fa60 ldr x0, [x19,#496] ffff8000113adf80: f9401c03 ldr x3, [x0,#56] ffff8000113adf84: b4000083 cbz x3, ffff8000113adf94 <__dev_set_allmulti+0x80> ops->ndo_change_rx_flags(dev, flags); ffff8000113adf88: aa1303e0 mov x0, x19 ffff8000113adf8c: 52804001 mov w1, #0x200 // #512 ffff8000113adf90: d63f0060 blr x3 dev_set_rx_mode(dev); ffff8000113adf94: aa1303e0 mov x0, x19 ffff8000113adf98: 94000000 bl ffff8000113adc00 ffff8000113adf98: R_AARCH64_CALL26 dev_set_rx_mode if (notify) ffff8000113adf9c: 350000f6 cbnz w22, ffff8000113adfb8 <__dev_set_allmulti+0xa4> return 0; ffff8000113adfa0: 52800000 mov w0, #0x0 // #0 } ffff8000113adfa4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113adfa8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113adfac: f9401bf7 ldr x23, [sp,#48] ffff8000113adfb0: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113adfb4: d65f03c0 ret __dev_notify_flags(dev, old_flags, ffff8000113adfb8: 79446262 ldrh w2, [x19,#560] ffff8000113adfbc: aa1303e0 mov x0, x19 ffff8000113adfc0: 2a1503e1 mov w1, w21 ffff8000113adfc4: 4a170042 eor w2, w2, w23 ffff8000113adfc8: 94000000 bl ffff8000113ad8a8 <__dev_notify_flags> ffff8000113adfc8: R_AARCH64_CALL26 __dev_notify_flags ffff8000113adfcc: 17fffff5 b ffff8000113adfa0 <__dev_set_allmulti+0x8c> pr_warn("%s: allmulti touches roof, set allmulti failed. allmulti feature of device might be broken.\n", ffff8000113adfd0: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113adfd0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x870 dev->allmulti -= inc; ffff8000113adfd4: b902d661 str w1, [x19,#724] pr_warn("%s: allmulti touches roof, set allmulti failed. allmulti feature of device might be broken.\n", ffff8000113adfd8: 91000000 add x0, x0, #0x0 ffff8000113adfd8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x870 ffff8000113adfdc: aa1303e1 mov x1, x19 ffff8000113adfe0: 94000000 bl 0 ffff8000113adfe0: R_AARCH64_CALL26 printk return -EOVERFLOW; ffff8000113adfe4: 12800940 mov w0, #0xffffffb5 // #-75 ffff8000113adfe8: 17ffffef b ffff8000113adfa4 <__dev_set_allmulti+0x90> ASSERT_RTNL(); ffff8000113adfec: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113adfec: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113adff0: 91000063 add x3, x3, #0x0 ffff8000113adff0: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113adff4: 39406860 ldrb w0, [x3,#26] ffff8000113adff8: 35fffaa0 cbnz w0, ffff8000113adf4c <__dev_set_allmulti+0x38> ffff8000113adffc: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113adffc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113ae000: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113ae000: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113ae004: 52800024 mov w4, #0x1 // #1 ffff8000113ae008: 91000000 add x0, x0, #0x0 ffff8000113ae008: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113ae00c: 91000021 add x1, x1, #0x0 ffff8000113ae00c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113ae010: 5283e662 mov w2, #0x1f33 // #7987 ffff8000113ae014: 39006864 strb w4, [x3,#26] ffff8000113ae018: 94000000 bl 0 <__warn_printk> ffff8000113ae018: R_AARCH64_CALL26 __warn_printk ffff8000113ae01c: d4210000 brk #0x800 ffff8000113ae020: 17ffffcb b ffff8000113adf4c <__dev_set_allmulti+0x38> ffff8000113ae024 : { ffff8000113ae024: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113ae028: 910003fd mov x29, sp ffff8000113ae02c: f9000bf3 str x19, [sp,#16] ffff8000113ae030: aa0003f3 mov x19, x0 ffff8000113ae034: aa1e03e0 mov x0, x30 ffff8000113ae038: f90017a1 str x1, [x29,#40] ffff8000113ae03c: 94000000 bl 0 <_mcount> ffff8000113ae03c: R_AARCH64_CALL26 _mcount return __dev_set_allmulti(dev, inc, true); ffff8000113ae040: f94017a1 ldr x1, [x29,#40] ffff8000113ae044: aa1303e0 mov x0, x19 ffff8000113ae048: 52800022 mov w2, #0x1 // #1 ffff8000113ae04c: 97ffffb2 bl ffff8000113adf14 <__dev_set_allmulti> } ffff8000113ae050: f9400bf3 ldr x19, [sp,#16] ffff8000113ae054: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113ae058: d65f03c0 ret ffff8000113ae05c <__dev_change_flags>: { ffff8000113ae05c: a9b97bfd stp x29, x30, [sp,#-112]! ffff8000113ae060: 910003fd mov x29, sp ffff8000113ae064: a90153f3 stp x19, x20, [sp,#16] ffff8000113ae068: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ae06c: a90363f7 stp x23, x24, [sp,#48] ffff8000113ae070: f90023f9 str x25, [sp,#64] ffff8000113ae074: aa0003f3 mov x19, x0 ffff8000113ae078: aa1e03e0 mov x0, x30 ffff8000113ae07c: 90000015 adrp x21, 0 <__stack_chk_guard> ffff8000113ae07c: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ae080: 2a0103f4 mov w20, w1 ffff8000113ae084: aa0203f9 mov x25, x2 ffff8000113ae088: 94000000 bl 0 <_mcount> ffff8000113ae088: R_AARCH64_CALL26 _mcount ffff8000113ae08c: f94002a0 ldr x0, [x21] ffff8000113ae08c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard unsigned int old_flags = dev->flags; ffff8000113ae090: b9422a78 ldr w24, [x19,#552] { ffff8000113ae094: f90037a0 str x0, [x29,#104] ASSERT_RTNL(); ffff8000113ae098: 94000000 bl 0 ffff8000113ae098: R_AARCH64_CALL26 rtnl_is_locked ffff8000113ae09c: 34000be0 cbz w0, ffff8000113ae218 <__dev_change_flags+0x1bc> (dev->flags & (IFF_UP | IFF_VOLATILE | IFF_PROMISC | ffff8000113ae0a0: b9422a62 ldr w2, [x19,#552] ffff8000113ae0a4: 5281eb60 mov w0, #0xf5b // #3931 ffff8000113ae0a8: 72a000e0 movk w0, #0x7, lsl #16 dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP | ffff8000113ae0ac: 529e1481 mov w1, #0xf0a4 // #61604 ffff8000113ae0b0: 0a010281 and w1, w20, w1 (dev->flags & (IFF_UP | IFF_VOLATILE | IFF_PROMISC | ffff8000113ae0b4: 0a000040 and w0, w2, w0 IFF_AUTOMEDIA)) | ffff8000113ae0b8: 2a000020 orr w0, w1, w0 dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP | ffff8000113ae0bc: b9022a60 str w0, [x19,#552] if ((old_flags ^ flags) & IFF_MULTICAST) ffff8000113ae0c0: 4a180296 eor w22, w20, w24 ffff8000113ae0c4: 366000f6 tbz w22, #12, ffff8000113ae0e0 <__dev_change_flags+0x84> if (ops->ndo_change_rx_flags) ffff8000113ae0c8: f940fa60 ldr x0, [x19,#496] ffff8000113ae0cc: f9401c02 ldr x2, [x0,#56] ffff8000113ae0d0: b4000082 cbz x2, ffff8000113ae0e0 <__dev_change_flags+0x84> ops->ndo_change_rx_flags(dev, flags); ffff8000113ae0d4: aa1303e0 mov x0, x19 ffff8000113ae0d8: 52820001 mov w1, #0x1000 // #4096 ffff8000113ae0dc: d63f0040 blr x2 dev_set_rx_mode(dev); ffff8000113ae0e0: aa1303e0 mov x0, x19 ffff8000113ae0e4: 94000000 bl ffff8000113adc00 ffff8000113ae0e4: R_AARCH64_CALL26 dev_set_rx_mode ret = 0; ffff8000113ae0e8: 52800017 mov w23, #0x0 // #0 if ((old_flags ^ flags) & IFF_UP) { ffff8000113ae0ec: 36000376 tbz w22, #0, ffff8000113ae158 <__dev_change_flags+0xfc> if (old_flags & IFF_UP) ffff8000113ae0f0: 36000898 tbz w24, #0, ffff8000113ae200 <__dev_change_flags+0x1a4> LIST_HEAD(single); ffff8000113ae0f4: 910163b6 add x22, x29, #0x58 list_add(&dev->close_list, &single); ffff8000113ae0f8: 9101e277 add x23, x19, #0x78 if (!__list_add_valid(new, prev, next)) ffff8000113ae0fc: aa1703e0 mov x0, x23 ffff8000113ae100: aa1603e1 mov x1, x22 ffff8000113ae104: aa1603e2 mov x2, x22 LIST_HEAD(single); ffff8000113ae108: f9002fb6 str x22, [x29,#88] ffff8000113ae10c: f90033b6 str x22, [x29,#96] ffff8000113ae110: 94000000 bl 0 <__list_add_valid> ffff8000113ae110: R_AARCH64_CALL26 __list_add_valid ffff8000113ae114: 53001c00 uxtb w0, w0 ffff8000113ae118: 340000a0 cbz w0, ffff8000113ae12c <__dev_change_flags+0xd0> new->next = next; ffff8000113ae11c: f9003e76 str x22, [x19,#120] next->prev = new; ffff8000113ae120: f90033b7 str x23, [x29,#96] new->prev = prev; ffff8000113ae124: f9004276 str x22, [x19,#128] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113ae128: f9002fb7 str x23, [x29,#88] __dev_close_many(&single); ffff8000113ae12c: aa1603e0 mov x0, x22 ffff8000113ae130: 97ffc8d4 bl ffff8000113a0480 <__dev_close_many> if (!__list_del_entry_valid(entry)) ffff8000113ae134: aa1603e0 mov x0, x22 ffff8000113ae138: 94000000 bl 0 <__list_del_entry_valid> ffff8000113ae138: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113ae13c: 53001c00 uxtb w0, w0 ffff8000113ae140: 340000a0 cbz w0, ffff8000113ae154 <__dev_change_flags+0xf8> __list_del(entry->prev, entry->next); ffff8000113ae144: f94033a0 ldr x0, [x29,#96] ffff8000113ae148: f9402fa1 ldr x1, [x29,#88] next->prev = prev; ffff8000113ae14c: f9000420 str x0, [x1,#8] ffff8000113ae150: f9000001 str x1, [x0] ret = 0; ffff8000113ae154: 52800017 mov w23, #0x0 // #0 if ((flags ^ dev->gflags) & IFF_PROMISC) { ffff8000113ae158: 79446261 ldrh w1, [x19,#560] ffff8000113ae15c: 4a010282 eor w2, w20, w1 ffff8000113ae160: 36400262 tbz w2, #8, ffff8000113ae1ac <__dev_change_flags+0x150> int inc = (flags & IFF_PROMISC) ? 1 : -1; ffff8000113ae164: 12180280 and w0, w20, #0x100 dev->gflags ^= IFF_PROMISC; ffff8000113ae168: 52180021 eor w1, w1, #0x100 int inc = (flags & IFF_PROMISC) ? 1 : -1; ffff8000113ae16c: 6b1f001f cmp w0, wzr dev->gflags ^= IFF_PROMISC; ffff8000113ae170: 79046261 strh w1, [x19,#560] if (__dev_set_promiscuity(dev, inc, false) >= 0) ffff8000113ae174: 12800001 mov w1, #0xffffffff // #-1 ffff8000113ae178: 1a9f0421 csinc w1, w1, wzr, eq ffff8000113ae17c: aa1303e0 mov x0, x19 ffff8000113ae180: 52800002 mov w2, #0x0 // #0 unsigned int old_flags = dev->flags; ffff8000113ae184: b9422a76 ldr w22, [x19,#552] if (__dev_set_promiscuity(dev, inc, false) >= 0) ffff8000113ae188: 97fffdfe bl ffff8000113ad980 <__dev_set_promiscuity> ffff8000113ae18c: 37f800c0 tbnz w0, #31, ffff8000113ae1a4 <__dev_change_flags+0x148> if (dev->flags != old_flags) ffff8000113ae190: b9422a60 ldr w0, [x19,#552] ffff8000113ae194: 6b16001f cmp w0, w22 ffff8000113ae198: 54000060 b.eq ffff8000113ae1a4 <__dev_change_flags+0x148> dev_set_rx_mode(dev); ffff8000113ae19c: aa1303e0 mov x0, x19 ffff8000113ae1a0: 94000000 bl ffff8000113adc00 ffff8000113ae1a0: R_AARCH64_CALL26 dev_set_rx_mode ffff8000113ae1a4: 79446261 ldrh w1, [x19,#560] ffff8000113ae1a8: 4a010282 eor w2, w20, w1 if ((flags ^ dev->gflags) & IFF_ALLMULTI) { ffff8000113ae1ac: 36480142 tbz w2, #9, ffff8000113ae1d4 <__dev_change_flags+0x178> dev->gflags ^= IFF_ALLMULTI; ffff8000113ae1b0: 52170021 eor w1, w1, #0x200 int inc = (flags & IFF_ALLMULTI) ? 1 : -1; ffff8000113ae1b4: 12170294 and w20, w20, #0x200 ffff8000113ae1b8: 6b1f029f cmp w20, wzr dev->gflags ^= IFF_ALLMULTI; ffff8000113ae1bc: 79046261 strh w1, [x19,#560] __dev_set_allmulti(dev, inc, false); ffff8000113ae1c0: 12800001 mov w1, #0xffffffff // #-1 ffff8000113ae1c4: aa1303e0 mov x0, x19 ffff8000113ae1c8: 1a9f0421 csinc w1, w1, wzr, eq ffff8000113ae1cc: 52800002 mov w2, #0x0 // #0 ffff8000113ae1d0: 97ffff51 bl ffff8000113adf14 <__dev_set_allmulti> } ffff8000113ae1d4: f94037a2 ldr x2, [x29,#104] ffff8000113ae1d8: f94002a1 ldr x1, [x21] ffff8000113ae1d8: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ae1dc: 2a1703e0 mov w0, w23 ffff8000113ae1e0: eb01005f cmp x2, x1 ffff8000113ae1e4: 54000181 b.ne ffff8000113ae214 <__dev_change_flags+0x1b8> ffff8000113ae1e8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ae1ec: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ae1f0: a94363f7 ldp x23, x24, [sp,#48] ffff8000113ae1f4: f94023f9 ldr x25, [sp,#64] ffff8000113ae1f8: a8c77bfd ldp x29, x30, [sp],#112 ffff8000113ae1fc: d65f03c0 ret ret = __dev_open(dev, extack); ffff8000113ae200: aa1303e0 mov x0, x19 ffff8000113ae204: aa1903e1 mov x1, x25 ffff8000113ae208: 97fffea0 bl ffff8000113adc88 <__dev_open> ffff8000113ae20c: 2a0003f7 mov w23, w0 ffff8000113ae210: 17ffffd2 b ffff8000113ae158 <__dev_change_flags+0xfc> } ffff8000113ae214: 94000000 bl 0 <__stack_chk_fail> ffff8000113ae214: R_AARCH64_CALL26 __stack_chk_fail ASSERT_RTNL(); ffff8000113ae218: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113ae218: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113ae21c: 91000063 add x3, x3, #0x0 ffff8000113ae21c: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113ae220: 39406c60 ldrb w0, [x3,#27] ffff8000113ae224: 35fff3e0 cbnz w0, ffff8000113ae0a0 <__dev_change_flags+0x44> ffff8000113ae228: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ae228: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113ae22c: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113ae22c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113ae230: 52800024 mov w4, #0x1 // #1 ffff8000113ae234: 91000000 add x0, x0, #0x0 ffff8000113ae234: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113ae238: 91000021 add x1, x1, #0x0 ffff8000113ae238: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113ae23c: 5283f602 mov w2, #0x1fb0 // #8112 ffff8000113ae240: 39006c64 strb w4, [x3,#27] ffff8000113ae244: 94000000 bl 0 <__warn_printk> ffff8000113ae244: R_AARCH64_CALL26 __warn_printk ffff8000113ae248: d4210000 brk #0x800 ffff8000113ae24c: 17ffff95 b ffff8000113ae0a0 <__dev_change_flags+0x44> ffff8000113ae250 : { ffff8000113ae250: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113ae254: 910003fd mov x29, sp ffff8000113ae258: a90153f3 stp x19, x20, [sp,#16] ffff8000113ae25c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ae260: aa0003f3 mov x19, x0 ffff8000113ae264: aa1e03e0 mov x0, x30 ffff8000113ae268: f9001fa1 str x1, [x29,#56] ffff8000113ae26c: f9001ba2 str x2, [x29,#48] ffff8000113ae270: 94000000 bl 0 <_mcount> ffff8000113ae270: R_AARCH64_CALL26 _mcount ret = __dev_change_flags(dev, flags, extack); ffff8000113ae274: f9401fa1 ldr x1, [x29,#56] ffff8000113ae278: f9401ba2 ldr x2, [x29,#48] ffff8000113ae27c: aa1303e0 mov x0, x19 unsigned int changes, old_flags = dev->flags, old_gflags = dev->gflags; ffff8000113ae280: b9422a75 ldr w21, [x19,#552] ffff8000113ae284: 79446276 ldrh w22, [x19,#560] ret = __dev_change_flags(dev, flags, extack); ffff8000113ae288: 94000000 bl ffff8000113ae05c <__dev_change_flags> ffff8000113ae288: R_AARCH64_CALL26 __dev_change_flags ffff8000113ae28c: 2a0003f4 mov w20, w0 if (ret < 0) ffff8000113ae290: 37f80134 tbnz w20, #31, ffff8000113ae2b4 changes = (old_flags ^ dev->flags) | (old_gflags ^ dev->gflags); ffff8000113ae294: 79446260 ldrh w0, [x19,#560] ffff8000113ae298: b9422a62 ldr w2, [x19,#552] ffff8000113ae29c: 4a160016 eor w22, w0, w22 ffff8000113ae2a0: 4a0202a2 eor w2, w21, w2 __dev_notify_flags(dev, old_flags, changes); ffff8000113ae2a4: aa1303e0 mov x0, x19 ffff8000113ae2a8: 2a1503e1 mov w1, w21 ffff8000113ae2ac: 2a0202c2 orr w2, w22, w2 ffff8000113ae2b0: 94000000 bl ffff8000113ad8a8 <__dev_notify_flags> ffff8000113ae2b0: R_AARCH64_CALL26 __dev_notify_flags } ffff8000113ae2b4: 2a1403e0 mov w0, w20 ffff8000113ae2b8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ae2bc: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ae2c0: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113ae2c4: d65f03c0 ret ffff8000113ae2c8 : { ffff8000113ae2c8: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113ae2cc: 910003fd mov x29, sp ffff8000113ae2d0: f9000bf3 str x19, [sp,#16] ffff8000113ae2d4: aa0003f3 mov x19, x0 ffff8000113ae2d8: aa1e03e0 mov x0, x30 ffff8000113ae2dc: f90017a1 str x1, [x29,#40] ffff8000113ae2e0: f90013a2 str x2, [x29,#32] ffff8000113ae2e4: 94000000 bl 0 <_mcount> ffff8000113ae2e4: R_AARCH64_CALL26 _mcount if (new_mtu < 0 || new_mtu < dev->min_mtu) { ffff8000113ae2e8: f94017a1 ldr x1, [x29,#40] ffff8000113ae2ec: f94013a2 ldr x2, [x29,#32] ffff8000113ae2f0: 37f80081 tbnz w1, #31, ffff8000113ae300 ffff8000113ae2f4: b9423e60 ldr w0, [x19,#572] ffff8000113ae2f8: 6b00003f cmp w1, w0 ffff8000113ae2fc: 54000142 b.cs ffff8000113ae324 NL_SET_ERR_MSG(extack, "mtu less than device minimum"); ffff8000113ae300: b40002e2 cbz x2, ffff8000113ae35c ffff8000113ae304: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ae304: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113ae308: 91000000 add x0, x0, #0x0 ffff8000113ae308: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113ae30c: 91024000 add x0, x0, #0x90 ffff8000113ae310: f9000040 str x0, [x2] return -EINVAL; ffff8000113ae314: 128002a0 mov w0, #0xffffffea // #-22 } ffff8000113ae318: f9400bf3 ldr x19, [sp,#16] ffff8000113ae31c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113ae320: d65f03c0 ret if (dev->max_mtu > 0 && new_mtu > dev->max_mtu) { ffff8000113ae324: b9424263 ldr w3, [x19,#576] return 0; ffff8000113ae328: 52800000 mov w0, #0x0 // #0 if (dev->max_mtu > 0 && new_mtu > dev->max_mtu) { ffff8000113ae32c: 34ffff63 cbz w3, ffff8000113ae318 ffff8000113ae330: 6b03003f cmp w1, w3 ffff8000113ae334: 54ffff29 b.ls ffff8000113ae318 NL_SET_ERR_MSG(extack, "mtu greater than device maximum"); ffff8000113ae338: b4000122 cbz x2, ffff8000113ae35c ffff8000113ae33c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ae33c: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113ae340: 91000000 add x0, x0, #0x0 ffff8000113ae340: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113ae344: 9102c000 add x0, x0, #0xb0 ffff8000113ae348: f9000040 str x0, [x2] } ffff8000113ae34c: f9400bf3 ldr x19, [sp,#16] return -EINVAL; ffff8000113ae350: 128002a0 mov w0, #0xffffffea // #-22 } ffff8000113ae354: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113ae358: d65f03c0 ret ffff8000113ae35c: f9400bf3 ldr x19, [sp,#16] return -EINVAL; ffff8000113ae360: 128002a0 mov w0, #0xffffffea // #-22 } ffff8000113ae364: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113ae368: d65f03c0 ret ffff8000113ae36c : { ffff8000113ae36c: a9b97bfd stp x29, x30, [sp,#-112]! ffff8000113ae370: 910003fd mov x29, sp ffff8000113ae374: a90153f3 stp x19, x20, [sp,#16] ffff8000113ae378: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ae37c: f9001bf7 str x23, [sp,#48] ffff8000113ae380: aa0003f3 mov x19, x0 ffff8000113ae384: aa1e03e0 mov x0, x30 ffff8000113ae388: 2a0103f4 mov w20, w1 ffff8000113ae38c: f90027a2 str x2, [x29,#72] ffff8000113ae390: 90000015 adrp x21, 0 <__stack_chk_guard> ffff8000113ae390: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ae394: 94000000 bl 0 <_mcount> ffff8000113ae394: R_AARCH64_CALL26 _mcount ffff8000113ae398: f94002a1 ldr x1, [x21] ffff8000113ae398: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard if (new_mtu == dev->mtu) ffff8000113ae39c: b9423a60 ldr w0, [x19,#568] { ffff8000113ae3a0: f90037a1 str x1, [x29,#104] if (new_mtu == dev->mtu) ffff8000113ae3a4: 6b00029f cmp w20, w0 ffff8000113ae3a8: f94027a2 ldr x2, [x29,#72] ffff8000113ae3ac: 54000560 b.eq ffff8000113ae458 if (new_mtu < 0 || new_mtu < dev->min_mtu) { ffff8000113ae3b0: 37f80094 tbnz w20, #31, ffff8000113ae3c0 ffff8000113ae3b4: b9423e60 ldr w0, [x19,#572] ffff8000113ae3b8: 6b00029f cmp w20, w0 ffff8000113ae3bc: 54000202 b.cs ffff8000113ae3fc NL_SET_ERR_MSG(extack, "mtu less than device minimum"); ffff8000113ae3c0: b40000a2 cbz x2, ffff8000113ae3d4 ffff8000113ae3c4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ae3c4: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113ae3c8: 91000000 add x0, x0, #0x0 ffff8000113ae3c8: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113ae3cc: 91024000 add x0, x0, #0x90 ffff8000113ae3d0: f9000040 str x0, [x2] return 0; ffff8000113ae3d4: 128002a0 mov w0, #0xffffffea // #-22 } ffff8000113ae3d8: f94037a2 ldr x2, [x29,#104] ffff8000113ae3dc: f94002a1 ldr x1, [x21] ffff8000113ae3dc: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ae3e0: eb01005f cmp x2, x1 ffff8000113ae3e4: 54000901 b.ne ffff8000113ae504 ffff8000113ae3e8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ae3ec: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ae3f0: f9401bf7 ldr x23, [sp,#48] ffff8000113ae3f4: a8c77bfd ldp x29, x30, [sp],#112 ffff8000113ae3f8: d65f03c0 ret if (dev->max_mtu > 0 && new_mtu > dev->max_mtu) { ffff8000113ae3fc: b9424260 ldr w0, [x19,#576] ffff8000113ae400: 34000120 cbz w0, ffff8000113ae424 ffff8000113ae404: 6b00029f cmp w20, w0 ffff8000113ae408: 540000e9 b.ls ffff8000113ae424 NL_SET_ERR_MSG(extack, "mtu greater than device maximum"); ffff8000113ae40c: b4fffe42 cbz x2, ffff8000113ae3d4 ffff8000113ae410: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ae410: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113ae414: 91000000 add x0, x0, #0x0 ffff8000113ae414: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113ae418: 9102c000 add x0, x0, #0xb0 ffff8000113ae41c: f9000040 str x0, [x2] ffff8000113ae420: 17ffffed b ffff8000113ae3d4 ffff8000113ae424: f9402260 ldr x0, [x19,#64] if (!netif_device_present(dev)) ffff8000113ae428: 36080660 tbz w0, #1, ffff8000113ae4f4 return call_netdevice_notifiers_info(val, &info); ffff8000113ae42c: d28002e0 mov x0, #0x17 // #23 ffff8000113ae430: 910143a1 add x1, x29, #0x50 struct netdev_notifier_info info = { ffff8000113ae434: f9002bb3 str x19, [x29,#80] ffff8000113ae438: f9002fbf str xzr, [x29,#88] return call_netdevice_notifiers_info(val, &info); ffff8000113ae43c: 97ffc72f bl ffff8000113a00f8 ret &= ~NOTIFY_STOP_MASK; ffff8000113ae440: 12107800 and w0, w0, #0xffff7fff return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff8000113ae444: 7100041f cmp w0, #0x1 ffff8000113ae448: 540000cd b.le ffff8000113ae460 ffff8000113ae44c: 52800021 mov w1, #0x1 // #1 ffff8000113ae450: 4b000020 sub w0, w1, w0 ffff8000113ae454: 17ffffe1 b ffff8000113ae3d8 return 0; ffff8000113ae458: 52800000 mov w0, #0x0 // #0 ffff8000113ae45c: 17ffffdf b ffff8000113ae3d8 if (ops->ndo_change_mtu) ffff8000113ae460: f940fa60 ldr x0, [x19,#496] orig_mtu = dev->mtu; ffff8000113ae464: b9423a76 ldr w22, [x19,#568] if (ops->ndo_change_mtu) ffff8000113ae468: f9403402 ldr x2, [x0,#104] ffff8000113ae46c: b40000c2 cbz x2, ffff8000113ae484 return ops->ndo_change_mtu(dev, new_mtu); ffff8000113ae470: aa1303e0 mov x0, x19 ffff8000113ae474: 2a1403e1 mov w1, w20 ffff8000113ae478: d63f0040 blr x2 if (!err) { ffff8000113ae47c: 35fffae0 cbnz w0, ffff8000113ae3d8 ffff8000113ae480: 14000002 b ffff8000113ae488 case 4: *(volatile __u32 *)p = *(__u32 *)res; break; ffff8000113ae484: b9023a74 str w20, [x19,#568] struct netdev_notifier_info_ext info = { ffff8000113ae488: a9057fbf stp xzr, xzr, [x29,#80] ffff8000113ae48c: f90033bf str xzr, [x29,#96] return call_netdevice_notifiers_info(val, &info.info); ffff8000113ae490: d28000e0 mov x0, #0x7 // #7 ffff8000113ae494: 910143a1 add x1, x29, #0x50 struct netdev_notifier_info_ext info = { ffff8000113ae498: f9002bb3 str x19, [x29,#80] ffff8000113ae49c: b90063b6 str w22, [x29,#96] return call_netdevice_notifiers_info(val, &info.info); ffff8000113ae4a0: 97ffc716 bl ffff8000113a00f8 ret &= ~NOTIFY_STOP_MASK; ffff8000113ae4a4: 12107817 and w23, w0, #0xffff7fff return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff8000113ae4a8: 710006ff cmp w23, #0x1 ffff8000113ae4ac: 54fffd6d b.le ffff8000113ae458 if (ops->ndo_change_mtu) ffff8000113ae4b0: f940fa60 ldr x0, [x19,#496] ffff8000113ae4b4: f9403402 ldr x2, [x0,#104] ffff8000113ae4b8: b4000222 cbz x2, ffff8000113ae4fc return ops->ndo_change_mtu(dev, new_mtu); ffff8000113ae4bc: aa1303e0 mov x0, x19 ffff8000113ae4c0: 2a1603e1 mov w1, w22 ffff8000113ae4c4: d63f0040 blr x2 ffff8000113ae4c8: 52800020 mov w0, #0x1 // #1 ffff8000113ae4cc: 4b170017 sub w23, w0, w23 struct netdev_notifier_info_ext info = { ffff8000113ae4d0: a9057fbf stp xzr, xzr, [x29,#80] ffff8000113ae4d4: f90033bf str xzr, [x29,#96] return call_netdevice_notifiers_info(val, &info.info); ffff8000113ae4d8: d28000e0 mov x0, #0x7 // #7 ffff8000113ae4dc: 910143a1 add x1, x29, #0x50 struct netdev_notifier_info_ext info = { ffff8000113ae4e0: f9002bb3 str x19, [x29,#80] ffff8000113ae4e4: b90063b4 str w20, [x29,#96] return call_netdevice_notifiers_info(val, &info.info); ffff8000113ae4e8: 97ffc704 bl ffff8000113a00f8 ffff8000113ae4ec: 2a1703e0 mov w0, w23 ffff8000113ae4f0: 17ffffba b ffff8000113ae3d8 return -ENODEV; ffff8000113ae4f4: 12800240 mov w0, #0xffffffed // #-19 ffff8000113ae4f8: 17ffffb8 b ffff8000113ae3d8 ffff8000113ae4fc: b9023a76 str w22, [x19,#568] ffff8000113ae500: 17fffff2 b ffff8000113ae4c8 } ffff8000113ae504: 94000000 bl 0 <__stack_chk_fail> ffff8000113ae504: R_AARCH64_CALL26 __stack_chk_fail ffff8000113ae508 : { ffff8000113ae508: a9b97bfd stp x29, x30, [sp,#-112]! ffff8000113ae50c: 910003fd mov x29, sp ffff8000113ae510: a90153f3 stp x19, x20, [sp,#16] ffff8000113ae514: f90013f5 str x21, [sp,#32] ffff8000113ae518: aa0003f5 mov x21, x0 ffff8000113ae51c: aa1e03e0 mov x0, x30 ffff8000113ae520: f9001fa1 str x1, [x29,#56] ffff8000113ae524: 90000013 adrp x19, 0 <__stack_chk_guard> ffff8000113ae524: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ae528: 94000000 bl 0 <_mcount> ffff8000113ae528: R_AARCH64_CALL26 _mcount ffff8000113ae52c: f9400263 ldr x3, [x19] ffff8000113ae52c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard err = dev_set_mtu_ext(dev, new_mtu, &extack); ffff8000113ae530: f9401fa1 ldr x1, [x29,#56] ffff8000113ae534: aa1503e0 mov x0, x21 ffff8000113ae538: 910103a2 add x2, x29, #0x40 { ffff8000113ae53c: f90037a3 str x3, [x29,#104] return __builtin_memset(p, c, size); ffff8000113ae540: a9047fbf stp xzr, xzr, [x29,#64] ffff8000113ae544: a9057fbf stp xzr, xzr, [x29,#80] ffff8000113ae548: f90033bf str xzr, [x29,#96] err = dev_set_mtu_ext(dev, new_mtu, &extack); ffff8000113ae54c: 94000000 bl ffff8000113ae36c ffff8000113ae54c: R_AARCH64_CALL26 dev_set_mtu_ext ffff8000113ae550: 2a0003f4 mov w20, w0 if (err && extack._msg) ffff8000113ae554: 340000a0 cbz w0, ffff8000113ae568 ffff8000113ae558: f94023a0 ldr x0, [x29,#64] ffff8000113ae55c: b4000060 cbz x0, ffff8000113ae568 net_err_ratelimited("%s: %s\n", dev->name, extack._msg); ffff8000113ae560: 94000000 bl 0 ffff8000113ae560: R_AARCH64_CALL26 net_ratelimit ffff8000113ae564: 35000140 cbnz w0, ffff8000113ae58c } ffff8000113ae568: f94037a2 ldr x2, [x29,#104] ffff8000113ae56c: f9400261 ldr x1, [x19] ffff8000113ae56c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ae570: 2a1403e0 mov w0, w20 ffff8000113ae574: eb01005f cmp x2, x1 ffff8000113ae578: 54000161 b.ne ffff8000113ae5a4 ffff8000113ae57c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ae580: f94013f5 ldr x21, [sp,#32] ffff8000113ae584: a8c77bfd ldp x29, x30, [sp],#112 ffff8000113ae588: d65f03c0 ret net_err_ratelimited("%s: %s\n", dev->name, extack._msg); ffff8000113ae58c: f94023a2 ldr x2, [x29,#64] ffff8000113ae590: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ae590: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x8d0 ffff8000113ae594: aa1503e1 mov x1, x21 ffff8000113ae598: 91000000 add x0, x0, #0x0 ffff8000113ae598: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x8d0 ffff8000113ae59c: 94000000 bl 0 ffff8000113ae59c: R_AARCH64_CALL26 printk ffff8000113ae5a0: 17fffff2 b ffff8000113ae568 } ffff8000113ae5a4: 94000000 bl 0 <__stack_chk_fail> ffff8000113ae5a4: R_AARCH64_CALL26 __stack_chk_fail ffff8000113ae5a8 : { ffff8000113ae5a8: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113ae5ac: 910003fd mov x29, sp ffff8000113ae5b0: a90153f3 stp x19, x20, [sp,#16] ffff8000113ae5b4: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ae5b8: aa0003f3 mov x19, x0 ffff8000113ae5bc: aa1e03e0 mov x0, x30 ffff8000113ae5c0: f9001fa1 str x1, [x29,#56] ffff8000113ae5c4: 94000000 bl 0 <_mcount> ffff8000113ae5c4: R_AARCH64_CALL26 _mcount if (new_len != (unsigned int)new_len) ffff8000113ae5c8: f9401fa1 ldr x1, [x29,#56] { ffff8000113ae5cc: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113ae5cc: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ae5d0: f9400280 ldr x0, [x20] ffff8000113ae5d0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard if (new_len != (unsigned int)new_len) ffff8000113ae5d4: 92407c22 and x2, x1, #0xffffffff { ffff8000113ae5d8: f9002fa0 str x0, [x29,#88] if (new_len != (unsigned int)new_len) ffff8000113ae5dc: eb01005f cmp x2, x1 unsigned int orig_len = dev->tx_queue_len; ffff8000113ae5e0: b943da75 ldr w21, [x19,#984] if (new_len != (unsigned int)new_len) ffff8000113ae5e4: 54000441 b.ne ffff8000113ae66c if (new_len != orig_len) { ffff8000113ae5e8: eb35405f cmp x2, w21, uxtw ffff8000113ae5ec: 540003c0 b.eq ffff8000113ae664 dev->tx_queue_len = new_len; ffff8000113ae5f0: b903da62 str w2, [x19,#984] return call_netdevice_notifiers_info(val, &info); ffff8000113ae5f4: d28003c0 mov x0, #0x1e // #30 ffff8000113ae5f8: 910123a1 add x1, x29, #0x48 struct netdev_notifier_info info = { ffff8000113ae5fc: f90027b3 str x19, [x29,#72] ffff8000113ae600: f9002bbf str xzr, [x29,#80] return call_netdevice_notifiers_info(val, &info); ffff8000113ae604: 97ffc6bd bl ffff8000113a00f8 ret &= ~NOTIFY_STOP_MASK; ffff8000113ae608: 12107800 and w0, w0, #0xffff7fff return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff8000113ae60c: 7100041f cmp w0, #0x1 ffff8000113ae610: 5400022d b.le ffff8000113ae654 ffff8000113ae614: 52800021 mov w1, #0x1 // #1 ffff8000113ae618: 4b000036 sub w22, w1, w0 netdev_err(dev, "refused to change device tx_queue_len\n"); ffff8000113ae61c: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113ae61c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x8e0 ffff8000113ae620: aa1303e0 mov x0, x19 ffff8000113ae624: 91000021 add x1, x1, #0x0 ffff8000113ae624: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x8e0 ffff8000113ae628: 94000000 bl ffff80001139e8b4 ffff8000113ae628: R_AARCH64_CALL26 netdev_err return res; ffff8000113ae62c: 2a1603e0 mov w0, w22 dev->tx_queue_len = orig_len; ffff8000113ae630: b903da75 str w21, [x19,#984] } ffff8000113ae634: f9402fa2 ldr x2, [x29,#88] ffff8000113ae638: f9400281 ldr x1, [x20] ffff8000113ae638: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ae63c: eb01005f cmp x2, x1 ffff8000113ae640: 540001a1 b.ne ffff8000113ae674 ffff8000113ae644: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ae648: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ae64c: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113ae650: d65f03c0 ret res = dev_qdisc_change_tx_queue_len(dev); ffff8000113ae654: aa1303e0 mov x0, x19 ffff8000113ae658: 94000000 bl 0 ffff8000113ae658: R_AARCH64_CALL26 dev_qdisc_change_tx_queue_len ffff8000113ae65c: 2a0003f6 mov w22, w0 if (res) ffff8000113ae660: 35fffde0 cbnz w0, ffff8000113ae61c return 0; ffff8000113ae664: 52800000 mov w0, #0x0 // #0 ffff8000113ae668: 17fffff3 b ffff8000113ae634 return -ERANGE; ffff8000113ae66c: 12800420 mov w0, #0xffffffde // #-34 ffff8000113ae670: 17fffff1 b ffff8000113ae634 } ffff8000113ae674: 94000000 bl 0 <__stack_chk_fail> ffff8000113ae674: R_AARCH64_CALL26 __stack_chk_fail ffff8000113ae678 <__dev_xdp_query>: { ffff8000113ae678: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113ae67c: 910003fd mov x29, sp ffff8000113ae680: a90153f3 stp x19, x20, [sp,#16] ffff8000113ae684: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ae688: aa0003f6 mov x22, x0 ffff8000113ae68c: aa1e03e0 mov x0, x30 ffff8000113ae690: aa0103f4 mov x20, x1 ffff8000113ae694: 90000013 adrp x19, 0 <__stack_chk_guard> ffff8000113ae694: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ae698: 2a0203f5 mov w21, w2 ffff8000113ae69c: 94000000 bl 0 <_mcount> ffff8000113ae69c: R_AARCH64_CALL26 _mcount ffff8000113ae6a0: f9400261 ldr x1, [x19] ffff8000113ae6a0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ae6a4: f9002fa1 str x1, [x29,#88] if (!bpf_op) ffff8000113ae6a8: b40002d4 cbz x20, ffff8000113ae700 <__dev_xdp_query+0x88> ffff8000113ae6ac: 9100e3a3 add x3, x29, #0x38 ffff8000113ae6b0: a9007c7f stp xzr, xzr, [x3] WARN_ON(bpf_op(dev, &xdp) < 0 && cmd == XDP_QUERY_PROG); ffff8000113ae6b4: aa0303e1 mov x1, x3 ffff8000113ae6b8: aa1603e0 mov x0, x22 ffff8000113ae6bc: a9017c7f stp xzr, xzr, [x3,#16] xdp.command = cmd; ffff8000113ae6c0: b9003bb5 str w21, [x29,#56] WARN_ON(bpf_op(dev, &xdp) < 0 && cmd == XDP_QUERY_PROG); ffff8000113ae6c4: d63f0280 blr x20 ffff8000113ae6c8: 37f80140 tbnz w0, #31, ffff8000113ae6f0 <__dev_xdp_query+0x78> return xdp.prog_id; ffff8000113ae6cc: b94043a0 ldr w0, [x29,#64] } ffff8000113ae6d0: f9402fa2 ldr x2, [x29,#88] ffff8000113ae6d4: f9400261 ldr x1, [x19] ffff8000113ae6d4: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ae6d8: eb01005f cmp x2, x1 ffff8000113ae6dc: 54000161 b.ne ffff8000113ae708 <__dev_xdp_query+0x90> ffff8000113ae6e0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ae6e4: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ae6e8: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113ae6ec: d65f03c0 ret WARN_ON(bpf_op(dev, &xdp) < 0 && cmd == XDP_QUERY_PROG); ffff8000113ae6f0: 71000abf cmp w21, #0x2 ffff8000113ae6f4: 54fffec1 b.ne ffff8000113ae6cc <__dev_xdp_query+0x54> ffff8000113ae6f8: d4210000 brk #0x800 ffff8000113ae6fc: 17fffff4 b ffff8000113ae6cc <__dev_xdp_query+0x54> return 0; ffff8000113ae700: 2a1403e0 mov w0, w20 ffff8000113ae704: 17fffff3 b ffff8000113ae6d0 <__dev_xdp_query+0x58> } ffff8000113ae708: 94000000 bl 0 <__stack_chk_fail> ffff8000113ae708: R_AARCH64_CALL26 __stack_chk_fail ffff8000113ae70c : { ffff8000113ae70c: a9b77bfd stp x29, x30, [sp,#-144]! ffff8000113ae710: 910003fd mov x29, sp ffff8000113ae714: a90153f3 stp x19, x20, [sp,#16] ffff8000113ae718: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ae71c: a90363f7 stp x23, x24, [sp,#48] ffff8000113ae720: a9046bf9 stp x25, x26, [sp,#64] ffff8000113ae724: f9002bfb str x27, [sp,#80] ffff8000113ae728: aa0003fa mov x26, x0 ffff8000113ae72c: aa1e03e0 mov x0, x30 bool non_hw = !(flags & XDP_FLAGS_HW_MODE); ffff8000113ae730: 121d0076 and w22, w3, #0x8 { ffff8000113ae734: 2a0303f5 mov w21, w3 ffff8000113ae738: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113ae738: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ae73c: aa0103f9 mov x25, x1 ffff8000113ae740: aa0203fb mov x27, x2 ffff8000113ae744: aa0403f7 mov x23, x4 ffff8000113ae748: 94000000 bl 0 <_mcount> ffff8000113ae748: R_AARCH64_CALL26 _mcount ffff8000113ae74c: f9400280 ldr x0, [x20] ffff8000113ae74c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard bool non_hw = !(flags & XDP_FLAGS_HW_MODE); ffff8000113ae750: 6b1f02df cmp w22, wzr { ffff8000113ae754: f90047a0 str x0, [x29,#136] bool non_hw = !(flags & XDP_FLAGS_HW_MODE); ffff8000113ae758: 1a9f17f8 cset w24, eq struct bpf_prog *prev_prog = NULL; ffff8000113ae75c: d2800013 mov x19, #0x0 // #0 if (non_hw) { ffff8000113ae760: 35000438 cbnz w24, ffff8000113ae7e4 ffff8000113ae764: 9101a3a1 add x1, x29, #0x68 ffff8000113ae768: a9007c3f stp xzr, xzr, [x1] if (flags & XDP_FLAGS_HW_MODE) ffff8000113ae76c: 34000076 cbz w22, ffff8000113ae778 xdp.command = XDP_SETUP_PROG_HW; ffff8000113ae770: 52800020 mov w0, #0x1 // #1 ffff8000113ae774: b9006ba0 str w0, [x29,#104] xdp.flags = flags; ffff8000113ae778: b90073b5 str w21, [x29,#112] err = bpf_op(dev, &xdp); ffff8000113ae77c: aa1a03e0 mov x0, x26 xdp.extack = extack; ffff8000113ae780: f90043bb str x27, [x29,#128] xdp.prog = prog; ffff8000113ae784: f9003fb7 str x23, [x29,#120] err = bpf_op(dev, &xdp); ffff8000113ae788: d63f0320 blr x25 ffff8000113ae78c: 2a0003f5 mov w21, w0 if (!err && non_hw) ffff8000113ae790: 34000200 cbz w0, ffff8000113ae7d0 if (prev_prog) ffff8000113ae794: b4000073 cbz x19, ffff8000113ae7a0 bpf_prog_put(prev_prog); ffff8000113ae798: aa1303e0 mov x0, x19 ffff8000113ae79c: 94000000 bl 0 ffff8000113ae79c: R_AARCH64_CALL26 bpf_prog_put } ffff8000113ae7a0: f94047a2 ldr x2, [x29,#136] ffff8000113ae7a4: f9400281 ldr x1, [x20] ffff8000113ae7a4: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113ae7a8: 2a1503e0 mov w0, w21 ffff8000113ae7ac: eb01005f cmp x2, x1 ffff8000113ae7b0: 540002a1 b.ne ffff8000113ae804 ffff8000113ae7b4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113ae7b8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113ae7bc: a94363f7 ldp x23, x24, [sp,#48] ffff8000113ae7c0: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113ae7c4: f9402bfb ldr x27, [sp,#80] ffff8000113ae7c8: a8c97bfd ldp x29, x30, [sp],#144 ffff8000113ae7cc: d65f03c0 ret if (!err && non_hw) ffff8000113ae7d0: 34fffe38 cbz w24, ffff8000113ae794 bpf_prog_change_xdp(prev_prog, prog); ffff8000113ae7d4: aa1303e0 mov x0, x19 ffff8000113ae7d8: aa1703e1 mov x1, x23 ffff8000113ae7dc: 94000000 bl 0 ffff8000113ae7dc: R_AARCH64_CALL26 bpf_prog_change_xdp ffff8000113ae7e0: 17ffffed b ffff8000113ae794 prev_prog = bpf_prog_by_id(__dev_xdp_query(dev, bpf_op, ffff8000113ae7e4: aa1903e1 mov x1, x25 ffff8000113ae7e8: 52800042 mov w2, #0x2 // #2 ffff8000113ae7ec: aa1a03e0 mov x0, x26 ffff8000113ae7f0: 94000000 bl ffff8000113ae678 <__dev_xdp_query> ffff8000113ae7f0: R_AARCH64_CALL26 __dev_xdp_query ffff8000113ae7f4: 94000000 bl 0 ffff8000113ae7f4: R_AARCH64_CALL26 bpf_prog_by_id prev_prog = NULL; ffff8000113ae7f8: b13ffc1f cmn x0, #0xfff ffff8000113ae7fc: 9a9f3013 csel x19, x0, xzr, cc ffff8000113ae800: 17ffffd9 b ffff8000113ae764 } ffff8000113ae804: 94000000 bl 0 <__stack_chk_fail> ffff8000113ae804: R_AARCH64_CALL26 __stack_chk_fail ffff8000113ae808 : { ffff8000113ae808: a9b67bfd stp x29, x30, [sp,#-160]! ffff8000113ae80c: 910003fd mov x29, sp ffff8000113ae810: a90153f3 stp x19, x20, [sp,#16] ffff8000113ae814: a9025bf5 stp x21, x22, [sp,#32] ffff8000113ae818: a90363f7 stp x23, x24, [sp,#48] ffff8000113ae81c: a9046bf9 stp x25, x26, [sp,#64] ffff8000113ae820: a90573fb stp x27, x28, [sp,#80] ffff8000113ae824: aa0003f6 mov x22, x0 ffff8000113ae828: aa1e03e0 mov x0, x30 ffff8000113ae82c: 94000000 bl 0 <_mcount> ffff8000113ae82c: R_AARCH64_CALL26 _mcount ffff8000113ae830: 90000019 adrp x25, 0 <__stack_chk_guard> ffff8000113ae830: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113ae834: f9400321 ldr x1, [x25] ffff8000113ae834: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard BUG_ON(dev_boot_phase); ffff8000113ae838: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113ae838: R_AARCH64_ADR_PREL_PG_HI21 .data LIST_HEAD(close_head); ffff8000113ae83c: 9101a3b7 add x23, x29, #0x68 BUG_ON(dev_boot_phase); ffff8000113ae840: b9400000 ldr w0, [x0] ffff8000113ae840: R_AARCH64_LDST32_ABS_LO12_NC .data { ffff8000113ae844: f9004fa1 str x1, [x29,#152] LIST_HEAD(close_head); ffff8000113ae848: f90037b7 str x23, [x29,#104] ffff8000113ae84c: f9003bb7 str x23, [x29,#112] BUG_ON(dev_boot_phase); ffff8000113ae850: 35002380 cbnz w0, ffff8000113aecc0 ASSERT_RTNL(); ffff8000113ae854: 94000000 bl 0 ffff8000113ae854: R_AARCH64_CALL26 rtnl_is_locked ffff8000113ae858: 34002680 cbz w0, ffff8000113aed28 list_for_each_entry_safe(dev, tmp, head, unreg_list) { ffff8000113ae85c: f94002d3 ldr x19, [x22] ffff8000113ae860: aa1303f4 mov x20, x19 ffff8000113ae864: f8598695 ldr x21, [x20],#-104 ffff8000113ae868: eb16027f cmp x19, x22 ffff8000113ae86c: d101a2b5 sub x21, x21, #0x68 ffff8000113ae870: 54000760 b.eq ffff8000113ae95c pr_debug("unregister_netdevice: device %s/%p never was registered\n", ffff8000113ae874: 90000018 adrp x24, ffff80001139e37c <__my_cpu_offset> ffff8000113ae874: R_AARCH64_ADR_PREL_PG_HI21 __verbose ffff8000113ae878: 91000318 add x24, x24, #0x0 ffff8000113ae878: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113ae87c: 9000001a adrp x26, ffff80001139e37c <__my_cpu_offset> ffff8000113ae87c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x908 ffff8000113ae880: 91032318 add x24, x24, #0xc8 ffff8000113ae884: 9100035a add x26, x26, #0x0 ffff8000113ae884: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x908 ffff8000113ae888: 1400001a b ffff8000113ae8f0 ffff8000113ae88c: 79404700 ldrh w0, [x24,#34] ffff8000113ae890: 37102400 tbnz w0, #2, ffff8000113aed10 WARN_ON(1); ffff8000113ae894: d4210000 brk #0x800 if (!__list_del_entry_valid(entry)) ffff8000113ae898: aa1303e0 mov x0, x19 ffff8000113ae89c: 94000000 bl 0 <__list_del_entry_valid> ffff8000113ae89c: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113ae8a0: 53001c00 uxtb w0, w0 ffff8000113ae8a4: 9101a281 add x1, x20, #0x68 ffff8000113ae8a8: 340000a0 cbz w0, ffff8000113ae8bc __list_del(entry->prev, entry->next); ffff8000113ae8ac: f9400420 ldr x0, [x1,#8] ffff8000113ae8b0: f9403682 ldr x2, [x20,#104] next->prev = prev; ffff8000113ae8b4: f9000440 str x0, [x2,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113ae8b8: f9000002 str x2, [x0] entry->next = LIST_POISON1; ffff8000113ae8bc: d2802002 mov x2, #0x100 // #256 entry->prev = LIST_POISON2; ffff8000113ae8c0: d2802440 mov x0, #0x122 // #290 entry->next = LIST_POISON1; ffff8000113ae8c4: f2fbd5a2 movk x2, #0xdead, lsl #48 entry->prev = LIST_POISON2; ffff8000113ae8c8: f2fbd5a0 movk x0, #0xdead, lsl #48 entry->next = LIST_POISON1; ffff8000113ae8cc: f9000022 str x2, [x1] entry->prev = LIST_POISON2; ffff8000113ae8d0: f9000420 str x0, [x1,#8] list_for_each_entry_safe(dev, tmp, head, unreg_list) { ffff8000113ae8d4: aa1503f3 mov x19, x21 ffff8000113ae8d8: f8468e63 ldr x3, [x19,#104]! ffff8000113ae8dc: eb16027f cmp x19, x22 ffff8000113ae8e0: d101a063 sub x3, x3, #0x68 ffff8000113ae8e4: 54000140 b.eq ffff8000113ae90c ffff8000113ae8e8: aa1503f4 mov x20, x21 ffff8000113ae8ec: aa0303f5 mov x21, x3 if (dev->reg_state == NETREG_UNINITIALIZED) { ffff8000113ae8f0: 39536283 ldrb w3, [x20,#1240] ffff8000113ae8f4: 34fffcc3 cbz w3, ffff8000113ae88c dev->dismantle = true; ffff8000113ae8f8: 52800020 mov w0, #0x1 // #1 ffff8000113ae8fc: 39136680 strb w0, [x20,#1241] BUG_ON(dev->reg_state != NETREG_REGISTERED); ffff8000113ae900: 7100047f cmp w3, #0x1 ffff8000113ae904: 54fffe80 b.eq ffff8000113ae8d4 ffff8000113ae908: d4210000 brk #0x800 list_for_each_entry(dev, head, unreg_list) ffff8000113ae90c: f94002d4 ldr x20, [x22] ffff8000113ae910: eb1402df cmp x22, x20 ffff8000113ae914: d101a294 sub x20, x20, #0x68 ffff8000113ae918: 54000220 b.eq ffff8000113ae95c __list_add(new, head->prev, head); ffff8000113ae91c: f94006f5 ldr x21, [x23,#8] list_add_tail(&dev->close_list, &close_head); ffff8000113ae920: 9101e293 add x19, x20, #0x78 if (!__list_add_valid(new, prev, next)) ffff8000113ae924: aa1303e0 mov x0, x19 ffff8000113ae928: aa1503e1 mov x1, x21 ffff8000113ae92c: aa1703e2 mov x2, x23 ffff8000113ae930: 94000000 bl 0 <__list_add_valid> ffff8000113ae930: R_AARCH64_CALL26 __list_add_valid ffff8000113ae934: 53001c00 uxtb w0, w0 ffff8000113ae938: 340000a0 cbz w0, ffff8000113ae94c new->next = next; ffff8000113ae93c: f9003e97 str x23, [x20,#120] next->prev = new; ffff8000113ae940: f90006f3 str x19, [x23,#8] new->prev = prev; ffff8000113ae944: f9004295 str x21, [x20,#128] ffff8000113ae948: f90002b3 str x19, [x21] list_for_each_entry(dev, head, unreg_list) ffff8000113ae94c: f9403694 ldr x20, [x20,#104] ffff8000113ae950: eb1402df cmp x22, x20 ffff8000113ae954: d101a294 sub x20, x20, #0x68 ffff8000113ae958: 54fffe21 b.ne ffff8000113ae91c dev_close_many(&close_head, true); ffff8000113ae95c: aa1703e0 mov x0, x23 ffff8000113ae960: 52800021 mov w1, #0x1 // #1 ffff8000113ae964: 94000000 bl ffff8000113a3cf0 ffff8000113ae964: R_AARCH64_CALL26 dev_close_many list_for_each_entry(dev, head, unreg_list) { ffff8000113ae968: f94002d3 ldr x19, [x22] dev->reg_state = NETREG_UNREGISTERING; ffff8000113ae96c: 52800054 mov w20, #0x2 // #2 list_for_each_entry(dev, head, unreg_list) { ffff8000113ae970: eb1302df cmp x22, x19 ffff8000113ae974: d101a273 sub x19, x19, #0x68 ffff8000113ae978: 54000100 b.eq ffff8000113ae998 unlist_netdevice(dev); ffff8000113ae97c: aa1303e0 mov x0, x19 ffff8000113ae980: 97ffd3bc bl ffff8000113a3870 list_for_each_entry(dev, head, unreg_list) { ffff8000113ae984: f9403660 ldr x0, [x19,#104] dev->reg_state = NETREG_UNREGISTERING; ffff8000113ae988: 39136274 strb w20, [x19,#1240] list_for_each_entry(dev, head, unreg_list) { ffff8000113ae98c: eb0002df cmp x22, x0 ffff8000113ae990: d101a013 sub x19, x0, #0x68 ffff8000113ae994: 54ffff41 b.ne ffff8000113ae97c ffff8000113ae998: 90000018 adrp x24, 0 ffff8000113ae998: R_AARCH64_ADR_PREL_PG_HI21 nr_cpu_ids per_cpu_ptr(&flush_works, cpu)); ffff8000113ae99c: 90000015 adrp x21, ffff80001139e37c <__my_cpu_offset> ffff8000113ae99c: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu for_each_online_cpu(cpu) ffff8000113ae9a0: 90000014 adrp x20, 0 <__cpu_online_mask> ffff8000113ae9a0: R_AARCH64_ADR_PREL_PG_HI21 __cpu_online_mask per_cpu_ptr(&flush_works, cpu)); ffff8000113ae9a4: 910002b5 add x21, x21, #0x0 ffff8000113ae9a4: R_AARCH64_ADD_ABS_LO12_NC .data..percpu #endif /* !CONFIG_HOTPLUG_CPU */ /* Wrappers which go away once all code is converted */ static inline void cpu_hotplug_begin(void) { cpus_write_lock(); } static inline void cpu_hotplug_done(void) { cpus_write_unlock(); } static inline void get_online_cpus(void) { cpus_read_lock(); } ffff8000113ae9a8: 94000000 bl 0 ffff8000113ae9a8: R_AARCH64_CALL26 cpus_read_lock for_each_online_cpu(cpu) ffff8000113ae9ac: 12800013 mov w19, #0xffffffff // #-1 ffff8000113ae9b0: 91000294 add x20, x20, #0x0 ffff8000113ae9b0: R_AARCH64_ADD_ABS_LO12_NC __cpu_online_mask ffff8000113ae9b4: 91000317 add x23, x24, #0x0 ffff8000113ae9b4: R_AARCH64_ADD_ABS_LO12_NC nr_cpu_ids queue_work_on(cpu, system_highpri_wq, ffff8000113ae9b8: 9000001a adrp x26, 0 ffff8000113ae9b8: R_AARCH64_ADR_PREL_PG_HI21 system_highpri_wq ffff8000113ae9bc: 14000007 b ffff8000113ae9d8 per_cpu_ptr(&flush_works, cpu)); ffff8000113ae9c0: 90000001 adrp x1, 0 <__per_cpu_offset> ffff8000113ae9c0: R_AARCH64_ADR_PREL_PG_HI21 __per_cpu_offset ffff8000113ae9c4: 91000021 add x1, x1, #0x0 ffff8000113ae9c4: R_AARCH64_ADD_ABS_LO12_NC __per_cpu_offset ffff8000113ae9c8: f8735822 ldr x2, [x1,w19,uxtw #3] queue_work_on(cpu, system_highpri_wq, ffff8000113ae9cc: f9400341 ldr x1, [x26] ffff8000113ae9cc: R_AARCH64_LDST64_ABS_LO12_NC system_highpri_wq ffff8000113ae9d0: 8b0202a2 add x2, x21, x2 ffff8000113ae9d4: 94000000 bl 0 ffff8000113ae9d4: R_AARCH64_CALL26 queue_work_on for_each_online_cpu(cpu) ffff8000113ae9d8: 2a1303e0 mov w0, w19 ffff8000113ae9dc: aa1403e1 mov x1, x20 ffff8000113ae9e0: 94000000 bl 0 ffff8000113ae9e0: R_AARCH64_CALL26 cpumask_next ffff8000113ae9e4: b94002e2 ldr w2, [x23] ffff8000113ae9e8: 2a0003f3 mov w19, w0 ffff8000113ae9ec: 6b02001f cmp w0, w2 ffff8000113ae9f0: 54fffe83 b.cc ffff8000113ae9c0 flush_work(per_cpu_ptr(&flush_works, cpu)); ffff8000113ae9f4: 90000015 adrp x21, ffff80001139e37c <__my_cpu_offset> ffff8000113ae9f4: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu ffff8000113ae9f8: 910002b5 add x21, x21, #0x0 ffff8000113ae9f8: R_AARCH64_ADD_ABS_LO12_NC .data..percpu for_each_online_cpu(cpu) ffff8000113ae9fc: 12800013 mov w19, #0xffffffff // #-1 for_each_online_cpu(cpu) ffff8000113aea00: 91000318 add x24, x24, #0x0 ffff8000113aea00: R_AARCH64_ADD_ABS_LO12_NC nr_cpu_ids flush_work(per_cpu_ptr(&flush_works, cpu)); ffff8000113aea04: 90000017 adrp x23, 0 <__per_cpu_offset> ffff8000113aea04: R_AARCH64_ADR_PREL_PG_HI21 __per_cpu_offset ffff8000113aea08: 14000005 b ffff8000113aea1c ffff8000113aea0c: 910002e0 add x0, x23, #0x0 ffff8000113aea0c: R_AARCH64_ADD_ABS_LO12_NC __per_cpu_offset ffff8000113aea10: f8735800 ldr x0, [x0,w19,uxtw #3] ffff8000113aea14: 8b0002a0 add x0, x21, x0 ffff8000113aea18: 94000000 bl 0 ffff8000113aea18: R_AARCH64_CALL26 flush_work for_each_online_cpu(cpu) ffff8000113aea1c: 2a1303e0 mov w0, w19 ffff8000113aea20: aa1403e1 mov x1, x20 ffff8000113aea24: 94000000 bl 0 ffff8000113aea24: R_AARCH64_CALL26 cpumask_next ffff8000113aea28: 2a0003f3 mov w19, w0 ffff8000113aea2c: b9400300 ldr w0, [x24] ffff8000113aea30: 6b00027f cmp w19, w0 ffff8000113aea34: 54fffec3 b.cc ffff8000113aea0c static inline void put_online_cpus(void) { cpus_read_unlock(); } ffff8000113aea38: 94000000 bl 0 ffff8000113aea38: R_AARCH64_CALL26 cpus_read_unlock synchronize_net(); ffff8000113aea3c: 94000000 bl ffff8000113a1384 ffff8000113aea3c: R_AARCH64_CALL26 synchronize_net list_for_each_entry(dev, head, unreg_list) { ffff8000113aea40: f94002d4 ldr x20, [x22] ffff8000113aea44: eb1402df cmp x22, x20 ffff8000113aea48: d101a294 sub x20, x20, #0x68 ffff8000113aea4c: 54000de0 b.eq ffff8000113aec08 ASSERT_RTNL(); ffff8000113aea50: 9000001a adrp x26, ffff80001139e37c <__my_cpu_offset> ffff8000113aea50: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113aea54: 9000001c adrp x28, ffff80001139e37c <__my_cpu_offset> ffff8000113aea54: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113aea58: 9000001b adrp x27, ffff80001139e37c <__my_cpu_offset> ffff8000113aea58: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113aea5c: 90000018 adrp x24, ffff80001139e37c <__my_cpu_offset> ffff8000113aea5c: R_AARCH64_ADR_PREL_PG_HI21 .text+0x11b1c ffff8000113aea60: 9101e3b5 add x21, x29, #0x78 ffff8000113aea64: 9100035a add x26, x26, #0x0 ffff8000113aea64: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113aea68: 9100039c add x28, x28, #0x0 ffff8000113aea68: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113aea6c: 9100037b add x27, x27, #0x0 ffff8000113aea6c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 dev_shutdown(dev); ffff8000113aea70: aa1403e0 mov x0, x20 ffff8000113aea74: 94000000 bl 0 ffff8000113aea74: R_AARCH64_CALL26 dev_shutdown WARN_ON(dev_xdp_install(dev, generic_xdp_install, NULL, 0, NULL)); ffff8000113aea78: d2800002 mov x2, #0x0 // #0 ffff8000113aea7c: aa1403e0 mov x0, x20 ffff8000113aea80: 91000301 add x1, x24, #0x0 ffff8000113aea80: R_AARCH64_ADD_ABS_LO12_NC .text+0x11b1c ffff8000113aea84: 2a0203e3 mov w3, w2 ffff8000113aea88: aa0203e4 mov x4, x2 ffff8000113aea8c: 97ffff20 bl ffff8000113ae70c ffff8000113aea90: 350013c0 cbnz w0, ffff8000113aed08 ndo_bpf = dev->netdev_ops->ndo_bpf; ffff8000113aea94: f940fa80 ldr x0, [x20,#496] ffff8000113aea98: f9412413 ldr x19, [x0,#584] if (!ndo_bpf) ffff8000113aea9c: b40002b3 cbz x19, ffff8000113aeaf0 xdp.command = XDP_QUERY_PROG; ffff8000113aeaa0: 52800040 mov w0, #0x2 // #2 ffff8000113aeaa4: a9007ebf stp xzr, xzr, [x21] ffff8000113aeaa8: b90002a0 str w0, [x21] ffff8000113aeaac: a9017ebf stp xzr, xzr, [x21,#16] WARN_ON(ndo_bpf(dev, &xdp)); ffff8000113aeab0: aa1403e0 mov x0, x20 ffff8000113aeab4: aa1503e1 mov x1, x21 ffff8000113aeab8: d63f0260 blr x19 ffff8000113aeabc: 35001220 cbnz w0, ffff8000113aed00 if (xdp.prog_id) ffff8000113aeac0: b9400aa0 ldr w0, [x21,#8] ffff8000113aeac4: 35000da0 cbnz w0, ffff8000113aec78 xdp.command = XDP_QUERY_PROG_HW; ffff8000113aeac8: 52800060 mov w0, #0x3 // #3 ffff8000113aeacc: a9007ebf stp xzr, xzr, [x21] ffff8000113aead0: b90002a0 str w0, [x21] ffff8000113aead4: a9017ebf stp xzr, xzr, [x21,#16] if (!ndo_bpf(dev, &xdp) && xdp.prog_id) ffff8000113aead8: aa1403e0 mov x0, x20 ffff8000113aeadc: aa1503e1 mov x1, x21 ffff8000113aeae0: d63f0260 blr x19 ffff8000113aeae4: 35000060 cbnz w0, ffff8000113aeaf0 ffff8000113aeae8: b9400aa0 ldr w0, [x21,#8] ffff8000113aeaec: 35000d80 cbnz w0, ffff8000113aec9c return call_netdevice_notifiers_info(val, &info); ffff8000113aeaf0: d28000c0 mov x0, #0x6 // #6 ffff8000113aeaf4: aa1503e1 mov x1, x21 struct netdev_notifier_info info = { ffff8000113aeaf8: f90002b4 str x20, [x21] ffff8000113aeafc: f90006bf str xzr, [x21,#8] return call_netdevice_notifiers_info(val, &info); ffff8000113aeb00: 97ffc57e bl ffff8000113a00f8 if (!dev->rtnl_link_ops || ffff8000113aeb04: f9441a80 ldr x0, [x20,#2096] ffff8000113aeb08: b4000080 cbz x0, ffff8000113aeb18 ffff8000113aeb0c: 7949b680 ldrh w0, [x20,#1242] struct sk_buff *skb = NULL; ffff8000113aeb10: d2800017 mov x23, #0x0 // #0 if (!dev->rtnl_link_ops || ffff8000113aeb14: 35000140 cbnz w0, ffff8000113aeb3c skb = rtmsg_ifinfo_build_skb(RTM_DELLINK, dev, ~0U, 0, ffff8000113aeb18: d2800005 mov x5, #0x0 // #0 ffff8000113aeb1c: 52800220 mov w0, #0x11 // #17 ffff8000113aeb20: aa1403e1 mov x1, x20 ffff8000113aeb24: 12800002 mov w2, #0xffffffff // #-1 ffff8000113aeb28: 52800003 mov w3, #0x0 // #0 ffff8000113aeb2c: 52819804 mov w4, #0xcc0 // #3264 ffff8000113aeb30: 2a0503e6 mov w6, w5 ffff8000113aeb34: 94000000 bl 0 ffff8000113aeb34: R_AARCH64_CALL26 rtmsg_ifinfo_build_skb ffff8000113aeb38: aa0003f7 mov x23, x0 dev_uc_flush(dev); ffff8000113aeb3c: aa1403e0 mov x0, x20 ffff8000113aeb40: 94000000 bl 0 ffff8000113aeb40: R_AARCH64_CALL26 dev_uc_flush dev_mc_flush(dev); ffff8000113aeb44: aa1403e0 mov x0, x20 ffff8000113aeb48: 94000000 bl 0 ffff8000113aeb48: R_AARCH64_CALL26 dev_mc_flush list_for_each_entry_safe(name_node, tmp, &dev->name_node->list, list) ffff8000113aeb4c: f9400a81 ldr x1, [x20,#16] ffff8000113aeb50: f9400820 ldr x0, [x1,#16] ffff8000113aeb54: f85f0413 ldr x19, [x0],#-16 ffff8000113aeb58: eb00003f cmp x1, x0 ffff8000113aeb5c: d1004273 sub x19, x19, #0x10 ffff8000113aeb60: 54000081 b.ne ffff8000113aeb70 ffff8000113aeb64: 14000009 b ffff8000113aeb88 ffff8000113aeb68: aa1303e0 mov x0, x19 ffff8000113aeb6c: aa0203f3 mov x19, x2 __netdev_name_node_alt_destroy(name_node); ffff8000113aeb70: 97ffd16f bl ffff8000113a312c <__netdev_name_node_alt_destroy> list_for_each_entry_safe(name_node, tmp, &dev->name_node->list, list) ffff8000113aeb74: f9400a81 ldr x1, [x20,#16] ffff8000113aeb78: f9400a60 ldr x0, [x19,#16] ffff8000113aeb7c: eb01027f cmp x19, x1 ffff8000113aeb80: d1004002 sub x2, x0, #0x10 ffff8000113aeb84: 54ffff21 b.ne ffff8000113aeb68 kfree(name_node); ffff8000113aeb88: aa0103e0 mov x0, x1 ffff8000113aeb8c: 94000000 bl 0 ffff8000113aeb8c: R_AARCH64_CALL26 kfree if (dev->netdev_ops->ndo_uninit) ffff8000113aeb90: f940fa80 ldr x0, [x20,#496] ffff8000113aeb94: f9400401 ldr x1, [x0,#8] ffff8000113aeb98: b4000061 cbz x1, ffff8000113aeba4 dev->netdev_ops->ndo_uninit(dev); ffff8000113aeb9c: aa1403e0 mov x0, x20 ffff8000113aeba0: d63f0020 blr x1 if (skb) ffff8000113aeba4: b40000b7 cbz x23, ffff8000113aebb8 rtmsg_ifinfo_send(skb, dev, GFP_KERNEL); ffff8000113aeba8: aa1703e0 mov x0, x23 ffff8000113aebac: aa1403e1 mov x1, x20 ffff8000113aebb0: 52819802 mov w2, #0xcc0 // #3264 ffff8000113aebb4: 94000000 bl 0 ffff8000113aebb4: R_AARCH64_CALL26 rtmsg_ifinfo_send WARN_ON(netdev_has_any_upper_dev(dev)); ffff8000113aebb8: aa1403e0 mov x0, x20 ffff8000113aebbc: 94000000 bl ffff80001139fe98 ffff8000113aebbc: R_AARCH64_CALL26 netdev_has_any_upper_dev ffff8000113aebc0: 53001c00 uxtb w0, w0 ffff8000113aebc4: 350009a0 cbnz w0, ffff8000113aecf8 ASSERT_RTNL(); ffff8000113aebc8: 94000000 bl 0 ffff8000113aebc8: R_AARCH64_CALL26 rtnl_is_locked ffff8000113aebcc: 34000820 cbz w0, ffff8000113aecd0 __READ_ONCE_SIZE; ffff8000113aebd0: aa1403e0 mov x0, x20 ffff8000113aebd4: f84b8c01 ldr x1, [x0,#184]! WARN_ON(netdev_has_any_lower_dev(dev)); ffff8000113aebd8: eb01001f cmp x0, x1 ffff8000113aebdc: 54000761 b.ne ffff8000113aecc8 netdev_unregister_kobject(dev); ffff8000113aebe0: aa1403e0 mov x0, x20 ffff8000113aebe4: 94000000 bl 0 ffff8000113aebe4: R_AARCH64_CALL26 netdev_unregister_kobject netif_reset_xps_queues(dev, index, dev->num_tx_queues - index); ffff8000113aebe8: 79479282 ldrh w2, [x20,#968] ffff8000113aebec: aa1403e0 mov x0, x20 ffff8000113aebf0: 52800001 mov w1, #0x0 // #0 ffff8000113aebf4: 97ffd704 bl ffff8000113a4804 list_for_each_entry(dev, head, unreg_list) { ffff8000113aebf8: f9403694 ldr x20, [x20,#104] ffff8000113aebfc: eb1402df cmp x22, x20 ffff8000113aec00: d101a294 sub x20, x20, #0x68 ffff8000113aec04: 54fff361 b.ne ffff8000113aea70 synchronize_net(); ffff8000113aec08: 94000000 bl ffff8000113a1384 ffff8000113aec08: R_AARCH64_CALL26 synchronize_net list_for_each_entry(dev, head, unreg_list) ffff8000113aec0c: f94002c2 ldr x2, [x22] PERCPU_OP(add, add, stadd) ffff8000113aec10: 12800003 mov w3, #0xffffffff // #-1 ffff8000113aec14: eb0202df cmp x22, x2 ffff8000113aec18: d101a042 sub x2, x2, #0x68 ffff8000113aec1c: 54000180 b.eq ffff8000113aec4c this_cpu_dec(*dev->pcpu_refcnt); ffff8000113aec20: f9426040 ldr x0, [x2,#1216] asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff8000113aec24: d538d081 mrs x1, tpidr_el1 PERCPU_OP(add, add, stadd) ffff8000113aec28: 8b000026 add x6, x1, x0 ffff8000113aec2c: 885f7cc5 ldxr w5, [x6] ffff8000113aec30: 0b0300a5 add w5, w5, w3 ffff8000113aec34: 88047cc5 stxr w4, w5, [x6] ffff8000113aec38: 35ffffa4 cbnz w4, ffff8000113aec2c ffff8000113aec3c: f9403442 ldr x2, [x2,#104] ffff8000113aec40: eb0202df cmp x22, x2 ffff8000113aec44: d101a042 sub x2, x2, #0x68 ffff8000113aec48: 54fffec1 b.ne ffff8000113aec20 } ffff8000113aec4c: f9404fa1 ldr x1, [x29,#152] ffff8000113aec50: f9400320 ldr x0, [x25] ffff8000113aec50: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113aec54: eb00003f cmp x1, x0 ffff8000113aec58: 54000361 b.ne ffff8000113aecc4 ffff8000113aec5c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113aec60: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113aec64: a94363f7 ldp x23, x24, [sp,#48] ffff8000113aec68: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113aec6c: a94573fb ldp x27, x28, [sp,#80] ffff8000113aec70: a8ca7bfd ldp x29, x30, [sp],#160 ffff8000113aec74: d65f03c0 ret WARN_ON(dev_xdp_install(dev, ndo_bpf, NULL, xdp.prog_flags, ffff8000113aec78: d2800002 mov x2, #0x0 // #0 ffff8000113aec7c: b9400ea3 ldr w3, [x21,#12] ffff8000113aec80: aa1403e0 mov x0, x20 ffff8000113aec84: aa1303e1 mov x1, x19 ffff8000113aec88: aa0203e4 mov x4, x2 ffff8000113aec8c: 97fffea0 bl ffff8000113ae70c ffff8000113aec90: 34fff1c0 cbz w0, ffff8000113aeac8 ffff8000113aec94: d4210000 brk #0x800 ffff8000113aec98: 17ffff8c b ffff8000113aeac8 WARN_ON(dev_xdp_install(dev, ndo_bpf, NULL, xdp.prog_flags, ffff8000113aec9c: d2800002 mov x2, #0x0 // #0 ffff8000113aeca0: b9400ea3 ldr w3, [x21,#12] ffff8000113aeca4: aa1403e0 mov x0, x20 ffff8000113aeca8: aa1303e1 mov x1, x19 ffff8000113aecac: aa0203e4 mov x4, x2 ffff8000113aecb0: 97fffe97 bl ffff8000113ae70c ffff8000113aecb4: 34fff1e0 cbz w0, ffff8000113aeaf0 ffff8000113aecb8: d4210000 brk #0x800 ffff8000113aecbc: 17ffff8d b ffff8000113aeaf0 BUG_ON(dev_boot_phase); ffff8000113aecc0: d4210000 brk #0x800 } ffff8000113aecc4: 94000000 bl 0 <__stack_chk_fail> ffff8000113aecc4: R_AARCH64_CALL26 __stack_chk_fail WARN_ON(netdev_has_any_lower_dev(dev)); ffff8000113aecc8: d4210000 brk #0x800 ffff8000113aeccc: 17ffffc5 b ffff8000113aebe0 ASSERT_RTNL(); ffff8000113aecd0: 39407740 ldrb w0, [x26,#29] ffff8000113aecd4: 35fff7e0 cbnz w0, ffff8000113aebd0 ffff8000113aecd8: 52800023 mov w3, #0x1 // #1 ffff8000113aecdc: aa1c03e0 mov x0, x28 ffff8000113aece0: aa1b03e1 mov x1, x27 ffff8000113aece4: 528352a2 mov w2, #0x1a95 // #6805 ffff8000113aece8: 39007743 strb w3, [x26,#29] ffff8000113aecec: 94000000 bl 0 <__warn_printk> ffff8000113aecec: R_AARCH64_CALL26 __warn_printk ffff8000113aecf0: d4210000 brk #0x800 ffff8000113aecf4: 17ffffb7 b ffff8000113aebd0 WARN_ON(netdev_has_any_upper_dev(dev)); ffff8000113aecf8: d4210000 brk #0x800 ffff8000113aecfc: 17ffffb3 b ffff8000113aebc8 WARN_ON(ndo_bpf(dev, &xdp)); ffff8000113aed00: d4210000 brk #0x800 ffff8000113aed04: 17ffff6f b ffff8000113aeac0 WARN_ON(dev_xdp_install(dev, generic_xdp_install, NULL, 0, NULL)); ffff8000113aed08: d4210000 brk #0x800 ffff8000113aed0c: 17ffff62 b ffff8000113aea94 pr_debug("unregister_netdevice: device %s/%p never was registered\n", ffff8000113aed10: aa1803e0 mov x0, x24 ffff8000113aed14: aa1a03e1 mov x1, x26 ffff8000113aed18: aa1403e2 mov x2, x20 ffff8000113aed1c: aa1403e3 mov x3, x20 ffff8000113aed20: 94000000 bl 0 <__dynamic_pr_debug> ffff8000113aed20: R_AARCH64_CALL26 __dynamic_pr_debug ffff8000113aed24: 17fffedc b ffff8000113ae894 ASSERT_RTNL(); ffff8000113aed28: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113aed28: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113aed2c: 91000063 add x3, x3, #0x0 ffff8000113aed2c: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113aed30: 39407060 ldrb w0, [x3,#28] ffff8000113aed34: 35ffd940 cbnz w0, ffff8000113ae85c ffff8000113aed38: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113aed38: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113aed3c: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113aed3c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113aed40: 52800024 mov w4, #0x1 // #1 ffff8000113aed44: 91000000 add x0, x0, #0x0 ffff8000113aed44: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113aed48: 91000021 add x1, x1, #0x0 ffff8000113aed48: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113aed4c: 528449e2 mov w2, #0x224f // #8783 ffff8000113aed50: 39007064 strb w4, [x3,#28] ffff8000113aed54: 94000000 bl 0 <__warn_printk> ffff8000113aed54: R_AARCH64_CALL26 __warn_printk ffff8000113aed58: d4210000 brk #0x800 ffff8000113aed5c: 17fffec0 b ffff8000113ae85c ffff8000113aed60 : { ffff8000113aed60: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113aed64: 910003fd mov x29, sp ffff8000113aed68: a90153f3 stp x19, x20, [sp,#16] ffff8000113aed6c: a9025bf5 stp x21, x22, [sp,#32] ffff8000113aed70: aa0003f6 mov x22, x0 ffff8000113aed74: aa1e03e0 mov x0, x30 ffff8000113aed78: 94000000 bl 0 <_mcount> ffff8000113aed78: R_AARCH64_CALL26 _mcount ffff8000113aed7c: 90000015 adrp x21, 0 <__stack_chk_guard> ffff8000113aed7c: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard LIST_HEAD(single); ffff8000113aed80: 9100e3b3 add x19, x29, #0x38 { ffff8000113aed84: f94002a3 ldr x3, [x21] ffff8000113aed84: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard list_add(&dev->unreg_list, &single); ffff8000113aed88: 9101a2d4 add x20, x22, #0x68 if (!__list_add_valid(new, prev, next)) ffff8000113aed8c: aa1403e0 mov x0, x20 ffff8000113aed90: aa1303e1 mov x1, x19 ffff8000113aed94: aa1303e2 mov x2, x19 { ffff8000113aed98: f90027a3 str x3, [x29,#72] LIST_HEAD(single); ffff8000113aed9c: f9001fb3 str x19, [x29,#56] ffff8000113aeda0: f90023b3 str x19, [x29,#64] ffff8000113aeda4: 94000000 bl 0 <__list_add_valid> ffff8000113aeda4: R_AARCH64_CALL26 __list_add_valid ffff8000113aeda8: 53001c00 uxtb w0, w0 ffff8000113aedac: 340000a0 cbz w0, ffff8000113aedc0 new->next = next; ffff8000113aedb0: f90036d3 str x19, [x22,#104] next->prev = new; ffff8000113aedb4: f90023b4 str x20, [x29,#64] new->prev = prev; ffff8000113aedb8: f9003ad3 str x19, [x22,#112] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113aedbc: f9001fb4 str x20, [x29,#56] rollback_registered_many(&single); ffff8000113aedc0: aa1303e0 mov x0, x19 ffff8000113aedc4: 97fffe91 bl ffff8000113ae808 if (!__list_del_entry_valid(entry)) ffff8000113aedc8: aa1303e0 mov x0, x19 ffff8000113aedcc: 94000000 bl 0 <__list_del_entry_valid> ffff8000113aedcc: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113aedd0: 53001c00 uxtb w0, w0 ffff8000113aedd4: 340000a0 cbz w0, ffff8000113aede8 __list_del(entry->prev, entry->next); ffff8000113aedd8: f94023a0 ldr x0, [x29,#64] ffff8000113aeddc: f9401fa1 ldr x1, [x29,#56] next->prev = prev; ffff8000113aede0: f9000420 str x0, [x1,#8] ffff8000113aede4: f9000001 str x1, [x0] } ffff8000113aede8: f94027a1 ldr x1, [x29,#72] ffff8000113aedec: f94002a0 ldr x0, [x21] ffff8000113aedec: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113aedf0: eb00003f cmp x1, x0 ffff8000113aedf4: 540000a1 b.ne ffff8000113aee08 ffff8000113aedf8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113aedfc: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113aee00: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113aee04: d65f03c0 ret ffff8000113aee08: 94000000 bl 0 <__stack_chk_fail> ffff8000113aee08: R_AARCH64_CALL26 __stack_chk_fail ffff8000113aee0c : { ffff8000113aee0c: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113aee10: 910003fd mov x29, sp ffff8000113aee14: a90153f3 stp x19, x20, [sp,#16] ffff8000113aee18: a9025bf5 stp x21, x22, [sp,#32] ffff8000113aee1c: aa0003f5 mov x21, x0 ffff8000113aee20: aa1e03e0 mov x0, x30 ffff8000113aee24: aa0103f3 mov x19, x1 ffff8000113aee28: 94000000 bl 0 <_mcount> ffff8000113aee28: R_AARCH64_CALL26 _mcount ASSERT_RTNL(); ffff8000113aee2c: 94000000 bl 0 ffff8000113aee2c: R_AARCH64_CALL26 rtnl_is_locked ffff8000113aee30: 34000660 cbz w0, ffff8000113aeefc if (head) { ffff8000113aee34: b4000333 cbz x19, ffff8000113aee98 list_move_tail(&dev->unreg_list, head); ffff8000113aee38: 9101a2b4 add x20, x21, #0x68 if (!__list_del_entry_valid(entry)) ffff8000113aee3c: aa1403e0 mov x0, x20 ffff8000113aee40: 94000000 bl 0 <__list_del_entry_valid> ffff8000113aee40: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113aee44: 53001c00 uxtb w0, w0 ffff8000113aee48: 340000a0 cbz w0, ffff8000113aee5c __list_del(entry->prev, entry->next); ffff8000113aee4c: f9400680 ldr x0, [x20,#8] ffff8000113aee50: f94036a1 ldr x1, [x21,#104] next->prev = prev; ffff8000113aee54: f9000420 str x0, [x1,#8] ffff8000113aee58: f9000001 str x1, [x0] __list_add(new, head->prev, head); ffff8000113aee5c: f9400676 ldr x22, [x19,#8] if (!__list_add_valid(new, prev, next)) ffff8000113aee60: aa1403e0 mov x0, x20 ffff8000113aee64: aa1603e1 mov x1, x22 ffff8000113aee68: aa1303e2 mov x2, x19 ffff8000113aee6c: 94000000 bl 0 <__list_add_valid> ffff8000113aee6c: R_AARCH64_CALL26 __list_add_valid ffff8000113aee70: 53001c00 uxtb w0, w0 ffff8000113aee74: 340000a0 cbz w0, ffff8000113aee88 next->prev = new; ffff8000113aee78: f9000674 str x20, [x19,#8] new->next = next; ffff8000113aee7c: f90036b3 str x19, [x21,#104] new->prev = prev; ffff8000113aee80: f9000696 str x22, [x20,#8] ffff8000113aee84: f90002d4 str x20, [x22] } ffff8000113aee88: a94153f3 ldp x19, x20, [sp,#16] ffff8000113aee8c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113aee90: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113aee94: d65f03c0 ret __list_add(new, head->prev, head); ffff8000113aee98: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff8000113aee98: R_AARCH64_ADR_PREL_PG_HI21 .data rollback_registered(dev); ffff8000113aee9c: aa1503e0 mov x0, x21 ffff8000113aeea0: 91000273 add x19, x19, #0x0 ffff8000113aeea0: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113aeea4: 97ffffaf bl ffff8000113aed60 ffff8000113aeea8: f9408276 ldr x22, [x19,#256] list_add_tail(&dev->todo_list, &net_todo_list); ffff8000113aeeac: 9112c2b4 add x20, x21, #0x4b0 ffff8000113aeeb0: 9103e273 add x19, x19, #0xf8 if (!__list_add_valid(new, prev, next)) ffff8000113aeeb4: aa1403e0 mov x0, x20 ffff8000113aeeb8: aa1603e1 mov x1, x22 ffff8000113aeebc: aa1303e2 mov x2, x19 ffff8000113aeec0: 94000000 bl 0 <__list_add_valid> ffff8000113aeec0: R_AARCH64_CALL26 __list_add_valid ffff8000113aeec4: 53001c00 uxtb w0, w0 ffff8000113aeec8: 340000a0 cbz w0, ffff8000113aeedc new->next = next; ffff8000113aeecc: f9025ab3 str x19, [x21,#1200] next->prev = new; ffff8000113aeed0: f9000674 str x20, [x19,#8] new->prev = prev; ffff8000113aeed4: f9025eb6 str x22, [x21,#1208] ffff8000113aeed8: f90002d4 str x20, [x22] ffff8000113aeedc: f9427aa0 ldr x0, [x21,#1264] dev_net(dev)->dev_unreg_count++; ffff8000113aeee0: b9400c01 ldr w1, [x0,#12] ffff8000113aeee4: 11000421 add w1, w1, #0x1 ffff8000113aeee8: b9000c01 str w1, [x0,#12] } ffff8000113aeeec: a94153f3 ldp x19, x20, [sp,#16] ffff8000113aeef0: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113aeef4: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113aeef8: d65f03c0 ret ASSERT_RTNL(); ffff8000113aeefc: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113aeefc: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113aef00: 91000063 add x3, x3, #0x0 ffff8000113aef00: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113aef04: 39407860 ldrb w0, [x3,#30] ffff8000113aef08: 35fff960 cbnz w0, ffff8000113aee34 ffff8000113aef0c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113aef0c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113aef10: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113aef10: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113aef14: 52800024 mov w4, #0x1 // #1 ffff8000113aef18: 91000000 add x0, x0, #0x0 ffff8000113aef18: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113aef1c: 91000021 add x1, x1, #0x0 ffff8000113aef1c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113aef20: 5284dd82 mov w2, #0x26ec // #9964 ffff8000113aef24: 39007864 strb w4, [x3,#30] ffff8000113aef28: 94000000 bl 0 <__warn_printk> ffff8000113aef28: R_AARCH64_CALL26 __warn_printk ffff8000113aef2c: d4210000 brk #0x800 ffff8000113aef30: 17ffffc1 b ffff8000113aee34 ffff8000113aef34 : { ffff8000113aef34: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113aef38: 910003fd mov x29, sp ffff8000113aef3c: f9000bf3 str x19, [sp,#16] ffff8000113aef40: aa0003f3 mov x19, x0 ffff8000113aef44: aa1e03e0 mov x0, x30 ffff8000113aef48: 94000000 bl 0 <_mcount> ffff8000113aef48: R_AARCH64_CALL26 _mcount rtnl_lock(); ffff8000113aef4c: 94000000 bl 0 ffff8000113aef4c: R_AARCH64_CALL26 rtnl_lock unregister_netdevice_queue(dev, NULL); ffff8000113aef50: aa1303e0 mov x0, x19 ffff8000113aef54: d2800001 mov x1, #0x0 // #0 ffff8000113aef58: 94000000 bl ffff8000113aee0c ffff8000113aef58: R_AARCH64_CALL26 unregister_netdevice_queue rtnl_unlock(); ffff8000113aef5c: 94000000 bl 0 ffff8000113aef5c: R_AARCH64_CALL26 rtnl_unlock } ffff8000113aef60: f9400bf3 ldr x19, [sp,#16] ffff8000113aef64: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113aef68: d65f03c0 ret ffff8000113aef6c : { ffff8000113aef6c: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113aef70: 910003fd mov x29, sp ffff8000113aef74: a90153f3 stp x19, x20, [sp,#16] ffff8000113aef78: a9025bf5 stp x21, x22, [sp,#32] ffff8000113aef7c: f9001bf7 str x23, [sp,#48] ffff8000113aef80: aa0003f7 mov x23, x0 ffff8000113aef84: aa1e03e0 mov x0, x30 ffff8000113aef88: 94000000 bl 0 <_mcount> ffff8000113aef88: R_AARCH64_CALL26 _mcount __READ_ONCE_SIZE; ffff8000113aef8c: f94002e0 ldr x0, [x23] if (!list_empty(head)) { ffff8000113aef90: eb0002ff cmp x23, x0 ffff8000113aef94: 54000580 b.eq ffff8000113af044 rollback_registered_many(head); ffff8000113aef98: aa1703e0 mov x0, x23 ffff8000113aef9c: 97fffe1b bl ffff8000113ae808 list_for_each_entry(dev, head, unreg_list) ffff8000113aefa0: f94002f3 ldr x19, [x23] ffff8000113aefa4: 90000015 adrp x21, ffff80001139e37c <__my_cpu_offset> ffff8000113aefa4: R_AARCH64_ADR_PREL_PG_HI21 .data __list_add(new, head->prev, head); ffff8000113aefa8: 910002b5 add x21, x21, #0x0 ffff8000113aefa8: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113aefac: eb1302ff cmp x23, x19 ffff8000113aefb0: 9103e2b5 add x21, x21, #0xf8 ffff8000113aefb4: d101a273 sub x19, x19, #0x68 ffff8000113aefb8: 540002a0 b.eq ffff8000113af00c ffff8000113aefbc: f94006b6 ldr x22, [x21,#8] list_add_tail(&dev->todo_list, &net_todo_list); ffff8000113aefc0: 9112c274 add x20, x19, #0x4b0 if (!__list_add_valid(new, prev, next)) ffff8000113aefc4: aa1403e0 mov x0, x20 ffff8000113aefc8: aa1603e1 mov x1, x22 ffff8000113aefcc: aa1503e2 mov x2, x21 ffff8000113aefd0: 94000000 bl 0 <__list_add_valid> ffff8000113aefd0: R_AARCH64_CALL26 __list_add_valid ffff8000113aefd4: 53001c00 uxtb w0, w0 ffff8000113aefd8: 340000a0 cbz w0, ffff8000113aefec new->next = next; ffff8000113aefdc: f9025a75 str x21, [x19,#1200] new->prev = prev; ffff8000113aefe0: f9025e76 str x22, [x19,#1208] next->prev = new; ffff8000113aefe4: f90006b4 str x20, [x21,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113aefe8: f90002d4 str x20, [x22] ffff8000113aefec: f9427a61 ldr x1, [x19,#1264] dev_net(dev)->dev_unreg_count++; ffff8000113aeff0: b9400c20 ldr w0, [x1,#12] ffff8000113aeff4: 11000400 add w0, w0, #0x1 ffff8000113aeff8: b9000c20 str w0, [x1,#12] list_for_each_entry(dev, head, unreg_list) ffff8000113aeffc: f9403673 ldr x19, [x19,#104] ffff8000113af000: eb1302ff cmp x23, x19 ffff8000113af004: d101a273 sub x19, x19, #0x68 ffff8000113af008: 54fffda1 b.ne ffff8000113aefbc if (!__list_del_entry_valid(entry)) ffff8000113af00c: aa1703e0 mov x0, x23 ffff8000113af010: 94000000 bl 0 <__list_del_entry_valid> ffff8000113af010: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113af014: 53001c00 uxtb w0, w0 ffff8000113af018: 340000a0 cbz w0, ffff8000113af02c __list_del(entry->prev, entry->next); ffff8000113af01c: f94006e0 ldr x0, [x23,#8] ffff8000113af020: f94002e1 ldr x1, [x23] next->prev = prev; ffff8000113af024: f9000420 str x0, [x1,#8] ffff8000113af028: f9000001 str x1, [x0] entry->next = LIST_POISON1; ffff8000113af02c: d2802001 mov x1, #0x100 // #256 entry->prev = LIST_POISON2; ffff8000113af030: d2802440 mov x0, #0x122 // #290 entry->next = LIST_POISON1; ffff8000113af034: f2fbd5a1 movk x1, #0xdead, lsl #48 entry->prev = LIST_POISON2; ffff8000113af038: f2fbd5a0 movk x0, #0xdead, lsl #48 entry->next = LIST_POISON1; ffff8000113af03c: f90002e1 str x1, [x23] entry->prev = LIST_POISON2; ffff8000113af040: f90006e0 str x0, [x23,#8] } ffff8000113af044: a94153f3 ldp x19, x20, [sp,#16] ffff8000113af048: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113af04c: f9401bf7 ldr x23, [sp,#48] ffff8000113af050: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113af054: d65f03c0 ret ffff8000113af058 : } remove_wait_queue(&netdev_unregistering_wq, &wait); } static void __net_exit default_device_exit_batch(struct list_head *net_list) { ffff8000113af058: a9b87bfd stp x29, x30, [sp,#-128]! ffff8000113af05c: 910003fd mov x29, sp ffff8000113af060: a90153f3 stp x19, x20, [sp,#16] ffff8000113af064: a9025bf5 stp x21, x22, [sp,#32] ffff8000113af068: a90363f7 stp x23, x24, [sp,#48] ffff8000113af06c: aa0003f4 mov x20, x0 ffff8000113af070: aa1e03e0 mov x0, x30 ffff8000113af074: 94000000 bl 0 <_mcount> ffff8000113af074: R_AARCH64_CALL26 _mcount ffff8000113af078: 90000016 adrp x22, 0 <__stack_chk_guard> ffff8000113af078: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard add_wait_queue(&netdev_unregistering_wq, &wait); ffff8000113af07c: 90000013 adrp x19, ffff80001139e37c <__my_cpu_offset> ffff8000113af07c: R_AARCH64_ADR_PREL_PG_HI21 .data DEFINE_WAIT_FUNC(wait, woken_wake_function); ffff8000113af080: a9057fbf stp xzr, xzr, [x29,#80] ffff8000113af084: d5384103 mrs x3, sp_el0 { ffff8000113af088: f94002c4 ldr x4, [x22] ffff8000113af088: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard add_wait_queue(&netdev_unregistering_wq, &wait); ffff8000113af08c: 91000260 add x0, x19, #0x0 ffff8000113af08c: R_AARCH64_ADD_ABS_LO12_NC .data DEFINE_WAIT_FUNC(wait, woken_wake_function); ffff8000113af090: f9002fa3 str x3, [x29,#88] ffff8000113af094: 90000003 adrp x3, 0 ffff8000113af094: R_AARCH64_ADR_PREL_PG_HI21 woken_wake_function * Do this across as many network namespaces as possible to * improve batching efficiency. */ struct net_device *dev; struct net *net; LIST_HEAD(dev_kill_list); ffff8000113af098: 910103b5 add x21, x29, #0x40 DEFINE_WAIT_FUNC(wait, woken_wake_function); ffff8000113af09c: 9101a3a2 add x2, x29, #0x68 ffff8000113af0a0: 91000063 add x3, x3, #0x0 ffff8000113af0a0: R_AARCH64_ADD_ABS_LO12_NC woken_wake_function ffff8000113af0a4: 910143a1 add x1, x29, #0x50 add_wait_queue(&netdev_unregistering_wq, &wait); ffff8000113af0a8: 91042000 add x0, x0, #0x108 { ffff8000113af0ac: f9003fa4 str x4, [x29,#120] LIST_HEAD(dev_kill_list); ffff8000113af0b0: f90023b5 str x21, [x29,#64] ffff8000113af0b4: f90027b5 str x21, [x29,#72] DEFINE_WAIT_FUNC(wait, woken_wake_function); ffff8000113af0b8: f90033a3 str x3, [x29,#96] ffff8000113af0bc: f90037a2 str x2, [x29,#104] ffff8000113af0c0: f9003ba2 str x2, [x29,#112] add_wait_queue(&netdev_unregistering_wq, &wait); ffff8000113af0c4: 94000000 bl 0 ffff8000113af0c4: R_AARCH64_CALL26 add_wait_queue rtnl_lock(); ffff8000113af0c8: 94000000 bl 0 ffff8000113af0c8: R_AARCH64_CALL26 rtnl_lock list_for_each_entry(net, net_list, exit_list) { ffff8000113af0cc: f9400280 ldr x0, [x20] ffff8000113af0d0: eb00029f cmp x20, x0 ffff8000113af0d4: d100c003 sub x3, x0, #0x30 ffff8000113af0d8: 54000140 b.eq ffff8000113af100 if (net->dev_unreg_count > 0) { ffff8000113af0dc: b85dc000 ldur w0, [x0,#-36] ffff8000113af0e0: 34000080 cbz w0, ffff8000113af0f0 ffff8000113af0e4: 14000035 b ffff8000113af1b8 ffff8000113af0e8: b85dc042 ldur w2, [x2,#-36] ffff8000113af0ec: 35000662 cbnz w2, ffff8000113af1b8 list_for_each_entry(net, net_list, exit_list) { ffff8000113af0f0: f9401862 ldr x2, [x3,#48] ffff8000113af0f4: eb02029f cmp x20, x2 ffff8000113af0f8: d100c043 sub x3, x2, #0x30 ffff8000113af0fc: 54ffff61 b.ne ffff8000113af0e8 remove_wait_queue(&netdev_unregistering_wq, &wait); ffff8000113af100: 91000260 add x0, x19, #0x0 ffff8000113af100: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113af104: 91042000 add x0, x0, #0x108 ffff8000113af108: 910143a1 add x1, x29, #0x50 ffff8000113af10c: 94000000 bl 0 ffff8000113af10c: R_AARCH64_CALL26 remove_wait_queue * unregistrations that happen in default_device_exit_batch * will run in the rtnl_unlock() at the end of * default_device_exit_batch. */ rtnl_lock_unregistering(net_list); list_for_each_entry(net, net_list, exit_list) { ffff8000113af110: f9400298 ldr x24, [x20] ffff8000113af114: eb18029f cmp x20, x24 ffff8000113af118: d100c318 sub x24, x24, #0x30 ffff8000113af11c: 54000360 b.eq ffff8000113af188 for_each_netdev_reverse(net, dev) { ffff8000113af120: f9404f13 ldr x19, [x24,#152] ffff8000113af124: 91024317 add x23, x24, #0x90 ffff8000113af128: eb1302ff cmp x23, x19 ffff8000113af12c: d1012273 sub x19, x19, #0x48 ffff8000113af130: 540000e1 b.ne ffff8000113af14c ffff8000113af134: 14000011 b ffff8000113af178 if (dev->rtnl_link_ops && dev->rtnl_link_ops->dellink) dev->rtnl_link_ops->dellink(dev, &dev_kill_list); ffff8000113af138: d63f0040 blr x2 for_each_netdev_reverse(net, dev) { ffff8000113af13c: f9402a73 ldr x19, [x19,#80] ffff8000113af140: eb1302ff cmp x23, x19 ffff8000113af144: d1012273 sub x19, x19, #0x48 ffff8000113af148: 54000180 b.eq ffff8000113af178 if (dev->rtnl_link_ops && dev->rtnl_link_ops->dellink) ffff8000113af14c: f9441a62 ldr x2, [x19,#2096] dev->rtnl_link_ops->dellink(dev, &dev_kill_list); ffff8000113af150: aa1303e0 mov x0, x19 ffff8000113af154: aa1503e1 mov x1, x21 if (dev->rtnl_link_ops && dev->rtnl_link_ops->dellink) ffff8000113af158: b4000062 cbz x2, ffff8000113af164 ffff8000113af15c: f9402842 ldr x2, [x2,#80] ffff8000113af160: b5fffec2 cbnz x2, ffff8000113af138 else unregister_netdevice_queue(dev, &dev_kill_list); ffff8000113af164: 94000000 bl ffff8000113aee0c ffff8000113af164: R_AARCH64_CALL26 unregister_netdevice_queue for_each_netdev_reverse(net, dev) { ffff8000113af168: f9402a73 ldr x19, [x19,#80] ffff8000113af16c: eb1302ff cmp x23, x19 ffff8000113af170: d1012273 sub x19, x19, #0x48 ffff8000113af174: 54fffec1 b.ne ffff8000113af14c list_for_each_entry(net, net_list, exit_list) { ffff8000113af178: f9401b18 ldr x24, [x24,#48] ffff8000113af17c: eb18029f cmp x20, x24 ffff8000113af180: d100c318 sub x24, x24, #0x30 ffff8000113af184: 54fffce1 b.ne ffff8000113af120 } } unregister_netdevice_many(&dev_kill_list); ffff8000113af188: aa1503e0 mov x0, x21 ffff8000113af18c: 94000000 bl ffff8000113aef6c ffff8000113af18c: R_AARCH64_CALL26 unregister_netdevice_many rtnl_unlock(); ffff8000113af190: 94000000 bl 0 ffff8000113af190: R_AARCH64_CALL26 rtnl_unlock } ffff8000113af194: f9403fa1 ldr x1, [x29,#120] ffff8000113af198: f94002c0 ldr x0, [x22] ffff8000113af198: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113af19c: eb00003f cmp x1, x0 ffff8000113af1a0: 54000181 b.ne ffff8000113af1d0 ffff8000113af1a4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113af1a8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113af1ac: a94363f7 ldp x23, x24, [sp,#48] ffff8000113af1b0: a8c87bfd ldp x29, x30, [sp],#128 ffff8000113af1b4: d65f03c0 ret __rtnl_unlock(); ffff8000113af1b8: 94000000 bl 0 <__rtnl_unlock> ffff8000113af1b8: R_AARCH64_CALL26 __rtnl_unlock wait_woken(&wait, TASK_UNINTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT); ffff8000113af1bc: 910143a0 add x0, x29, #0x50 ffff8000113af1c0: 52800041 mov w1, #0x2 // #2 ffff8000113af1c4: 92f00002 mov x2, #0x7fffffffffffffff // #9223372036854775807 ffff8000113af1c8: 94000000 bl 0 ffff8000113af1c8: R_AARCH64_CALL26 wait_woken ffff8000113af1cc: 17ffffbf b ffff8000113af0c8 } ffff8000113af1d0: 94000000 bl 0 <__stack_chk_fail> ffff8000113af1d0: R_AARCH64_CALL26 __stack_chk_fail ffff8000113af1d4 : { ffff8000113af1d4: a9ba7bfd stp x29, x30, [sp,#-96]! ffff8000113af1d8: 910003fd mov x29, sp ffff8000113af1dc: a90153f3 stp x19, x20, [sp,#16] ffff8000113af1e0: a9025bf5 stp x21, x22, [sp,#32] ffff8000113af1e4: a90363f7 stp x23, x24, [sp,#48] ffff8000113af1e8: a9046bf9 stp x25, x26, [sp,#64] ffff8000113af1ec: a90573fb stp x27, x28, [sp,#80] ffff8000113af1f0: aa0003f4 mov x20, x0 ffff8000113af1f4: aa1e03e0 mov x0, x30 ffff8000113af1f8: aa0103f9 mov x25, x1 ffff8000113af1fc: 2a0203fa mov w26, w2 ffff8000113af200: 2a0303fb mov w27, w3 ffff8000113af204: 2a0403f3 mov w19, w4 ffff8000113af208: 94000000 bl 0 <_mcount> ffff8000113af208: R_AARCH64_CALL26 _mcount const struct net_device_ops *ops = dev->netdev_ops; ffff8000113af20c: f940fa98 ldr x24, [x20,#496] ASSERT_RTNL(); ffff8000113af210: 94000000 bl 0 ffff8000113af210: R_AARCH64_CALL26 rtnl_is_locked ffff8000113af214: 34001360 cbz w0, ffff8000113af480 offload = flags & XDP_FLAGS_HW_MODE; ffff8000113af218: d3430e76 ubfx x22, x19, #3, #1 bpf_op = bpf_chk = ops->ndo_bpf; ffff8000113af21c: f9412715 ldr x21, [x24,#584] query = offload ? XDP_QUERY_PROG_HW : XDP_QUERY_PROG; ffff8000113af220: 6b1f02df cmp w22, wzr ffff8000113af224: 52800061 mov w1, #0x3 // #3 ffff8000113af228: 52800042 mov w2, #0x2 // #2 ffff8000113af22c: 1a810042 csel w2, w2, w1, eq if (!bpf_op && (flags & (XDP_FLAGS_DRV_MODE | XDP_FLAGS_HW_MODE))) { ffff8000113af230: b4000f55 cbz x21, ffff8000113af418 if (!bpf_op || (flags & XDP_FLAGS_SKB_MODE)) ffff8000113af234: 36080473 tbz w19, #1, ffff8000113af2c0 ffff8000113af238: 90000017 adrp x23, ffff80001139e37c <__my_cpu_offset> ffff8000113af238: R_AARCH64_ADR_PREL_PG_HI21 .text+0x11b1c ffff8000113af23c: 910002f7 add x23, x23, #0x0 ffff8000113af23c: R_AARCH64_ADD_ABS_LO12_NC .text+0x11b1c prog_id = __dev_xdp_query(dev, bpf_op, query); ffff8000113af240: aa1403e0 mov x0, x20 ffff8000113af244: aa1703e1 mov x1, x23 ffff8000113af248: 94000000 bl ffff8000113ae678 <__dev_xdp_query> ffff8000113af248: R_AARCH64_CALL26 __dev_xdp_query ffff8000113af24c: 2a0003fc mov w28, w0 if (flags & XDP_FLAGS_REPLACE) { ffff8000113af250: 36200493 tbz w19, #4, ffff8000113af2e0 if (expected_fd >= 0) { ffff8000113af254: 37f80abb tbnz w27, #31, ffff8000113af3a8 prog = bpf_prog_get_type_dev(expected_fd, ffff8000113af258: f9412701 ldr x1, [x24,#584] ffff8000113af25c: 2a1b03e0 mov w0, w27 ffff8000113af260: eb17003f cmp x1, x23 ffff8000113af264: 1a9f17e2 cset w2, eq ffff8000113af268: 528000c1 mov w1, #0x6 // #6 ffff8000113af26c: 94000000 bl 0 ffff8000113af26c: R_AARCH64_CALL26 bpf_prog_get_type_dev if (IS_ERR(prog)) ffff8000113af270: b140041f cmn x0, #0x1, lsl #12 ffff8000113af274: 54000188 b.hi ffff8000113af2a4 expected_id = prog->aux->id; ffff8000113af278: f9401001 ldr x1, [x0,#32] ffff8000113af27c: b9401c3b ldr w27, [x1,#28] bpf_prog_put(prog); ffff8000113af280: 94000000 bl 0 ffff8000113af280: R_AARCH64_CALL26 bpf_prog_put if (prog_id != expected_id) { ffff8000113af284: 6b1b039f cmp w28, w27 ffff8000113af288: 540002c0 b.eq ffff8000113af2e0 NL_SET_ERR_MSG(extack, "Active program does not match expected"); ffff8000113af28c: b40000b9 cbz x25, ffff8000113af2a0 ffff8000113af290: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af290: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113af294: 91000000 add x0, x0, #0x0 ffff8000113af294: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113af298: 91042000 add x0, x0, #0x108 ffff8000113af29c: f9000320 str x0, [x25] return -EEXIST; ffff8000113af2a0: 12800200 mov w0, #0xffffffef // #-17 } ffff8000113af2a4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113af2a8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113af2ac: a94363f7 ldp x23, x24, [sp,#48] ffff8000113af2b0: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113af2b4: a94573fb ldp x27, x28, [sp,#80] ffff8000113af2b8: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113af2bc: d65f03c0 ret if (!bpf_op || (flags & XDP_FLAGS_SKB_MODE)) ffff8000113af2c0: aa1503f7 mov x23, x21 prog_id = __dev_xdp_query(dev, bpf_op, query); ffff8000113af2c4: aa1403e0 mov x0, x20 ffff8000113af2c8: aa1703e1 mov x1, x23 bpf_chk = generic_xdp_install; ffff8000113af2cc: 90000015 adrp x21, ffff80001139e37c <__my_cpu_offset> ffff8000113af2cc: R_AARCH64_ADR_PREL_PG_HI21 .text+0x11b1c prog_id = __dev_xdp_query(dev, bpf_op, query); ffff8000113af2d0: 94000000 bl ffff8000113ae678 <__dev_xdp_query> ffff8000113af2d0: R_AARCH64_CALL26 __dev_xdp_query bpf_chk = generic_xdp_install; ffff8000113af2d4: 910002b5 add x21, x21, #0x0 ffff8000113af2d4: R_AARCH64_ADD_ABS_LO12_NC .text+0x11b1c prog_id = __dev_xdp_query(dev, bpf_op, query); ffff8000113af2d8: 2a0003fc mov w28, w0 if (flags & XDP_FLAGS_REPLACE) { ffff8000113af2dc: 3727fbd3 tbnz w19, #4, ffff8000113af254 if (fd >= 0) { ffff8000113af2e0: 37f808ba tbnz w26, #31, ffff8000113af3f4 if (!offload && __dev_xdp_query(dev, bpf_chk, XDP_QUERY_PROG)) { ffff8000113af2e4: 34000676 cbz w22, ffff8000113af3b0 if ((flags & XDP_FLAGS_UPDATE_IF_NOEXIST) && prog_id) { ffff8000113af2e8: 360001f3 tbz w19, #0, ffff8000113af324 ffff8000113af2ec: 340001dc cbz w28, ffff8000113af324 NL_SET_ERR_MSG(extack, "XDP program already attached"); ffff8000113af2f0: b4000c19 cbz x25, ffff8000113af470 ffff8000113af2f4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af2f4: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113af2f8: 91000000 add x0, x0, #0x0 ffff8000113af2f8: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113af2fc: 9105a000 add x0, x0, #0x168 ffff8000113af300: f9000320 str x0, [x25] } ffff8000113af304: a94153f3 ldp x19, x20, [sp,#16] return -EBUSY; ffff8000113af308: 128001e0 mov w0, #0xfffffff0 // #-16 } ffff8000113af30c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113af310: a94363f7 ldp x23, x24, [sp,#48] ffff8000113af314: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113af318: a94573fb ldp x27, x28, [sp,#80] ffff8000113af31c: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113af320: d65f03c0 ret prog = bpf_prog_get_type_dev(fd, BPF_PROG_TYPE_XDP, ffff8000113af324: f9412701 ldr x1, [x24,#584] ffff8000113af328: 2a1a03e0 mov w0, w26 ffff8000113af32c: eb17003f cmp x1, x23 ffff8000113af330: 1a9f17e2 cset w2, eq ffff8000113af334: 528000c1 mov w1, #0x6 // #6 ffff8000113af338: 94000000 bl 0 ffff8000113af338: R_AARCH64_CALL26 bpf_prog_get_type_dev ffff8000113af33c: aa0003f5 mov x21, x0 if (IS_ERR(prog)) ffff8000113af340: b14006bf cmn x21, #0x1, lsl #12 ffff8000113af344: 54fffb08 b.hi ffff8000113af2a4 if (!offload && bpf_prog_is_dev_bound(prog->aux)) { ffff8000113af348: f94012a0 ldr x0, [x21,#32] ffff8000113af34c: 35000076 cbnz w22, ffff8000113af358 ffff8000113af350: 3940e401 ldrb w1, [x0,#57] ffff8000113af354: 350007c1 cbnz w1, ffff8000113af44c if (prog->aux->id && prog->aux->id == prog_id) { ffff8000113af358: b9401c00 ldr w0, [x0,#28] ffff8000113af35c: 34000060 cbz w0, ffff8000113af368 ffff8000113af360: 6b00039f cmp w28, w0 ffff8000113af364: 540006c0 b.eq ffff8000113af43c err = dev_xdp_install(dev, bpf_op, extack, flags, prog); ffff8000113af368: 2a1303e3 mov w3, w19 ffff8000113af36c: aa1403e0 mov x0, x20 ffff8000113af370: aa1703e1 mov x1, x23 ffff8000113af374: aa1903e2 mov x2, x25 ffff8000113af378: aa1503e4 mov x4, x21 ffff8000113af37c: 97fffce4 bl ffff8000113ae70c ffff8000113af380: 2a0003f3 mov w19, w0 if (err < 0 && prog) ffff8000113af384: 37f802f3 tbnz w19, #31, ffff8000113af3e0 err = dev_xdp_install(dev, bpf_op, extack, flags, prog); ffff8000113af388: 2a1303e0 mov w0, w19 } ffff8000113af38c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113af390: a94153f3 ldp x19, x20, [sp,#16] ffff8000113af394: a94363f7 ldp x23, x24, [sp,#48] ffff8000113af398: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113af39c: a94573fb ldp x27, x28, [sp,#80] ffff8000113af3a0: a8c67bfd ldp x29, x30, [sp],#96 ffff8000113af3a4: d65f03c0 ret u32 prog_id, expected_id = 0; ffff8000113af3a8: 5280001b mov w27, #0x0 // #0 ffff8000113af3ac: 17ffffb6 b ffff8000113af284 if (!offload && __dev_xdp_query(dev, bpf_chk, XDP_QUERY_PROG)) { ffff8000113af3b0: aa1403e0 mov x0, x20 ffff8000113af3b4: aa1503e1 mov x1, x21 ffff8000113af3b8: 52800042 mov w2, #0x2 // #2 ffff8000113af3bc: 94000000 bl ffff8000113ae678 <__dev_xdp_query> ffff8000113af3bc: R_AARCH64_CALL26 __dev_xdp_query ffff8000113af3c0: 34fff940 cbz w0, ffff8000113af2e8 NL_SET_ERR_MSG(extack, "native and generic XDP can't be active at the same time"); ffff8000113af3c4: b4fff6f9 cbz x25, ffff8000113af2a0 ffff8000113af3c8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af3c8: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113af3cc: 91000000 add x0, x0, #0x0 ffff8000113af3cc: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113af3d0: 9104c000 add x0, x0, #0x130 ffff8000113af3d4: f9000320 str x0, [x25] return -EEXIST; ffff8000113af3d8: 12800200 mov w0, #0xffffffef // #-17 ffff8000113af3dc: 17ffffb2 b ffff8000113af2a4 if (err < 0 && prog) ffff8000113af3e0: b4fffd55 cbz x21, ffff8000113af388 bpf_prog_put(prog); ffff8000113af3e4: aa1503e0 mov x0, x21 ffff8000113af3e8: 94000000 bl 0 ffff8000113af3e8: R_AARCH64_CALL26 bpf_prog_put ffff8000113af3ec: 2a1303e0 mov w0, w19 ffff8000113af3f0: 17ffffad b ffff8000113af2a4 return 0; ffff8000113af3f4: 52800000 mov w0, #0x0 // #0 if (!prog_id) ffff8000113af3f8: 34fff57c cbz w28, ffff8000113af2a4 err = dev_xdp_install(dev, bpf_op, extack, flags, prog); ffff8000113af3fc: aa1403e0 mov x0, x20 ffff8000113af400: aa1703e1 mov x1, x23 ffff8000113af404: aa1903e2 mov x2, x25 ffff8000113af408: 2a1303e3 mov w3, w19 ffff8000113af40c: d2800004 mov x4, #0x0 // #0 ffff8000113af410: 97fffcbf bl ffff8000113ae70c ffff8000113af414: 17ffffa4 b ffff8000113af2a4 if (!bpf_op && (flags & (XDP_FLAGS_DRV_MODE | XDP_FLAGS_HW_MODE))) { ffff8000113af418: 721e067f tst w19, #0xc ffff8000113af41c: 54fff0e0 b.eq ffff8000113af238 NL_SET_ERR_MSG(extack, "underlying driver does not support XDP in native mode"); ffff8000113af420: b40002d9 cbz x25, ffff8000113af478 ffff8000113af424: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af424: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113af428: 91000000 add x0, x0, #0x0 ffff8000113af428: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113af42c: 91034000 add x0, x0, #0xd0 ffff8000113af430: f9000320 str x0, [x25] return -EOPNOTSUPP; ffff8000113af434: 12800bc0 mov w0, #0xffffffa1 // #-95 ffff8000113af438: 17ffff9b b ffff8000113af2a4 bpf_prog_put(prog); ffff8000113af43c: aa1503e0 mov x0, x21 ffff8000113af440: 94000000 bl 0 ffff8000113af440: R_AARCH64_CALL26 bpf_prog_put return 0; ffff8000113af444: 52800000 mov w0, #0x0 // #0 ffff8000113af448: 17ffff97 b ffff8000113af2a4 NL_SET_ERR_MSG(extack, "using device-bound program without HW_MODE flag is not supported"); ffff8000113af44c: b40000b9 cbz x25, ffff8000113af460 ffff8000113af450: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af450: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113af454: 91000000 add x0, x0, #0x0 ffff8000113af454: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113af458: 91062000 add x0, x0, #0x188 ffff8000113af45c: f9000320 str x0, [x25] bpf_prog_put(prog); ffff8000113af460: aa1503e0 mov x0, x21 ffff8000113af464: 94000000 bl 0 ffff8000113af464: R_AARCH64_CALL26 bpf_prog_put return -EINVAL; ffff8000113af468: 128002a0 mov w0, #0xffffffea // #-22 ffff8000113af46c: 17ffff8e b ffff8000113af2a4 return -EBUSY; ffff8000113af470: 128001e0 mov w0, #0xfffffff0 // #-16 ffff8000113af474: 17ffff8c b ffff8000113af2a4 return -EOPNOTSUPP; ffff8000113af478: 12800bc0 mov w0, #0xffffffa1 // #-95 ffff8000113af47c: 17ffff8a b ffff8000113af2a4 ASSERT_RTNL(); ffff8000113af480: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113af480: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113af484: 91000063 add x3, x3, #0x0 ffff8000113af484: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113af488: 39407c60 ldrb w0, [x3,#31] ffff8000113af48c: 35ffec60 cbnz w0, ffff8000113af218 ffff8000113af490: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af490: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113af494: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113af494: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113af498: 52800024 mov w4, #0x1 // #1 ffff8000113af49c: 91000000 add x0, x0, #0x0 ffff8000113af49c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113af4a0: 91000021 add x1, x1, #0x0 ffff8000113af4a0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113af4a4: 52843c62 mov w2, #0x21e3 // #8675 ffff8000113af4a8: 39007c64 strb w4, [x3,#31] ffff8000113af4ac: 94000000 bl 0 <__warn_printk> ffff8000113af4ac: R_AARCH64_CALL26 __warn_printk ffff8000113af4b0: d4210000 brk #0x800 ffff8000113af4b4: 17ffff59 b ffff8000113af218 ffff8000113af4b8 <__netdev_update_features>: { ffff8000113af4b8: a9b87bfd stp x29, x30, [sp,#-128]! ffff8000113af4bc: 910003fd mov x29, sp ffff8000113af4c0: a90153f3 stp x19, x20, [sp,#16] ffff8000113af4c4: a9025bf5 stp x21, x22, [sp,#32] ffff8000113af4c8: a90363f7 stp x23, x24, [sp,#48] ffff8000113af4cc: a9046bf9 stp x25, x26, [sp,#64] ffff8000113af4d0: a90573fb stp x27, x28, [sp,#80] ffff8000113af4d4: aa0003f6 mov x22, x0 ffff8000113af4d8: aa1e03e0 mov x0, x30 ffff8000113af4dc: 94000000 bl 0 <_mcount> ffff8000113af4dc: R_AARCH64_CALL26 _mcount ffff8000113af4e0: 90000017 adrp x23, 0 <__stack_chk_guard> ffff8000113af4e0: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113af4e4: f94002e0 ldr x0, [x23] ffff8000113af4e4: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113af4e8: f9003fa0 str x0, [x29,#120] ASSERT_RTNL(); ffff8000113af4ec: 94000000 bl 0 ffff8000113af4ec: R_AARCH64_CALL26 rtnl_is_locked ffff8000113af4f0: 34004000 cbz w0, ffff8000113afcf0 <__netdev_update_features+0x838> return (dev->features & ~dev->hw_features) | dev->wanted_features; ffff8000113af4f4: f9406ac3 ldr x3, [x22,#208] ffff8000113af4f8: f94066c1 ldr x1, [x22,#200] ffff8000113af4fc: f9406ec2 ldr x2, [x22,#216] if (dev->netdev_ops->ndo_fix_features) ffff8000113af500: f940fac0 ldr x0, [x22,#496] ffff8000113af504: 8a230021 bic x1, x1, x3 ffff8000113af508: aa020021 orr x1, x1, x2 ffff8000113af50c: f940c402 ldr x2, [x0,#392] features = netdev_get_wanted_features(dev); ffff8000113af510: f90033a1 str x1, [x29,#96] if (dev->netdev_ops->ndo_fix_features) ffff8000113af514: b4001f22 cbz x2, ffff8000113af8f8 <__netdev_update_features+0x440> features = dev->netdev_ops->ndo_fix_features(dev, features); ffff8000113af518: aa1603e0 mov x0, x22 ffff8000113af51c: d63f0040 blr x2 ffff8000113af520: f90033a0 str x0, [x29,#96] ffff8000113af524: aa0003f8 mov x24, x0 if ((features & NETIF_F_HW_CSUM) && ffff8000113af528: 36180098 tbz w24, #3, ffff8000113af538 <__netdev_update_features+0x80> (features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) { ffff8000113af52c: d2800240 mov x0, #0x12 // #18 if ((features & NETIF_F_HW_CSUM) && ffff8000113af530: ea00031f tst x24, x0 ffff8000113af534: 54003be1 b.ne ffff8000113afcb0 <__netdev_update_features+0x7f8> if ((features & NETIF_F_ALL_TSO) && !(features & NETIF_F_SG)) { ffff8000113af538: d2a003a0 mov x0, #0x1d0000 // #1900544 ffff8000113af53c: ea00031f tst x24, x0 ffff8000113af540: 54000040 b.eq ffff8000113af548 <__netdev_update_features+0x90> ffff8000113af544: 360017b8 tbz w24, #0, ffff8000113af838 <__netdev_update_features+0x380> if ((features & NETIF_F_TSO) && !(features & NETIF_F_HW_CSUM) && ffff8000113af548: d2800140 mov x0, #0xa // #10 ffff8000113af54c: f2a00020 movk x0, #0x1, lsl #16 ffff8000113af550: 8a000300 and x0, x24, x0 ffff8000113af554: f140401f cmp x0, #0x10, lsl #12 ffff8000113af558: 54001880 b.eq ffff8000113af868 <__netdev_update_features+0x3b0> if ((features & NETIF_F_TSO6) && !(features & NETIF_F_HW_CSUM) && ffff8000113af55c: d2800300 mov x0, #0x18 // #24 ffff8000113af560: f2a00200 movk x0, #0x10, lsl #16 ffff8000113af564: 8a000300 and x0, x24, x0 ffff8000113af568: f144001f cmp x0, #0x100, lsl #12 ffff8000113af56c: 54001960 b.eq ffff8000113af898 <__netdev_update_features+0x3e0> if ((features & NETIF_F_TSO_MANGLEID) && !(features & NETIF_F_TSO)) ffff8000113af570: d2a00120 mov x0, #0x90000 // #589824 ffff8000113af574: 8a000300 and x0, x24, x0 features &= ~NETIF_F_TSO_MANGLEID; ffff8000113af578: f142001f cmp x0, #0x80, lsl #12 ffff8000113af57c: 926cfb00 and x0, x24, #0xfffffffffff7ffff ffff8000113af580: 9a980018 csel x24, x0, x24, eq if ((features & NETIF_F_ALL_TSO) == NETIF_F_TSO_ECN) ffff8000113af584: d2a003a0 mov x0, #0x1d0000 // #1900544 ffff8000113af588: 8a000300 and x0, x24, x0 features &= ~NETIF_F_TSO_ECN; ffff8000113af58c: f141001f cmp x0, #0x40, lsl #12 ffff8000113af590: 926dfb00 and x0, x24, #0xfffffffffffbffff ffff8000113af594: 9a980018 csel x24, x0, x24, eq if ((features & NETIF_F_GSO) && !(features & NETIF_F_SG)) { ffff8000113af598: d2810020 mov x0, #0x801 // #2049 ffff8000113af59c: 8a000300 and x0, x24, x0 ffff8000113af5a0: f120001f cmp x0, #0x800 ffff8000113af5a4: 54001b20 b.eq ffff8000113af908 <__netdev_update_features+0x450> if ((features & dev->gso_partial_features) && ffff8000113af5a8: f9407ec1 ldr x1, [x22,#248] ffff8000113af5ac: ea01031f tst x24, x1 ffff8000113af5b0: 54000040 b.eq ffff8000113af5b8 <__netdev_update_features+0x100> ffff8000113af5b4: 36e01358 tbz w24, #28, ffff8000113af81c <__netdev_update_features+0x364> if (!(features & NETIF_F_RXCSUM)) { ffff8000113af5b8: b7400058 tbnz x24, #40, ffff8000113af5c0 <__netdev_update_features+0x108> if (features & NETIF_F_GRO_HW) { ffff8000113af5bc: b7b81238 tbnz x24, #55, ffff8000113af800 <__netdev_update_features+0x348> if (features & NETIF_F_RXFCS) { ffff8000113af5c0: b65801f8 tbz x24, #43, ffff8000113af5fc <__netdev_update_features+0x144> if (features & NETIF_F_LRO) { ffff8000113af5c4: 367800f8 tbz w24, #15, ffff8000113af5e0 <__netdev_update_features+0x128> netdev_dbg(dev, "Dropping LRO feature since RX-FCS is requested.\n"); ffff8000113af5c8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af5c8: R_AARCH64_ADR_PREL_PG_HI21 __verbose ffff8000113af5cc: 91000000 add x0, x0, #0x0 ffff8000113af5cc: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113af5d0: 91078000 add x0, x0, #0x1e0 ffff8000113af5d4: 79404401 ldrh w1, [x0,#34] ffff8000113af5d8: 37103b61 tbnz w1, #2, ffff8000113afd44 <__netdev_update_features+0x88c> features &= ~NETIF_F_LRO; ffff8000113af5dc: 9270fb18 and x24, x24, #0xffffffffffff7fff if (features & NETIF_F_GRO_HW) { ffff8000113af5e0: b6b800f8 tbz x24, #55, ffff8000113af5fc <__netdev_update_features+0x144> netdev_dbg(dev, "Dropping HW-GRO feature since RX-FCS is requested.\n"); ffff8000113af5e4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af5e4: R_AARCH64_ADR_PREL_PG_HI21 __verbose ffff8000113af5e8: 91000000 add x0, x0, #0x0 ffff8000113af5e8: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113af5ec: 91082000 add x0, x0, #0x208 ffff8000113af5f0: 79404401 ldrh w1, [x0,#34] ffff8000113af5f4: 371039c1 tbnz w1, #2, ffff8000113afd2c <__netdev_update_features+0x874> features &= ~NETIF_F_GRO_HW; ffff8000113af5f8: 9248fb18 and x24, x24, #0xff7fffffffffffff __READ_ONCE_SIZE; ffff8000113af5fc: f94056d3 ldr x19, [x22,#168] netdev_for_each_upper_dev_rcu(dev, upper, iter) ffff8000113af600: 9102a2d5 add x21, x22, #0xa8 features = netdev_fix_features(dev, features); ffff8000113af604: f90033b8 str x24, [x29,#96] if (&upper->list == &dev->adj_list.upper) ffff8000113af608: eb1302bf cmp x21, x19 ffff8000113af60c: 54001c40 b.eq ffff8000113af994 <__netdev_update_features+0x4dc> return upper->dev; ffff8000113af610: f85e8264 ldur x4, [x19,#-24] netdev_for_each_upper_dev_rcu(dev, upper, iter) ffff8000113af614: aa1803f4 mov x20, x24 ffff8000113af618: b40002c4 cbz x4, ffff8000113af670 <__netdev_update_features+0x1b8> netdev_dbg(lower, "Dropping feature %pNF, upper dev %s has it off.\n", ffff8000113af61c: 90000018 adrp x24, ffff80001139e37c <__my_cpu_offset> ffff8000113af61c: R_AARCH64_ADR_PREL_PG_HI21 __verbose ffff8000113af620: 91000318 add x24, x24, #0x0 ffff8000113af620: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113af624: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af624: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xb20 ffff8000113af628: 9108c318 add x24, x24, #0x230 ffff8000113af62c: 91000019 add x25, x0, #0x0 ffff8000113af62c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xb20 feature = __NETIF_F_BIT(feature_bit); ffff8000113af630: d2900000 mov x0, #0x8000 // #32768 ffff8000113af634: f90037a0 str x0, [x29,#104] if (!(upper->wanted_features & feature) ffff8000113af638: f9406c80 ldr x0, [x4,#216] ffff8000113af63c: 377800c0 tbnz w0, #15, ffff8000113af654 <__netdev_update_features+0x19c> && (features & feature)) { ffff8000113af640: 367800b4 tbz w20, #15, ffff8000113af654 <__netdev_update_features+0x19c> netdev_dbg(lower, "Dropping feature %pNF, upper dev %s has it off.\n", ffff8000113af644: 79404703 ldrh w3, [x24,#34] ffff8000113af648: 92900001 mov x1, #0xffffffffffff7fff // #-32769 ffff8000113af64c: 37101a83 tbnz w3, #2, ffff8000113af99c <__netdev_update_features+0x4e4> features &= ~feature; ffff8000113af650: 8a010294 and x20, x20, x1 features = netdev_sync_upper_features(dev, upper, features); ffff8000113af654: f90033b4 str x20, [x29,#96] ffff8000113af658: f9400263 ldr x3, [x19] if (&upper->list == &dev->adj_list.upper) ffff8000113af65c: eb0302bf cmp x21, x3 ffff8000113af660: aa0303f3 mov x19, x3 ffff8000113af664: 54000060 b.eq ffff8000113af670 <__netdev_update_features+0x1b8> return upper->dev; ffff8000113af668: f85e8064 ldur x4, [x3,#-24] netdev_for_each_upper_dev_rcu(dev, upper, iter) ffff8000113af66c: b5fffe24 cbnz x4, ffff8000113af630 <__netdev_update_features+0x178> if (dev->features == features) ffff8000113af670: f94066c0 ldr x0, [x22,#200] ffff8000113af674: eb14001f cmp x0, x20 ffff8000113af678: 54001440 b.eq ffff8000113af900 <__netdev_update_features+0x448> netdev_dbg(dev, "Features changed: %pNF -> %pNF\n", ffff8000113af67c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af67c: R_AARCH64_ADR_PREL_PG_HI21 __verbose ffff8000113af680: 91000000 add x0, x0, #0x0 ffff8000113af680: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113af684: 91096000 add x0, x0, #0x258 ffff8000113af688: 79404401 ldrh w1, [x0,#34] ffff8000113af68c: 37102b81 tbnz w1, #2, ffff8000113afbfc <__netdev_update_features+0x744> if (dev->netdev_ops->ndo_set_features) ffff8000113af690: f940fac0 ldr x0, [x22,#496] ffff8000113af694: f940c819 ldr x25, [x0,#400] ffff8000113af698: b40000d9 cbz x25, ffff8000113af6b0 <__netdev_update_features+0x1f8> err = dev->netdev_ops->ndo_set_features(dev, features); ffff8000113af69c: f94033a1 ldr x1, [x29,#96] ffff8000113af6a0: aa1603e0 mov x0, x22 ffff8000113af6a4: d63f0320 blr x25 ffff8000113af6a8: 2a0003f9 mov w25, w0 if (unlikely(err < 0)) { ffff8000113af6ac: 37f83119 tbnz w25, #31, ffff8000113afccc <__netdev_update_features+0x814> netdev_for_each_lower_dev(dev, lower, iter) ffff8000113af6b0: aa1603f5 mov x21, x22 ffff8000113af6b4: f84b8ea0 ldr x0, [x21,#184]! if (&lower->list == &dev->adj_list.lower) ffff8000113af6b8: eb0002bf cmp x21, x0 ffff8000113af6bc: d1006001 sub x1, x0, #0x18 ffff8000113af6c0: 54000420 b.eq ffff8000113af744 <__netdev_update_features+0x28c> return lower->dev; ffff8000113af6c4: f85e8014 ldur x20, [x0,#-24] *iter = lower->list.next; ffff8000113af6c8: f9400c33 ldr x19, [x1,#24] netdev_for_each_lower_dev(dev, lower, iter) ffff8000113af6cc: b40003d4 cbz x20, ffff8000113af744 <__netdev_update_features+0x28c> netdev_dbg(upper, "Disabling feature %pNF on lower dev %s.\n", ffff8000113af6d0: 90000018 adrp x24, ffff80001139e37c <__my_cpu_offset> ffff8000113af6d0: R_AARCH64_ADR_PREL_PG_HI21 __verbose ffff8000113af6d4: 91000318 add x24, x24, #0x0 ffff8000113af6d4: R_AARCH64_ADD_ABS_LO12_NC __verbose netdev_WARN(upper, "failed to disable %pNF on %s!\n", ffff8000113af6d8: 9000001a adrp x26, ffff80001139e37c <__my_cpu_offset> ffff8000113af6d8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xbe0 netdev_dbg(upper, "Disabling feature %pNF on lower dev %s.\n", ffff8000113af6dc: 910a0318 add x24, x24, #0x280 netdev_WARN(upper, "failed to disable %pNF on %s!\n", ffff8000113af6e0: 9100035a add x26, x26, #0x0 ffff8000113af6e0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xbe0 ffff8000113af6e4: 14000004 b ffff8000113af6f4 <__netdev_update_features+0x23c> return lower->dev; ffff8000113af6e8: f85e8274 ldur x20, [x19,#-24] *iter = lower->list.next; ffff8000113af6ec: f9400273 ldr x19, [x19] netdev_for_each_lower_dev(dev, lower, iter) ffff8000113af6f0: b40002b4 cbz x20, ffff8000113af744 <__netdev_update_features+0x28c> feature = __NETIF_F_BIT(feature_bit); ffff8000113af6f4: d2900000 mov x0, #0x8000 // #32768 ffff8000113af6f8: f90037a0 str x0, [x29,#104] if (!(features & feature) && (lower->features & feature)) { ffff8000113af6fc: f94033a0 ldr x0, [x29,#96] ffff8000113af700: 377801e0 tbnz w0, #15, ffff8000113af73c <__netdev_update_features+0x284> ffff8000113af704: f9406681 ldr x1, [x20,#200] ffff8000113af708: 367801a1 tbz w1, #15, ffff8000113af73c <__netdev_update_features+0x284> netdev_dbg(upper, "Disabling feature %pNF on lower dev %s.\n", ffff8000113af70c: 79404700 ldrh w0, [x24,#34] ffff8000113af710: 92900001 mov x1, #0xffffffffffff7fff // #-32769 ffff8000113af714: 37101a40 tbnz w0, #2, ffff8000113afa5c <__netdev_update_features+0x5a4> lower->wanted_features &= ~feature; ffff8000113af718: f9406e82 ldr x2, [x20,#216] netdev_update_features(lower); ffff8000113af71c: aa1403e0 mov x0, x20 lower->wanted_features &= ~feature; ffff8000113af720: 8a010041 and x1, x2, x1 ffff8000113af724: f9006e81 str x1, [x20,#216] netdev_update_features(lower); ffff8000113af728: 94000000 bl ffff8000113afd74 ffff8000113af728: R_AARCH64_CALL26 netdev_update_features if (unlikely(lower->features & feature)) ffff8000113af72c: f9406680 ldr x0, [x20,#200] ffff8000113af730: f94037a1 ldr x1, [x29,#104] ffff8000113af734: ea00003f tst x1, x0 ffff8000113af738: 54001461 b.ne ffff8000113af9c4 <__netdev_update_features+0x50c> if (&lower->list == &dev->adj_list.lower) ffff8000113af73c: eb1302bf cmp x21, x19 ffff8000113af740: 54fffd41 b.ne ffff8000113af6e8 <__netdev_update_features+0x230> if (!err) { ffff8000113af744: 35000459 cbnz w25, ffff8000113af7cc <__netdev_update_features+0x314> netdev_features_t diff = features ^ dev->features; ffff8000113af748: f94033a1 ldr x1, [x29,#96] ffff8000113af74c: f94066d3 ldr x19, [x22,#200] ffff8000113af750: aa0103e0 mov x0, x1 ffff8000113af754: ca130033 eor x19, x1, x19 if (diff & NETIF_F_RX_UDP_TUNNEL_PORT) { ffff8000113af758: b6a00173 tbz x19, #52, ffff8000113af784 <__netdev_update_features+0x2cc> if (features & NETIF_F_RX_UDP_TUNNEL_PORT) { ffff8000113af75c: b6a01081 tbz x1, #52, ffff8000113af96c <__netdev_update_features+0x4b4> dev->features = features; ffff8000113af760: f90066c1 str x1, [x22,#200] void udp_tunnel_notify_add_rx_port(struct socket *sock, unsigned short type); void udp_tunnel_notify_del_rx_port(struct socket *sock, unsigned short type); static inline void udp_tunnel_get_rx_info(struct net_device *dev) { ASSERT_RTNL(); ffff8000113af764: 94000000 bl 0 ffff8000113af764: R_AARCH64_CALL26 rtnl_is_locked ffff8000113af768: 34001c20 cbz w0, ffff8000113afaec <__netdev_update_features+0x634> return call_netdevice_notifiers_info(val, &info); ffff8000113af76c: d2800380 mov x0, #0x1c // #28 ffff8000113af770: 9101a3a1 add x1, x29, #0x68 struct netdev_notifier_info info = { ffff8000113af774: f90037b6 str x22, [x29,#104] ffff8000113af778: f9003bbf str xzr, [x29,#112] return call_netdevice_notifiers_info(val, &info); ffff8000113af77c: 97ffc25f bl ffff8000113a00f8 ffff8000113af780: f94033a0 ldr x0, [x29,#96] if (diff & NETIF_F_HW_VLAN_CTAG_FILTER) { ffff8000113af784: 36480213 tbz w19, #9, ffff8000113af7c4 <__netdev_update_features+0x30c> if (features & NETIF_F_HW_VLAN_CTAG_FILTER) { ffff8000113af788: 36480ce0 tbz w0, #9, ffff8000113af924 <__netdev_update_features+0x46c> dev->features = features; ffff8000113af78c: f90066c0 str x0, [x22,#200] ASSERT_RTNL(); ffff8000113af790: 94000000 bl 0 ffff8000113af790: R_AARCH64_CALL26 rtnl_is_locked ffff8000113af794: 34002020 cbz w0, ffff8000113afb98 <__netdev_update_features+0x6e0> return call_netdevice_notifiers_info(val, &info); ffff8000113af798: d28003e0 mov x0, #0x1f // #31 ffff8000113af79c: 9101a3a1 add x1, x29, #0x68 struct netdev_notifier_info info = { ffff8000113af7a0: f90037b6 str x22, [x29,#104] ffff8000113af7a4: f9003bbf str xzr, [x29,#112] return call_netdevice_notifiers_info(val, &info); ffff8000113af7a8: 97ffc254 bl ffff8000113a00f8 ret &= ~NOTIFY_STOP_MASK; ffff8000113af7ac: 12107800 and w0, w0, #0xffff7fff return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff8000113af7b0: 7100041f cmp w0, #0x1 ffff8000113af7b4: 5400006d b.le ffff8000113af7c0 <__netdev_update_features+0x308> ffff8000113af7b8: 52800039 mov w25, #0x1 // #1 ffff8000113af7bc: 4b000339 sub w25, w25, w0 ffff8000113af7c0: f94033a0 ldr x0, [x29,#96] if (diff & NETIF_F_HW_VLAN_STAG_FILTER) { ffff8000113af7c4: b7780793 tbnz x19, #47, ffff8000113af8b4 <__netdev_update_features+0x3fc> dev->features = features; ffff8000113af7c8: f90066c0 str x0, [x22,#200] return err < 0 ? 0 : 1; ffff8000113af7cc: 2a3903e0 mvn w0, w25 ffff8000113af7d0: 531f7c00 lsr w0, w0, #31 } ffff8000113af7d4: f9403fa2 ldr x2, [x29,#120] ffff8000113af7d8: f94002e1 ldr x1, [x23] ffff8000113af7d8: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113af7dc: eb01005f cmp x2, x1 ffff8000113af7e0: 54002a41 b.ne ffff8000113afd28 <__netdev_update_features+0x870> ffff8000113af7e4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113af7e8: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113af7ec: a94363f7 ldp x23, x24, [sp,#48] ffff8000113af7f0: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113af7f4: a94573fb ldp x27, x28, [sp,#80] ffff8000113af7f8: a8c87bfd ldp x29, x30, [sp],#128 ffff8000113af7fc: d65f03c0 ret netdev_dbg(dev, "Dropping NETIF_F_GRO_HW since no RXCSUM feature.\n"); ffff8000113af800: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af800: R_AARCH64_ADR_PREL_PG_HI21 __verbose ffff8000113af804: 91000000 add x0, x0, #0x0 ffff8000113af804: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113af808: 9106e000 add x0, x0, #0x1b8 ffff8000113af80c: 79404401 ldrh w1, [x0,#34] ffff8000113af810: 37102a61 tbnz w1, #2, ffff8000113afd5c <__netdev_update_features+0x8a4> features &= ~NETIF_F_GRO_HW; ffff8000113af814: 9248fb18 and x24, x24, #0xff7fffffffffffff ffff8000113af818: 17ffff6a b ffff8000113af5c0 <__netdev_update_features+0x108> netdev_dbg(dev, ffff8000113af81c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af81c: R_AARCH64_ADR_PREL_PG_HI21 __verbose ffff8000113af820: 91000000 add x0, x0, #0x0 ffff8000113af820: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113af824: 91064000 add x0, x0, #0x190 ffff8000113af828: 79404402 ldrh w2, [x0,#34] ffff8000113af82c: 37101f62 tbnz w2, #2, ffff8000113afc18 <__netdev_update_features+0x760> features &= ~dev->gso_partial_features; ffff8000113af830: 8a210318 bic x24, x24, x1 ffff8000113af834: 17ffff61 b ffff8000113af5b8 <__netdev_update_features+0x100> netdev_dbg(dev, "Dropping TSO features since no SG feature.\n"); ffff8000113af838: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af838: R_AARCH64_ADR_PREL_PG_HI21 __verbose ffff8000113af83c: 91000000 add x0, x0, #0x0 ffff8000113af83c: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113af840: 9103c000 add x0, x0, #0xf0 ffff8000113af844: 79404401 ldrh w1, [x0,#34] ffff8000113af848: 37101d01 tbnz w1, #2, ffff8000113afbe8 <__netdev_update_features+0x730> features &= ~NETIF_F_ALL_TSO; ffff8000113af84c: 92a003a0 mov x0, #0xffffffffffe2ffff // #-1900545 ffff8000113af850: 8a000318 and x24, x24, x0 if ((features & NETIF_F_TSO) && !(features & NETIF_F_HW_CSUM) && ffff8000113af854: d2800140 mov x0, #0xa // #10 ffff8000113af858: f2a00020 movk x0, #0x1, lsl #16 ffff8000113af85c: 8a000300 and x0, x24, x0 ffff8000113af860: f140401f cmp x0, #0x10, lsl #12 ffff8000113af864: 54ffe7c1 b.ne ffff8000113af55c <__netdev_update_features+0xa4> netdev_dbg(dev, "Dropping TSO features since no CSUM feature.\n"); ffff8000113af868: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af868: R_AARCH64_ADR_PREL_PG_HI21 __verbose ffff8000113af86c: 91000000 add x0, x0, #0x0 ffff8000113af86c: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113af870: 91046000 add x0, x0, #0x118 ffff8000113af874: 79404401 ldrh w1, [x0,#34] ffff8000113af878: 37101f61 tbnz w1, #2, ffff8000113afc64 <__netdev_update_features+0x7ac> features &= ~NETIF_F_TSO_ECN; ffff8000113af87c: 92a000a0 mov x0, #0xfffffffffffaffff // #-327681 ffff8000113af880: 8a000318 and x24, x24, x0 if ((features & NETIF_F_TSO6) && !(features & NETIF_F_HW_CSUM) && ffff8000113af884: d2800300 mov x0, #0x18 // #24 ffff8000113af888: f2a00200 movk x0, #0x10, lsl #16 ffff8000113af88c: 8a000300 and x0, x24, x0 ffff8000113af890: f144001f cmp x0, #0x100, lsl #12 ffff8000113af894: 54ffe6e1 b.ne ffff8000113af570 <__netdev_update_features+0xb8> netdev_dbg(dev, "Dropping TSO6 features since no CSUM feature.\n"); ffff8000113af898: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af898: R_AARCH64_ADR_PREL_PG_HI21 __verbose ffff8000113af89c: 91000000 add x0, x0, #0x0 ffff8000113af89c: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113af8a0: 91050000 add x0, x0, #0x140 ffff8000113af8a4: 79404401 ldrh w1, [x0,#34] ffff8000113af8a8: 37101d21 tbnz w1, #2, ffff8000113afc4c <__netdev_update_features+0x794> features &= ~NETIF_F_TSO6; ffff8000113af8ac: 926bfb18 and x24, x24, #0xffffffffffefffff ffff8000113af8b0: 17ffff30 b ffff8000113af570 <__netdev_update_features+0xb8> if (features & NETIF_F_HW_VLAN_STAG_FILTER) { ffff8000113af8b4: b67804a0 tbz x0, #47, ffff8000113af948 <__netdev_update_features+0x490> dev->features = features; ffff8000113af8b8: f90066c0 str x0, [x22,#200] ASSERT_RTNL(); ffff8000113af8bc: 94000000 bl 0 ffff8000113af8bc: R_AARCH64_CALL26 rtnl_is_locked ffff8000113af8c0: 34000e20 cbz w0, ffff8000113afa84 <__netdev_update_features+0x5cc> return call_netdevice_notifiers_info(val, &info); ffff8000113af8c4: d2800420 mov x0, #0x21 // #33 ffff8000113af8c8: 9101a3a1 add x1, x29, #0x68 struct netdev_notifier_info info = { ffff8000113af8cc: f90037b6 str x22, [x29,#104] ffff8000113af8d0: f9003bbf str xzr, [x29,#112] return call_netdevice_notifiers_info(val, &info); ffff8000113af8d4: 97ffc209 bl ffff8000113a00f8 ret &= ~NOTIFY_STOP_MASK; ffff8000113af8d8: 12107800 and w0, w0, #0xffff7fff return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff8000113af8dc: 7100041f cmp w0, #0x1 ffff8000113af8e0: 540006ed b.le ffff8000113af9bc <__netdev_update_features+0x504> ffff8000113af8e4: 52800021 mov w1, #0x1 // #1 ffff8000113af8e8: 4b000020 sub w0, w1, w0 err |= vlan_get_rx_stag_filter_info(dev); ffff8000113af8ec: 2a000339 orr w25, w25, w0 ffff8000113af8f0: f94033a0 ldr x0, [x29,#96] ffff8000113af8f4: 17ffffb5 b ffff8000113af7c8 <__netdev_update_features+0x310> ffff8000113af8f8: aa0103f8 mov x24, x1 ffff8000113af8fc: 17ffff0b b ffff8000113af528 <__netdev_update_features+0x70> int err = -1; ffff8000113af900: 12800019 mov w25, #0xffffffff // #-1 ffff8000113af904: 17ffff6b b ffff8000113af6b0 <__netdev_update_features+0x1f8> netdev_dbg(dev, "Dropping NETIF_F_GSO since no SG feature.\n"); ffff8000113af908: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af908: R_AARCH64_ADR_PREL_PG_HI21 __verbose ffff8000113af90c: 91000000 add x0, x0, #0x0 ffff8000113af90c: R_AARCH64_ADD_ABS_LO12_NC __verbose ffff8000113af910: 9105a000 add x0, x0, #0x168 ffff8000113af914: 79404401 ldrh w1, [x0,#34] ffff8000113af918: 371018e1 tbnz w1, #2, ffff8000113afc34 <__netdev_update_features+0x77c> features &= ~NETIF_F_GSO; ffff8000113af91c: 9274fb18 and x24, x24, #0xfffffffffffff7ff ffff8000113af920: 17ffff22 b ffff8000113af5a8 <__netdev_update_features+0xf0> ASSERT_RTNL(); ffff8000113af924: 94000000 bl 0 ffff8000113af924: R_AARCH64_CALL26 rtnl_is_locked ffff8000113af928: 34001a80 cbz w0, ffff8000113afc78 <__netdev_update_features+0x7c0> return call_netdevice_notifiers_info(val, &info); ffff8000113af92c: d2800400 mov x0, #0x20 // #32 ffff8000113af930: 9101a3a1 add x1, x29, #0x68 struct netdev_notifier_info info = { ffff8000113af934: f90037b6 str x22, [x29,#104] ffff8000113af938: f9003bbf str xzr, [x29,#112] return call_netdevice_notifiers_info(val, &info); ffff8000113af93c: 97ffc1ef bl ffff8000113a00f8 ffff8000113af940: f94033a0 ldr x0, [x29,#96] ffff8000113af944: 17ffffa0 b ffff8000113af7c4 <__netdev_update_features+0x30c> ASSERT_RTNL(); ffff8000113af948: 94000000 bl 0 ffff8000113af948: R_AARCH64_CALL26 rtnl_is_locked ffff8000113af94c: 340010a0 cbz w0, ffff8000113afb60 <__netdev_update_features+0x6a8> ffff8000113af950: d2800440 mov x0, #0x22 // #34 ffff8000113af954: 9101a3a1 add x1, x29, #0x68 struct netdev_notifier_info info = { ffff8000113af958: f90037b6 str x22, [x29,#104] ffff8000113af95c: f9003bbf str xzr, [x29,#112] return call_netdevice_notifiers_info(val, &info); ffff8000113af960: 97ffc1e6 bl ffff8000113a00f8 ffff8000113af964: f94033a0 ldr x0, [x29,#96] ffff8000113af968: 17ffff98 b ffff8000113af7c8 <__netdev_update_features+0x310> call_netdevice_notifiers(NETDEV_UDP_TUNNEL_PUSH_INFO, dev); } static inline void udp_tunnel_drop_rx_info(struct net_device *dev) { ASSERT_RTNL(); ffff8000113af96c: 94000000 bl 0 ffff8000113af96c: R_AARCH64_CALL26 rtnl_is_locked ffff8000113af970: 34000dc0 cbz w0, ffff8000113afb28 <__netdev_update_features+0x670> ffff8000113af974: d28003a0 mov x0, #0x1d // #29 ffff8000113af978: 9101a3a1 add x1, x29, #0x68 struct netdev_notifier_info info = { ffff8000113af97c: f90037b6 str x22, [x29,#104] ffff8000113af980: f9003bbf str xzr, [x29,#112] return call_netdevice_notifiers_info(val, &info); ffff8000113af984: 97ffc1dd bl ffff8000113a00f8 ffff8000113af988: f94033a0 ldr x0, [x29,#96] if (diff & NETIF_F_HW_VLAN_CTAG_FILTER) { ffff8000113af98c: 364ff1d3 tbz w19, #9, ffff8000113af7c4 <__netdev_update_features+0x30c> ffff8000113af990: 17ffff7e b ffff8000113af788 <__netdev_update_features+0x2d0> if (&upper->list == &dev->adj_list.upper) ffff8000113af994: aa1803f4 mov x20, x24 ffff8000113af998: 17ffff36 b ffff8000113af670 <__netdev_update_features+0x1b8> netdev_dbg(lower, "Dropping feature %pNF, upper dev %s has it off.\n", ffff8000113af99c: aa1603e1 mov x1, x22 ffff8000113af9a0: aa1803e0 mov x0, x24 ffff8000113af9a4: aa1903e2 mov x2, x25 ffff8000113af9a8: 9101a3a3 add x3, x29, #0x68 ffff8000113af9ac: 94000000 bl 0 <__dynamic_netdev_dbg> ffff8000113af9ac: R_AARCH64_CALL26 __dynamic_netdev_dbg ffff8000113af9b0: f94037a1 ldr x1, [x29,#104] ffff8000113af9b4: aa2103e1 mvn x1, x1 ffff8000113af9b8: 17ffff26 b ffff8000113af650 <__netdev_update_features+0x198> ffff8000113af9bc: 52800000 mov w0, #0x0 // #0 ffff8000113af9c0: 17ffffcb b ffff8000113af8ec <__netdev_update_features+0x434> if (!dev->name[0] || strchr(dev->name, '%')) ffff8000113af9c4: 394002c0 ldrb w0, [x22] ffff8000113af9c8: 34000440 cbz w0, ffff8000113afa50 <__netdev_update_features+0x598> ffff8000113af9cc: aa1603e0 mov x0, x22 ffff8000113af9d0: 97ffc7ef bl ffff8000113a198c ffff8000113af9d4: aa0003fc mov x28, x0 switch (dev->reg_state) { ffff8000113af9d8: 395362c2 ldrb w2, [x22,#1240] ffff8000113af9dc: 7100145f cmp w2, #0x5 ffff8000113af9e0: 540002c9 b.ls ffff8000113afa38 <__netdev_update_features+0x580> WARN_ONCE(1, "%s: unknown reg_state %d\n", dev->name, dev->reg_state); ffff8000113af9e4: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113af9e4: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113af9e8: 91000063 add x3, x3, #0x0 ffff8000113af9e8: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113af9ec: 39400860 ldrb w0, [x3,#2] return " (unknown)"; ffff8000113af9f0: 9000001b adrp x27, ffff80001139e37c <__my_cpu_offset> ffff8000113af9f0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xb8 ffff8000113af9f4: 9100037b add x27, x27, #0x0 ffff8000113af9f4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xb8 WARN_ONCE(1, "%s: unknown reg_state %d\n", dev->name, dev->reg_state); ffff8000113af9f8: 35000100 cbnz w0, ffff8000113afa18 <__netdev_update_features+0x560> ffff8000113af9fc: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113af9fc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xc8 ffff8000113afa00: 52800024 mov w4, #0x1 // #1 ffff8000113afa04: 91000000 add x0, x0, #0x0 ffff8000113afa04: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xc8 ffff8000113afa08: aa1603e1 mov x1, x22 ffff8000113afa0c: 39000864 strb w4, [x3,#2] ffff8000113afa10: 94000000 bl 0 <__warn_printk> ffff8000113afa10: R_AARCH64_CALL26 __warn_printk ffff8000113afa14: d4210000 brk #0x800 netdev_WARN(upper, "failed to disable %pNF on %s!\n", ffff8000113afa18: aa1a03e0 mov x0, x26 ffff8000113afa1c: aa1c03e1 mov x1, x28 ffff8000113afa20: aa1b03e2 mov x2, x27 ffff8000113afa24: 9101a3a3 add x3, x29, #0x68 ffff8000113afa28: aa1403e4 mov x4, x20 ffff8000113afa2c: 94000000 bl 0 <__warn_printk> ffff8000113afa2c: R_AARCH64_CALL26 __warn_printk ffff8000113afa30: d4210000 brk #0x800 ffff8000113afa34: 17ffff42 b ffff8000113af73c <__netdev_update_features+0x284> switch (dev->reg_state) { ffff8000113afa38: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113afa38: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x78 ffff8000113afa3c: 91000000 add x0, x0, #0x0 ffff8000113afa3c: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x78 ffff8000113afa40: 78625801 ldrh w1, [x0,w2,uxtw #1] ffff8000113afa44: 10000063 adr x3, ffff8000113afa50 <__netdev_update_features+0x598> ffff8000113afa48: 8b21a861 add x1, x3, w1, sxth #2 ffff8000113afa4c: d61f0020 br x1 return "(unnamed net_device)"; ffff8000113afa50: 9000001c adrp x28, ffff80001139e37c <__my_cpu_offset> ffff8000113afa50: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x158 ffff8000113afa54: 9100039c add x28, x28, #0x0 ffff8000113afa54: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x158 ffff8000113afa58: 17ffffe0 b ffff8000113af9d8 <__netdev_update_features+0x520> netdev_dbg(upper, "Disabling feature %pNF on lower dev %s.\n", ffff8000113afa5c: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113afa5c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xbb0 ffff8000113afa60: aa1603e1 mov x1, x22 ffff8000113afa64: aa1803e0 mov x0, x24 ffff8000113afa68: 91000042 add x2, x2, #0x0 ffff8000113afa68: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xbb0 ffff8000113afa6c: 9101a3a3 add x3, x29, #0x68 ffff8000113afa70: aa1403e4 mov x4, x20 ffff8000113afa74: 94000000 bl 0 <__dynamic_netdev_dbg> ffff8000113afa74: R_AARCH64_CALL26 __dynamic_netdev_dbg ffff8000113afa78: f94037a1 ldr x1, [x29,#104] ffff8000113afa7c: aa2103e1 mvn x1, x1 ffff8000113afa80: 17ffff26 b ffff8000113af718 <__netdev_update_features+0x260> ASSERT_RTNL(); ffff8000113afa84: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113afa84: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113afa88: 91000063 add x3, x3, #0x0 ffff8000113afa88: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113afa8c: 39409460 ldrb w0, [x3,#37] ffff8000113afa90: 35fff1a0 cbnz w0, ffff8000113af8c4 <__netdev_update_features+0x40c> ffff8000113afa94: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113afa94: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113afa98: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113afa98: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xc30 ffff8000113afa9c: 52800024 mov w4, #0x1 // #1 ffff8000113afaa0: 91000000 add x0, x0, #0x0 ffff8000113afaa0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113afaa4: 91000021 add x1, x1, #0x0 ffff8000113afaa4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xc30 ffff8000113afaa8: 52800be2 mov w2, #0x5f // #95 ffff8000113afaac: 39009464 strb w4, [x3,#37] ffff8000113afab0: 94000000 bl 0 <__warn_printk> ffff8000113afab0: R_AARCH64_CALL26 __warn_printk ffff8000113afab4: d4210000 brk #0x800 ffff8000113afab8: 17ffff83 b ffff8000113af8c4 <__netdev_update_features+0x40c> case NETREG_UNREGISTERING: return " (unregistering)"; ffff8000113afabc: 9000001b adrp x27, ffff80001139e37c <__my_cpu_offset> ffff8000113afabc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x70 ffff8000113afac0: 9100037b add x27, x27, #0x0 ffff8000113afac0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x70 ffff8000113afac4: 17ffffd5 b ffff8000113afa18 <__netdev_update_features+0x560> case NETREG_REGISTERED: return ""; ffff8000113afac8: 9000001b adrp x27, ffff80001139e37c <__my_cpu_offset> ffff8000113afac8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x68 ffff8000113afacc: 9100037b add x27, x27, #0x0 ffff8000113afacc: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x68 ffff8000113afad0: 17ffffd2 b ffff8000113afa18 <__netdev_update_features+0x560> case NETREG_UNINITIALIZED: return " (uninitialized)"; ffff8000113afad4: 9000001b adrp x27, ffff80001139e37c <__my_cpu_offset> ffff8000113afad4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x50 ffff8000113afad8: 9100037b add x27, x27, #0x0 ffff8000113afad8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x50 ffff8000113afadc: 17ffffcf b ffff8000113afa18 <__netdev_update_features+0x560> case NETREG_DUMMY: return " (dummy)"; ffff8000113afae0: 9000001b adrp x27, ffff80001139e37c <__my_cpu_offset> ffff8000113afae0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xa8 ffff8000113afae4: 9100037b add x27, x27, #0x0 ffff8000113afae4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xa8 ffff8000113afae8: 17ffffcc b ffff8000113afa18 <__netdev_update_features+0x560> ASSERT_RTNL(); ffff8000113afaec: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113afaec: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113afaf0: 91000063 add x3, x3, #0x0 ffff8000113afaf0: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113afaf4: 39408460 ldrb w0, [x3,#33] ffff8000113afaf8: 35ffe3a0 cbnz w0, ffff8000113af76c <__netdev_update_features+0x2b4> ffff8000113afafc: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113afafc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113afb00: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113afb00: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xc10 ffff8000113afb04: 52800024 mov w4, #0x1 // #1 ffff8000113afb08: 91000000 add x0, x0, #0x0 ffff8000113afb08: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113afb0c: 91000021 add x1, x1, #0x0 ffff8000113afb0c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xc10 ffff8000113afb10: 52801042 mov w2, #0x82 // #130 ffff8000113afb14: 39008464 strb w4, [x3,#33] ffff8000113afb18: 94000000 bl 0 <__warn_printk> ffff8000113afb18: R_AARCH64_CALL26 __warn_printk ffff8000113afb1c: d4210000 brk #0x800 return call_netdevice_notifiers_info(val, &info); ffff8000113afb20: d2800380 mov x0, #0x1c // #28 ffff8000113afb24: 17ffff13 b ffff8000113af770 <__netdev_update_features+0x2b8> ASSERT_RTNL(); ffff8000113afb28: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113afb28: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113afb2c: 91000063 add x3, x3, #0x0 ffff8000113afb2c: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113afb30: 39408860 ldrb w0, [x3,#34] ffff8000113afb34: 35fff200 cbnz w0, ffff8000113af974 <__netdev_update_features+0x4bc> ffff8000113afb38: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113afb38: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113afb3c: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113afb3c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xc10 ffff8000113afb40: 52800024 mov w4, #0x1 // #1 ffff8000113afb44: 91000000 add x0, x0, #0x0 ffff8000113afb44: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113afb48: 91000021 add x1, x1, #0x0 ffff8000113afb48: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xc10 ffff8000113afb4c: 52801102 mov w2, #0x88 // #136 ffff8000113afb50: 39008864 strb w4, [x3,#34] ffff8000113afb54: 94000000 bl 0 <__warn_printk> ffff8000113afb54: R_AARCH64_CALL26 __warn_printk ffff8000113afb58: d4210000 brk #0x800 ffff8000113afb5c: 17ffff86 b ffff8000113af974 <__netdev_update_features+0x4bc> ASSERT_RTNL(); ffff8000113afb60: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113afb60: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113afb64: 91000063 add x3, x3, #0x0 ffff8000113afb64: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113afb68: 39409860 ldrb w0, [x3,#38] ffff8000113afb6c: 35ffef20 cbnz w0, ffff8000113af950 <__netdev_update_features+0x498> ffff8000113afb70: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113afb70: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113afb74: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113afb74: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xc30 ffff8000113afb78: 52800024 mov w4, #0x1 // #1 ffff8000113afb7c: 91000000 add x0, x0, #0x0 ffff8000113afb7c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113afb80: 91000021 add x1, x1, #0x0 ffff8000113afb80: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xc30 ffff8000113afb84: 52800ca2 mov w2, #0x65 // #101 ffff8000113afb88: 39009864 strb w4, [x3,#38] ffff8000113afb8c: 94000000 bl 0 <__warn_printk> ffff8000113afb8c: R_AARCH64_CALL26 __warn_printk ffff8000113afb90: d4210000 brk #0x800 ffff8000113afb94: 17ffff6f b ffff8000113af950 <__netdev_update_features+0x498> ASSERT_RTNL(); ffff8000113afb98: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113afb98: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113afb9c: 91000063 add x3, x3, #0x0 ffff8000113afb9c: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113afba0: 39408c60 ldrb w0, [x3,#35] ffff8000113afba4: 35ffdfa0 cbnz w0, ffff8000113af798 <__netdev_update_features+0x2e0> ffff8000113afba8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113afba8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113afbac: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113afbac: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xc30 ffff8000113afbb0: 52800024 mov w4, #0x1 // #1 ffff8000113afbb4: 91000000 add x0, x0, #0x0 ffff8000113afbb4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113afbb8: 91000021 add x1, x1, #0x0 ffff8000113afbb8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xc30 ffff8000113afbbc: 52800a62 mov w2, #0x53 // #83 ffff8000113afbc0: 39008c64 strb w4, [x3,#35] ffff8000113afbc4: 94000000 bl 0 <__warn_printk> ffff8000113afbc4: R_AARCH64_CALL26 __warn_printk ffff8000113afbc8: d4210000 brk #0x800 ffff8000113afbcc: 17fffef3 b ffff8000113af798 <__netdev_update_features+0x2e0> case NETREG_RELEASED: return " (released)"; ffff8000113afbd0: 9000001b adrp x27, ffff80001139e37c <__my_cpu_offset> ffff8000113afbd0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x98 ffff8000113afbd4: 9100037b add x27, x27, #0x0 ffff8000113afbd4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x98 ffff8000113afbd8: 17ffff90 b ffff8000113afa18 <__netdev_update_features+0x560> case NETREG_UNREGISTERED: return " (unregistered)"; ffff8000113afbdc: 9000001b adrp x27, ffff80001139e37c <__my_cpu_offset> ffff8000113afbdc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x88 ffff8000113afbe0: 9100037b add x27, x27, #0x0 ffff8000113afbe0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x88 ffff8000113afbe4: 17ffff8d b ffff8000113afa18 <__netdev_update_features+0x560> netdev_dbg(dev, "Dropping TSO features since no SG feature.\n"); ffff8000113afbe8: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113afbe8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x970 ffff8000113afbec: aa1603e1 mov x1, x22 ffff8000113afbf0: 91000042 add x2, x2, #0x0 ffff8000113afbf0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x970 ffff8000113afbf4: 94000000 bl 0 <__dynamic_netdev_dbg> ffff8000113afbf4: R_AARCH64_CALL26 __dynamic_netdev_dbg ffff8000113afbf8: 17ffff15 b ffff8000113af84c <__netdev_update_features+0x394> netdev_dbg(dev, "Features changed: %pNF -> %pNF\n", ffff8000113afbfc: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113afbfc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xb58 ffff8000113afc00: aa1603e1 mov x1, x22 ffff8000113afc04: 91000042 add x2, x2, #0x0 ffff8000113afc04: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xb58 ffff8000113afc08: 910322c3 add x3, x22, #0xc8 ffff8000113afc0c: 910183a4 add x4, x29, #0x60 ffff8000113afc10: 94000000 bl 0 <__dynamic_netdev_dbg> ffff8000113afc10: R_AARCH64_CALL26 __dynamic_netdev_dbg ffff8000113afc14: 17fffe9f b ffff8000113af690 <__netdev_update_features+0x1d8> netdev_dbg(dev, ffff8000113afc18: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113afc18: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xa30 ffff8000113afc1c: aa1603e1 mov x1, x22 ffff8000113afc20: 91000042 add x2, x2, #0x0 ffff8000113afc20: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xa30 ffff8000113afc24: 94000000 bl 0 <__dynamic_netdev_dbg> ffff8000113afc24: R_AARCH64_CALL26 __dynamic_netdev_dbg ffff8000113afc28: f9407ec1 ldr x1, [x22,#248] features &= ~dev->gso_partial_features; ffff8000113afc2c: 8a210318 bic x24, x24, x1 ffff8000113afc30: 17fffe62 b ffff8000113af5b8 <__netdev_update_features+0x100> netdev_dbg(dev, "Dropping NETIF_F_GSO since no SG feature.\n"); ffff8000113afc34: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113afc34: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xa00 ffff8000113afc38: aa1603e1 mov x1, x22 ffff8000113afc3c: 91000042 add x2, x2, #0x0 ffff8000113afc3c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xa00 ffff8000113afc40: 94000000 bl 0 <__dynamic_netdev_dbg> ffff8000113afc40: R_AARCH64_CALL26 __dynamic_netdev_dbg features &= ~NETIF_F_GSO; ffff8000113afc44: 9274fb18 and x24, x24, #0xfffffffffffff7ff ffff8000113afc48: 17fffe58 b ffff8000113af5a8 <__netdev_update_features+0xf0> netdev_dbg(dev, "Dropping TSO6 features since no CSUM feature.\n"); ffff8000113afc4c: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113afc4c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x9d0 ffff8000113afc50: aa1603e1 mov x1, x22 ffff8000113afc54: 91000042 add x2, x2, #0x0 ffff8000113afc54: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x9d0 ffff8000113afc58: 94000000 bl 0 <__dynamic_netdev_dbg> ffff8000113afc58: R_AARCH64_CALL26 __dynamic_netdev_dbg features &= ~NETIF_F_TSO6; ffff8000113afc5c: 926bfb18 and x24, x24, #0xffffffffffefffff ffff8000113afc60: 17fffe44 b ffff8000113af570 <__netdev_update_features+0xb8> netdev_dbg(dev, "Dropping TSO features since no CSUM feature.\n"); ffff8000113afc64: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113afc64: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x9a0 ffff8000113afc68: aa1603e1 mov x1, x22 ffff8000113afc6c: 91000042 add x2, x2, #0x0 ffff8000113afc6c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x9a0 ffff8000113afc70: 94000000 bl 0 <__dynamic_netdev_dbg> ffff8000113afc70: R_AARCH64_CALL26 __dynamic_netdev_dbg ffff8000113afc74: 17ffff02 b ffff8000113af87c <__netdev_update_features+0x3c4> ASSERT_RTNL(); ffff8000113afc78: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113afc78: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113afc7c: 91000063 add x3, x3, #0x0 ffff8000113afc7c: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113afc80: 39409060 ldrb w0, [x3,#36] ffff8000113afc84: 35ffe540 cbnz w0, ffff8000113af92c <__netdev_update_features+0x474> ffff8000113afc88: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113afc88: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113afc8c: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113afc8c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xc30 ffff8000113afc90: 52800024 mov w4, #0x1 // #1 ffff8000113afc94: 91000000 add x0, x0, #0x0 ffff8000113afc94: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113afc98: 91000021 add x1, x1, #0x0 ffff8000113afc98: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xc30 ffff8000113afc9c: 52800b22 mov w2, #0x59 // #89 ffff8000113afca0: 39009064 strb w4, [x3,#36] ffff8000113afca4: 94000000 bl 0 <__warn_printk> ffff8000113afca4: R_AARCH64_CALL26 __warn_printk ffff8000113afca8: d4210000 brk #0x800 ffff8000113afcac: 17ffff20 b ffff8000113af92c <__netdev_update_features+0x474> netdev_warn(dev, "mixed HW and IP checksum settings.\n"); ffff8000113afcb0: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113afcb0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x948 ffff8000113afcb4: aa1603e0 mov x0, x22 ffff8000113afcb8: 91000021 add x1, x1, #0x0 ffff8000113afcb8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x948 ffff8000113afcbc: 94000000 bl ffff80001139e95c ffff8000113afcbc: R_AARCH64_CALL26 netdev_warn features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM); ffff8000113afcc0: 92800240 mov x0, #0xffffffffffffffed // #-19 ffff8000113afcc4: 8a000318 and x24, x24, x0 ffff8000113afcc8: 17fffe1c b ffff8000113af538 <__netdev_update_features+0x80> netdev_err(dev, ffff8000113afccc: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113afccc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xb78 ffff8000113afcd0: aa1603e0 mov x0, x22 ffff8000113afcd4: 91000021 add x1, x1, #0x0 ffff8000113afcd4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xb78 ffff8000113afcd8: 2a1903e2 mov w2, w25 ffff8000113afcdc: 910183a3 add x3, x29, #0x60 ffff8000113afce0: 910322c4 add x4, x22, #0xc8 ffff8000113afce4: 94000000 bl ffff80001139e8b4 ffff8000113afce4: R_AARCH64_CALL26 netdev_err return -1; ffff8000113afce8: 12800000 mov w0, #0xffffffff // #-1 ffff8000113afcec: 17fffeba b ffff8000113af7d4 <__netdev_update_features+0x31c> ASSERT_RTNL(); ffff8000113afcf0: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113afcf0: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113afcf4: 91000063 add x3, x3, #0x0 ffff8000113afcf4: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113afcf8: 39408060 ldrb w0, [x3,#32] ffff8000113afcfc: 35ffbfc0 cbnz w0, ffff8000113af4f4 <__netdev_update_features+0x3c> ffff8000113afd00: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113afd00: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113afd04: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113afd04: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113afd08: 52800024 mov w4, #0x1 // #1 ffff8000113afd0c: 91000000 add x0, x0, #0x0 ffff8000113afd0c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113afd10: 91000021 add x1, x1, #0x0 ffff8000113afd10: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113afd14: 528465a2 mov w2, #0x232d // #9005 ffff8000113afd18: 39008064 strb w4, [x3,#32] ffff8000113afd1c: 94000000 bl 0 <__warn_printk> ffff8000113afd1c: R_AARCH64_CALL26 __warn_printk ffff8000113afd20: d4210000 brk #0x800 ffff8000113afd24: 17fffdf4 b ffff8000113af4f4 <__netdev_update_features+0x3c> } ffff8000113afd28: 94000000 bl 0 <__stack_chk_fail> ffff8000113afd28: R_AARCH64_CALL26 __stack_chk_fail netdev_dbg(dev, "Dropping HW-GRO feature since RX-FCS is requested.\n"); ffff8000113afd2c: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113afd2c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xae8 ffff8000113afd30: aa1603e1 mov x1, x22 ffff8000113afd34: 91000042 add x2, x2, #0x0 ffff8000113afd34: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xae8 ffff8000113afd38: 94000000 bl 0 <__dynamic_netdev_dbg> ffff8000113afd38: R_AARCH64_CALL26 __dynamic_netdev_dbg features &= ~NETIF_F_GRO_HW; ffff8000113afd3c: 9248fb18 and x24, x24, #0xff7fffffffffffff ffff8000113afd40: 17fffe2f b ffff8000113af5fc <__netdev_update_features+0x144> netdev_dbg(dev, "Dropping LRO feature since RX-FCS is requested.\n"); ffff8000113afd44: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113afd44: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xab0 ffff8000113afd48: aa1603e1 mov x1, x22 ffff8000113afd4c: 91000042 add x2, x2, #0x0 ffff8000113afd4c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xab0 ffff8000113afd50: 94000000 bl 0 <__dynamic_netdev_dbg> ffff8000113afd50: R_AARCH64_CALL26 __dynamic_netdev_dbg features &= ~NETIF_F_LRO; ffff8000113afd54: 9270fb18 and x24, x24, #0xffffffffffff7fff ffff8000113afd58: 17fffe22 b ffff8000113af5e0 <__netdev_update_features+0x128> netdev_dbg(dev, "Dropping NETIF_F_GRO_HW since no RXCSUM feature.\n"); ffff8000113afd5c: 90000002 adrp x2, ffff80001139e37c <__my_cpu_offset> ffff8000113afd5c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xa78 ffff8000113afd60: aa1603e1 mov x1, x22 ffff8000113afd64: 91000042 add x2, x2, #0x0 ffff8000113afd64: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xa78 ffff8000113afd68: 94000000 bl 0 <__dynamic_netdev_dbg> ffff8000113afd68: R_AARCH64_CALL26 __dynamic_netdev_dbg features &= ~NETIF_F_GRO_HW; ffff8000113afd6c: 9248fb18 and x24, x24, #0xff7fffffffffffff ffff8000113afd70: 17fffe14 b ffff8000113af5c0 <__netdev_update_features+0x108> ffff8000113afd74 : { ffff8000113afd74: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113afd78: 910003fd mov x29, sp ffff8000113afd7c: a90153f3 stp x19, x20, [sp,#16] ffff8000113afd80: aa0003f4 mov x20, x0 ffff8000113afd84: aa1e03e0 mov x0, x30 ffff8000113afd88: 94000000 bl 0 <_mcount> ffff8000113afd88: R_AARCH64_CALL26 _mcount ffff8000113afd8c: 90000013 adrp x19, 0 <__stack_chk_guard> ffff8000113afd8c: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113afd90: f9400261 ldr x1, [x19] ffff8000113afd90: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard if (__netdev_update_features(dev)) ffff8000113afd94: aa1403e0 mov x0, x20 { ffff8000113afd98: f9001fa1 str x1, [x29,#56] if (__netdev_update_features(dev)) ffff8000113afd9c: 94000000 bl ffff8000113af4b8 <__netdev_update_features> ffff8000113afd9c: R_AARCH64_CALL26 __netdev_update_features ffff8000113afda0: 340000c0 cbz w0, ffff8000113afdb8 return call_netdevice_notifiers_info(val, &info); ffff8000113afda4: d2800180 mov x0, #0xc // #12 ffff8000113afda8: 9100a3a1 add x1, x29, #0x28 struct netdev_notifier_info info = { ffff8000113afdac: f90017b4 str x20, [x29,#40] ffff8000113afdb0: f9001bbf str xzr, [x29,#48] return call_netdevice_notifiers_info(val, &info); ffff8000113afdb4: 97ffc0d1 bl ffff8000113a00f8 } ffff8000113afdb8: f9401fa1 ldr x1, [x29,#56] ffff8000113afdbc: f9400260 ldr x0, [x19] ffff8000113afdbc: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113afdc0: eb00003f cmp x1, x0 ffff8000113afdc4: 54000081 b.ne ffff8000113afdd4 ffff8000113afdc8: a94153f3 ldp x19, x20, [sp,#16] ffff8000113afdcc: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113afdd0: d65f03c0 ret ffff8000113afdd4: 94000000 bl 0 <__stack_chk_fail> ffff8000113afdd4: R_AARCH64_CALL26 __stack_chk_fail ffff8000113afdd8 : { ffff8000113afdd8: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113afddc: 910003fd mov x29, sp ffff8000113afde0: a90153f3 stp x19, x20, [sp,#16] ffff8000113afde4: aa0003f4 mov x20, x0 ffff8000113afde8: aa1e03e0 mov x0, x30 ffff8000113afdec: 94000000 bl 0 <_mcount> ffff8000113afdec: R_AARCH64_CALL26 _mcount dev->wanted_features &= ~NETIF_F_LRO; ffff8000113afdf0: f9406e81 ldr x1, [x20,#216] netdev_update_features(dev); ffff8000113afdf4: aa1403e0 mov x0, x20 dev->wanted_features &= ~NETIF_F_LRO; ffff8000113afdf8: 9270f821 and x1, x1, #0xffffffffffff7fff ffff8000113afdfc: f9006e81 str x1, [x20,#216] netdev_update_features(dev); ffff8000113afe00: 94000000 bl ffff8000113afd74 ffff8000113afe00: R_AARCH64_CALL26 netdev_update_features if (unlikely(dev->features & NETIF_F_LRO)) ffff8000113afe04: f9406680 ldr x0, [x20,#200] ffff8000113afe08: 37780240 tbnz w0, #15, ffff8000113afe50 netdev_for_each_lower_dev(dev, lower_dev, iter) ffff8000113afe0c: f84b8e80 ldr x0, [x20,#184]! if (&lower->list == &dev->adj_list.lower) ffff8000113afe10: eb00029f cmp x20, x0 ffff8000113afe14: d1006001 sub x1, x0, #0x18 ffff8000113afe18: 54000160 b.eq ffff8000113afe44 return lower->dev; ffff8000113afe1c: f85e8000 ldur x0, [x0,#-24] *iter = lower->list.next; ffff8000113afe20: f9400c33 ldr x19, [x1,#24] netdev_for_each_lower_dev(dev, lower_dev, iter) ffff8000113afe24: b50000a0 cbnz x0, ffff8000113afe38 ffff8000113afe28: 14000007 b ffff8000113afe44 return lower->dev; ffff8000113afe2c: f85e8260 ldur x0, [x19,#-24] *iter = lower->list.next; ffff8000113afe30: f9400273 ldr x19, [x19] netdev_for_each_lower_dev(dev, lower_dev, iter) ffff8000113afe34: b4000080 cbz x0, ffff8000113afe44 dev_disable_lro(lower_dev); ffff8000113afe38: 94000000 bl ffff8000113afdd8 ffff8000113afe38: R_AARCH64_CALL26 dev_disable_lro if (&lower->list == &dev->adj_list.lower) ffff8000113afe3c: eb13029f cmp x20, x19 ffff8000113afe40: 54ffff61 b.ne ffff8000113afe2c } ffff8000113afe44: a94153f3 ldp x19, x20, [sp,#16] ffff8000113afe48: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113afe4c: d65f03c0 ret if (!dev->name[0] || strchr(dev->name, '%')) ffff8000113afe50: 39400280 ldrb w0, [x20] ffff8000113afe54: 340001c0 cbz w0, ffff8000113afe8c ffff8000113afe58: aa1403e0 mov x0, x20 ffff8000113afe5c: 97ffc6cc bl ffff8000113a198c ffff8000113afe60: aa0003e1 mov x1, x0 netdev_WARN(dev, "failed to disable LRO!\n"); ffff8000113afe64: aa1403e0 mov x0, x20 ffff8000113afe68: f90017a1 str x1, [x29,#40] ffff8000113afe6c: 97ffbf6b bl ffff80001139fc18 ffff8000113afe70: aa0003e2 mov x2, x0 ffff8000113afe74: f94017a1 ldr x1, [x29,#40] ffff8000113afe78: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113afe78: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xc50 ffff8000113afe7c: 91000000 add x0, x0, #0x0 ffff8000113afe7c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xc50 ffff8000113afe80: 94000000 bl 0 <__warn_printk> ffff8000113afe80: R_AARCH64_CALL26 __warn_printk ffff8000113afe84: d4210000 brk #0x800 ffff8000113afe88: 17ffffe1 b ffff8000113afe0c return "(unnamed net_device)"; ffff8000113afe8c: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113afe8c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x158 ffff8000113afe90: 91000021 add x1, x1, #0x0 ffff8000113afe90: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x158 ffff8000113afe94: 17fffff4 b ffff8000113afe64 ffff8000113afe98 : { ffff8000113afe98: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113afe9c: 910003fd mov x29, sp ffff8000113afea0: a90153f3 stp x19, x20, [sp,#16] ffff8000113afea4: aa0003f3 mov x19, x0 ffff8000113afea8: aa1e03e0 mov x0, x30 ffff8000113afeac: f90017a1 str x1, [x29,#40] ffff8000113afeb0: 94000000 bl 0 <_mcount> ffff8000113afeb0: R_AARCH64_CALL26 _mcount switch (xdp->command) { ffff8000113afeb4: f94017a1 ldr x1, [x29,#40] struct bpf_prog *old = rtnl_dereference(dev->xdp_prog); ffff8000113afeb8: f9419a60 ldr x0, [x19,#816] switch (xdp->command) { ffff8000113afebc: b9400022 ldr w2, [x1] struct bpf_prog *new = xdp->prog; ffff8000113afec0: f9400834 ldr x20, [x1,#16] switch (xdp->command) { ffff8000113afec4: 340001e2 cbz w2, ffff8000113aff00 ffff8000113afec8: 7100085f cmp w2, #0x2 ffff8000113afecc: 54000121 b.ne ffff8000113afef0 xdp->prog_id = old ? old->aux->id : 0; ffff8000113afed0: b4000060 cbz x0, ffff8000113afedc ffff8000113afed4: f9401000 ldr x0, [x0,#32] ffff8000113afed8: b9401c00 ldr w0, [x0,#28] ffff8000113afedc: b9000820 str w0, [x1,#8] } ffff8000113afee0: a94153f3 ldp x19, x20, [sp,#16] int ret = 0; ffff8000113afee4: 52800000 mov w0, #0x0 // #0 } ffff8000113afee8: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113afeec: d65f03c0 ret ret = -EINVAL; ffff8000113afef0: 128002a0 mov w0, #0xffffffea // #-22 } ffff8000113afef4: a94153f3 ldp x19, x20, [sp,#16] ffff8000113afef8: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113afefc: d65f03c0 ret rcu_assign_pointer(dev->xdp_prog, new); ffff8000113aff00: 910cc261 add x1, x19, #0x330 ffff8000113aff04: c89ffc34 stlr x20, [x1] if (old) ffff8000113aff08: b40002a0 cbz x0, ffff8000113aff5c bpf_prog_put(old); ffff8000113aff0c: 94000000 bl 0 ffff8000113aff0c: R_AARCH64_CALL26 bpf_prog_put if (old && !new) { ffff8000113aff10: b40000b4 cbz x20, ffff8000113aff24 netdev_WARN(dev, "failed to disable GRO_HW!\n"); ffff8000113aff14: 52800000 mov w0, #0x0 // #0 } ffff8000113aff18: a94153f3 ldp x19, x20, [sp,#16] ffff8000113aff1c: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113aff20: d65f03c0 ret STATIC_KEY_CHECK_USE(key); ffff8000113aff24: 90000000 adrp x0, 0 ffff8000113aff24: R_AARCH64_ADR_PREL_PG_HI21 static_key_initialized ffff8000113aff28: 39400000 ldrb w0, [x0] ffff8000113aff28: R_AARCH64_LDST8_ABS_LO12_NC static_key_initialized ffff8000113aff2c: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113aff2c: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113aff30: 34000600 cbz w0, ffff8000113afff0 ATOMIC_OPS(sub, sub, J) ffff8000113aff34: 91000280 add x0, x20, #0x0 ffff8000113aff34: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113aff38: 52800021 mov w1, #0x1 // #1 ffff8000113aff3c: 910d6004 add x4, x0, #0x358 ffff8000113aff40: f9800091 prfm pstl1strm, [x4] ffff8000113aff44: 885f7c82 ldxr w2, [x4] ffff8000113aff48: 4b010042 sub w2, w2, w1 ffff8000113aff4c: 88037c82 stxr w3, w2, [x4] ffff8000113aff50: 35ffffa3 cbnz w3, ffff8000113aff44 int ret = 0; ffff8000113aff54: 52800000 mov w0, #0x0 // #0 ffff8000113aff58: 17ffffe7 b ffff8000113afef4 } else if (new && !old) { ffff8000113aff5c: b4fffdd4 cbz x20, ffff8000113aff14 STATIC_KEY_CHECK_USE(key); ffff8000113aff60: 90000000 adrp x0, 0 ffff8000113aff60: R_AARCH64_ADR_PREL_PG_HI21 static_key_initialized ffff8000113aff64: 39400000 ldrb w0, [x0] ffff8000113aff64: R_AARCH64_LDST8_ABS_LO12_NC static_key_initialized ffff8000113aff68: 90000014 adrp x20, ffff80001139e37c <__my_cpu_offset> ffff8000113aff68: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff8000113aff6c: 34000560 cbz w0, ffff8000113b0018 ATOMIC_OPS(add, add, I) ffff8000113aff70: 91000280 add x0, x20, #0x0 ffff8000113aff70: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113aff74: 910d6003 add x3, x0, #0x358 ffff8000113aff78: f9800071 prfm pstl1strm, [x3] ffff8000113aff7c: 885f7c61 ldxr w1, [x3] ffff8000113aff80: 11000421 add w1, w1, #0x1 ffff8000113aff84: 88027c61 stxr w2, w1, [x3] ffff8000113aff88: 35ffffa2 cbnz w2, ffff8000113aff7c dev_disable_lro(dev); ffff8000113aff8c: aa1303e0 mov x0, x19 ffff8000113aff90: 94000000 bl ffff8000113afdd8 ffff8000113aff90: R_AARCH64_CALL26 dev_disable_lro dev->wanted_features &= ~NETIF_F_GRO_HW; ffff8000113aff94: f9406e61 ldr x1, [x19,#216] netdev_update_features(dev); ffff8000113aff98: aa1303e0 mov x0, x19 dev->wanted_features &= ~NETIF_F_GRO_HW; ffff8000113aff9c: 9248f821 and x1, x1, #0xff7fffffffffffff ffff8000113affa0: f9006e61 str x1, [x19,#216] netdev_update_features(dev); ffff8000113affa4: 94000000 bl ffff8000113afd74 ffff8000113affa4: R_AARCH64_CALL26 netdev_update_features if (unlikely(dev->features & NETIF_F_GRO_HW)) ffff8000113affa8: f9406660 ldr x0, [x19,#200] ffff8000113affac: b6bffb40 tbz x0, #55, ffff8000113aff14 if (!dev->name[0] || strchr(dev->name, '%')) ffff8000113affb0: 39400260 ldrb w0, [x19] ffff8000113affb4: 34000460 cbz w0, ffff8000113b0040 ffff8000113affb8: aa1303e0 mov x0, x19 ffff8000113affbc: 97ffc674 bl ffff8000113a198c ffff8000113affc0: aa0003e1 mov x1, x0 netdev_WARN(dev, "failed to disable GRO_HW!\n"); ffff8000113affc4: aa1303e0 mov x0, x19 ffff8000113affc8: f90017a1 str x1, [x29,#40] ffff8000113affcc: 97ffbf13 bl ffff80001139fc18 ffff8000113affd0: aa0003e2 mov x2, x0 ffff8000113affd4: f94017a1 ldr x1, [x29,#40] ffff8000113affd8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113affd8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xc80 ffff8000113affdc: 91000000 add x0, x0, #0x0 ffff8000113affdc: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xc80 ffff8000113affe0: 94000000 bl 0 <__warn_printk> ffff8000113affe0: R_AARCH64_CALL26 __warn_printk ffff8000113affe4: d4210000 brk #0x800 ffff8000113affe8: 52800000 mov w0, #0x0 // #0 ffff8000113affec: 17ffffcb b ffff8000113aff18 STATIC_KEY_CHECK_USE(key); ffff8000113afff0: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113afff0: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113afff4: 91000282 add x2, x20, #0x0 ffff8000113afff4: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113afff8: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113afff8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x238 ffff8000113afffc: 91000021 add x1, x1, #0x0 ffff8000113afffc: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113b0000: 91000000 add x0, x0, #0x0 ffff8000113b0000: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x238 ffff8000113b0004: 91004021 add x1, x1, #0x10 ffff8000113b0008: 910d6042 add x2, x2, #0x358 ffff8000113b000c: 94000000 bl 0 <__warn_printk> ffff8000113b000c: R_AARCH64_CALL26 __warn_printk ffff8000113b0010: d4210000 brk #0x800 ffff8000113b0014: 17ffffc8 b ffff8000113aff34 STATIC_KEY_CHECK_USE(key); ffff8000113b0018: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113b0018: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x1a8 ffff8000113b001c: 91000282 add x2, x20, #0x0 ffff8000113b001c: R_AARCH64_ADD_ABS_LO12_NC .bss ffff8000113b0020: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113b0020: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x238 ffff8000113b0024: 91000021 add x1, x1, #0x0 ffff8000113b0024: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x1a8 ffff8000113b0028: 91000000 add x0, x0, #0x0 ffff8000113b0028: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x238 ffff8000113b002c: 9100a021 add x1, x1, #0x28 ffff8000113b0030: 910d6042 add x2, x2, #0x358 ffff8000113b0034: 94000000 bl 0 <__warn_printk> ffff8000113b0034: R_AARCH64_CALL26 __warn_printk ffff8000113b0038: d4210000 brk #0x800 ffff8000113b003c: 17ffffcd b ffff8000113aff70 return "(unnamed net_device)"; ffff8000113b0040: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113b0040: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x158 ffff8000113b0044: 91000021 add x1, x1, #0x0 ffff8000113b0044: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x158 ffff8000113b0048: 17ffffdf b ffff8000113affc4 ffff8000113b004c : { ffff8000113b004c: a9bc7bfd stp x29, x30, [sp,#-64]! ffff8000113b0050: 910003fd mov x29, sp ffff8000113b0054: a90153f3 stp x19, x20, [sp,#16] ffff8000113b0058: aa0003f4 mov x20, x0 ffff8000113b005c: aa1e03e0 mov x0, x30 ffff8000113b0060: 94000000 bl 0 <_mcount> ffff8000113b0060: R_AARCH64_CALL26 _mcount ffff8000113b0064: 90000013 adrp x19, 0 <__stack_chk_guard> ffff8000113b0064: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113b0068: f9400261 ldr x1, [x19] ffff8000113b0068: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard __netdev_update_features(dev); ffff8000113b006c: aa1403e0 mov x0, x20 { ffff8000113b0070: f9001fa1 str x1, [x29,#56] __netdev_update_features(dev); ffff8000113b0074: 94000000 bl ffff8000113af4b8 <__netdev_update_features> ffff8000113b0074: R_AARCH64_CALL26 __netdev_update_features return call_netdevice_notifiers_info(val, &info); ffff8000113b0078: 9100a3a1 add x1, x29, #0x28 ffff8000113b007c: d2800180 mov x0, #0xc // #12 struct netdev_notifier_info info = { ffff8000113b0080: f90017b4 str x20, [x29,#40] ffff8000113b0084: f9001bbf str xzr, [x29,#48] return call_netdevice_notifiers_info(val, &info); ffff8000113b0088: 97ffc01c bl ffff8000113a00f8 } ffff8000113b008c: f9401fa1 ldr x1, [x29,#56] ffff8000113b0090: f9400260 ldr x0, [x19] ffff8000113b0090: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113b0094: eb00003f cmp x1, x0 ffff8000113b0098: 54000081 b.ne ffff8000113b00a8 ffff8000113b009c: a94153f3 ldp x19, x20, [sp,#16] ffff8000113b00a0: a8c47bfd ldp x29, x30, [sp],#64 ffff8000113b00a4: d65f03c0 ret ffff8000113b00a8: 94000000 bl 0 <__stack_chk_fail> ffff8000113b00a8: R_AARCH64_CALL26 __stack_chk_fail ffff8000113b00ac : { ffff8000113b00ac: a9bb7bfd stp x29, x30, [sp,#-80]! ffff8000113b00b0: 910003fd mov x29, sp ffff8000113b00b4: a90153f3 stp x19, x20, [sp,#16] ffff8000113b00b8: a9025bf5 stp x21, x22, [sp,#32] ffff8000113b00bc: aa0003f3 mov x19, x0 ffff8000113b00c0: aa1e03e0 mov x0, x30 ffff8000113b00c4: 94000000 bl 0 <_mcount> ffff8000113b00c4: R_AARCH64_CALL26 _mcount ffff8000113b00c8: 90000014 adrp x20, 0 <__stack_chk_guard> ffff8000113b00c8: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113b00cc: f9400281 ldr x1, [x20] ffff8000113b00cc: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard BUG_ON(dev_boot_phase); ffff8000113b00d0: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113b00d0: R_AARCH64_ADR_PREL_PG_HI21 .data ffff8000113b00d4: b9400000 ldr w0, [x0] ffff8000113b00d4: R_AARCH64_LDST32_ABS_LO12_NC .data { ffff8000113b00d8: f90027a1 str x1, [x29,#72] ffff8000113b00dc: f9427a75 ldr x21, [x19,#1264] BUG_ON(dev_boot_phase); ffff8000113b00e0: 35002320 cbnz w0, ffff8000113b0544 ASSERT_RTNL(); ffff8000113b00e4: 94000000 bl 0 ffff8000113b00e4: R_AARCH64_CALL26 rtnl_is_locked ffff8000113b00e8: 34002100 cbz w0, ffff8000113b0508 might_sleep(); ffff8000113b00ec: 94000000 bl 0 <_cond_resched> ffff8000113b00ec: R_AARCH64_CALL26 _cond_resched BUG_ON(dev->reg_state != NETREG_UNINITIALIZED); ffff8000113b00f0: 39536260 ldrb w0, [x19,#1240] ffff8000113b00f4: 350022a0 cbnz w0, ffff8000113b0548 BUG_ON(!net); ffff8000113b00f8: b4002255 cbz x21, ffff8000113b0540 ret = ethtool_check_ops(dev->ethtool_ops); ffff8000113b00fc: f940fe60 ldr x0, [x19,#504] ffff8000113b0100: 94000000 bl 0 ffff8000113b0100: R_AARCH64_CALL26 ethtool_check_ops if (ret) ffff8000113b0104: 34000120 cbz w0, ffff8000113b0128 } ffff8000113b0108: f94027a2 ldr x2, [x29,#72] ffff8000113b010c: f9400281 ldr x1, [x20] ffff8000113b010c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113b0110: eb01005f cmp x2, x1 ffff8000113b0114: 54001f81 b.ne ffff8000113b0504 ffff8000113b0118: a94153f3 ldp x19, x20, [sp,#16] ffff8000113b011c: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113b0120: a8c57bfd ldp x29, x30, [sp],#80 ffff8000113b0124: d65f03c0 ret spin_lock_init(&dev->addr_list_lock); ffff8000113b0128: b9027a60 str w0, [x19,#632] ret = dev_get_valid_name(net, dev, dev->name); ffff8000113b012c: aa1303e1 mov x1, x19 ffff8000113b0130: aa1503e0 mov x0, x21 ffff8000113b0134: aa1303e2 mov x2, x19 ffff8000113b0138: 97ffc677 bl ffff8000113a1b14 if (ret < 0) ffff8000113b013c: 37fffe60 tbnz w0, #31, ffff8000113b0108 name_node = netdev_name_node_alloc(dev, dev->name); ffff8000113b0140: aa1303e0 mov x0, x19 ffff8000113b0144: aa1303e1 mov x1, x19 ffff8000113b0148: 97ffbd7e bl ffff80001139f740 if (!name_node) ffff8000113b014c: b4000da0 cbz x0, ffff8000113b0300 INIT_LIST_HEAD(&name_node->list); ffff8000113b0150: 91004001 add x1, x0, #0x10 case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113b0154: f9000801 str x1, [x0,#16] list->prev = list; ffff8000113b0158: f9000c01 str x1, [x0,#24] if (dev->netdev_ops->ndo_init) { ffff8000113b015c: f940fa61 ldr x1, [x19,#496] dev->name_node = netdev_name_node_head_alloc(dev); ffff8000113b0160: f9000a60 str x0, [x19,#16] if (dev->netdev_ops->ndo_init) { ffff8000113b0164: f9400021 ldr x1, [x1] ffff8000113b0168: b4000181 cbz x1, ffff8000113b0198 ret = dev->netdev_ops->ndo_init(dev); ffff8000113b016c: aa1303e0 mov x0, x19 ffff8000113b0170: d63f0020 blr x1 if (ret) { ffff8000113b0174: 6b1f001f cmp w0, wzr ret = dev->netdev_ops->ndo_init(dev); ffff8000113b0178: 2a0003f6 mov w22, w0 if (ret) { ffff8000113b017c: 540000e0 b.eq ffff8000113b0198 ret = -EIO; ffff8000113b0180: 12800080 mov w0, #0xfffffffb // #-5 ffff8000113b0184: 1a80d2d6 csel w22, w22, w0, le kfree(name_node); ffff8000113b0188: f9400a60 ldr x0, [x19,#16] ffff8000113b018c: 94000000 bl 0 ffff8000113b018c: R_AARCH64_CALL26 kfree ffff8000113b0190: 2a1603e0 mov w0, w22 ffff8000113b0194: 17ffffdd b ffff8000113b0108 if (((dev->hw_features | dev->features) & ffff8000113b0198: f9406a63 ldr x3, [x19,#208] ffff8000113b019c: f9406664 ldr x4, [x19,#200] ffff8000113b01a0: aa030080 orr x0, x4, x3 ffff8000113b01a4: 364800c0 tbz w0, #9, ffff8000113b01bc (!dev->netdev_ops->ndo_vlan_rx_add_vid || ffff8000113b01a8: f940fa60 ldr x0, [x19,#496] NETIF_F_HW_VLAN_CTAG_FILTER) && ffff8000113b01ac: f9405001 ldr x1, [x0,#160] ffff8000113b01b0: b4000ba1 cbz x1, ffff8000113b0324 (!dev->netdev_ops->ndo_vlan_rx_add_vid || ffff8000113b01b4: f9405400 ldr x0, [x0,#168] ffff8000113b01b8: b4000b60 cbz x0, ffff8000113b0324 if (!dev->ifindex) ffff8000113b01bc: b9410262 ldr w2, [x19,#256] ffff8000113b01c0: 34000a62 cbz w2, ffff8000113b030c hlist_for_each_entry(dev, head, index_hlist) ffff8000113b01c4: f9409aa1 ldr x1, [x21,#304] return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; ffff8000113b01c8: d37d1c40 ubfiz x0, x2, #3, #8 hlist_for_each_entry(dev, head, index_hlist) ffff8000113b01cc: f8606820 ldr x0, [x1,x0] ffff8000113b01d0: b4000040 cbz x0, ffff8000113b01d8 ffff8000113b01d4: d10e4000 sub x0, x0, #0x390 ffff8000113b01d8: b40000c0 cbz x0, ffff8000113b01f0 if (dev->ifindex == ifindex) ffff8000113b01dc: b9410001 ldr w1, [x0,#256] ffff8000113b01e0: 6b01005f cmp w2, w1 ffff8000113b01e4: 540008a0 b.eq ffff8000113b02f8 hlist_for_each_entry(dev, head, index_hlist) ffff8000113b01e8: f941c800 ldr x0, [x0,#912] ffff8000113b01ec: b5ffff40 cbnz x0, ffff8000113b01d4 dev->hw_features |= (NETIF_F_SOFT_FEATURES | NETIF_F_SOFT_FEATURES_OFF); ffff8000113b01f0: d2890001 mov x1, #0x4800 // #18432 ffff8000113b01f4: f2e04001 movk x1, #0x200, lsl #48 dev->features |= NETIF_F_SOFT_FEATURES; ffff8000113b01f8: d2890000 mov x0, #0x4800 // #18432 dev->hw_features |= (NETIF_F_SOFT_FEATURES | NETIF_F_SOFT_FEATURES_OFF); ffff8000113b01fc: aa010061 orr x1, x3, x1 dev->features |= NETIF_F_SOFT_FEATURES; ffff8000113b0200: aa000082 orr x2, x4, x0 if (dev->netdev_ops->ndo_udp_tunnel_add) { ffff8000113b0204: f940fa65 ldr x5, [x19,#496] dev->hw_features |= (NETIF_F_SOFT_FEATURES | NETIF_F_SOFT_FEATURES_OFF); ffff8000113b0208: f9006a61 str x1, [x19,#208] dev->features |= NETIF_F_SOFT_FEATURES; ffff8000113b020c: f9006662 str x2, [x19,#200] if (dev->netdev_ops->ndo_udp_tunnel_add) { ffff8000113b0210: f94100a5 ldr x5, [x5,#512] ffff8000113b0214: b4000f85 cbz x5, ffff8000113b0404 dev->hw_features |= NETIF_F_RX_UDP_TUNNEL_PORT; ffff8000113b0218: aa0003e1 mov x1, x0 ffff8000113b021c: f2e04201 movk x1, #0x210, lsl #48 dev->features |= NETIF_F_RX_UDP_TUNNEL_PORT; ffff8000113b0220: b24c0040 orr x0, x2, #0x10000000000000 dev->hw_features |= NETIF_F_RX_UDP_TUNNEL_PORT; ffff8000113b0224: aa010063 orr x3, x3, x1 dev->features |= NETIF_F_RX_UDP_TUNNEL_PORT; ffff8000113b0228: f9006660 str x0, [x19,#200] dev->hw_features |= NETIF_F_RX_UDP_TUNNEL_PORT; ffff8000113b022c: f9006a63 str x3, [x19,#208] dev->wanted_features = dev->features & dev->hw_features; ffff8000113b0230: 8a030000 and x0, x0, x3 if (!(dev->flags & IFF_LOOPBACK)) ffff8000113b0234: b9422a61 ldr w1, [x19,#552] dev->wanted_features = dev->features & dev->hw_features; ffff8000113b0238: f9006e60 str x0, [x19,#216] if (!(dev->flags & IFF_LOOPBACK)) ffff8000113b023c: 37180061 tbnz w1, #3, ffff8000113b0248 dev->hw_features |= NETIF_F_NOCACHE_COPY; ffff8000113b0240: b2570063 orr x3, x3, #0x20000000000 ffff8000113b0244: f9006a63 str x3, [x19,#208] if (dev->hw_features & NETIF_F_TSO) ffff8000113b0248: 36800063 tbz w3, #16, ffff8000113b0254 dev->hw_features |= NETIF_F_TSO_MANGLEID; ffff8000113b024c: b26d0063 orr x3, x3, #0x80000 ffff8000113b0250: f9006a63 str x3, [x19,#208] if (dev->vlan_features & NETIF_F_TSO) ffff8000113b0254: f9407262 ldr x2, [x19,#224] ffff8000113b0258: 36800062 tbz w2, #16, ffff8000113b0264 dev->vlan_features |= NETIF_F_TSO_MANGLEID; ffff8000113b025c: b26d0042 orr x2, x2, #0x80000 ffff8000113b0260: f9007262 str x2, [x19,#224] if (dev->mpls_features & NETIF_F_TSO) ffff8000113b0264: f9407a61 ldr x1, [x19,#240] ffff8000113b0268: 36800061 tbz w1, #16, ffff8000113b0274 dev->mpls_features |= NETIF_F_TSO_MANGLEID; ffff8000113b026c: b26d0021 orr x1, x1, #0x80000 ffff8000113b0270: f9007a61 str x1, [x19,#240] if (dev->hw_enc_features & NETIF_F_TSO) ffff8000113b0274: f9407660 ldr x0, [x19,#232] dev->hw_enc_features |= NETIF_F_SG | NETIF_F_GSO_PARTIAL; ffff8000113b0278: d2800023 mov x3, #0x1 // #1 if (dev->hw_enc_features & NETIF_F_TSO) ffff8000113b027c: 92700004 and x4, x0, #0x10000 dev->hw_enc_features |= NETIF_F_TSO_MANGLEID; ffff8000113b0280: eb1f009f cmp x4, xzr ffff8000113b0284: b26d0004 orr x4, x0, #0x80000 ffff8000113b0288: 9a801080 csel x0, x4, x0, ne dev->hw_enc_features |= NETIF_F_SG | NETIF_F_GSO_PARTIAL; ffff8000113b028c: f2a20003 movk x3, #0x1000, lsl #16 ffff8000113b0290: aa030003 orr x3, x0, x3 dev->vlan_features |= NETIF_F_HIGHDMA; ffff8000113b0294: b27b0042 orr x2, x2, #0x20 dev->mpls_features |= NETIF_F_SG; ffff8000113b0298: b2400021 orr x1, x1, #0x1 ffff8000113b029c: f9007a61 str x1, [x19,#240] dev->vlan_features |= NETIF_F_HIGHDMA; ffff8000113b02a0: f9007262 str x2, [x19,#224] dev->hw_enc_features |= NETIF_F_SG | NETIF_F_GSO_PARTIAL; ffff8000113b02a4: f9007663 str x3, [x19,#232] return call_netdevice_notifiers_info(val, &info); ffff8000113b02a8: d2800220 mov x0, #0x11 // #17 ffff8000113b02ac: 9100e3a1 add x1, x29, #0x38 struct netdev_notifier_info info = { ffff8000113b02b0: f9001fb3 str x19, [x29,#56] ffff8000113b02b4: f90023bf str xzr, [x29,#64] return call_netdevice_notifiers_info(val, &info); ffff8000113b02b8: 97ffbf90 bl ffff8000113a00f8 ret &= ~NOTIFY_STOP_MASK; ffff8000113b02bc: 12107800 and w0, w0, #0xffff7fff return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff8000113b02c0: 7100041f cmp w0, #0x1 ffff8000113b02c4: 5400062d b.le ffff8000113b0388 ffff8000113b02c8: 52800036 mov w22, #0x1 // #1 ffff8000113b02cc: 4b0002d6 sub w22, w22, w0 if (dev->netdev_ops->ndo_uninit) ffff8000113b02d0: f940fa60 ldr x0, [x19,#496] ffff8000113b02d4: f9400401 ldr x1, [x0,#8] ffff8000113b02d8: b4000061 cbz x1, ffff8000113b02e4 dev->netdev_ops->ndo_uninit(dev); ffff8000113b02dc: aa1303e0 mov x0, x19 ffff8000113b02e0: d63f0020 blr x1 if (dev->priv_destructor) ffff8000113b02e4: f9427261 ldr x1, [x19,#1248] ffff8000113b02e8: b4fff501 cbz x1, ffff8000113b0188 dev->priv_destructor(dev); ffff8000113b02ec: aa1303e0 mov x0, x19 ffff8000113b02f0: d63f0020 blr x1 ffff8000113b02f4: 17ffffa5 b ffff8000113b0188 ret = -EBUSY; ffff8000113b02f8: 128001f6 mov w22, #0xfffffff0 // #-16 ffff8000113b02fc: 17fffff5 b ffff8000113b02d0 dev->name_node = netdev_name_node_head_alloc(dev); ffff8000113b0300: f9000a60 str x0, [x19,#16] ret = -ENOMEM; ffff8000113b0304: 12800160 mov w0, #0xfffffff4 // #-12 ffff8000113b0308: 17ffff80 b ffff8000113b0108 dev->ifindex = dev_new_index(net); ffff8000113b030c: aa1503e0 mov x0, x21 ffff8000113b0310: 97ffbc5d bl ffff80001139f484 ffff8000113b0314: b9010260 str w0, [x19,#256] ffff8000113b0318: f9406a63 ldr x3, [x19,#208] ffff8000113b031c: f9406664 ldr x4, [x19,#200] ffff8000113b0320: 17ffffb4 b ffff8000113b01f0 if (!dev->name[0] || strchr(dev->name, '%')) ffff8000113b0324: 39400260 ldrb w0, [x19] ffff8000113b0328: 340000a0 cbz w0, ffff8000113b033c ffff8000113b032c: aa1303e0 mov x0, x19 ffff8000113b0330: 528004a1 mov w1, #0x25 // #37 ffff8000113b0334: 94000000 bl 0 ffff8000113b0334: R_AARCH64_CALL26 strchr ffff8000113b0338: b4000e20 cbz x0, ffff8000113b04fc return "(unnamed net_device)"; ffff8000113b033c: 90000015 adrp x21, ffff80001139e37c <__my_cpu_offset> ffff8000113b033c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x158 ffff8000113b0340: 910002b5 add x21, x21, #0x0 ffff8000113b0340: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x158 switch (dev->reg_state) { ffff8000113b0344: 39536262 ldrb w2, [x19,#1240] ffff8000113b0348: 7100145f cmp w2, #0x5 ffff8000113b034c: 540002c9 b.ls ffff8000113b03a4 WARN_ONCE(1, "%s: unknown reg_state %d\n", dev->name, dev->reg_state); ffff8000113b0350: 90000004 adrp x4, ffff80001139e37c <__my_cpu_offset> ffff8000113b0350: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113b0354: 91000084 add x4, x4, #0x0 ffff8000113b0354: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113b0358: 39400880 ldrb w0, [x4,#2] return " (unknown)"; ffff8000113b035c: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113b035c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xb8 ffff8000113b0360: 910002d6 add x22, x22, #0x0 ffff8000113b0360: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xb8 WARN_ONCE(1, "%s: unknown reg_state %d\n", dev->name, dev->reg_state); ffff8000113b0364: 34000f40 cbz w0, ffff8000113b054c netdev_WARN(dev, "Buggy VLAN acceleration in driver!\n"); ffff8000113b0368: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113b0368: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xcb0 ffff8000113b036c: 91000000 add x0, x0, #0x0 ffff8000113b036c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xcb0 ffff8000113b0370: aa1503e1 mov x1, x21 ffff8000113b0374: aa1603e2 mov x2, x22 ffff8000113b0378: 94000000 bl 0 <__warn_printk> ffff8000113b0378: R_AARCH64_CALL26 __warn_printk ffff8000113b037c: d4210000 brk #0x800 ret = -EINVAL; ffff8000113b0380: 128002b6 mov w22, #0xffffffea // #-22 goto err_uninit; ffff8000113b0384: 17ffffd3 b ffff8000113b02d0 ret = netdev_register_kobject(dev); ffff8000113b0388: aa1303e0 mov x0, x19 ffff8000113b038c: 94000000 bl 0 ffff8000113b038c: R_AARCH64_CALL26 netdev_register_kobject ffff8000113b0390: 2a0003f6 mov w22, w0 if (ret) { ffff8000113b0394: 340003e0 cbz w0, ffff8000113b0410 dev->reg_state = NETREG_UNREGISTERED; ffff8000113b0398: 52800060 mov w0, #0x3 // #3 ffff8000113b039c: 39136260 strb w0, [x19,#1240] goto err_uninit; ffff8000113b03a0: 17ffffcc b ffff8000113b02d0 switch (dev->reg_state) { ffff8000113b03a4: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113b03a4: R_AARCH64_ADR_PREL_PG_HI21 .rodata+0x84 ffff8000113b03a8: 91000000 add x0, x0, #0x0 ffff8000113b03a8: R_AARCH64_ADD_ABS_LO12_NC .rodata+0x84 ffff8000113b03ac: 38624803 ldrb w3, [x0,w2,uxtw] ffff8000113b03b0: 10000064 adr x4, ffff8000113b03bc ffff8000113b03b4: 8b238883 add x3, x4, w3, sxtb #2 ffff8000113b03b8: d61f0060 br x3 case NETREG_REGISTERED: return ""; ffff8000113b03bc: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113b03bc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x68 ffff8000113b03c0: 910002d6 add x22, x22, #0x0 ffff8000113b03c0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x68 ffff8000113b03c4: 17ffffe9 b ffff8000113b0368 case NETREG_UNINITIALIZED: return " (uninitialized)"; ffff8000113b03c8: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113b03c8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x50 ffff8000113b03cc: 910002d6 add x22, x22, #0x0 ffff8000113b03cc: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x50 ffff8000113b03d0: 17ffffe6 b ffff8000113b0368 case NETREG_DUMMY: return " (dummy)"; ffff8000113b03d4: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113b03d4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xa8 ffff8000113b03d8: 910002d6 add x22, x22, #0x0 ffff8000113b03d8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xa8 ffff8000113b03dc: 17ffffe3 b ffff8000113b0368 case NETREG_RELEASED: return " (released)"; ffff8000113b03e0: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113b03e0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x98 ffff8000113b03e4: 910002d6 add x22, x22, #0x0 ffff8000113b03e4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x98 ffff8000113b03e8: 17ffffe0 b ffff8000113b0368 case NETREG_UNREGISTERED: return " (unregistered)"; ffff8000113b03ec: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113b03ec: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x88 ffff8000113b03f0: 910002d6 add x22, x22, #0x0 ffff8000113b03f0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x88 ffff8000113b03f4: 17ffffdd b ffff8000113b0368 case NETREG_UNREGISTERING: return " (unregistering)"; ffff8000113b03f8: 90000016 adrp x22, ffff80001139e37c <__my_cpu_offset> ffff8000113b03f8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x70 ffff8000113b03fc: 910002d6 add x22, x22, #0x0 ffff8000113b03fc: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x70 ffff8000113b0400: 17ffffda b ffff8000113b0368 ffff8000113b0404: aa0103e3 mov x3, x1 ffff8000113b0408: aa0203e0 mov x0, x2 ffff8000113b040c: 17ffff89 b ffff8000113b0230 dev->reg_state = NETREG_REGISTERED; ffff8000113b0410: 52800035 mov w21, #0x1 // #1 ffff8000113b0414: 39136275 strb w21, [x19,#1240] __netdev_update_features(dev); ffff8000113b0418: aa1303e0 mov x0, x19 ffff8000113b041c: 94000000 bl ffff8000113af4b8 <__netdev_update_features> ffff8000113b041c: R_AARCH64_CALL26 __netdev_update_features ATOMIC64_OPS(or, orr, L) ffff8000113b0420: 91010264 add x4, x19, #0x40 ffff8000113b0424: f9800091 prfm pstl1strm, [x4] ffff8000113b0428: c85f7c80 ldxr x0, [x4] ffff8000113b042c: b27f0000 orr x0, x0, #0x2 ffff8000113b0430: c8017c80 stxr w1, x0, [x4] ffff8000113b0434: 35ffffa1 cbnz w1, ffff8000113b0428 linkwatch_init_dev(dev); ffff8000113b0438: aa1303e0 mov x0, x19 ffff8000113b043c: 94000000 bl 0 ffff8000113b043c: R_AARCH64_CALL26 linkwatch_init_dev dev_init_scheduler(dev); ffff8000113b0440: aa1303e0 mov x0, x19 ffff8000113b0444: 94000000 bl 0 ffff8000113b0444: R_AARCH64_CALL26 dev_init_scheduler this_cpu_inc(*dev->pcpu_refcnt); ffff8000113b0448: f9426260 ldr x0, [x19,#1216] asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff8000113b044c: d538d081 mrs x1, tpidr_el1 PERCPU_OP(add, add, stadd) ffff8000113b0450: 8b000024 add x4, x1, x0 ffff8000113b0454: 885f7c83 ldxr w3, [x4] ffff8000113b0458: 0b150063 add w3, w3, w21 ffff8000113b045c: 88027c83 stxr w2, w3, [x4] ffff8000113b0460: 35ffffa2 cbnz w2, ffff8000113b0454 list_netdevice(dev); ffff8000113b0464: aa1303e0 mov x0, x19 ffff8000113b0468: 97ffcbc3 bl ffff8000113a3374 add_device_randomness(dev->dev_addr, dev->addr_len); ffff8000113b046c: f9418e60 ldr x0, [x19,#792] ffff8000113b0470: 3949be61 ldrb w1, [x19,#623] ffff8000113b0474: 94000000 bl 0 ffff8000113b0474: R_AARCH64_CALL26 add_device_randomness if (dev->addr_assign_type == NET_ADDR_PERM) ffff8000113b0478: 3949ba60 ldrb w0, [x19,#622] ffff8000113b047c: 350000a0 cbnz w0, ffff8000113b0490 return __builtin_memcpy(p, q, size); ffff8000113b0480: f9418e61 ldr x1, [x19,#792] ffff8000113b0484: 3949be62 ldrb w2, [x19,#623] ffff8000113b0488: 91093a60 add x0, x19, #0x24e ffff8000113b048c: 94000000 bl 0 ffff8000113b048c: R_AARCH64_CALL26 memcpy return call_netdevice_notifiers_info(val, &info); ffff8000113b0490: 9100e3a1 add x1, x29, #0x38 ffff8000113b0494: d28000a0 mov x0, #0x5 // #5 struct netdev_notifier_info info = { ffff8000113b0498: f9001fb3 str x19, [x29,#56] ffff8000113b049c: f90023bf str xzr, [x29,#64] return call_netdevice_notifiers_info(val, &info); ffff8000113b04a0: 97ffbf16 bl ffff8000113a00f8 ret &= ~NOTIFY_STOP_MASK; ffff8000113b04a4: 12107801 and w1, w0, #0xffff7fff return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff8000113b04a8: 7100043f cmp w1, #0x1 ffff8000113b04ac: 5400010d b.le ffff8000113b04cc rollback_registered(dev); ffff8000113b04b0: aa1303e0 mov x0, x19 ffff8000113b04b4: 52800036 mov w22, #0x1 // #1 ffff8000113b04b8: 4b0102d6 sub w22, w22, w1 ffff8000113b04bc: 97fffa29 bl ffff8000113aed60 rcu_barrier(); ffff8000113b04c0: 94000000 bl 0 ffff8000113b04c0: R_AARCH64_CALL26 rcu_barrier dev->reg_state = NETREG_UNREGISTERED; ffff8000113b04c4: 52800060 mov w0, #0x3 // #3 ffff8000113b04c8: 39136260 strb w0, [x19,#1240] if (!dev->rtnl_link_ops || ffff8000113b04cc: f9441a60 ldr x0, [x19,#2096] ffff8000113b04d0: b4000080 cbz x0, ffff8000113b04e0 ffff8000113b04d4: 7949b661 ldrh w1, [x19,#1242] ffff8000113b04d8: 2a1603e0 mov w0, w22 ffff8000113b04dc: 35ffe161 cbnz w1, ffff8000113b0108 rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U, GFP_KERNEL); ffff8000113b04e0: 52800200 mov w0, #0x10 // #16 ffff8000113b04e4: aa1303e1 mov x1, x19 ffff8000113b04e8: 12800002 mov w2, #0xffffffff // #-1 ffff8000113b04ec: 52819803 mov w3, #0xcc0 // #3264 ffff8000113b04f0: 94000000 bl 0 ffff8000113b04f0: R_AARCH64_CALL26 rtmsg_ifinfo ffff8000113b04f4: 2a1603e0 mov w0, w22 ffff8000113b04f8: 17ffff04 b ffff8000113b0108 return dev->name; ffff8000113b04fc: aa1303f5 mov x21, x19 ffff8000113b0500: 17ffff91 b ffff8000113b0344 } ffff8000113b0504: 94000000 bl 0 <__stack_chk_fail> ffff8000113b0504: R_AARCH64_CALL26 __stack_chk_fail ASSERT_RTNL(); ffff8000113b0508: 90000003 adrp x3, ffff80001139e37c <__my_cpu_offset> ffff8000113b0508: R_AARCH64_ADR_PREL_PG_HI21 .data.once ffff8000113b050c: 91000063 add x3, x3, #0x0 ffff8000113b050c: R_AARCH64_ADD_ABS_LO12_NC .data.once ffff8000113b0510: 39409c60 ldrb w0, [x3,#39] ffff8000113b0514: 35ffdec0 cbnz w0, ffff8000113b00ec ffff8000113b0518: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113b0518: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x18 ffff8000113b051c: 90000001 adrp x1, ffff80001139e37c <__my_cpu_offset> ffff8000113b051c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x40 ffff8000113b0520: 52800024 mov w4, #0x1 // #1 ffff8000113b0524: 91000000 add x0, x0, #0x0 ffff8000113b0524: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x18 ffff8000113b0528: 91000021 add x1, x1, #0x0 ffff8000113b0528: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x40 ffff8000113b052c: 52848a02 mov w2, #0x2450 // #9296 ffff8000113b0530: 39009c64 strb w4, [x3,#39] ffff8000113b0534: 94000000 bl 0 <__warn_printk> ffff8000113b0534: R_AARCH64_CALL26 __warn_printk ffff8000113b0538: d4210000 brk #0x800 ffff8000113b053c: 17fffeec b ffff8000113b00ec BUG_ON(!net); ffff8000113b0540: d4210000 brk #0x800 BUG_ON(dev_boot_phase); ffff8000113b0544: d4210000 brk #0x800 BUG_ON(dev->reg_state != NETREG_UNINITIALIZED); ffff8000113b0548: d4210000 brk #0x800 WARN_ONCE(1, "%s: unknown reg_state %d\n", dev->name, dev->reg_state); ffff8000113b054c: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113b054c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xc8 ffff8000113b0550: 52800023 mov w3, #0x1 // #1 ffff8000113b0554: 91000000 add x0, x0, #0x0 ffff8000113b0554: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xc8 ffff8000113b0558: aa1303e1 mov x1, x19 ffff8000113b055c: 39000883 strb w3, [x4,#2] ffff8000113b0560: 94000000 bl 0 <__warn_printk> ffff8000113b0560: R_AARCH64_CALL26 __warn_printk ffff8000113b0564: d4210000 brk #0x800 ffff8000113b0568: 17ffff80 b ffff8000113b0368 ffff8000113b056c : { ffff8000113b056c: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113b0570: 910003fd mov x29, sp ffff8000113b0574: f9000bf3 str x19, [sp,#16] ffff8000113b0578: aa0003f3 mov x19, x0 ffff8000113b057c: aa1e03e0 mov x0, x30 ffff8000113b0580: 94000000 bl 0 <_mcount> ffff8000113b0580: R_AARCH64_CALL26 _mcount if (rtnl_lock_killable()) ffff8000113b0584: 94000000 bl 0 ffff8000113b0584: R_AARCH64_CALL26 rtnl_lock_killable ffff8000113b0588: 35000120 cbnz w0, ffff8000113b05ac err = register_netdevice(dev); ffff8000113b058c: aa1303e0 mov x0, x19 ffff8000113b0590: 94000000 bl ffff8000113b00ac ffff8000113b0590: R_AARCH64_CALL26 register_netdevice rtnl_unlock(); ffff8000113b0594: f90017a0 str x0, [x29,#40] ffff8000113b0598: 94000000 bl 0 ffff8000113b0598: R_AARCH64_CALL26 rtnl_unlock return err; ffff8000113b059c: f94017a0 ldr x0, [x29,#40] } ffff8000113b05a0: f9400bf3 ldr x19, [sp,#16] ffff8000113b05a4: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113b05a8: d65f03c0 ret return -EINTR; ffff8000113b05ac: 12800060 mov w0, #0xfffffffc // #-4 ffff8000113b05b0: 17fffffc b ffff8000113b05a0 ffff8000113b05b4 : { ffff8000113b05b4: a9b67bfd stp x29, x30, [sp,#-160]! ffff8000113b05b8: 910003fd mov x29, sp ffff8000113b05bc: a90153f3 stp x19, x20, [sp,#16] ffff8000113b05c0: a9025bf5 stp x21, x22, [sp,#32] ffff8000113b05c4: a90363f7 stp x23, x24, [sp,#48] ffff8000113b05c8: a9046bf9 stp x25, x26, [sp,#64] ffff8000113b05cc: a90573fb stp x27, x28, [sp,#80] ffff8000113b05d0: aa1e03e0 mov x0, x30 ffff8000113b05d4: 94000000 bl 0 <_mcount> ffff8000113b05d4: R_AARCH64_CALL26 _mcount new->next = old->next; ffff8000113b05d8: 9000001c adrp x28, ffff80001139e37c <__my_cpu_offset> ffff8000113b05d8: R_AARCH64_ADR_PREL_PG_HI21 .data ffff8000113b05dc: 91000381 add x1, x28, #0x0 ffff8000113b05dc: R_AARCH64_ADD_ABS_LO12_NC .data ffff8000113b05e0: f9407c23 ldr x3, [x1,#248] ffff8000113b05e4: 9101e3bb add x27, x29, #0x78 new->next->prev = new; ffff8000113b05e8: f900047b str x27, [x3,#8] new->prev = old->prev; ffff8000113b05ec: f9408022 ldr x2, [x1,#256] ffff8000113b05f0: 90000005 adrp x5, 0 <__stack_chk_guard> ffff8000113b05f0: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113b05f4: f94000a4 ldr x4, [x5] ffff8000113b05f4: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard new->next = old->next; ffff8000113b05f8: f9003fa3 str x3, [x29,#120] new->prev = old->prev; ffff8000113b05fc: f90043a2 str x2, [x29,#128] new->next = old->next; ffff8000113b0600: 9103e020 add x0, x1, #0xf8 new->prev->next = new; ffff8000113b0604: f900005b str x27, [x2] ffff8000113b0608: f9004fa4 str x4, [x29,#152] ffff8000113b060c: f9007c20 str x0, [x1,#248] list->prev = list; ffff8000113b0610: f9000400 str x0, [x0,#8] __rtnl_unlock(); ffff8000113b0614: 94000000 bl 0 <__rtnl_unlock> ffff8000113b0614: R_AARCH64_CALL26 __rtnl_unlock __READ_ONCE_SIZE; ffff8000113b0618: f9403fa0 ldr x0, [x29,#120] if (!list_empty(&list)) ffff8000113b061c: eb00037f cmp x27, x0 ffff8000113b0620: 54000040 b.eq ffff8000113b0628 rcu_barrier(); ffff8000113b0624: 94000000 bl 0 ffff8000113b0624: R_AARCH64_CALL26 rcu_barrier pr_emerg("unregister_netdevice: waiting for %s to become free. Usage count = %d\n", ffff8000113b0628: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113b0628: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xd10 ffff8000113b062c: 91000000 add x0, x0, #0x0 ffff8000113b062c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xd10 ffff8000113b0630: f90037a0 str x0, [x29,#104] pr_err("network todo '%s' but state %d\n", ffff8000113b0634: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113b0634: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0xce8 wake_up(&netdev_unregistering_wq); ffff8000113b0638: 9100039c add x28, x28, #0x0 ffff8000113b0638: R_AARCH64_ADD_ABS_LO12_NC .data pr_err("network todo '%s' but state %d\n", ffff8000113b063c: 91000000 add x0, x0, #0x0 ffff8000113b063c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0xce8 wake_up(&netdev_unregistering_wq); ffff8000113b0640: 9104239c add x28, x28, #0x108 pr_err("network todo '%s' but state %d\n", ffff8000113b0644: f90033a0 str x0, [x29,#96] ffff8000113b0648: f9403fa0 ldr x0, [x29,#120] while (!list_empty(&list)) { ffff8000113b064c: eb00037f cmp x27, x0 ffff8000113b0650: 54000e60 b.eq ffff8000113b081c = list_first_entry(&list, struct net_device, todo_list); ffff8000113b0654: f9400376 ldr x22, [x27] if (!__list_del_entry_valid(entry)) ffff8000113b0658: aa1603e0 mov x0, x22 ffff8000113b065c: 94000000 bl 0 <__list_del_entry_valid> ffff8000113b065c: R_AARCH64_CALL26 __list_del_entry_valid ffff8000113b0660: 53001c00 uxtb w0, w0 struct net_device *dev ffff8000113b0664: d112c2d3 sub x19, x22, #0x4b0 ffff8000113b0668: 340000a0 cbz w0, ffff8000113b067c __list_del(entry->prev, entry->next); ffff8000113b066c: f94006c0 ldr x0, [x22,#8] ffff8000113b0670: f94002c1 ldr x1, [x22] next->prev = prev; ffff8000113b0674: f9000420 str x0, [x1,#8] case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113b0678: f9000001 str x1, [x0] entry->next = LIST_POISON1; ffff8000113b067c: d2802001 mov x1, #0x100 // #256 entry->prev = LIST_POISON2; ffff8000113b0680: d2802440 mov x0, #0x122 // #290 entry->next = LIST_POISON1; ffff8000113b0684: f2fbd5a1 movk x1, #0xdead, lsl #48 entry->prev = LIST_POISON2; ffff8000113b0688: f2fbd5a0 movk x0, #0xdead, lsl #48 entry->next = LIST_POISON1; ffff8000113b068c: f90002c1 str x1, [x22] entry->prev = LIST_POISON2; ffff8000113b0690: f90006c0 str x0, [x22,#8] if (unlikely(dev->reg_state != NETREG_UNREGISTERING)) { ffff8000113b0694: 39536262 ldrb w2, [x19,#1240] ffff8000113b0698: 7100085f cmp w2, #0x2 ffff8000113b069c: 54000e41 b.ne ffff8000113b0864 dev->reg_state = NETREG_UNREGISTERED; ffff8000113b06a0: 52800061 mov w1, #0x3 // #3 linkwatch_forget_dev(dev); ffff8000113b06a4: aa1303e0 mov x0, x19 dev->reg_state = NETREG_UNREGISTERED; ffff8000113b06a8: 39136261 strb w1, [x19,#1240] linkwatch_forget_dev(dev); ffff8000113b06ac: 94000000 bl 0 ffff8000113b06ac: R_AARCH64_CALL26 linkwatch_forget_dev rebroadcast_time = warning_time = jiffies; ffff8000113b06b0: 90000014 adrp x20, 0 ffff8000113b06b0: R_AARCH64_ADR_PREL_PG_HI21 jiffies refcnt = netdev_refcnt_read(dev); ffff8000113b06b4: aa1303e0 mov x0, x19 rebroadcast_time = warning_time = jiffies; ffff8000113b06b8: f9400295 ldr x21, [x20] ffff8000113b06b8: R_AARCH64_LDST64_ABS_LO12_NC jiffies refcnt = netdev_refcnt_read(dev); ffff8000113b06bc: 94000000 bl ffff8000113a1304 ffff8000113b06bc: R_AARCH64_CALL26 netdev_refcnt_read while (refcnt != 0) { ffff8000113b06c0: 340005c0 cbz w0, ffff8000113b0778 rebroadcast_time = warning_time = jiffies; ffff8000113b06c4: aa1503f8 mov x24, x21 if (time_after(jiffies, rebroadcast_time + 1 * HZ)) { ffff8000113b06c8: d2801f57 mov x23, #0xfa // #250 ffff8000113b06cc: d111c2da sub x26, x22, #0x470 if (refcnt && time_after(jiffies, warning_time + 10 * HZ)) { ffff8000113b06d0: d2813899 mov x25, #0x9c4 // #2500 if (time_after(jiffies, rebroadcast_time + 1 * HZ)) { ffff8000113b06d4: f9400280 ldr x0, [x20] ffff8000113b06d4: R_AARCH64_LDST64_ABS_LO12_NC jiffies ffff8000113b06d8: cb0002e0 sub x0, x23, x0 ffff8000113b06dc: ab15001f cmn x0, x21 ffff8000113b06e0: 54000264 b.mi ffff8000113b072c msleep(250); ffff8000113b06e4: 52801f40 mov w0, #0xfa // #250 ffff8000113b06e8: 94000000 bl 0 ffff8000113b06e8: R_AARCH64_CALL26 msleep refcnt = netdev_refcnt_read(dev); ffff8000113b06ec: aa1303e0 mov x0, x19 ffff8000113b06f0: 94000000 bl ffff8000113a1304 ffff8000113b06f0: R_AARCH64_CALL26 netdev_refcnt_read ffff8000113b06f4: 2a0003e2 mov w2, w0 if (refcnt && time_after(jiffies, warning_time + 10 * HZ)) { ffff8000113b06f8: 34000400 cbz w0, ffff8000113b0778 ffff8000113b06fc: f9400280 ldr x0, [x20] ffff8000113b06fc: R_AARCH64_LDST64_ABS_LO12_NC jiffies ffff8000113b0700: cb000320 sub x0, x25, x0 ffff8000113b0704: ab18001f cmn x0, x24 ffff8000113b0708: 54fffe65 b.pl ffff8000113b06d4 pr_emerg("unregister_netdevice: waiting for %s to become free. Usage count = %d\n", ffff8000113b070c: f94037a0 ldr x0, [x29,#104] ffff8000113b0710: aa1303e1 mov x1, x19 ffff8000113b0714: 94000000 bl 0 ffff8000113b0714: R_AARCH64_CALL26 printk warning_time = jiffies; ffff8000113b0718: f9400298 ldr x24, [x20] ffff8000113b0718: R_AARCH64_LDST64_ABS_LO12_NC jiffies if (time_after(jiffies, rebroadcast_time + 1 * HZ)) { ffff8000113b071c: f9400280 ldr x0, [x20] ffff8000113b071c: R_AARCH64_LDST64_ABS_LO12_NC jiffies ffff8000113b0720: cb0002e0 sub x0, x23, x0 ffff8000113b0724: ab15001f cmn x0, x21 ffff8000113b0728: 54fffde5 b.pl ffff8000113b06e4 rtnl_lock(); ffff8000113b072c: 94000000 bl 0 ffff8000113b072c: R_AARCH64_CALL26 rtnl_lock return call_netdevice_notifiers_info(val, &info); ffff8000113b0730: 910223a1 add x1, x29, #0x88 ffff8000113b0734: d28000c0 mov x0, #0x6 // #6 struct netdev_notifier_info info = { ffff8000113b0738: f90047b3 str x19, [x29,#136] ffff8000113b073c: f9004bbf str xzr, [x29,#144] return call_netdevice_notifiers_info(val, &info); ffff8000113b0740: 97ffbe6e bl ffff8000113a00f8 __rtnl_unlock(); ffff8000113b0744: 94000000 bl 0 <__rtnl_unlock> ffff8000113b0744: R_AARCH64_CALL26 __rtnl_unlock rcu_barrier(); ffff8000113b0748: 94000000 bl 0 ffff8000113b0748: R_AARCH64_CALL26 rcu_barrier rtnl_lock(); ffff8000113b074c: 94000000 bl 0 ffff8000113b074c: R_AARCH64_CALL26 rtnl_lock ffff8000113b0750: f9400340 ldr x0, [x26] if (test_bit(__LINK_STATE_LINKWATCH_PENDING, ffff8000113b0754: 371807c0 tbnz w0, #3, ffff8000113b084c __rtnl_unlock(); ffff8000113b0758: 94000000 bl 0 <__rtnl_unlock> ffff8000113b0758: R_AARCH64_CALL26 __rtnl_unlock msleep(250); ffff8000113b075c: 52801f40 mov w0, #0xfa // #250 rebroadcast_time = jiffies; ffff8000113b0760: f9400295 ldr x21, [x20] ffff8000113b0760: R_AARCH64_LDST64_ABS_LO12_NC jiffies msleep(250); ffff8000113b0764: 94000000 bl 0 ffff8000113b0764: R_AARCH64_CALL26 msleep refcnt = netdev_refcnt_read(dev); ffff8000113b0768: aa1303e0 mov x0, x19 ffff8000113b076c: 94000000 bl ffff8000113a1304 ffff8000113b076c: R_AARCH64_CALL26 netdev_refcnt_read ffff8000113b0770: 2a0003e2 mov w2, w0 if (refcnt && time_after(jiffies, warning_time + 10 * HZ)) { ffff8000113b0774: 35fffc40 cbnz w0, ffff8000113b06fc BUG_ON(netdev_refcnt_read(dev)); ffff8000113b0778: aa1303e0 mov x0, x19 ffff8000113b077c: 94000000 bl ffff8000113a1304 ffff8000113b077c: R_AARCH64_CALL26 netdev_refcnt_read ffff8000113b0780: 35000700 cbnz w0, ffff8000113b0860 __READ_ONCE_SIZE; ffff8000113b0784: d110a2c0 sub x0, x22, #0x428 ffff8000113b0788: f9400000 ldr x0, [x0] BUG_ON(!list_empty(&dev->ptype_all)); ffff8000113b078c: 91022261 add x1, x19, #0x88 ffff8000113b0790: eb00003f cmp x1, x0 ffff8000113b0794: 540007e1 b.ne ffff8000113b0890 ffff8000113b0798: d11062c0 sub x0, x22, #0x418 ffff8000113b079c: f9400000 ldr x0, [x0] BUG_ON(!list_empty(&dev->ptype_specific)); ffff8000113b07a0: 91026261 add x1, x19, #0x98 ffff8000113b07a4: eb00003f cmp x1, x0 ffff8000113b07a8: 54000721 b.ne ffff8000113b088c ffff8000113b07ac: d10702c0 sub x0, x22, #0x1c0 ffff8000113b07b0: f9400000 ldr x0, [x0] WARN_ON(rcu_access_pointer(dev->ip_ptr)); ffff8000113b07b4: b5000680 cbnz x0, ffff8000113b0884 ffff8000113b07b8: d106e2c0 sub x0, x22, #0x1b8 ffff8000113b07bc: f9400000 ldr x0, [x0] WARN_ON(rcu_access_pointer(dev->ip6_ptr)); ffff8000113b07c0: b50005e0 cbnz x0, ffff8000113b087c if (dev->priv_destructor) ffff8000113b07c4: f9427261 ldr x1, [x19,#1248] ffff8000113b07c8: b4000061 cbz x1, ffff8000113b07d4 dev->priv_destructor(dev); ffff8000113b07cc: aa1303e0 mov x0, x19 ffff8000113b07d0: d63f0020 blr x1 if (dev->needs_free_netdev) ffff8000113b07d4: 39537260 ldrb w0, [x19,#1244] ffff8000113b07d8: 350003e0 cbnz w0, ffff8000113b0854 rtnl_lock(); ffff8000113b07dc: 94000000 bl 0 ffff8000113b07dc: R_AARCH64_CALL26 rtnl_lock ffff8000113b07e0: f94022c0 ldr x0, [x22,#64] dev_net(dev)->dev_unreg_count--; ffff8000113b07e4: b9400c01 ldr w1, [x0,#12] ffff8000113b07e8: 51000421 sub w1, w1, #0x1 ffff8000113b07ec: b9000c01 str w1, [x0,#12] __rtnl_unlock(); ffff8000113b07f0: 94000000 bl 0 <__rtnl_unlock> ffff8000113b07f0: R_AARCH64_CALL26 __rtnl_unlock wake_up(&netdev_unregistering_wq); ffff8000113b07f4: aa1c03e0 mov x0, x28 ffff8000113b07f8: 52800061 mov w1, #0x3 // #3 ffff8000113b07fc: 52800022 mov w2, #0x1 // #1 ffff8000113b0800: d2800003 mov x3, #0x0 // #0 ffff8000113b0804: 94000000 bl 0 <__wake_up> ffff8000113b0804: R_AARCH64_CALL26 __wake_up kobject_put(&dev->dev.kobj); ffff8000113b0808: 910182c0 add x0, x22, #0x60 ffff8000113b080c: 94000000 bl 0 ffff8000113b080c: R_AARCH64_CALL26 kobject_put ffff8000113b0810: f9403fa0 ldr x0, [x29,#120] while (!list_empty(&list)) { ffff8000113b0814: eb00037f cmp x27, x0 ffff8000113b0818: 54fff1e1 b.ne ffff8000113b0654 } ffff8000113b081c: 90000002 adrp x2, 0 <__stack_chk_guard> ffff8000113b081c: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff8000113b0820: f9404fa1 ldr x1, [x29,#152] ffff8000113b0824: f9400040 ldr x0, [x2] ffff8000113b0824: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff8000113b0828: eb00003f cmp x1, x0 ffff8000113b082c: 54000261 b.ne ffff8000113b0878 ffff8000113b0830: a94153f3 ldp x19, x20, [sp,#16] ffff8000113b0834: a9425bf5 ldp x21, x22, [sp,#32] ffff8000113b0838: a94363f7 ldp x23, x24, [sp,#48] ffff8000113b083c: a9446bf9 ldp x25, x26, [sp,#64] ffff8000113b0840: a94573fb ldp x27, x28, [sp,#80] ffff8000113b0844: a8ca7bfd ldp x29, x30, [sp],#160 ffff8000113b0848: d65f03c0 ret linkwatch_run_queue(); ffff8000113b084c: 94000000 bl 0 ffff8000113b084c: R_AARCH64_CALL26 linkwatch_run_queue ffff8000113b0850: 17ffffc2 b ffff8000113b0758 free_netdev(dev); ffff8000113b0854: aa1303e0 mov x0, x19 ffff8000113b0858: 94000000 bl ffff8000113a5274 ffff8000113b0858: R_AARCH64_CALL26 free_netdev ffff8000113b085c: 17ffffe0 b ffff8000113b07dc BUG_ON(netdev_refcnt_read(dev)); ffff8000113b0860: d4210000 brk #0x800 pr_err("network todo '%s' but state %d\n", ffff8000113b0864: f94033a0 ldr x0, [x29,#96] ffff8000113b0868: aa1303e1 mov x1, x19 ffff8000113b086c: 94000000 bl 0 ffff8000113b086c: R_AARCH64_CALL26 printk dump_stack(); ffff8000113b0870: 94000000 bl 0 ffff8000113b0870: R_AARCH64_CALL26 dump_stack continue; ffff8000113b0874: 17ffff75 b ffff8000113b0648 } ffff8000113b0878: 94000000 bl 0 <__stack_chk_fail> ffff8000113b0878: R_AARCH64_CALL26 __stack_chk_fail WARN_ON(rcu_access_pointer(dev->ip6_ptr)); ffff8000113b087c: d4210000 brk #0x800 ffff8000113b0880: 17ffffd1 b ffff8000113b07c4 WARN_ON(rcu_access_pointer(dev->ip_ptr)); ffff8000113b0884: d4210000 brk #0x800 ffff8000113b0888: 17ffffcc b ffff8000113b07b8 BUG_ON(!list_empty(&dev->ptype_specific)); ffff8000113b088c: d4210000 brk #0x800 BUG_ON(!list_empty(&dev->ptype_all)); ffff8000113b0890: d4210000 brk #0x800 ffff8000113b0894 : { ffff8000113b0894: a9bd7bfd stp x29, x30, [sp,#-48]! ffff8000113b0898: 910003fd mov x29, sp ffff8000113b089c: a90153f3 stp x19, x20, [sp,#16] ffff8000113b08a0: f90013f5 str x21, [sp,#32] ffff8000113b08a4: aa0003f4 mov x20, x0 ffff8000113b08a8: aa1e03e0 mov x0, x30 ffff8000113b08ac: 94000000 bl 0 <_mcount> ffff8000113b08ac: R_AARCH64_CALL26 _mcount struct netdev_queue *dev_ingress_queue_create(struct net_device *dev) ffff8000113b08b0: f941ae93 ldr x19, [x20,#856] if (queue) ffff8000113b08b4: b40000d3 cbz x19, ffff8000113b08cc } ffff8000113b08b8: aa1303e0 mov x0, x19 ffff8000113b08bc: f94013f5 ldr x21, [sp,#32] ffff8000113b08c0: a94153f3 ldp x19, x20, [sp,#16] ffff8000113b08c4: a8c37bfd ldp x29, x30, [sp],#48 ffff8000113b08c8: d65f03c0 ret return kmem_cache_alloc_trace( ffff8000113b08cc: 90000000 adrp x0, 0 ffff8000113b08cc: R_AARCH64_ADR_PREL_PG_HI21 kmalloc_caches+0x48 ffff8000113b08d0: f9400000 ldr x0, [x0] ffff8000113b08d0: R_AARCH64_LDST64_ABS_LO12_NC kmalloc_caches+0x48 ffff8000113b08d4: 5281b801 mov w1, #0xdc0 // #3520 ffff8000113b08d8: d2802802 mov x2, #0x140 // #320 ffff8000113b08dc: 94000000 bl 0 ffff8000113b08dc: R_AARCH64_CALL26 kmem_cache_alloc_trace ffff8000113b08e0: aa0003f5 mov x21, x0 if (!queue) ffff8000113b08e4: b4fffea0 cbz x0, ffff8000113b08b8 queue->xmit_lock_owner = -1; ffff8000113b08e8: 12800000 mov w0, #0xffffffff // #-1 ffff8000113b08ec: b90086a0 str w0, [x21,#132] q->numa_node = node; ffff8000113b08f0: b9005aa0 str w0, [x21,#88] spin_lock_init(&queue->_xmit_lock); ffff8000113b08f4: b90082b3 str w19, [x21,#128] queue->dev = dev; ffff8000113b08f8: aa1503e0 mov x0, x21 ffff8000113b08fc: f80c0414 str x20, [x0],#192 dql_init(&queue->dql, HZ); ffff8000113b0900: 52801f41 mov w1, #0xfa // #250 ffff8000113b0904: 94000000 bl 0 ffff8000113b0904: R_AARCH64_CALL26 dql_init RCU_INIT_POINTER(queue->qdisc, &noop_qdisc); ffff8000113b0908: 90000000 adrp x0, 0 ffff8000113b0908: R_AARCH64_ADR_PREL_PG_HI21 noop_qdisc ffff8000113b090c: 91000000 add x0, x0, #0x0 ffff8000113b090c: R_AARCH64_ADD_ABS_LO12_NC noop_qdisc case 8: *(volatile __u64 *)p = *(__u64 *)res; break; ffff8000113b0910: f90006a0 str x0, [x21,#8] queue->qdisc_sleeping = &noop_qdisc; ffff8000113b0914: f9000aa0 str x0, [x21,#16] rcu_assign_pointer(dev->ingress_queue, queue); ffff8000113b0918: 910d6294 add x20, x20, #0x358 ffff8000113b091c: c89ffe95 stlr x21, [x20] return queue; ffff8000113b0920: aa1503f3 mov x19, x21 ffff8000113b0924: 17ffffe5 b ffff8000113b08b8 ffff8000113b0928 : { ffff8000113b0928: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113b092c: 910003fd mov x29, sp ffff8000113b0930: f9000bf3 str x19, [sp,#16] ffff8000113b0934: aa0003f3 mov x19, x0 ffff8000113b0938: aa1e03e0 mov x0, x30 ffff8000113b093c: 94000000 bl 0 <_mcount> ffff8000113b093c: R_AARCH64_CALL26 _mcount char *addr = (char *)dev - dev->padded; ffff8000113b0940: 79446660 ldrh w0, [x19,#562] kvfree(addr); ffff8000113b0944: cb000260 sub x0, x19, x0 ffff8000113b0948: 94000000 bl 0 ffff8000113b0948: R_AARCH64_CALL26 kvfree } ffff8000113b094c: f9400bf3 ldr x19, [sp,#16] ffff8000113b0950: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113b0954: d65f03c0 ret ffff8000113b0958 : { ffff8000113b0958: a9be7bfd stp x29, x30, [sp,#-32]! ffff8000113b095c: 910003fd mov x29, sp ffff8000113b0960: f9000bf3 str x19, [sp,#16] ffff8000113b0964: aa0003f3 mov x19, x0 ffff8000113b0968: aa1e03e0 mov x0, x30 ffff8000113b096c: 94000000 bl 0 <_mcount> ffff8000113b096c: R_AARCH64_CALL26 _mcount parent = dev->dev.parent; ffff8000113b0970: f942aa60 ldr x0, [x19,#1360] if (!parent) ffff8000113b0974: b4000100 cbz x0, ffff8000113b0994 driver = parent->driver; ffff8000113b0978: f9403400 ldr x0, [x0,#104] if (driver && driver->name) ffff8000113b097c: b40000c0 cbz x0, ffff8000113b0994 ffff8000113b0980: f9400000 ldr x0, [x0] ffff8000113b0984: b4000080 cbz x0, ffff8000113b0994 } ffff8000113b0988: f9400bf3 ldr x19, [sp,#16] ffff8000113b098c: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113b0990: d65f03c0 ret return empty; ffff8000113b0994: 90000000 adrp x0, ffff80001139e37c <__my_cpu_offset> ffff8000113b0994: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x68 ffff8000113b0998: 91000000 add x0, x0, #0x0 ffff8000113b0998: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x68 } ffff8000113b099c: f9400bf3 ldr x19, [sp,#16] ffff8000113b09a0: a8c27bfd ldp x29, x30, [sp],#32 ffff8000113b09a4: d65f03c0 ret Disassembly of section .init.text: ffff80001139e37c : asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff80001139e37c: a9b97bfd stp x29, x30, [sp,#-112]! } ffff80001139e380: 910003fd mov x29, sp { ffff80001139e384: a90153f3 stp x19, x20, [sp,#16] ffff80001139e388: f90013f5 str x21, [sp,#32] ffff80001139e38c: aa0003f4 mov x20, x0 ffff80001139e390: aa1e03e0 mov x0, x30 ffff80001139e394: 94000000 bl 0 <_mcount> ffff80001139e394: R_AARCH64_CALL26 _mcount ffff80001139e398: 90000013 adrp x19, 0 <__stack_chk_guard> ffff80001139e398: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard if (dev->netdev_ops && dev->netdev_ops->ndo_get_iflink) ffff80001139e39c: f9400263 ldr x3, [x19] ffff80001139e39c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139e3a0: 528000a1 mov w1, #0x5 // #5 ffff80001139e3a4: aa1403e0 mov x0, x20 ffff80001139e3a8: 9100e3a2 add x2, x29, #0x38 return dev->netdev_ops->ndo_get_iflink(dev); ffff80001139e3ac: f90037a3 str x3, [x29,#104] ffff80001139e3b0: 94000000 bl 0 ffff80001139e3b0: R_AARCH64_CALL26 get_options } ffff80001139e3b4: aa0003e1 mov x1, x0 ffff80001139e3b8: aa1303f5 mov x21, x19 ffff80001139e3bc: b40005e0 cbz x0, ffff80001139e478 return dev->ifindex; ffff80001139e3c0: 39400002 ldrb w2, [x0] } ffff80001139e3c4: 52800000 mov w0, #0x0 // #0 ffff80001139e3c8: 34000582 cbz w2, ffff80001139e478 ffff80001139e3cc: b9403ba0 ldr w0, [x29,#56] { ffff80001139e3d0: a9057fbf stp xzr, xzr, [x29,#80] ffff80001139e3d4: f90033bf str xzr, [x29,#96] ffff80001139e3d8: 6b1f001f cmp w0, wzr ffff80001139e3dc: 540001ed b.le ffff80001139e418 ffff80001139e3e0: b9403fa2 ldr w2, [x29,#60] ffff80001139e3e4: 7100041f cmp w0, #0x1 ffff80001139e3e8: 39018ba2 strb w2, [x29,#98] return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; ffff80001139e3ec: 54000160 b.eq ffff80001139e418 hlist_for_each_entry(dev, head, index_hlist) ffff80001139e3f0: b94043a2 ldr w2, [x29,#64] return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; ffff80001139e3f4: 7100081f cmp w0, #0x2 hlist_for_each_entry(dev, head, index_hlist) ffff80001139e3f8: 7900c3a2 strh w2, [x29,#96] ffff80001139e3fc: 540000e0 b.eq ffff80001139e418 ffff80001139e400: b98047a2 ldrsw x2, [x29,#68] ffff80001139e404: 71000c1f cmp w0, #0x3 if (dev->ifindex == ifindex) ffff80001139e408: f9002ba2 str x2, [x29,#80] ffff80001139e40c: 54000060 b.eq ffff80001139e418 ffff80001139e410: b9804ba0 ldrsw x0, [x29,#72] hlist_for_each_entry(dev, head, index_hlist) ffff80001139e414: f9002fa0 str x0, [x29,#88] ffff80001139e418: 90000013 adrp x19, ffff80001139e37c ffff80001139e418: R_AARCH64_ADR_PREL_PG_HI21 .bss } ffff80001139e41c: 91000273 add x19, x19, #0x0 ffff80001139e41c: R_AARCH64_ADD_ABS_LO12_NC .bss ffff80001139e420: 91072273 add x19, x19, #0x1c8 ffff80001139e424: 52800014 mov w20, #0x0 // #0 { ffff80001139e428: 39400262 ldrb w2, [x19] ffff80001139e42c: 121a7842 and w2, w2, #0xffffffdf ffff80001139e430: 53001c42 uxtb w2, w2 ffff80001139e434: 35000142 cbnz w2, ffff80001139e45c ffff80001139e438: d2800202 mov x2, #0x10 // #16 ffff80001139e43c: aa1303e0 mov x0, x19 ffff80001139e440: a9007e7f stp xzr, xzr, [x19] return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; ffff80001139e444: 94000000 bl 0 ffff80001139e444: R_AARCH64_CALL26 strlcpy ffff80001139e448: a9450fa2 ldp x2, x3, [x29,#80] ffff80001139e44c: a9010e62 stp x2, x3, [x19,#16] __READ_ONCE_SIZE; ffff80001139e450: f94033a0 ldr x0, [x29,#96] hlist_for_each_entry_rcu(dev, head, index_hlist) ffff80001139e454: f9001260 str x0, [x19,#32] ffff80001139e458: 14000005 b ffff80001139e46c ffff80001139e45c: 11000694 add w20, w20, #0x1 if (dev->ifindex == ifindex) ffff80001139e460: 7100229f cmp w20, #0x8 ffff80001139e464: 9100a273 add x19, x19, #0x28 ffff80001139e468: 54fffe01 b.ne ffff80001139e428 ffff80001139e46c: 71001e9f cmp w20, #0x7 hlist_for_each_entry_rcu(dev, head, index_hlist) ffff80001139e470: 1a9fc7e0 cset w0, le } ffff80001139e474: 14000001 b ffff80001139e478 ffff80001139e478: f94037a2 ldr x2, [x29,#104] ffff80001139e47c: f94002a1 ldr x1, [x21] ffff80001139e47c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard { ffff80001139e480: eb01005f cmp x2, x1 ffff80001139e484: 54000040 b.eq ffff80001139e48c ffff80001139e488: 94000000 bl 0 <__stack_chk_fail> ffff80001139e488: R_AARCH64_CALL26 __stack_chk_fail ffff80001139e48c: a94153f3 ldp x19, x20, [sp,#16] ffff80001139e490: f94013f5 ldr x21, [sp,#32] ffff80001139e494: a8c77bfd ldp x29, x30, [sp],#112 if (napi_id < MIN_NAPI_ID) ffff80001139e498: d65f03c0 ret ffff80001139e49c : ffff80001139e49c: a9bb7bfd stp x29, x30, [sp,#-80]! ffff80001139e4a0: 910003fd mov x29, sp hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) ffff80001139e4a4: a90153f3 stp x19, x20, [sp,#16] ffff80001139e4a8: a9025bf5 stp x21, x22, [sp,#32] ffff80001139e4ac: a90363f7 stp x23, x24, [sp,#48] ffff80001139e4b0: f90023f9 str x25, [sp,#64] ffff80001139e4b4: aa1e03e0 mov x0, x30 ffff80001139e4b8: 94000000 bl 0 <_mcount> ffff80001139e4b8: R_AARCH64_CALL26 _mcount if (napi->napi_id == napi_id) ffff80001139e4bc: 90000000 adrp x0, ffff80001139e37c ffff80001139e4bc: R_AARCH64_ADR_PREL_PG_HI21 .data ffff80001139e4c0: b9400001 ldr w1, [x0] ffff80001139e4c0: R_AARCH64_LDST32_ABS_LO12_NC .data ffff80001139e4c4: aa0003f3 mov x19, x0 ffff80001139e4c8: 35000041 cbnz w1, ffff80001139e4d0 hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) ffff80001139e4cc: d4210000 brk #0x800 return NULL; ffff80001139e4d0: 94000000 bl 0 ffff80001139e4d0: R_AARCH64_CALL26 dev_proc_init } ffff80001139e4d4: 12800161 mov w1, #0xfffffff4 // #-12 ffff80001139e4d8: 35000fa0 cbnz w0, ffff80001139e6cc ffff80001139e4dc: 94000000 bl 0 ffff80001139e4dc: R_AARCH64_CALL26 netdev_kobject_init return napi ? napi->dev : NULL; ffff80001139e4e0: 34000060 cbz w0, ffff80001139e4ec } ffff80001139e4e4: 12800161 mov w1, #0xfffffff4 // #-12 ffff80001139e4e8: 14000079 b ffff80001139e6cc ffff80001139e4ec: 90000015 adrp x21, ffff80001139e37c ffff80001139e4ec: R_AARCH64_ADR_PREL_PG_HI21 .data..read_mostly { ffff80001139e4f0: 910002a1 add x1, x21, #0x0 ffff80001139e4f0: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly ffff80001139e4f4: 91200020 add x0, x1, #0x800 ffff80001139e4f8: f9040020 str x0, [x1,#2048] ffff80001139e4fc: f9000400 str x0, [x0,#8] ffff80001139e500: 9120c020 add x0, x1, #0x830 ffff80001139e504: 9124c021 add x1, x1, #0x930 ffff80001139e508: f9000000 str x0, [x0] ffff80001139e50c: f9000400 str x0, [x0,#8] ffff80001139e510: 91004000 add x0, x0, #0x10 ffff80001139e514: eb01001f cmp x0, x1 ffff80001139e518: 54ffff81 b.ne ffff80001139e508 ffff80001139e51c: 910002a2 add x2, x21, #0x0 ffff80001139e51c: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly } ffff80001139e520: 91204041 add x1, x2, #0x810 ffff80001139e524: 91000260 add x0, x19, #0x0 ffff80001139e524: R_AARCH64_ADD_ABS_LO12_NC .data ffff80001139e528: 91002000 add x0, x0, #0x8 { ffff80001139e52c: f9040841 str x1, [x2,#2064] ffff80001139e530: f9000421 str x1, [x1,#8] } ffff80001139e534: 94000000 bl 0 ffff80001139e534: R_AARCH64_CALL26 register_pernet_subsys ffff80001139e538: 35fffd60 cbnz w0, ffff80001139e4e4 ffff80001139e53c: 90000014 adrp x20, 0 <__cpu_possible_mask> ffff80001139e53c: R_AARCH64_ADR_PREL_PG_HI21 __cpu_possible_mask { ffff80001139e540: 90000019 adrp x25, 0 ffff80001139e540: R_AARCH64_ADR_PREL_PG_HI21 nr_cpu_ids ffff80001139e544: 90000018 adrp x24, ffff80001139e37c ffff80001139e544: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu ffff80001139e548: 90000017 adrp x23, ffff80001139e37c ffff80001139e548: R_AARCH64_ADR_PREL_PG_HI21 .data..percpu..shared_aligned ffff80001139e54c: 12800000 mov w0, #0xffffffff // #-1 ffff80001139e550: 91000294 add x20, x20, #0x0 ffff80001139e550: R_AARCH64_ADD_ABS_LO12_NC __cpu_possible_mask ffff80001139e554: 91000339 add x25, x25, #0x0 ffff80001139e554: R_AARCH64_ADD_ABS_LO12_NC nr_cpu_ids ffff80001139e558: 90000016 adrp x22, 0 <__per_cpu_offset> ffff80001139e558: R_AARCH64_ADR_PREL_PG_HI21 __per_cpu_offset ffff80001139e55c: 91000318 add x24, x24, #0x0 ffff80001139e55c: R_AARCH64_ADD_ABS_LO12_NC .data..percpu ffff80001139e560: 910002f7 add x23, x23, #0x0 ffff80001139e560: R_AARCH64_ADD_ABS_LO12_NC .data..percpu..shared_aligned ffff80001139e564: aa1403e1 mov x1, x20 if (dev->flags & IFF_UP) { ffff80001139e568: 94000000 bl 0 ffff80001139e568: R_AARCH64_CALL26 cpumask_next { ffff80001139e56c: b9400321 ldr w1, [x25] struct netdev_notifier_info info = { ffff80001139e570: 6b01001f cmp w0, w1 if (dev->flags & IFF_UP) { ffff80001139e574: 54000702 b.cs ffff80001139e654 struct netdev_notifier_info info = { ffff80001139e578: 910002c1 add x1, x22, #0x0 ffff80001139e578: R_AARCH64_ADD_ABS_LO12_NC __per_cpu_offset return nb->notifier_call(nb, val, &info); ffff80001139e57c: f860d822 ldr x2, [x1,w0,sxtw #3] ffff80001139e580: b27b7be3 mov x3, #0xfffffffe0 // #68719476704 ffff80001139e584: 8b020301 add x1, x24, x2 struct netdev_notifier_info info = { ffff80001139e588: f8226b03 str x3, [x24,x2] return nb->notifier_call(nb, val, &info); ffff80001139e58c: 91002024 add x4, x1, #0x8 ffff80001139e590: f9000424 str x4, [x1,#8] ffff80001139e594: f9000484 str x4, [x4,#8] struct netdev_notifier_info info = { ffff80001139e598: 90000004 adrp x4, ffff80001139e37c ffff80001139e598: R_AARCH64_ADR_PREL_PG_HI21 .text+0x7dd4 ffff80001139e59c: 8b0202e3 add x3, x23, x2 return nb->notifier_call(nb, val, &info); ffff80001139e5a0: 91000084 add x4, x4, #0x0 ffff80001139e5a0: R_AARCH64_ADD_ABS_LO12_NC .text+0x7dd4 ffff80001139e5a4: f9000c24 str x4, [x1,#24] ffff80001139e5a8: 9103e061 add x1, x3, #0xf8 ffff80001139e5ac: f9007c61 str x1, [x3,#248] struct netdev_notifier_info info = { ffff80001139e5b0: b9010c7f str wzr, [x3,#268] return nb->notifier_call(nb, val, &info); ffff80001139e5b4: f9000421 str x1, [x1,#8] ffff80001139e5b8: b900103f str wzr, [x1,#16] struct netdev_notifier_info info = { ffff80001139e5bc: 91004061 add x1, x3, #0x10 return nb->notifier_call(nb, val, &info); ffff80001139e5c0: f9000861 str x1, [x3,#16] ffff80001139e5c4: b900247f str wzr, [x3,#36] ffff80001139e5c8: f9000421 str x1, [x1,#8] } ffff80001139e5cc: b900103f str wzr, [x1,#16] ffff80001139e5d0: 91018061 add x1, x3, #0x60 ffff80001139e5d4: f9003061 str x1, [x3,#96] ffff80001139e5d8: b900747f str wzr, [x3,#116] ffff80001139e5dc: f9000421 str x1, [x1,#8] ffff80001139e5e0: b900103f str wzr, [x1,#16] ffff80001139e5e4: f8226ae3 str x3, [x23,x2] ffff80001139e5e8: 91012062 add x2, x3, #0x48 ffff80001139e5ec: f9002862 str x2, [x3,#80] { ffff80001139e5f0: 90000002 adrp x2, ffff80001139e37c ffff80001139e5f0: R_AARCH64_ADR_PREL_PG_HI21 .text+0x4bb4 ffff80001139e5f4: 91000042 add x2, x2, #0x0 ffff80001139e5f4: R_AARCH64_ADD_ABS_LO12_NC .text+0x4bb4 ffff80001139e5f8: 91044061 add x1, x3, #0x110 ffff80001139e5fc: f9006462 str x2, [x3,#200] ffff80001139e600: f9000463 str x3, [x3,#8] ffff80001139e604: f9006863 str x3, [x3,#208] ffff80001139e608: b900e860 str w0, [x3,#232] for_each_netdev(net, dev) { ffff80001139e60c: 91054062 add x2, x3, #0x150 { ffff80001139e610: 91084066 add x6, x3, #0x210 ffff80001139e614: cb030025 sub x5, x1, x3 ffff80001139e618: f9000042 str x2, [x2] for_each_netdev(net, dev) { ffff80001139e61c: f9000442 str x2, [x2,#8] { ffff80001139e620: 8b0200a4 add x4, x5, x2 for_each_netdev(net, dev) { ffff80001139e624: 91006042 add x2, x2, #0x18 ffff80001139e628: b810009f stur wzr, [x4,#-256] ffff80001139e62c: eb06005f cmp x2, x6 ffff80001139e630: 54ffff41 b.ne ffff80001139e618 struct netdev_notifier_info info = { ffff80001139e634: 910002a2 add x2, x21, #0x0 ffff80001139e634: R_AARCH64_ADD_ABS_LO12_NC .data..read_mostly return nb->notifier_call(nb, val, &info); ffff80001139e638: f900103f str xzr, [x1,#32] struct netdev_notifier_info info = { ffff80001139e63c: b9493042 ldr w2, [x2,#2352] return nb->notifier_call(nb, val, &info); ffff80001139e640: 90000001 adrp x1, ffff80001139e37c ffff80001139e640: R_AARCH64_ADR_PREL_PG_HI21 .text+0xd00c ffff80001139e644: 91000021 add x1, x1, #0x0 ffff80001139e644: R_AARCH64_ADD_ABS_LO12_NC .text+0xd00c ffff80001139e648: f9009c61 str x1, [x3,#312] ffff80001139e64c: b9012862 str w2, [x3,#296] ret &= ~NOTIFY_STOP_MASK; ffff80001139e650: 17ffffc5 b ffff80001139e564 return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff80001139e654: 90000000 adrp x0, 0 ffff80001139e654: R_AARCH64_ADR_PREL_PG_HI21 loopback_net_ops ffff80001139e658: 91000000 add x0, x0, #0x0 ffff80001139e658: R_AARCH64_ADD_ABS_LO12_NC loopback_net_ops for_each_netdev_continue_reverse(net, dev) ffff80001139e65c: 91000274 add x20, x19, #0x0 ffff80001139e65c: R_AARCH64_ADD_ABS_LO12_NC .data ffff80001139e660: b900027f str wzr, [x19] ffff80001139e660: R_AARCH64_LDST32_ABS_LO12_NC .data ffff80001139e664: 94000000 bl 0 ffff80001139e664: R_AARCH64_CALL26 register_pernet_device ffff80001139e668: 35fff3e0 cbnz w0, ffff80001139e4e4 ffff80001139e66c: 91012280 add x0, x20, #0x48 ffff80001139e670: 94000000 bl 0 ffff80001139e670: R_AARCH64_CALL26 register_pernet_device call_netdevice_unregister_notifiers(nb, dev); ffff80001139e674: 2a0003f3 mov w19, w0 ffff80001139e678: 35fff360 cbnz w0, ffff80001139e4e4 ffff80001139e67c: 90000001 adrp x1, ffff80001139e37c ffff80001139e67c: R_AARCH64_ADR_PREL_PG_HI21 .text+0x7f78 for_each_netdev_continue_reverse(net, dev) ffff80001139e680: 52800040 mov w0, #0x2 // #2 ffff80001139e684: 91000021 add x1, x1, #0x0 ffff80001139e684: R_AARCH64_ADD_ABS_LO12_NC .text+0x7f78 ffff80001139e688: 94000000 bl 0 ffff80001139e688: R_AARCH64_CALL26 open_softirq ffff80001139e68c: 90000001 adrp x1, ffff80001139e37c ffff80001139e68c: R_AARCH64_ADR_PREL_PG_HI21 .text+0xec64 ffff80001139e690: 52800060 mov w0, #0x3 // #3 } ffff80001139e694: 91000021 add x1, x1, #0x0 ffff80001139e694: R_AARCH64_ADD_ABS_LO12_NC .text+0xec64 ffff80001139e698: 94000000 bl 0 ffff80001139e698: R_AARCH64_CALL26 open_softirq ffff80001139e69c: 90000001 adrp x1, ffff80001139e37c ffff80001139e69c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x228 ffff80001139e6a0: 90000004 adrp x4, ffff80001139e37c ffff80001139e6a0: R_AARCH64_ADR_PREL_PG_HI21 .text+0x89d8 ffff80001139e6a4: 91000021 add x1, x1, #0x0 ffff80001139e6a4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x228 ffff80001139e6a8: 528003c0 mov w0, #0x1e // #30 ffff80001139e6ac: 2a1303e2 mov w2, w19 ffff80001139e6b0: d2800003 mov x3, #0x0 // #0 ffff80001139e6b4: 91000084 add x4, x4, #0x0 ffff80001139e6b4: R_AARCH64_ADD_ABS_LO12_NC .text+0x89d8 if (!(dev->flags & IFF_UP)) ffff80001139e6b8: 2a1303e5 mov w5, w19 ffff80001139e6bc: 94000000 bl 0 <__cpuhp_setup_state> ffff80001139e6bc: R_AARCH64_CALL26 __cpuhp_setup_state struct netdev_notifier_info info = { ffff80001139e6c0: 2a1303e1 mov w1, w19 return nb->notifier_call(nb, val, &info); ffff80001139e6c4: 36f80040 tbz w0, #31, ffff80001139e6cc struct netdev_notifier_info info = { ffff80001139e6c8: d4210000 brk #0x800 return nb->notifier_call(nb, val, &info); ffff80001139e6cc: 2a0103e0 mov w0, w1 ffff80001139e6d0: a94153f3 ldp x19, x20, [sp,#16] ffff80001139e6d4: a9425bf5 ldp x21, x22, [sp,#32] ffff80001139e6d8: a94363f7 ldp x23, x24, [sp,#48] for_each_netdev(net, dev) { ffff80001139e6dc: f94023f9 ldr x25, [sp,#64] ffff80001139e6e0: a8c57bfd ldp x29, x30, [sp],#80 ffff80001139e6e4: d65f03c0 ret Disassembly of section .text.unlikely: ffff80001139e37c : asm(ALTERNATIVE("mrs %0, tpidr_el1", ffff80001139e37c: a9bd7bfd stp x29, x30, [sp,#-48]! } ffff80001139e380: 910003fd mov x29, sp { ffff80001139e384: f9000bf3 str x19, [sp,#16] ffff80001139e388: f90017a1 str x1, [x29,#40] ffff80001139e38c: aa0003f3 mov x19, x0 ffff80001139e390: 94000000 bl ffff80001139e37c ffff80001139e390: R_AARCH64_CALL26 .text ffff80001139e394: f94017a1 ldr x1, [x29,#40] ffff80001139e398: b940bc22 ldr w2, [x1,#188] if (dev->netdev_ops && dev->netdev_ops->ndo_get_iflink) ffff80001139e39c: f9406023 ldr x3, [x1,#192] ffff80001139e3a0: b9402824 ldr w4, [x1,#40] ffff80001139e3a4: 8b020063 add x3, x3, x2 ffff80001139e3a8: 79400865 ldrh w5, [x3,#4] return dev->netdev_ops->ndo_get_iflink(dev); ffff80001139e3ac: 8b130002 add x2, x0, x19 ffff80001139e3b0: 52800021 mov w1, #0x1 // #1 } ffff80001139e3b4: 34000045 cbz w5, ffff80001139e3bc ffff80001139e3b8: 79400c61 ldrh w1, [x3,#6] ffff80001139e3bc: f8736803 ldr x3, [x0,x19] return dev->ifindex; ffff80001139e3c0: 8b040063 add x3, x3, x4 } ffff80001139e3c4: f8336803 str x3, [x0,x19] ffff80001139e3c8: f9400440 ldr x0, [x2,#8] ffff80001139e3cc: 8b212001 add x1, x0, w1, uxth { ffff80001139e3d0: f9000441 str x1, [x2,#8] ffff80001139e3d4: f9400bf3 ldr x19, [sp,#16] ffff80001139e3d8: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139e3dc: d65f03c0 ret ffff80001139e3e0 : ffff80001139e3e0: a9be7bfd stp x29, x30, [sp,#-32]! ffff80001139e3e4: 910003fd mov x29, sp ffff80001139e3e8: f9000bf3 str x19, [sp,#16] return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; ffff80001139e3ec: f9400013 ldr x19, [x0] hlist_for_each_entry(dev, head, index_hlist) ffff80001139e3f0: 94000000 bl ffff80001139e37c ffff80001139e3f0: R_AARCH64_CALL26 .text return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; ffff80001139e3f4: 91002273 add x19, x19, #0x8 hlist_for_each_entry(dev, head, index_hlist) ffff80001139e3f8: 52800021 mov w1, #0x1 // #1 ffff80001139e3fc: 8b130004 add x4, x0, x19 ffff80001139e400: 885f7c83 ldxr w3, [x4] ffff80001139e404: 0b010063 add w3, w3, w1 if (dev->ifindex == ifindex) ffff80001139e408: 88027c83 stxr w2, w3, [x4] ffff80001139e40c: 35ffffa2 cbnz w2, ffff80001139e400 ffff80001139e410: f9400bf3 ldr x19, [sp,#16] hlist_for_each_entry(dev, head, index_hlist) ffff80001139e414: a8c27bfd ldp x29, x30, [sp],#32 ffff80001139e418: d65f03c0 ret ffff80001139e41c <__skb_pull.part.98>: } ffff80001139e41c: d4210000 brk #0x800 ffff80001139e420 : ffff80001139e420: a9bd7bfd stp x29, x30, [sp,#-48]! ffff80001139e424: 910003fd mov x29, sp { ffff80001139e428: a90153f3 stp x19, x20, [sp,#16] ffff80001139e42c: f90013f5 str x21, [sp,#32] ffff80001139e430: aa0003f4 mov x20, x0 ffff80001139e434: aa1e03e0 mov x0, x30 ffff80001139e438: 94000000 bl 0 <_mcount> ffff80001139e438: R_AARCH64_CALL26 _mcount ffff80001139e43c: f9400a93 ldr x19, [x20,#16] ffff80001139e440: 94000000 bl 0 ffff80001139e440: R_AARCH64_CALL26 net_ratelimit return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)]; ffff80001139e444: 34000520 cbz w0, ffff80001139e4e8 ffff80001139e448: b4000193 cbz x19, ffff80001139e478 ffff80001139e44c: f942aa60 ldr x0, [x19,#1360] ffff80001139e450: b4000080 cbz x0, ffff80001139e460 hlist_for_each_entry_rcu(dev, head, index_hlist) ffff80001139e454: 94000000 bl 0 ffff80001139e454: R_AARCH64_CALL26 dev_driver_string ffff80001139e458: aa0003f5 mov x21, x0 ffff80001139e45c: 1400000c b ffff80001139e48c if (dev->ifindex == ifindex) ffff80001139e460: 39400260 ldrb w0, [x19] ffff80001139e464: 34000100 cbz w0, ffff80001139e484 ffff80001139e468: aa1303e0 mov x0, x19 ffff80001139e46c: 94000000 bl ffff80001139e37c ffff80001139e46c: R_AARCH64_CALL26 .text+0x3610 hlist_for_each_entry_rcu(dev, head, index_hlist) ffff80001139e470: aa0003f5 mov x21, x0 } ffff80001139e474: 14000006 b ffff80001139e48c ffff80001139e478: 90000015 adrp x21, ffff80001139e37c ffff80001139e478: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x68 ffff80001139e47c: 910002b5 add x21, x21, #0x0 ffff80001139e47c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x68 { ffff80001139e480: 14000003 b ffff80001139e48c ffff80001139e484: 90000015 adrp x21, ffff80001139e37c ffff80001139e484: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x158 ffff80001139e488: 910002b5 add x21, x21, #0x0 ffff80001139e488: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x158 ffff80001139e48c: 90000000 adrp x0, ffff80001139e37c ffff80001139e48c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x170 ffff80001139e490: 91000000 add x0, x0, #0x0 ffff80001139e490: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x170 ffff80001139e494: aa1403e1 mov x1, x20 if (napi_id < MIN_NAPI_ID) ffff80001139e498: 52800002 mov w2, #0x0 // #0 ffff80001139e49c: 94000000 bl 0 ffff80001139e49c: R_AARCH64_CALL26 skb_dump ffff80001139e4a0: b4000073 cbz x19, ffff80001139e4ac hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) ffff80001139e4a4: 91032262 add x2, x19, #0xc8 ffff80001139e4a8: 14000004 b ffff80001139e4b8 ffff80001139e4ac: 90000002 adrp x2, ffff80001139e37c ffff80001139e4ac: R_AARCH64_ADR_PREL_PG_HI21 .bss ffff80001139e4b0: 91000042 add x2, x2, #0x0 ffff80001139e4b0: R_AARCH64_ADD_ABS_LO12_NC .bss ffff80001139e4b4: 910c4042 add x2, x2, #0x310 ffff80001139e4b8: f9400e83 ldr x3, [x20,#24] if (napi->napi_id == napi_id) ffff80001139e4bc: b4000063 cbz x3, ffff80001139e4c8 ffff80001139e4c0: 9107a063 add x3, x3, #0x1e8 ffff80001139e4c4: 14000004 b ffff80001139e4d4 ffff80001139e4c8: 90000003 adrp x3, ffff80001139e37c ffff80001139e4c8: R_AARCH64_ADR_PREL_PG_HI21 .bss hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node) ffff80001139e4cc: 91000063 add x3, x3, #0x0 ffff80001139e4cc: R_AARCH64_ADD_ABS_LO12_NC .bss return NULL; ffff80001139e4d0: 910c4063 add x3, x3, #0x310 } ffff80001139e4d4: 90000000 adrp x0, ffff80001139e37c ffff80001139e4d4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x178 ffff80001139e4d8: 91000000 add x0, x0, #0x0 ffff80001139e4d8: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x178 ffff80001139e4dc: aa1503e1 mov x1, x21 return napi ? napi->dev : NULL; ffff80001139e4e0: 94000000 bl 0 <__warn_printk> ffff80001139e4e0: R_AARCH64_CALL26 __warn_printk } ffff80001139e4e4: d4210000 brk #0x800 ffff80001139e4e8: a94153f3 ldp x19, x20, [sp,#16] ffff80001139e4ec: f94013f5 ldr x21, [sp,#32] { ffff80001139e4f0: a8c37bfd ldp x29, x30, [sp],#48 ffff80001139e4f4: d65f03c0 ret ffff80001139e4f8 <__netdev_printk>: ffff80001139e4f8: a9bb7bfd stp x29, x30, [sp,#-80]! ffff80001139e4fc: 910003fd mov x29, sp ffff80001139e500: a90153f3 stp x19, x20, [sp,#16] ffff80001139e504: a9025bf5 stp x21, x22, [sp,#32] ffff80001139e508: a90363f7 stp x23, x24, [sp,#48] ffff80001139e50c: aa0003f5 mov x21, x0 ffff80001139e510: aa0103f3 mov x19, x1 ffff80001139e514: aa1e03e0 mov x0, x30 ffff80001139e518: aa0203f4 mov x20, x2 ffff80001139e51c: 94000000 bl 0 <_mcount> ffff80001139e51c: R_AARCH64_CALL26 _mcount } ffff80001139e520: b4000693 cbz x19, ffff80001139e5f0 <__netdev_printk+0xf8> ffff80001139e524: f942aa60 ldr x0, [x19,#1360] ffff80001139e528: b40003e0 cbz x0, ffff80001139e5a4 <__netdev_printk+0xac> { ffff80001139e52c: 394006b7 ldrb w23, [x21,#1] ffff80001139e530: 94000000 bl 0 ffff80001139e530: R_AARCH64_CALL26 dev_driver_string } ffff80001139e534: f942aa76 ldr x22, [x19,#1360] ffff80001139e538: 5100c2f7 sub w23, w23, #0x30 ffff80001139e53c: f9402ad5 ldr x21, [x22,#80] { ffff80001139e540: aa0003f8 mov x24, x0 ffff80001139e544: b5000055 cbnz x21, ffff80001139e54c <__netdev_printk+0x54> ffff80001139e548: f94002d5 ldr x21, [x22] ffff80001139e54c: 39400260 ldrb w0, [x19] ffff80001139e550: 340000a0 cbz w0, ffff80001139e564 <__netdev_printk+0x6c> ffff80001139e554: aa1303e0 mov x0, x19 ffff80001139e558: 94000000 bl ffff80001139e37c ffff80001139e558: R_AARCH64_CALL26 .text+0x3610 ffff80001139e55c: aa0003e5 mov x5, x0 ffff80001139e560: 14000003 b ffff80001139e56c <__netdev_printk+0x74> ffff80001139e564: 90000005 adrp x5, ffff80001139e37c ffff80001139e564: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x158 if (dev->flags & IFF_UP) { ffff80001139e568: 910000a5 add x5, x5, #0x0 ffff80001139e568: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x158 { ffff80001139e56c: aa1303e0 mov x0, x19 struct netdev_notifier_info info = { ffff80001139e570: f90027a5 str x5, [x29,#72] if (dev->flags & IFF_UP) { ffff80001139e574: 94000000 bl ffff80001139e37c ffff80001139e574: R_AARCH64_CALL26 .text+0x189c struct netdev_notifier_info info = { ffff80001139e578: 90000002 adrp x2, ffff80001139e37c ffff80001139e578: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x190 return nb->notifier_call(nb, val, &info); ffff80001139e57c: f94027a5 ldr x5, [x29,#72] ffff80001139e580: aa0003e6 mov x6, x0 ffff80001139e584: aa1603e1 mov x1, x22 struct netdev_notifier_info info = { ffff80001139e588: 2a1703e0 mov w0, w23 return nb->notifier_call(nb, val, &info); ffff80001139e58c: 91000042 add x2, x2, #0x0 ffff80001139e58c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x190 ffff80001139e590: aa1803e3 mov x3, x24 ffff80001139e594: aa1503e4 mov x4, x21 struct netdev_notifier_info info = { ffff80001139e598: aa1403e7 mov x7, x20 ffff80001139e59c: 94000000 bl 0 ffff80001139e59c: R_AARCH64_CALL26 dev_printk_emit return nb->notifier_call(nb, val, &info); ffff80001139e5a0: 14000019 b ffff80001139e604 <__netdev_printk+0x10c> ffff80001139e5a4: 39400260 ldrb w0, [x19] ffff80001139e5a8: 340000a0 cbz w0, ffff80001139e5bc <__netdev_printk+0xc4> ffff80001139e5ac: aa1303e0 mov x0, x19 struct netdev_notifier_info info = { ffff80001139e5b0: 94000000 bl ffff80001139e37c ffff80001139e5b0: R_AARCH64_CALL26 .text+0x3610 return nb->notifier_call(nb, val, &info); ffff80001139e5b4: aa0003e2 mov x2, x0 ffff80001139e5b8: 14000003 b ffff80001139e5c4 <__netdev_printk+0xcc> struct netdev_notifier_info info = { ffff80001139e5bc: 90000002 adrp x2, ffff80001139e37c ffff80001139e5bc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x158 return nb->notifier_call(nb, val, &info); ffff80001139e5c0: 91000042 add x2, x2, #0x0 ffff80001139e5c0: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x158 ffff80001139e5c4: aa1303e0 mov x0, x19 ffff80001139e5c8: f90027a2 str x2, [x29,#72] } ffff80001139e5cc: 94000000 bl ffff80001139e37c ffff80001139e5cc: R_AARCH64_CALL26 .text+0x189c ffff80001139e5d0: aa0003e3 mov x3, x0 ffff80001139e5d4: f94027a2 ldr x2, [x29,#72] ffff80001139e5d8: 90000000 adrp x0, ffff80001139e37c ffff80001139e5d8: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x1a0 ffff80001139e5dc: aa1503e1 mov x1, x21 ffff80001139e5e0: aa1403e4 mov x4, x20 ffff80001139e5e4: 91000000 add x0, x0, #0x0 ffff80001139e5e4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x1a0 ffff80001139e5e8: 94000000 bl 0 ffff80001139e5e8: R_AARCH64_CALL26 printk ffff80001139e5ec: 14000006 b ffff80001139e604 <__netdev_printk+0x10c> { ffff80001139e5f0: 90000000 adrp x0, ffff80001139e37c ffff80001139e5f0: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x1b0 ffff80001139e5f4: 91000000 add x0, x0, #0x0 ffff80001139e5f4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x1b0 ffff80001139e5f8: aa1503e1 mov x1, x21 ffff80001139e5fc: aa1403e2 mov x2, x20 ffff80001139e600: 94000000 bl 0 ffff80001139e600: R_AARCH64_CALL26 printk ffff80001139e604: a94153f3 ldp x19, x20, [sp,#16] ffff80001139e608: a9425bf5 ldp x21, x22, [sp,#32] for_each_netdev(net, dev) { ffff80001139e60c: a94363f7 ldp x23, x24, [sp,#48] { ffff80001139e610: a8c57bfd ldp x29, x30, [sp],#80 ffff80001139e614: d65f03c0 ret ffff80001139e618 : ffff80001139e618: a9b57bfd stp x29, x30, [sp,#-176]! for_each_netdev(net, dev) { ffff80001139e61c: 910003fd mov x29, sp { ffff80001139e620: a90153f3 stp x19, x20, [sp,#16] for_each_netdev(net, dev) { ffff80001139e624: f90013f5 str x21, [sp,#32] ffff80001139e628: aa0003f5 mov x21, x0 ffff80001139e62c: aa1e03e0 mov x0, x30 ffff80001139e630: aa0203f4 mov x20, x2 struct netdev_notifier_info info = { ffff80001139e634: 90000013 adrp x19, 0 <__stack_chk_guard> ffff80001139e634: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard return nb->notifier_call(nb, val, &info); ffff80001139e638: f90047a3 str x3, [x29,#136] struct netdev_notifier_info info = { ffff80001139e63c: f9004ba4 str x4, [x29,#144] return nb->notifier_call(nb, val, &info); ffff80001139e640: f9004fa5 str x5, [x29,#152] ffff80001139e644: f90053a6 str x6, [x29,#160] ffff80001139e648: f90057a7 str x7, [x29,#168] ffff80001139e64c: f9001fa1 str x1, [x29,#56] ret &= ~NOTIFY_STOP_MASK; ffff80001139e650: 94000000 bl 0 <_mcount> ffff80001139e650: R_AARCH64_CALL26 _mcount return ret > NOTIFY_OK ? NOTIFY_OK - ret : 0; ffff80001139e654: f9400263 ldr x3, [x19] ffff80001139e654: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139e658: f9401fa1 ldr x1, [x29,#56] for_each_netdev_continue_reverse(net, dev) ffff80001139e65c: f9003fa3 str x3, [x29,#120] ffff80001139e660: 9102c3a3 add x3, x29, #0xb0 ffff80001139e664: f9002fa3 str x3, [x29,#88] ffff80001139e668: f90033a3 str x3, [x29,#96] ffff80001139e66c: 910203a3 add x3, x29, #0x80 ffff80001139e670: f90037a3 str x3, [x29,#104] call_netdevice_unregister_notifiers(nb, dev); ffff80001139e674: 128004e3 mov w3, #0xffffffd8 // #-40 ffff80001139e678: aa1503e0 mov x0, x21 ffff80001139e67c: b90073a3 str w3, [x29,#112] for_each_netdev_continue_reverse(net, dev) ffff80001139e680: 910123a2 add x2, x29, #0x48 ffff80001139e684: 910163a3 add x3, x29, #0x58 ffff80001139e688: b90077bf str wzr, [x29,#116] ffff80001139e68c: f90027b4 str x20, [x29,#72] ffff80001139e690: f9002ba3 str x3, [x29,#80] } ffff80001139e694: 97ffff99 bl ffff80001139e4f8 <__netdev_printk> ffff80001139e698: f9403fa1 ldr x1, [x29,#120] ffff80001139e69c: f9400260 ldr x0, [x19] ffff80001139e69c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139e6a0: eb00003f cmp x1, x0 ffff80001139e6a4: 54000040 b.eq ffff80001139e6ac ffff80001139e6a8: 94000000 bl 0 <__stack_chk_fail> ffff80001139e6a8: R_AARCH64_CALL26 __stack_chk_fail ffff80001139e6ac: a94153f3 ldp x19, x20, [sp,#16] ffff80001139e6b0: f94013f5 ldr x21, [sp,#32] ffff80001139e6b4: a8cb7bfd ldp x29, x30, [sp],#176 if (!(dev->flags & IFF_UP)) ffff80001139e6b8: d65f03c0 ret ffff80001139e6bc : ffff80001139e6bc: a9b67bfd stp x29, x30, [sp,#-160]! struct netdev_notifier_info info = { ffff80001139e6c0: 910003fd mov x29, sp return nb->notifier_call(nb, val, &info); ffff80001139e6c4: a90153f3 stp x19, x20, [sp,#16] struct netdev_notifier_info info = { ffff80001139e6c8: f90013f5 str x21, [sp,#32] return nb->notifier_call(nb, val, &info); ffff80001139e6cc: aa0003f5 mov x21, x0 ffff80001139e6d0: aa1e03e0 mov x0, x30 ffff80001139e6d4: aa0103f4 mov x20, x1 ffff80001139e6d8: 90000013 adrp x19, 0 <__stack_chk_guard> ffff80001139e6d8: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard for_each_netdev(net, dev) { ffff80001139e6dc: f9003ba2 str x2, [x29,#112] ffff80001139e6e0: f9003fa3 str x3, [x29,#120] ffff80001139e6e4: f90043a4 str x4, [x29,#128] ffff80001139e6e8: f90047a5 str x5, [x29,#136] return 0; ffff80001139e6ec: f9004ba6 str x6, [x29,#144] ffff80001139e6f0: f9004fa7 str x7, [x29,#152] } ffff80001139e6f4: 94000000 bl 0 <_mcount> ffff80001139e6f4: R_AARCH64_CALL26 _mcount { ffff80001139e6f8: f9400263 ldr x3, [x19] ffff80001139e6f8: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139e6fc: 90000000 adrp x0, ffff80001139e37c ffff80001139e6fc: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x1d0 ffff80001139e700: f90037a3 str x3, [x29,#104] ffff80001139e704: 910283a3 add x3, x29, #0xa0 ffff80001139e708: f90027a3 str x3, [x29,#72] ffff80001139e70c: f9002ba3 str x3, [x29,#80] ffff80001139e710: 9101c3a3 add x3, x29, #0x70 ffff80001139e714: f9002fa3 str x3, [x29,#88] ffff80001139e718: 128005e3 mov w3, #0xffffffd0 // #-48 ffff80001139e71c: 91000000 add x0, x0, #0x0 ffff80001139e71c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x1d0 return !list_empty(&ptype_all) || !list_empty(&dev->ptype_all); ffff80001139e720: aa1503e1 mov x1, x21 ffff80001139e724: b90063a3 str w3, [x29,#96] ffff80001139e728: 9100e3a2 add x2, x29, #0x38 } ffff80001139e72c: 910123a3 add x3, x29, #0x48 ffff80001139e730: b90067bf str wzr, [x29,#100] ffff80001139e734: f9001fb4 str x20, [x29,#56] ffff80001139e738: f90023a3 str x3, [x29,#64] return !list_empty(&ptype_all) || !list_empty(&dev->ptype_all); ffff80001139e73c: 97ffff6f bl ffff80001139e4f8 <__netdev_printk> ffff80001139e740: f94037a1 ldr x1, [x29,#104] } ffff80001139e744: f9400260 ldr x0, [x19] ffff80001139e744: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139e748: eb00003f cmp x1, x0 ffff80001139e74c: 54000040 b.eq ffff80001139e754 { ffff80001139e750: 94000000 bl 0 <__stack_chk_fail> ffff80001139e750: R_AARCH64_CALL26 __stack_chk_fail ffff80001139e754: a94153f3 ldp x19, x20, [sp,#16] ffff80001139e758: f94013f5 ldr x21, [sp,#32] ffff80001139e75c: a8ca7bfd ldp x29, x30, [sp],#160 ffff80001139e760: d65f03c0 ret ffff80001139e764 : ffff80001139e764: a9b67bfd stp x29, x30, [sp,#-160]! ffff80001139e768: 910003fd mov x29, sp ffff80001139e76c: a90153f3 stp x19, x20, [sp,#16] ffff80001139e770: f90013f5 str x21, [sp,#32] ffff80001139e774: aa0003f5 mov x21, x0 ffff80001139e778: aa1e03e0 mov x0, x30 if (sb_dev->num_tc >= 0 || tc >= dev->num_tc) ffff80001139e77c: aa0103f4 mov x20, x1 ffff80001139e780: 90000013 adrp x19, 0 <__stack_chk_guard> ffff80001139e780: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff80001139e784: f9003ba2 str x2, [x29,#112] ffff80001139e788: f9003fa3 str x3, [x29,#120] ffff80001139e78c: f90043a4 str x4, [x29,#128] ffff80001139e790: f90047a5 str x5, [x29,#136] if ((offset + count) > dev->real_num_tx_queues) ffff80001139e794: f9004ba6 str x6, [x29,#144] ffff80001139e798: f9004fa7 str x7, [x29,#152] ffff80001139e79c: 94000000 bl 0 <_mcount> ffff80001139e79c: R_AARCH64_CALL26 _mcount ffff80001139e7a0: f9400263 ldr x3, [x19] ffff80001139e7a0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139e7a4: 90000000 adrp x0, ffff80001139e37c ffff80001139e7a4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x1d8 while (count--) ffff80001139e7a8: f90037a3 str x3, [x29,#104] sb_dev->tc_to_txq[tc].count = count; ffff80001139e7ac: 910283a3 add x3, x29, #0xa0 sb_dev->tc_to_txq[tc].offset = offset; ffff80001139e7b0: f90027a3 str x3, [x29,#72] while (count--) ffff80001139e7b4: f9002ba3 str x3, [x29,#80] return &dev->_tx[index]; ffff80001139e7b8: 9101c3a3 add x3, x29, #0x70 ffff80001139e7bc: f9002fa3 str x3, [x29,#88] ffff80001139e7c0: 128005e3 mov w3, #0xffffffd0 // #-48 netdev_get_tx_queue(dev, count + offset)->sb_dev = sb_dev; ffff80001139e7c4: 91000000 add x0, x0, #0x0 ffff80001139e7c4: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x1d8 ffff80001139e7c8: aa1503e1 mov x1, x21 while (count--) ffff80001139e7cc: b90063a3 str w3, [x29,#96] netdev_get_tx_queue(dev, count + offset)->sb_dev = sb_dev; ffff80001139e7d0: 9100e3a2 add x2, x29, #0x38 while (count--) ffff80001139e7d4: 910123a3 add x3, x29, #0x48 netdev_get_tx_queue(dev, count + offset)->sb_dev = sb_dev; ffff80001139e7d8: b90067bf str wzr, [x29,#100] while (count--) ffff80001139e7dc: f9001fb4 str x20, [x29,#56] ffff80001139e7e0: f90023a3 str x3, [x29,#64] } ffff80001139e7e4: 97ffff45 bl ffff80001139e4f8 <__netdev_printk> ffff80001139e7e8: f94037a1 ldr x1, [x29,#104] return 0; ffff80001139e7ec: f9400260 ldr x0, [x19] ffff80001139e7ec: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard } ffff80001139e7f0: eb00003f cmp x1, x0 ffff80001139e7f4: 54000040 b.eq ffff80001139e7fc ffff80001139e7f8: 94000000 bl 0 <__stack_chk_fail> ffff80001139e7f8: R_AARCH64_CALL26 __stack_chk_fail ffff80001139e7fc: a94153f3 ldp x19, x20, [sp,#16] return -EINVAL; ffff80001139e800: f94013f5 ldr x21, [sp,#32] } ffff80001139e804: a8ca7bfd ldp x29, x30, [sp],#160 ffff80001139e808: d65f03c0 ret ffff80001139e80c : { ffff80001139e80c: a9b67bfd stp x29, x30, [sp,#-160]! ffff80001139e810: 910003fd mov x29, sp ffff80001139e814: a90153f3 stp x19, x20, [sp,#16] ffff80001139e818: f90013f5 str x21, [sp,#32] ffff80001139e81c: aa0003f5 mov x21, x0 ffff80001139e820: aa1e03e0 mov x0, x30 ffff80001139e824: aa0103f4 mov x20, x1 if (netif_is_multiqueue(dev)) ffff80001139e828: 90000013 adrp x19, 0 <__stack_chk_guard> ffff80001139e828: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff80001139e82c: f9003ba2 str x2, [x29,#112] ffff80001139e830: f9003fa3 str x3, [x29,#120] if (channel > S16_MAX) ffff80001139e834: f90043a4 str x4, [x29,#128] dev->num_tc = -channel; ffff80001139e838: f90047a5 str x5, [x29,#136] ffff80001139e83c: f9004ba6 str x6, [x29,#144] return 0; ffff80001139e840: f9004fa7 str x7, [x29,#152] } ffff80001139e844: 94000000 bl 0 <_mcount> ffff80001139e844: R_AARCH64_CALL26 _mcount ffff80001139e848: f9400263 ldr x3, [x19] ffff80001139e848: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139e84c: 90000000 adrp x0, ffff80001139e37c ffff80001139e84c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x1e0 return -ENODEV; ffff80001139e850: f90037a3 str x3, [x29,#104] } ffff80001139e854: 910283a3 add x3, x29, #0xa0 ffff80001139e858: f90027a3 str x3, [x29,#72] ffff80001139e85c: f9002ba3 str x3, [x29,#80] return -EINVAL; ffff80001139e860: 9101c3a3 add x3, x29, #0x70 ffff80001139e864: f9002fa3 str x3, [x29,#88] { ffff80001139e868: 128005e3 mov w3, #0xffffffd0 // #-48 ffff80001139e86c: 91000000 add x0, x0, #0x0 ffff80001139e86c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x1e0 ffff80001139e870: aa1503e1 mov x1, x21 ffff80001139e874: b90063a3 str w3, [x29,#96] ffff80001139e878: 9100e3a2 add x2, x29, #0x38 1 : min_t(int, DEFAULT_MAX_NUM_RSS_QUEUES, num_online_cpus()); ffff80001139e87c: 910123a3 add x3, x29, #0x48 ffff80001139e880: b90067bf str wzr, [x29,#100] ffff80001139e884: f9001fb4 str x20, [x29,#56] ffff80001139e888: f90023a3 str x3, [x29,#64] ffff80001139e88c: 97ffff1b bl ffff80001139e4f8 <__netdev_printk> ffff80001139e890: f94037a1 ldr x1, [x29,#104] ffff80001139e894: f9400260 ldr x0, [x19] ffff80001139e894: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139e898: eb00003f cmp x1, x0 ffff80001139e89c: 54000040 b.eq ffff80001139e8a4 } ffff80001139e8a0: 94000000 bl 0 <__stack_chk_fail> ffff80001139e8a0: R_AARCH64_CALL26 __stack_chk_fail ffff80001139e8a4: a94153f3 ldp x19, x20, [sp,#16] { ffff80001139e8a8: f94013f5 ldr x21, [sp,#32] ffff80001139e8ac: a8ca7bfd ldp x29, x30, [sp],#160 ffff80001139e8b0: d65f03c0 ret ffff80001139e8b4 : ffff80001139e8b4: a9b67bfd stp x29, x30, [sp,#-160]! ffff80001139e8b8: 910003fd mov x29, sp } ffff80001139e8bc: a90153f3 stp x19, x20, [sp,#16] ffff80001139e8c0: f90013f5 str x21, [sp,#32] ffff80001139e8c4: aa0003f5 mov x21, x0 ffff80001139e8c8: aa1e03e0 mov x0, x30 { ffff80001139e8cc: aa0103f4 mov x20, x1 ffff80001139e8d0: 90000013 adrp x19, 0 <__stack_chk_guard> ffff80001139e8d0: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff80001139e8d4: f9003ba2 str x2, [x29,#112] ffff80001139e8d8: f9003fa3 str x3, [x29,#120] } ffff80001139e8dc: f90043a4 str x4, [x29,#128] ffff80001139e8e0: f90047a5 str x5, [x29,#136] ffff80001139e8e4: f9004ba6 str x6, [x29,#144] { ffff80001139e8e8: f9004fa7 str x7, [x29,#152] ffff80001139e8ec: 94000000 bl 0 <_mcount> ffff80001139e8ec: R_AARCH64_CALL26 _mcount ffff80001139e8f0: f9400263 ldr x3, [x19] ffff80001139e8f0: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139e8f4: 90000000 adrp x0, ffff80001139e37c ffff80001139e8f4: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x1e8 ffff80001139e8f8: f90037a3 str x3, [x29,#104] ffff80001139e8fc: 910283a3 add x3, x29, #0xa0 ffff80001139e900: f90027a3 str x3, [x29,#72] ffff80001139e904: f9002ba3 str x3, [x29,#80] ffff80001139e908: 9101c3a3 add x3, x29, #0x70 ffff80001139e90c: f9002fa3 str x3, [x29,#88] list_for_each_entry_rcu(ptype, offload_head, list) { ffff80001139e910: 128005e3 mov w3, #0xffffffd0 // #-48 ffff80001139e914: 91000000 add x0, x0, #0x0 ffff80001139e914: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x1e8 ffff80001139e918: aa1503e1 mov x1, x21 if (ptype->type != type || !ptype->callbacks.gro_receive) ffff80001139e91c: b90063a3 str w3, [x29,#96] ffff80001139e920: 9100e3a2 add x2, x29, #0x38 ffff80001139e924: 910123a3 add x3, x29, #0x48 ffff80001139e928: b90067bf str wzr, [x29,#100] list_for_each_entry_rcu(ptype, offload_head, list) { ffff80001139e92c: f9001fb4 str x20, [x29,#56] ffff80001139e930: f90023a3 str x3, [x29,#64] ffff80001139e934: 97fffef1 bl ffff80001139e4f8 <__netdev_printk> return NULL; ffff80001139e938: f94037a1 ldr x1, [x29,#104] } ffff80001139e93c: f9400260 ldr x0, [x19] ffff80001139e93c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139e940: eb00003f cmp x1, x0 ffff80001139e944: 54000040 b.eq ffff80001139e94c if (ptype->type != type || !ptype->callbacks.gro_receive) ffff80001139e948: 94000000 bl 0 <__stack_chk_fail> ffff80001139e948: R_AARCH64_CALL26 __stack_chk_fail ffff80001139e94c: a94153f3 ldp x19, x20, [sp,#16] } ffff80001139e950: f94013f5 ldr x21, [sp,#32] ffff80001139e954: a8ca7bfd ldp x29, x30, [sp],#160 ffff80001139e958: d65f03c0 ret ffff80001139e95c : { ffff80001139e95c: a9b67bfd stp x29, x30, [sp,#-160]! ffff80001139e960: 910003fd mov x29, sp ffff80001139e964: a90153f3 stp x19, x20, [sp,#16] ffff80001139e968: f90013f5 str x21, [sp,#32] ffff80001139e96c: aa0003f5 mov x21, x0 ffff80001139e970: aa1e03e0 mov x0, x30 ffff80001139e974: aa0103f4 mov x20, x1 ffff80001139e978: 90000013 adrp x19, 0 <__stack_chk_guard> ffff80001139e978: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff80001139e97c: f9003ba2 str x2, [x29,#112] ffff80001139e980: f9003fa3 str x3, [x29,#120] list_for_each_entry_rcu(ptype, offload_head, list) { ffff80001139e984: f90043a4 str x4, [x29,#128] ffff80001139e988: f90047a5 str x5, [x29,#136] ffff80001139e98c: f9004ba6 str x6, [x29,#144] if (ptype->type != type || !ptype->callbacks.gro_complete) ffff80001139e990: f9004fa7 str x7, [x29,#152] ffff80001139e994: 94000000 bl 0 <_mcount> ffff80001139e994: R_AARCH64_CALL26 _mcount ffff80001139e998: f9400263 ldr x3, [x19] ffff80001139e998: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139e99c: 90000000 adrp x0, ffff80001139e37c ffff80001139e99c: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x170 list_for_each_entry_rcu(ptype, offload_head, list) { ffff80001139e9a0: f90037a3 str x3, [x29,#104] ffff80001139e9a4: 910283a3 add x3, x29, #0xa0 ffff80001139e9a8: f90027a3 str x3, [x29,#72] return NULL; ffff80001139e9ac: f9002ba3 str x3, [x29,#80] } ffff80001139e9b0: 9101c3a3 add x3, x29, #0x70 ffff80001139e9b4: f9002fa3 str x3, [x29,#88] ffff80001139e9b8: 128005e3 mov w3, #0xffffffd0 // #-48 if (ptype->type != type || !ptype->callbacks.gro_complete) ffff80001139e9bc: 91000000 add x0, x0, #0x0 ffff80001139e9bc: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x170 ffff80001139e9c0: aa1503e1 mov x1, x21 } ffff80001139e9c4: b90063a3 str w3, [x29,#96] ffff80001139e9c8: 9100e3a2 add x2, x29, #0x38 ffff80001139e9cc: 910123a3 add x3, x29, #0x48 { ffff80001139e9d0: b90067bf str wzr, [x29,#100] ffff80001139e9d4: f9001fb4 str x20, [x29,#56] ffff80001139e9d8: f90023a3 str x3, [x29,#64] ffff80001139e9dc: 97fffec7 bl ffff80001139e4f8 <__netdev_printk> ffff80001139e9e0: f94037a1 ldr x1, [x29,#104] ffff80001139e9e4: f9400260 ldr x0, [x19] ffff80001139e9e4: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139e9e8: eb00003f cmp x1, x0 return upper_dev == dev; ffff80001139e9ec: 54000040 b.eq ffff80001139e9f4 ffff80001139e9f0: 94000000 bl 0 <__stack_chk_fail> ffff80001139e9f0: R_AARCH64_CALL26 __stack_chk_fail } ffff80001139e9f4: a94153f3 ldp x19, x20, [sp,#16] ffff80001139e9f8: f94013f5 ldr x21, [sp,#32] ffff80001139e9fc: a8ca7bfd ldp x29, x30, [sp],#160 ffff80001139ea00: d65f03c0 ret ffff80001139ea04 : { ffff80001139ea04: a9b67bfd stp x29, x30, [sp,#-160]! ffff80001139ea08: 910003fd mov x29, sp ffff80001139ea0c: a90153f3 stp x19, x20, [sp,#16] ffff80001139ea10: f90013f5 str x21, [sp,#32] ffff80001139ea14: aa0003f5 mov x21, x0 ffff80001139ea18: aa1e03e0 mov x0, x30 } ffff80001139ea1c: aa0103f4 mov x20, x1 ffff80001139ea20: 90000013 adrp x19, 0 <__stack_chk_guard> ffff80001139ea20: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard ffff80001139ea24: f9003ba2 str x2, [x29,#112] ffff80001139ea28: f9003fa3 str x3, [x29,#120] { ffff80001139ea2c: f90043a4 str x4, [x29,#128] ffff80001139ea30: f90047a5 str x5, [x29,#136] ffff80001139ea34: f9004ba6 str x6, [x29,#144] ffff80001139ea38: f9004fa7 str x7, [x29,#152] ffff80001139ea3c: 94000000 bl 0 <_mcount> ffff80001139ea3c: R_AARCH64_CALL26 _mcount ffff80001139ea40: f9400263 ldr x3, [x19] ffff80001139ea40: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139ea44: 90000000 adrp x0, ffff80001139e37c ffff80001139ea44: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x1f0 upper = list_entry_rcu((*iter)->next, struct netdev_adjacent, list); ffff80001139ea48: f90037a3 str x3, [x29,#104] if (&upper->list == &dev->adj_list.upper) ffff80001139ea4c: 910283a3 add x3, x29, #0xa0 upper = list_entry_rcu((*iter)->next, struct netdev_adjacent, list); ffff80001139ea50: f90027a3 str x3, [x29,#72] ffff80001139ea54: f9002ba3 str x3, [x29,#80] if (&upper->list == &dev->adj_list.upper) ffff80001139ea58: 9101c3a3 add x3, x29, #0x70 ffff80001139ea5c: f9002fa3 str x3, [x29,#88] *iter = &upper->list; ffff80001139ea60: 128005e3 mov w3, #0xffffffd0 // #-48 return upper->dev; ffff80001139ea64: 91000000 add x0, x0, #0x0 ffff80001139ea64: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x1f0 } ffff80001139ea68: aa1503e1 mov x1, x21 ffff80001139ea6c: b90063a3 str w3, [x29,#96] ffff80001139ea70: 9100e3a2 add x2, x29, #0x38 return NULL; ffff80001139ea74: 910123a3 add x3, x29, #0x48 ffff80001139ea78: b90067bf str wzr, [x29,#100] { ffff80001139ea7c: f9001fb4 str x20, [x29,#56] ffff80001139ea80: f90023a3 str x3, [x29,#64] ffff80001139ea84: 97fffe9d bl ffff80001139e4f8 <__netdev_printk> ffff80001139ea88: f94037a1 ldr x1, [x29,#104] ffff80001139ea8c: f9400260 ldr x0, [x19] ffff80001139ea8c: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139ea90: eb00003f cmp x1, x0 ffff80001139ea94: 54000040 b.eq ffff80001139ea9c ffff80001139ea98: 94000000 bl 0 <__stack_chk_fail> ffff80001139ea98: R_AARCH64_CALL26 __stack_chk_fail ffff80001139ea9c: a94153f3 ldp x19, x20, [sp,#16] ffff80001139eaa0: f94013f5 ldr x21, [sp,#32] ffff80001139eaa4: a8ca7bfd ldp x29, x30, [sp],#160 ffff80001139eaa8: d65f03c0 ret ffff80001139eaac : ffff80001139eaac: a9b67bfd stp x29, x30, [sp,#-160]! iter = &dev->adj_list.upper; ffff80001139eab0: 910003fd mov x29, sp { ffff80001139eab4: a90153f3 stp x19, x20, [sp,#16] iter = &dev->adj_list.upper; ffff80001139eab8: f90013f5 str x21, [sp,#32] now = dev; ffff80001139eabc: aa0003f5 mov x21, x0 int ret, cur = 0; ffff80001139eac0: aa1e03e0 mov x0, x30 niter = iter_stack[cur]; ffff80001139eac4: aa0103f4 mov x20, x1 upper = list_entry((*iter)->next, struct netdev_adjacent, list); ffff80001139eac8: 90000013 adrp x19, 0 <__stack_chk_guard> ffff80001139eac8: R_AARCH64_ADR_PREL_PG_HI21 __stack_chk_guard if (&upper->list == &dev->adj_list.upper) ffff80001139eacc: f9003ba2 str x2, [x29,#112] ffff80001139ead0: f9003fa3 str x3, [x29,#120] ffff80001139ead4: f90043a4 str x4, [x29,#128] return upper->dev; ffff80001139ead8: f90047a5 str x5, [x29,#136] *ignore = upper->ignore; ffff80001139eadc: f9004ba6 str x6, [x29,#144] if (!udev) ffff80001139eae0: f9004fa7 str x7, [x29,#152] if (ignore) ffff80001139eae4: 94000000 bl 0 <_mcount> ffff80001139eae4: R_AARCH64_CALL26 _mcount dev_stack[cur] = now; ffff80001139eae8: f9400263 ldr x3, [x19] ffff80001139eae8: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139eaec: 90000000 adrp x0, ffff80001139e37c ffff80001139eaec: R_AARCH64_ADR_PREL_PG_HI21 .rodata.str1.8+0x1f8 iter_stack[cur++] = iter; ffff80001139eaf0: f90037a3 str x3, [x29,#104] niter = &udev->adj_list.upper; ffff80001139eaf4: 910283a3 add x3, x29, #0xa0 iter_stack[cur++] = iter; ffff80001139eaf8: f90027a3 str x3, [x29,#72] return upper->dev; ffff80001139eafc: f9002ba3 str x3, [x29,#80] if (now != dev) { ffff80001139eb00: 9101c3a3 add x3, x29, #0x70 ffff80001139eb04: f9002fa3 str x3, [x29,#88] ret = fn(now, data); ffff80001139eb08: 128005e3 mov w3, #0xffffffd0 // #-48 ffff80001139eb0c: 91000000 add x0, x0, #0x0 ffff80001139eb0c: R_AARCH64_ADD_ABS_LO12_NC .rodata.str1.8+0x1f8 ffff80001139eb10: aa1503e1 mov x1, x21 if (ret) ffff80001139eb14: b90063a3 str w3, [x29,#96] upper = list_entry((*iter)->next, struct netdev_adjacent, list); ffff80001139eb18: 9100e3a2 add x2, x29, #0x38 ffff80001139eb1c: 910123a3 add x3, x29, #0x48 if (&upper->list == &dev->adj_list.upper) ffff80001139eb20: b90067bf str wzr, [x29,#100] ffff80001139eb24: f9001fb4 str x20, [x29,#56] ffff80001139eb28: f90023a3 str x3, [x29,#64] if (!cur) ffff80001139eb2c: 97fffe73 bl ffff80001139e4f8 <__netdev_printk> next = dev_stack[--cur]; ffff80001139eb30: f94037a1 ldr x1, [x29,#104] ffff80001139eb34: f9400260 ldr x0, [x19] ffff80001139eb34: R_AARCH64_LDST64_ABS_LO12_NC __stack_chk_guard ffff80001139eb38: eb00003f cmp x1, x0 niter = iter_stack[cur]; ffff80001139eb3c: 54000040 b.eq ffff80001139eb44 ffff80001139eb40: 94000000 bl 0 <__stack_chk_fail> ffff80001139eb40: R_AARCH64_CALL26 __stack_chk_fail return 0; ffff80001139eb44: a94153f3 ldp x19, x20, [sp,#16] } ffff80001139eb48: f94013f5 ldr x21, [sp,#32] ffff80001139eb4c: a8ca7bfd ldp x29, x30, [sp],#160 ffff80001139eb50: d65f03c0 ret