diff -u linux-azure-5.13-5.13.0/MAINTAINERS linux-azure-5.13-5.13.0/MAINTAINERS --- linux-azure-5.13-5.13.0/MAINTAINERS +++ linux-azure-5.13-5.13.0/MAINTAINERS @@ -3052,6 +3052,19 @@ F: kernel/audit* F: lib/*audit.c +AUFS (advanced multi layered unification filesystem) FILESYSTEM +M: "J. R. Okajima" +L: aufs-users@lists.sourceforge.net (members only) +L: linux-unionfs@vger.kernel.org +S: Supported +W: http://aufs.sourceforge.net +T: git://github.com/sfjro/aufs4-linux.git +F: Documentation/ABI/testing/debugfs-aufs +F: Documentation/ABI/testing/sysfs-aufs +F: Documentation/filesystems/aufs/ +F: fs/aufs/ +F: include/uapi/linux/aufs_type.h + AUXILIARY DISPLAY DRIVERS M: Miguel Ojeda S: Maintained diff -u linux-azure-5.13-5.13.0/debian.azure-5.13/abi/abiname linux-azure-5.13-5.13.0/debian.azure-5.13/abi/abiname --- linux-azure-5.13-5.13.0/debian.azure-5.13/abi/abiname +++ linux-azure-5.13-5.13.0/debian.azure-5.13/abi/abiname @@ -1 +1 @@ -1008 +1009 diff -u linux-azure-5.13-5.13.0/debian.azure-5.13/abi/amd64/azure linux-azure-5.13-5.13.0/debian.azure-5.13/abi/amd64/azure --- linux-azure-5.13-5.13.0/debian.azure-5.13/abi/amd64/azure +++ linux-azure-5.13-5.13.0/debian.azure-5.13/abi/amd64/azure @@ -11,7 +11,7 @@ EXPORT_SYMBOL arch/x86/crypto/poly1305-x86_64 0xd9ec23eb poly1305_update_arch EXPORT_SYMBOL arch/x86/crypto/poly1305-x86_64 0xe1df0e1b poly1305_init_arch EXPORT_SYMBOL arch/x86/crypto/poly1305-x86_64 0xfaeb41b2 poly1305_final_arch -EXPORT_SYMBOL arch/x86/kvm/kvm 0x75bdc65f kvm_cpu_has_pending_timer +EXPORT_SYMBOL arch/x86/kvm/kvm 0x2357018e kvm_cpu_has_pending_timer EXPORT_SYMBOL crypto/blake2b_generic 0x32e24c8a blake2b_compress_generic EXPORT_SYMBOL crypto/ecc 0x16e410ff vli_from_be64 EXPORT_SYMBOL crypto/ecc 0x188a1647 ecc_is_pubkey_valid_full @@ -50,8 +50,8 @@ EXPORT_SYMBOL drivers/acpi/video 0x7cc484a5 acpi_video_handles_brightness_key_presses EXPORT_SYMBOL drivers/acpi/video 0x8826c13b acpi_video_register EXPORT_SYMBOL drivers/acpi/video 0xe92ca535 acpi_video_set_dmi_backlight_type -EXPORT_SYMBOL drivers/atm/suni 0xa9e0669b suni_init -EXPORT_SYMBOL drivers/atm/uPD98402 0x9089dbde uPD98402_init +EXPORT_SYMBOL drivers/atm/suni 0xccd082a6 suni_init +EXPORT_SYMBOL drivers/atm/uPD98402 0xa5daa307 uPD98402_init EXPORT_SYMBOL drivers/bcma/bcma 0x95fe51df bcma_core_dma_translation EXPORT_SYMBOL drivers/bcma/bcma 0xb803addd bcma_core_irq EXPORT_SYMBOL drivers/block/drbd/drbd 0x127a5901 drbd_set_st_err_str @@ -869,23 +869,23 @@ EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfcbeeef2 drm_scdc_read EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xfe12bcb9 drm_dsc_compute_rc_parameters EXPORT_SYMBOL drivers/gpu/drm/drm_kms_helper 0xffbe9418 drm_atomic_helper_commit_modeset_disables -EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x2034c5a4 mipi_dbi_dev_init_with_formats -EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x3b2fc553 mipi_dbi_spi_transfer +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x19e861c3 mipi_dbi_enable_flush +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x2317e67b mipi_dbi_poweron_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x2765e6a1 mipi_dbi_dev_init +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x37a7b9c7 mipi_dbi_poweron_conditional_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x383aef98 mipi_dbi_command_buf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x43e1d09f mipi_dbi_spi_init EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x489b22a1 mipi_dbi_pipe_update EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x4c20c1aa mipi_dbi_debugfs_init -EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x6289d121 mipi_dbi_command_stackbuf -EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x6343b63c mipi_dbi_poweron_conditional_reset -EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x63648a8e mipi_dbi_command_buf -EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x6d11826f mipi_dbi_spi_init -EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x774e71cd mipi_dbi_command_read -EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x7d53815c mipi_dbi_spi_cmd_max_speed -EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x832839c7 mipi_dbi_display_is_on +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x5de29ce9 mipi_dbi_hw_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x623e2a3c mipi_dbi_command_read EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x87c9de9d mipi_dbi_buf_copy -EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x8fb5a0e9 mipi_dbi_dev_init -EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x9c96f55a mipi_dbi_hw_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0x9fa29338 mipi_dbi_spi_transfer EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xb075033f mipi_dbi_pipe_disable -EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xbb9f32b2 mipi_dbi_enable_flush -EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xf1a5a13d mipi_dbi_poweron_reset +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xc1d848c7 mipi_dbi_spi_cmd_max_speed +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xe822d104 mipi_dbi_command_stackbuf +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xf9636092 mipi_dbi_display_is_on +EXPORT_SYMBOL drivers/gpu/drm/drm_mipi_dbi 0xfefa4a78 mipi_dbi_dev_init_with_formats EXPORT_SYMBOL drivers/gpu/drm/drm_panel_orientation_quirks 0x2e439142 drm_get_panel_orientation_quirk EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0x272ddec6 drm_gem_ttm_mmap EXPORT_SYMBOL drivers/gpu/drm/drm_ttm_helper 0x641a4f28 drm_gem_ttm_print_info @@ -1074,345 +1074,346 @@ EXPORT_SYMBOL drivers/i2c/i2c-core 0xf7dc3119 i2c_del_driver EXPORT_SYMBOL drivers/i2c/i2c-core 0xf8d4d362 i2c_transfer_buffer_flags EXPORT_SYMBOL drivers/i2c/i2c-core 0xfcab3c0f i2c_verify_adapter -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x00d448aa ib_destroy_cm_id -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x09de0783 ib_send_cm_drep -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x27017898 ib_send_cm_sidr_req -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x31825f51 ib_create_cm_id -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x48e58cc6 ib_cm_notify -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x62c4971f ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x10f9a2d2 ib_send_cm_dreq +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x169fd3b9 ib_send_cm_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x29389e06 ib_cm_notify +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x33c4c8ab ib_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x3850d30b ib_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x55864315 ib_send_cm_drep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x641dfdc2 ib_send_cm_rtu EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x69824a14 ibcm_reject_msg -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x78c6034b ib_send_cm_rep -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xa5c038bb ib_send_cm_rtu -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb5252269 ib_cm_insert_listen -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xbd0cb25d ib_cm_listen -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc225d8f7 ib_send_cm_req -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc2f18533 ib_send_cm_sidr_rep -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcee8a657 ib_send_cm_dreq -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfc51964a ib_cm_init_qp_attr -EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xfdf0b013 ib_send_cm_rej -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x01b1e672 rdma_read_gid_hw_context -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0b5ecfba rdma_create_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0x898e56bc ib_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xacebcf39 ib_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xb222ea17 ib_send_cm_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xc6e68050 ib_send_cm_mra +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xcb0c5e6a ib_send_cm_sidr_rep +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xe9999763 ib_send_cm_sidr_req +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xed15ef4d ib_send_cm_rej +EXPORT_SYMBOL drivers/infiniband/core/ib_cm 0xf7eef4b1 ib_cm_insert_listen +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x01202391 rdma_rw_ctx_destroy_signature +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x016a6e1d ib_free_recv_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x08da8920 ibdev_emerg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x09891938 ib_modify_qp_with_udata +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0a956e83 __ib_alloc_cq EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0c86f5cb ib_sa_register_client -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0cd97dee rdma_nl_unicast -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0d54703e ib_register_client -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x0f4209ee rdma_user_mmap_entry_insert -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1466f3f2 rdma_move_ah_attr -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x15bf9117 rdma_translate_ip -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1795e45a ibdev_warn -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x17d6e765 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x11a586a2 ib_mad_kernel_rmpp_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1282824d ib_get_device_fw_str +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x158d966f rdma_move_grh_sgid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x163488bd ib_check_mr_status +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x16f8b2e0 rdma_nl_put_driver_string EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x184621a4 ib_get_rdma_header_version -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x189f807c ibdev_err -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x18cfc503 ibdev_alert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x18c98e6e ib_get_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x19bd1349 rdma_nl_put_driver_u64_hex EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b037462 __rdma_block_iter_start -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1be86041 ib_modify_device -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1e8d4a50 ib_attach_mcast -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1eb3ee3a ib_destroy_cq_user -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1eff7b0c rdma_rw_mr_factor -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x20bc9d59 _ib_alloc_device -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2193c274 ib_drain_sq -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x223b9503 ib_find_cached_pkey -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22a4dc47 ib_cancel_mad -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22c6eea7 ib_modify_wq -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f2da09 __ib_alloc_cq_any +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1b15604e ib_drain_rq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1c7a07d6 ib_sa_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1d1f284d ib_unregister_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1df28c95 ib_cq_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x1ebb7c39 ib_query_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2162b54f ib_port_register_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2173d6fe roce_gid_type_mask_support +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2251db40 ib_dealloc_device EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x22f3cf93 ib_pack -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x25c2dce3 rdma_nl_stat_hwcounter_entry -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26052b20 ib_set_client_data -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26287317 ib_device_put -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x281e6810 rdma_hold_gid_attr -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2866fc92 ib_alloc_xrcd_user -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x28d4c6b9 ib_sa_guid_info_rec_query -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2a16a996 rdma_nl_put_driver_u32 -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d18179c ib_rdmacg_uncharge -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d1838f2 ib_unregister_mad_agent -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2d37177e rdma_copy_src_l2_addr -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2ec9d321 rdma_restrack_get_byid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2408b584 rdma_hold_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x243a9130 ib_find_exact_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24732f65 rdma_destroy_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x24763733 rdma_user_mmap_entry_remove +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x26144e91 ib_query_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x27b2ca7d rdma_rw_ctx_wrs +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2c167ead rdma_copy_ah_attr EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x2fc70b9e ib_get_gids_from_rdma_hdr EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x305e5701 rdma_addr_size_kss -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x30fd07e2 rdma_nl_unicast_wait -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x32819dd7 ib_find_pkey -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33107424 roce_gid_type_mask_support -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x356f37f6 ib_drain_qp -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x373c5d13 ib_sa_path_rec_get -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3777b1a4 rdma_restrack_parent_name -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3889a056 rdma_user_mmap_entry_insert_range -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3954c387 ib_get_device_fw_str -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x39f0a28b ib_query_qp -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3b6921db rdma_nl_put_driver_u32_hex -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3eb3536f ib_set_vf_guid -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3f5c9a18 ib_free_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x31207f9f rdma_replace_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3286e453 ib_dealloc_xrcd_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x328a7782 rdma_nl_stat_hwcounter_entry +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x33053e2b rdma_restrack_add +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x331a3a76 rdma_rw_ctx_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3431e6fd rdma_create_user_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3472ec3a ib_device_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x352987df rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x35da45c9 rdma_user_mmap_entry_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x37b896cd ib_mr_pool_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3974d865 ib_device_get_by_name +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3a2af805 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3c86fe3b ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3cbfe2ba rdma_modify_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3d765551 rdma_put_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3e0d7de0 rdma_read_gid_hw_context EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3fc2387c ib_ud_header_unpack -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x3ffd5e31 ib_query_port -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40f9b96a ib_post_send_mad -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x412c5c65 ib_modify_srq -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4328e62e rdma_destroy_ah_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x40107c11 ib_device_get_by_netdev EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x434c5d10 zgid -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4381b8bb ib_sg_to_pages EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x439ce33c ib_sa_unregister_client -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x43b717f6 ibdev_notice -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x450f63b0 ibnl_put_attr EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x45fb8985 rdma_nl_chk_listeners -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4776d238 ib_mr_pool_init -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x47948965 ib_get_cached_lmc -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48f48a79 ib_dealloc_pd_user -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x491becdc ib_mr_pool_get -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4b5cc1c6 rdma_query_gid -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4c34573f ib_mr_pool_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x48685a88 rdma_rw_ctx_signature_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4ad100d8 ib_port_unregister_module_stat +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4c5c2d5d ib_modify_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4ce80df9 ib_drain_sq EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e155af0 ib_response_mad EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x4e90435c ib_sa_free_multicast -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5191c267 rdma_nl_put_driver_u64_hex -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5391787b rdma_user_mmap_entry_get_pgoff -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x54e5860e ib_mr_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5037a8e8 rdma_query_gid_table +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x50dccea7 ib_set_device_ops +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5117e639 ib_sa_guid_info_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x51df8f1e ib_modify_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x521c4bca rdma_restrack_count +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x551ffba1 rdma_link_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x558901b2 rdma_destroy_ah_user EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x55bb02f3 ib_cache_gid_type_str -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x565ead20 ib_cq_pool_get -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x580bf13c ib_modify_qp -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59006a25 ib_alloc_mr -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59ad23cd rdma_user_mmap_io -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59eacade rdma_restrack_new -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a8e55e1 ib_port_unregister_module_stat -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5a92e057 rdma_get_gid_attr -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e1a2fe4 ib_port_register_module_stat -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e6fc210 ib_cq_pool_put -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5f4dd910 __ib_alloc_cq -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x602586c6 ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x57f07b3b ib_mr_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x588857e3 ib_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x58a74b8b ib_device_set_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x59812efc ib_create_ah_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5dac9d58 ib_cq_pool_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5e0bc89b ib_unregister_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5fc2fe50 ibdev_crit +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x5fd0e5ec ib_rdmacg_uncharge +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6002050c rdma_nl_put_driver_u32 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x60b17291 rdma_resolve_ip EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x613b1e2e ib_is_mad_class_rmpp EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x61d24c52 ib_rate_to_mbps -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x63fb96ef rdma_alloc_netdev -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6458fa20 ib_dispatch_event -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x64f94fc0 rdma_nl_put_driver_u64 -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x65226caa ibdev_printk -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x66ef23e5 ib_device_set_netdev -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x69661192 rdma_nl_register -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6a3548fa ib_create_srq_user -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6a4d54e3 ibdev_info -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6a5f994f rdma_restrack_del -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b01d656 ib_unregister_device_and_put -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b62de4b ib_destroy_wq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6209dfa7 ib_destroy_wq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x62d57912 rdma_restrack_parent_name +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x659039f3 ib_modify_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x67d9c5fa ib_modify_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ab9c4c8 rdma_user_mmap_io EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6b958320 ib_ud_ip4_csum -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6c46963d ib_resize_cq -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6ca24dc6 rdma_link_unregister +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6bb7e618 ibnl_put_msg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d057afc ibdev_err +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6d7f1499 rdma_get_gid_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6daa1ae6 ib_sa_path_rec_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6dfd40c3 ib_mr_pool_init +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6e2cb1c6 ib_get_vf_stats +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f228735 ib_sg_to_pages EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x6f3614b6 rdma_is_zero_gid -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x70241d5d ib_device_get_by_netdev -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x712cef5f ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x72196c2d ib_process_cq_direct +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x73174909 ib_get_vf_config +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x733f2080 rdma_restrack_get_byid EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x73baf9a2 ib_modify_qp_is_ok +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x74e83607 rdma_nl_unicast_wait +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75551357 rdma_restrack_put EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x75a729a0 rdma_nl_unregister -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7637a074 ib_rdmacg_try_charge -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7650ef82 ib_set_device_ops -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7674bac4 ib_create_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7684ccba ib_set_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x76a4f471 rdma_user_mmap_entry_insert_range +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x76ca44e3 ib_drain_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x786f7136 ib_find_cached_pkey EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x787ccc4c ib_get_mad_data_offset -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x789ede35 ib_map_mr_sg -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7aa671b5 ib_process_cq_direct -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7aedba36 ib_get_vf_guid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7a063c6e ibdev_notice +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ae48311 ib_modify_device EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7b56b034 ib_unregister_driver -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7ba39306 ib_unregister_event_handler -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7cae15e8 ib_sa_join_multicast -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7cf2b211 ib_get_cached_subnet_prefix -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7d102e4b rdma_modify_ah -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7de57186 ib_unregister_device_queued -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7eaf1e91 ib_register_mad_agent -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7fd634c8 ib_close_qp -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8016ebe9 ib_alloc_mr_integrity -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x80839d40 ib_modify_mad -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x81559682 ib_free_send_mad -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86c18df7 rdma_create_user_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x7bb1b1ae ib_mr_pool_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8066be56 rdma_nl_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8112a316 ib_modify_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x82f57c17 rdma_translate_ip +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8438a5d5 rdma_restrack_new EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x86cef180 rdma_addr_size -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x887a72c5 ib_get_eth_speed -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x88f04ce3 rdma_query_ah -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8a51a4fa ib_get_vf_stats +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x890661c8 rdma_port_get_link_layer +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8917370e ib_create_named_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8ae61a95 ib_reg_user_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8c1641db ibdev_printk +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8c5db8b2 rdma_nl_multicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8d85eebd ib_set_vf_link_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e48d1d1 ib_get_net_dev_by_params EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e7528da __rdma_block_iter_next -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8e9f8d98 rdma_restrack_add -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x8fbe93c2 ib_get_net_dev_by_params EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x90e807c7 ib_cache_gid_parse_type_str -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x94607a35 ib_mad_kernel_rmpp_agent -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9540d60d rdma_link_register -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x95d3197c ib_modify_qp_with_udata -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96dc506c ib_query_srq -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9bcba16d rdma_rw_ctx_signature_init -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c365901 ib_sa_get_mcmember_rec -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9c4c664e rdma_put_gid_attr -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ec54696 ib_dealloc_device -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9ef326fc rdma_resolve_ip -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f88c24b ibdev_crit -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa101fde6 rdma_find_gid_by_port -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa1f8e0d9 __ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9378f5e7 ib_open_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9695e4d7 ib_sa_get_mcmember_rec +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x96b58083 ib_free_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9aca1b8f ib_init_ah_attr_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9b0d6499 rdma_nl_put_driver_u32_hex +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9cced385 ib_register_mad_agent +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9db3148f ib_create_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9eaa7f76 rdma_find_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0x9f21ffdb rdma_query_ah +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0c9d7ea ib_create_qp_security +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa0dd5298 ib_query_srq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa2e2ab3e __ib_create_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa372da10 ib_rdmacg_try_charge EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa432baf6 ib_unpack -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa43f2a84 rdma_restrack_put -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa505f21f rdma_move_grh_sgid_attr -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa6296fd0 ib_get_rmpp_segment -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa78d9b25 rdma_port_get_link_layer -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xab66eff9 ib_advise_mr -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xada3d3be ib_query_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5338c75 ib_register_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa5e4125d ib_advise_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa66e4cd0 ib_cancel_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa7cbd613 ib_resize_cq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xa9c28bc4 rdma_dev_access_netns +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaab5cd83 rdma_user_mmap_entry_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabc7134b rdma_user_mmap_entry_get_pgoff +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xabcc0c0b ib_create_wq +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xac92bdd0 ib_map_mr_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xacc72caa rdma_nl_unicast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xad6fbc2d ib_unregister_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae8dc139 rdma_create_ah EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xae956dce ib_rate_to_mult -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaf00532b rdma_copy_ah_attr -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb30b84d6 ib_get_cached_pkey +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xaedcb867 ibdev_info +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb36c8624 ib_destroy_qp_user EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb36e4148 ib_sa_pack_path -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb3c6bc0b rdma_roce_rescan_device -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb5022567 ib_modify_port -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb56ffd54 ib_init_ah_attr_from_wc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb397e2e5 ib_create_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb3b71642 rdma_nl_put_driver_u64 +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb3fef36a rdma_read_gid_attr_ndev_rcu +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb415dc36 rdma_init_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb48fdbca rdma_rw_ctx_post +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb6bf2d1e ib_find_pkey EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb7852a05 ib_ud_header_init -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8581ea6 rdma_set_cq_moderation -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb8e3dffe rdma_rw_ctx_init -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbad58329 ib_init_ah_from_mcmember -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbb760beb ib_create_qp_security -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbdea139d ib_device_get_by_name -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbfd1c342 rdma_user_mmap_entry_put -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc00d8df9 rdma_replace_ah_attr -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc42f972f rdma_dev_access_netns -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc567ce50 ib_dereg_mr_user -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc7eeb779 rdma_read_gid_l2_fields -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca72e32d ib_unregister_device -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca8e93db rdma_restrack_count -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcafbc217 rdma_query_gid_table -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb3cb7f2 ib_port_immutable_read -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcc552255 ib_unregister_client -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xce243af7 rdma_nl_put_driver_string -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd186db85 ib_check_mr_status -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd1d64438 ib_map_mr_sg_pi -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3c1c67b rdma_umap_priv_init -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd4ede9cd rdma_init_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb87f0122 rdma_rw_ctx_destroy +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xb9f8ecf4 ib_get_cached_subnet_prefix +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd0c1370 ib_dealloc_pd_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbd539cbc ib_get_cached_port_state +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe32a466 __ib_alloc_cq_any +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbe7de107 rdma_alloc_netdev +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xbfffb749 rdma_move_ah_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc19b7a6b ib_alloc_mr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc1f4ced9 rdma_restrack_get +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc26cb6d7 ib_destroy_srq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc44b90b1 ib_register_event_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc4724495 rdma_set_cq_moderation +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc615b7da ib_close_qp +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xc74e44ef ib_register_client +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca293ec1 ib_init_ah_from_mcmember +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xca8c1580 ib_destroy_cq_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcafeaf1c ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xcb2dc42a ib_set_client_data +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd04d433a rdma_rw_mr_factor +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd2b79212 ibdev_alert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd381d9d3 ibdev_warn +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd3d723d9 ib_get_eth_speed +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd4688dd1 rdma_restrack_del +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd55af0c0 rdma_user_mmap_entry_insert +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6513a65 rdma_copy_src_l2_addr EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6636ca6 rdma_addr_size_in6 -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6e4dcda rdma_user_mmap_entry_remove -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd720054f rdma_read_gid_attr_ndev_rcu -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd814eb8f ib_create_ah_from_wc -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd841540c ibdev_emerg -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd88da637 ib_register_event_handler -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9063761 ib_destroy_srq_user -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd99ca843 rdma_addr_cancel +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd6f577f0 rdma_find_gid_by_port +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd7dc3a9e ib_dma_virt_map_sg +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xd9a3e40f ib_alloc_mr_integrity EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda0d50ec ib_sa_cancel_query -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda44bafa rdma_rw_ctx_destroy -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdb2f1973 ib_destroy_qp_user -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdcc3a26e ib_set_vf_link_state -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xddb38b22 ib_get_cached_port_state -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xddfde25a ib_reg_user_mr -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xde0d7646 rdma_restrack_set_name -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdec681bf rdma_find_gid -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdef41955 rdma_user_mmap_entry_get -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe0dae097 rdma_rw_ctx_wrs -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe188b0a9 ib_create_send_mad -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1b2e06a ib_get_vf_config -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1d8fdd7 ib_find_exact_cached_pkey -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe241ae39 __ib_alloc_pd -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe2942bfa ib_sa_service_rec_query +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xda5c7bdd ib_post_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xdd338a9d ib_unregister_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe09a866d rdma_roce_rescan_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe1dcded3 ibnl_put_attr +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe27f27d1 __ib_alloc_pd +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe417b83c ib_dispatch_event +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe4c555e1 ib_dereg_mr_user +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe55a7da1 ib_map_mr_sg_pi EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5840ec6 ib_wc_status_msg EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe5a78c1e ib_sa_unpack_path -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe6c1a152 ib_dma_virt_map_sg EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe7b52e5f mult_to_ib_rate +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe8418e0f rdma_read_gid_l2_fields EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xe9e799fc ib_ud_header_pack -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xec10ed19 rdma_nl_multicast -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xed5ec354 ib_init_ah_attr_from_path -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee58f2bc ib_open_qp -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf1d973d3 ib_create_named_qp -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf493365d ibnl_put_msg -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf4d752b7 rdma_rw_ctx_destroy_signature +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xea094434 ib_init_ah_attr_from_path +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xeabc674a ib_attach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xebc0eff3 _ib_alloc_device +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xedee8750 ib_free_send_mad +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xee4be36b ib_get_cached_lmc +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xef5af5b0 ib_unregister_device_queued +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xefa4753a ib_unregister_device_and_put +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf0740bda ib_port_immutable_read +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf07634a9 rdma_link_register +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf28d26a5 rdma_restrack_set_name +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf42d945d ib_detach_mcast +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf59850dd ib_alloc_xrcd_user EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf5dedb30 rdma_node_get_transport EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6ed3334 ib_event_msg -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf6ff4465 ib_drain_rq -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xf93ed9d3 rdma_rw_ctx_post -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfaf347e4 rdma_destroy_ah_attr -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd1f3c5e ib_free_recv_mad -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfd7fc989 rdma_restrack_get -EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfe3c66b6 ib_dealloc_xrcd_user -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x00f9a4da ib_uverbs_flow_resources_free -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x09e147a0 _uverbs_get_const_signed -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x13ca245e ib_umem_activate_invalidation_notifier +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfa8cc2f7 rdma_query_gid +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfbdfa73c ib_get_rmpp_segment +EXPORT_SYMBOL drivers/infiniband/core/ib_core 0xfcd3c750 rdma_umap_priv_init +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x03b47759 ib_umem_odp_map_dma_and_lock +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x0aa792bf ib_umem_odp_alloc_implicit +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x0dceeca4 uverbs_uobject_fd_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x13b78c5c ib_umem_find_best_pgsz +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1898aa43 ib_umem_dmabuf_unmap_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1a601929 uverbs_copy_to_struct_or_zero EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x1b54bd5d ib_copy_path_rec_from_user -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x20b0f1c0 uverbs_get_flags64 -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2156aa9c ib_uverbs_get_ucontext_file -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2759f82d ib_umem_dmabuf_map_pages -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x286f93a4 uverbs_fd_class -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x30c0051a _uverbs_get_const_unsigned -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x39ba6206 ib_umem_get -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x3ea2697d uverbs_copy_to -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x3facf88a ib_umem_odp_release -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x45be152e _uverbs_alloc -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x49a8325c ib_umem_copy_from -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x4c6e7b3d ib_umem_dmabuf_get -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x50b5d076 ib_umem_odp_alloc_child -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x5f46fefb uverbs_uobject_fd_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x20d4c7e3 uverbs_fd_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x295e1514 ib_umem_odp_alloc_child +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2971e0bd ib_umem_stop_invalidation_notifier +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x29d0fdb1 ib_umem_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x2b7e03e4 ib_umem_dmabuf_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x38e87753 ib_uverbs_get_ucontext_file +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x4632ed20 ib_umem_copy_from +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x4a8f196f uverbs_get_flags32 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x4eb4ac8b uverbs_idr_class +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x57f02662 _uverbs_get_const_signed +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x5d5113b8 _uverbs_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x612a5448 ib_uverbs_flow_resources_free EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x63057f4b ib_copy_path_rec_to_user -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x6bfef633 ib_umem_odp_unmap_dma_pages -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x75069929 ib_umem_odp_map_dma_and_lock -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x76c8f07f uverbs_uobject_put -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x9267e19a ib_umem_release -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x92964e9c ib_copy_qp_attr_to_user -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xa604c3ec uverbs_idr_class -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xab07bf0b uverbs_destroy_def_handler -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xacb50e3e ib_umem_dmabuf_unmap_pages -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xadb30192 ib_umem_get_peer -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xb6bbc691 flow_resources_add -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xba23a85b uverbs_copy_to_struct_or_zero -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xbc3988a8 uverbs_get_flags32 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x708547a9 _uverbs_get_const_unsigned +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x71da5c9c ib_umem_odp_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x917a2bd7 uverbs_destroy_def_handler +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0x9b773a8c ib_umem_odp_unmap_dma_pages +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xb2d4f908 ib_umem_release +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xb55310e7 ib_copy_qp_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xb7ef55f0 uverbs_copy_to +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xb87ee38c ib_copy_ah_attr_to_user +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xbbd23931 ib_umem_dmabuf_map_pages EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xbde5c050 ib_unregister_peer_memory_client -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xc6d3dffd flow_resources_alloc -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xccf8c0e7 ib_umem_find_best_pgsz -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdc42ddaf uverbs_finalize_uobj_create -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xdcdba54c ib_copy_ah_attr_to_user -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe3bf9497 ib_umem_odp_alloc_implicit -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe656c5a7 ib_umem_odp_get -EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xeac9b9ce ib_register_peer_memory_client -EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x04ba02e4 iw_cm_reject -EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x0a907941 iw_cm_connect -EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x324f8cec iw_destroy_cm_id -EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x4e495aaf iw_cm_listen -EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x54ace144 iw_cm_accept -EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x759e37ed iw_cm_init_qp_attr -EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xdb1c7d24 iw_cm_disconnect -EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xed109fd0 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xc31d3110 flow_resources_add +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xc881bf33 ib_umem_odp_get +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xd73f5df0 ib_umem_activate_invalidation_notifier +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe5596b25 ib_umem_get_peer +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe5ee05e8 uverbs_uobject_put +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xe7ffe95f flow_resources_alloc +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xea0e8453 uverbs_get_flags64 +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xeaedda98 ib_register_peer_memory_client +EXPORT_SYMBOL drivers/infiniband/core/ib_uverbs 0xf4f4bd5f uverbs_finalize_uobj_create +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x29f0e010 iw_create_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x33f3f11d iw_cm_disconnect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x3d61c45b iw_cm_connect +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0x44cfa102 iw_cm_listen +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xa654d44c iw_cm_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xd4c753c3 iw_destroy_cm_id +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xdc03d5e4 iw_cm_accept EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xf3df871f iwcm_reject_msg -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x063ef32a rdma_set_reuseaddr -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x0a686785 __rdma_create_kernel_id -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x146775b5 rdma_join_multicast -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x28565ab9 rdma_accept_ece -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x2ab4e0af rdma_destroy_qp -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x31896e72 rdma_resolve_addr -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x40a52e7b rdma_leave_multicast -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x41606a5d rdma_listen -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4b6591eb rdma_create_qp -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4b7e496f rdma_connect_ece -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x4eb83af7 rdma_consumer_reject_data -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x567ce467 rdma_set_ack_timeout -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5873e2e7 rdma_lock_handler -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6026429d rdma_notify -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x685551d1 rdma_init_qp_attr -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x81bf0cdd rdma_set_min_rnr_timer -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x879d0fc2 rdma_reject_msg -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8aedeb01 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/iw_cm 0xfb0ff2fb iw_cm_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x01476f08 rdma_init_qp_attr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x015a52a0 rdma_leave_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x10ddc014 rdma_accept +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x14ad6009 rdma_unlock_handler +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1c6d1c6b rdma_destroy_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x1f0cb9b6 rdma_lock_handler +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x25f3aa4e rdma_bind_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x29ca0ef5 rdma_notify +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x50c3689d rdma_resolve_addr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x539cdd71 rdma_set_ack_timeout +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x55c3852c rdma_connect +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x5a27d39f rdma_reject +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x67763f6c rdma_connect_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x6a104510 rdma_create_user_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x7272b9f6 rdma_set_min_rnr_timer +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x84885dd2 rdma_consumer_reject_data +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8719afbb rdma_create_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x8ca7da50 rdma_disconnect EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x907df803 rdma_event_msg -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x91c199c9 rdma_disconnect -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x94d48d43 rdma_set_ib_path -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x99266a3a rdma_create_user_id -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x99f99594 rdma_set_afonly -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x99fbe0d0 rdma_resolve_route -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9ae84c6b rdma_bind_addr -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa0cf0d5e rdma_get_service_id -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa6962663 rdma_read_gids -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaa78c9e5 rdma_connect -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcca2ce5a rdma_iw_cm_id -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe7360aa4 rdma_connect_locked -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xeaadf470 rdma_res_to_id -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xebf3314b rdma_reject -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xeff42764 rdma_unlock_handler -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf5452a31 rdma_destroy_id -EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf56f7c19 rdma_set_service_type -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x4cae0b58 rtrs_clt_rdma_cq_direct -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x4d604788 rtrs_clt_put_permit -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x86c8a9ae rtrs_clt_close -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x94b6a4ee rtrs_clt_query -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xa591c2e3 rtrs_clt_get_permit -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xac3dd99f rtrs_clt_request -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xfb41f725 rtrs_clt_open -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x1bb45ae9 rtrs_rdma_dev_pd_init +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x99978d1d rdma_destroy_qp +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0x9dc603e0 rdma_set_service_type +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa430e4ff rdma_resolve_route +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa56c70c3 rdma_set_ib_path +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xa78d5117 rdma_listen +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xaac4bb3b rdma_set_afonly +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xac907c26 rdma_connect_locked +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xad9d9d07 rdma_iw_cm_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc191d9c7 rdma_set_reuseaddr +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xc3121dc5 rdma_reject_msg +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xcfe9949c rdma_accept_ece +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd03b2327 rdma_read_gids +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xd6a47653 rdma_res_to_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xe0b605ee rdma_join_multicast +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf1e4ce2f rdma_get_service_id +EXPORT_SYMBOL drivers/infiniband/core/rdma_cm 0xf6ea4e3b __rdma_create_kernel_id +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x0a0338f8 rtrs_clt_query +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x15ea809e rtrs_clt_rdma_cq_direct +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x220be180 rtrs_clt_get_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x4d548372 rtrs_clt_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x89fb66d2 rtrs_clt_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0x9e65fc01 rtrs_clt_request +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-client 0xcf2a6360 rtrs_clt_put_permit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x10701a04 rtrs_rdma_dev_pd_init EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x242a8646 rtrs_addr_to_str EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x5b01e41d sockaddr_to_str -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x5b31de57 rtrs_ib_dev_put -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x6a5d1f86 rtrs_rdma_dev_pd_deinit -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x7a56191e rtrs_ib_dev_find_or_add +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x8432fd51 rtrs_ib_dev_put EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0x887302f3 rtrs_addr_to_sockaddr -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x4b4e6305 rtrs_srv_get_sess_name -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x4f4ca3e3 rtrs_srv_open -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x95cee3d0 rtrs_srv_set_sess_priv -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xbe4bff6f rtrs_srv_close -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xcae2368b rtrs_srv_get_queue_depth -EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xeca00f71 rtrs_srv_resp_rdma +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0xeac10cbb rtrs_ib_dev_find_or_add +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-core 0xf57d9ca5 rtrs_rdma_dev_pd_deinit +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x688ff676 rtrs_srv_open +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0x721466bc rtrs_srv_get_queue_depth +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xaed19f07 rtrs_srv_set_sess_priv +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xc96fdb48 rtrs_srv_resp_rdma +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xcaaeee54 rtrs_srv_close +EXPORT_SYMBOL drivers/infiniband/ulp/rtrs/rtrs-server 0xe4ca526f rtrs_srv_get_sess_name EXPORT_SYMBOL drivers/input/matrix-keymap 0xa9c91b34 matrix_keypad_build_keymap EXPORT_SYMBOL drivers/input/sparse-keymap 0x2c3168de sparse_keymap_setup EXPORT_SYMBOL drivers/input/sparse-keymap 0x2c33416b sparse_keymap_entry_from_keycode @@ -1660,399 +1661,401 @@ EXPORT_SYMBOL drivers/misc/tifm_core 0x946309a7 tifm_remove_adapter EXPORT_SYMBOL drivers/misc/tifm_core 0x9586c931 tifm_unmap_sg EXPORT_SYMBOL drivers/misc/tifm_core 0xf86375fc tifm_has_ms_pif -EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x038f475e arcnet_timeout -EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2aaecefb arc_bcast_proto -EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x337a59ae arcnet_open -EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x45149bfb arcnet_send_packet -EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x4a7e8657 arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0be0db4e arcnet_timeout +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x0da9b47e arc_bcast_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x1a29a46f free_arcdev +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x2efe8c69 arc_proto_default EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x6534792a arcnet_debug -EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8d6f820a arc_proto_map -EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9831d721 arc_raw_proto -EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa316be9f alloc_arcdev -EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd4f1678c free_arcdev -EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd8da5f42 arc_proto_default +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x8f4710f2 arcnet_send_packet +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0x9dbdc6ce arcnet_unregister_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xa349b5e6 arc_raw_proto +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc76b2bed arcnet_close +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xc9a94b68 arcnet_open +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xd0a597d3 arc_proto_map +EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xe13dc683 alloc_arcdev EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xecb730b0 arcnet_interrupt -EXPORT_SYMBOL drivers/net/arcnet/arcnet 0xf854b0db arcnet_close -EXPORT_SYMBOL drivers/net/arcnet/com20020 0x202dbb0c com20020_check -EXPORT_SYMBOL drivers/net/arcnet/com20020 0xbf0369f8 com20020_found -EXPORT_SYMBOL drivers/net/arcnet/com20020 0xc75cce10 com20020_netdev_ops -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x0361433e b53_get_sset_count -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x0e0d249f b53_vlan_filtering -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x10b7a236 b53_phylink_mac_link_state -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x1253a26e b53_br_leave -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x1fafafda b53_vlan_add -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x23547ee2 b53_switch_detect -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2b558952 b53_phylink_mac_link_down -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2cf3f548 b53_configure_vlan -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x3459777c b53_get_mac_eee -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x45c9e045 b53_br_flags_pre -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x47071ffb b53_enable_port -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x4c138c01 b53_port_event -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x4e704153 b53_phylink_validate -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x605abe3b b53_br_join -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x6db6e2a6 b53_brcm_hdr_setup -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x72c19881 b53_phylink_mac_config -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x73f622b4 b53_phylink_mac_link_up -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x861d2787 b53_disable_port -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x9720367f b53_switch_register -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x9a688c1e b53_fdb_del -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x9e5ce839 b53_eee_enable_set -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xa7f0f9fc b53_vlan_del -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xaf18efed b53_br_fast_age -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb2919f5e b53_imp_vlan_setup -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb4a662be b53_phylink_mac_an_restart -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xbe4fc3ff b53_setup_devlink_resources -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc196de73 b53_mdb_del -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc57510ea b53_set_mac_eee -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc62081c7 b53_mirror_add -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xd2c75701 b53_get_strings -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xd64ec0be b53_mirror_del -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xd6710b8d b53_br_flags -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xd7870188 b53_fdb_add -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xdd149074 b53_switch_alloc -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe23d89be b53_eee_init -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe39881fc b53_get_ethtool_stats -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe515e2b1 b53_mdb_add -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xef6e93be b53_fdb_dump -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xef841556 b53_get_tag_protocol -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xefb94706 b53_get_ethtool_phy_stats -EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xfc94bc46 b53_br_set_stp_state -EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x3e3aff56 b53_serdes_an_restart -EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x583aa59f b53_serdes_link_state -EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xab6aaa7a b53_serdes_init -EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xb64a4d99 b53_serdes_link_set -EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xebcdf108 b53_serdes_phylink_validate -EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xff87a923 b53_serdes_config -EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xa80a6306 lan9303_remove +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xd6a87444 com20020_netdev_ops +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xdb0f0f87 com20020_found +EXPORT_SYMBOL drivers/net/arcnet/com20020 0xebbcb065 com20020_check +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x18a0e3f3 b53_phylink_mac_config +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x19976e9a b53_mirror_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x29be8dfd b53_get_ethtool_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2ce6df27 b53_br_flags_pre +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x2eed6fc0 b53_fdb_dump +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x340dbdaf b53_set_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x38f0b72c b53_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x3f96839c b53_fdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x4180ad7a b53_eee_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x467e8e34 b53_br_fast_age +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x54981927 b53_mdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x554ebf42 b53_phylink_mac_link_down +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x57e80818 b53_switch_register +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x58204026 b53_enable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x5db313c5 b53_get_tag_protocol +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x6006e9ac b53_get_ethtool_phy_stats +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x61894f8e b53_get_strings +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x62e75c52 b53_port_event +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x678f62c8 b53_br_set_stp_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x679e61a5 b53_phylink_mac_an_restart +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x69e55736 b53_br_leave +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x73400763 b53_mdb_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x7620da1f b53_vlan_filtering +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x77d4674b b53_br_join +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x7e37e657 b53_vlan_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x82574ab9 b53_br_flags +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x8422246a b53_setup_devlink_resources +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x98d2e0fb b53_get_sset_count +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x9b560d67 b53_get_mac_eee +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0x9d5dcc59 b53_mirror_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xa2df6117 b53_configure_vlan +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xa7dda915 b53_switch_detect +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xaa694a0b b53_phylink_mac_link_up +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xb6078a83 b53_vlan_add +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc090f688 b53_phylink_mac_link_state +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xc550521e b53_disable_port +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe7105422 b53_imp_vlan_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xe965ee2e b53_brcm_hdr_setup +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xef34acf5 b53_eee_enable_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xf7d37934 b53_fdb_del +EXPORT_SYMBOL drivers/net/dsa/b53/b53_common 0xfe356a02 b53_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x11d888d4 b53_serdes_an_restart +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x2aa1e0d6 b53_serdes_link_set +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0x36215595 b53_serdes_init +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xab17c425 b53_serdes_phylink_validate +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xdbb1b524 b53_serdes_config +EXPORT_SYMBOL drivers/net/dsa/b53/b53_serdes 0xe04f13cc b53_serdes_link_state +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0x7b0e5679 lan9303_probe +EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0x9a925d0f lan9303_remove EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xada83f40 lan9303_register_set -EXPORT_SYMBOL drivers/net/dsa/lan9303-core 0xeb820848 lan9303_probe -EXPORT_SYMBOL drivers/net/dsa/microchip/ksz8795 0x446c0fba ksz8_switch_register -EXPORT_SYMBOL drivers/net/dsa/microchip/ksz9477 0x036db17f ksz9477_switch_register -EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x52033003 ksz_switch_register -EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0xe2f28478 ksz_switch_alloc -EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0xeec0c57b ksz_switch_remove -EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x62b6360e vsc73xx_probe -EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x68265a41 vsc73xx_remove +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz8795 0xbfdf772e ksz8_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz9477 0xd080b559 ksz9477_switch_register +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x35ecee36 ksz_switch_remove +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x46cd9749 ksz_switch_alloc +EXPORT_SYMBOL drivers/net/dsa/microchip/ksz_common 0x73486ae1 ksz_switch_register +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x785024e1 vsc73xx_probe EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0x99d242fe vsc73xx_is_addr_valid -EXPORT_SYMBOL drivers/net/dsa/xrs700x/xrs700x 0x6fc676de xrs700x_switch_remove +EXPORT_SYMBOL drivers/net/dsa/vitesse-vsc73xx-core 0xcfc32f51 vsc73xx_remove +EXPORT_SYMBOL drivers/net/dsa/xrs700x/xrs700x 0x048b9785 xrs700x_switch_alloc EXPORT_SYMBOL drivers/net/dsa/xrs700x/xrs700x 0x83b7b667 xrs7003f_info EXPORT_SYMBOL drivers/net/dsa/xrs700x/xrs700x 0x8972bf7e xrs7004f_info +EXPORT_SYMBOL drivers/net/dsa/xrs700x/xrs700x 0x9f6a9107 xrs700x_switch_remove EXPORT_SYMBOL drivers/net/dsa/xrs700x/xrs700x 0xb25facfa xrs7003e_info EXPORT_SYMBOL drivers/net/dsa/xrs700x/xrs700x 0xb89aa5e3 xrs7004e_info -EXPORT_SYMBOL drivers/net/dsa/xrs700x/xrs700x 0xf6592af4 xrs700x_switch_register -EXPORT_SYMBOL drivers/net/dsa/xrs700x/xrs700x 0xff96c72f xrs700x_switch_alloc -EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnxt/bnxt_en 0x4e7bf285 bnxt_ulp_probe +EXPORT_SYMBOL drivers/net/dsa/xrs700x/xrs700x 0xea037fa8 xrs700x_switch_register +EXPORT_SYMBOL drivers/net/ethernet/broadcom/bnxt/bnxt_en 0x924ffd1a bnxt_ulp_probe EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x636af174 cnic_unregister_driver -EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0xd189670d cnic_register_driver -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x077ba756 cxgb3_ofld_send -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2db43452 t3_l2e_free -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x34758897 t3_l2t_get -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x395a5706 cxgb3_free_atid -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3b4f542d t3_l2t_send_slow -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x3da88042 cxgb3_alloc_stid -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x415c0b9f t3_register_cpl_handler -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x45abbf64 cxgb3_insert_tid -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x464e4bba cxgb3_register_client -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4aaa2c52 cxgb3_unregister_client -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x525f3411 cxgb3_queue_tid_release -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x5ce8e2df cxgb3_alloc_atid -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8287b791 cxgb3_remove_tid -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xaa9786c7 dev2t3cdev -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xcfcc268f t3_l2t_send_event -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xf0098bc0 cxgb3_free_stid -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0e746238 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/broadcom/cnic 0x682c92f7 cnic_register_driver +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x09fab45c cxgb3_insert_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x1eca054d cxgb3_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x231d8094 t3_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x2f035ff3 t3_l2t_send_event +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x49da536a cxgb3_remove_tid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x4f3ddf71 cxgb3_queue_tid_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x54f4cb60 cxgb3_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x552ccbbb cxgb3_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x625335e9 cxgb3_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0x8ed5f2c9 dev2t3cdev +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xa79846d4 cxgb3_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xaf6aaf37 cxgb3_free_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbf36442d t3_l2t_send_slow +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xbf75ae1a cxgb3_register_client +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd020e3fc t3_register_cpl_handler +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb3/cxgb3 0xd1e5b79b t3_l2e_free +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x04f5805b cxgb4_l2t_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x096e2f1b cxgb4_free_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0b860c5f cxgb4_port_e2cchan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0d63e916 cxgb4_ring_tx_db +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0e0a8dab cxgb4_alloc_sftid EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x0f1a5528 cxgb4_unregister_uld -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x11e8c12b cxgb4_alloc_atid -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x17066143 cxgb4_iscsi_init -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1e3138a6 cxgb4_smt_alloc_switching -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x1eb4a3f8 cxgb4_l2t_get -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x20680244 cxgb4_create_server_filter -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x20a17e06 t4_cleanup_clip_tbl -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2b3c979c cxgb4_register_uld -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x38a6d5b6 cxgb4_write_sgl -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3c2635e8 cxgb4_crypto_send -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4310ac00 cxgb4_dbfifo_count -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x47aefc2a cxgb4_alloc_stid -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x484a76d5 cxgb4_port_idx -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x491c02bb cxgb4_port_e2cchan -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4d0a186a cxgb4_immdata_send -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4f710d98 cxgb4_check_l2t_valid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x15c4c030 t4_cleanup_clip_tbl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x19663b4b cxgb4_l2t_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x20776ed8 cxgb4_create_server6 +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x29078c9e cxgb4_flush_eq_cache +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2925099b cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x29b00a73 cxgb4_alloc_stid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2c7e1937 cxgb4_register_uld +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x2d68ed99 cxgb4_smt_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3a513e85 cxgb4_get_tcp_stats +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x3f89f4f6 cxgb4_ofld_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x44ec5c44 cxgb4_bar2_sge_qregs +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x4d519661 cxgb4_create_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50b3327d cxgb4_remove_tid EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x50ee5c07 cxgb4_best_aligned_mtu -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x59c621cf cxgb4_read_tpte -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x66d68f61 cxgb4_sync_txq_pidx -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x71b5275d cxgb4_get_tcp_stats -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7308a168 cxgb4_free_stid -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7d2a413b cxgb4_write_partial_sgl -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x805ce70b cxgb4_get_srq_entry -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8397b103 cxgb4_free_atid -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x90294616 cxgb4_ofld_send -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x93a3d28b cxgb4_read_sge_timestamp -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x94670adc cxgb4_remove_server -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x975b1070 cxgb4_reclaim_completed_tx -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa34b610c cxgb4_ring_tx_db -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa3c195d5 cxgb4_create_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x58f55914 cxgb4_read_sge_timestamp +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x60d2a00d cxgb4_port_viid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x64fff57c cxgb4_check_l2t_valid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x692cb98f cxgb4_alloc_atid +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x6a29d763 cxgb4_reclaim_completed_tx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x740eeb4a cxgb4_inline_tx_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x7b6c701b cxgb4_crypto_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8a3e64c7 cxgb4_port_chan +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x8e80e823 cxgb4_immdata_send +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9282488c cxgb4_sync_txq_pidx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9beb3afd cxgb4_write_sgl +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0x9fb26aa7 cxgb4_remove_server +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa0498ca5 cxgb4_l2t_alloc_switching +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa06ede7f cxgb4_clip_release +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa6f4f8a8 cxgb4_write_partial_sgl EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xa8db193f cxgb4_smt_release -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb00fa61b cxgb4_update_root_dev_clip -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xb2ab8f42 cxgb4_select_ntuple -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc1095e59 cxgb4_remove_server_filter -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc35ba29f cxgb4_clip_get -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc527781e cxgb4_port_viid -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc95474e9 cxgb4_pktgl_to_skb -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcade03ba cxgb4_map_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xabfbc4a7 cxgb4_map_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xac0f0ba4 cxgb4_dbfifo_count +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xad5691f1 cxgb4_update_root_dev_clip +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xbb011ce1 cxgb4_pktgl_to_skb +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc5fde4d4 cxgb4_select_ntuple +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xc72108e6 cxgb4_l2t_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xcc116240 cxgb4_get_srq_entry EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd69a0294 cxgb4_best_mtu -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xdc045fb6 cxgb4_port_chan -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xe2b1bdc1 cxgb4_l2t_release -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xec110c60 cxgb4_l2t_send -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xece4973d cxgb4_alloc_sftid -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xee1de75c cxgb4_bar2_sge_qregs -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xeeb4fa7f cxgb4_flush_eq_cache -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf1d53fe6 cxgb4_inline_tx_skb -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf74ecfa8 cxgb4_remove_tid -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfe32f944 cxgb4_l2t_alloc_switching -EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfe540b2f cxgb4_clip_release -EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x30f7e018 vnic_dev_get_res -EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x8027e660 enic_api_devcmd_proxy_by_index -EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xb0518ead vnic_dev_register -EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xb9fb4652 vnic_dev_get_res_count -EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xc35ec20c vnic_dev_get_pdev -EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xdfcf6c79 vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xd95fb3ac cxgb4_iscsi_init +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xed13d960 cxgb4_clip_get +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf204c2af cxgb4_read_tpte +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf2fec8fe cxgb4_port_idx +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xf655d825 cxgb4_remove_server_filter +EXPORT_SYMBOL drivers/net/ethernet/chelsio/cxgb4/cxgb4 0xfe33b617 cxgb4_free_stid +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x1f108805 vnic_dev_get_pdev +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x2f89494c vnic_dev_unregister +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x3c046162 vnic_dev_get_res_count +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x6f3eb287 vnic_dev_register +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0x71a4333d enic_api_devcmd_proxy_by_index +EXPORT_SYMBOL drivers/net/ethernet/cisco/enic/enic 0xe2f7a7dd vnic_dev_get_res +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x260144bc be_roce_register_driver EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x4e2e10d2 be_roce_mcc_cmd -EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0x7ba41ed9 be_roce_register_driver -EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xad571266 be_roce_unregister_driver -EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0x97bdcf62 i40e_unregister_client -EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0xf0a70874 i40e_register_client -EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x54d68e9e iavf_register_client -EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x72b8d4ca iavf_unregister_client -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x01ef6bc4 mlx4_SET_PORT_fcs_check -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04ba3453 mlx4_SET_PORT_qpn_calc -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0683ad43 mlx4_is_slave_active -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x11aefca6 mlx4_get_slave_from_roce_gid -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x11f80cf9 set_phv_bit -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x184da7a0 mlx4_SET_PORT_VXLAN -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1e334987 get_phv_bit -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x35328eaf mlx4_SET_PORT_general -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3548b721 mlx4_query_diag_counters -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x388c8539 mlx4_assign_eq -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55e34648 mlx4_get_is_vlan_offload_disabled -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59bf28a5 mlx4_get_slave_pkey_gid_tbl_len -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5b9c65a1 mlx4_ALLOCATE_VPP_get -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5bc9473b mlx4_get_parav_qkey -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e2e1a27 mlx4_SET_VPORT_QOS_set -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e8ada4c mlx4_get_slave_port_state -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e3c8d1e mlx4_release_eq -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ff585a2 mlx4_get_roce_gid_from_slave -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x708d4d89 mlx4_gen_guid_change_eqe -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x711eae21 mlx4_put_slave_node_guid -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77f151d8 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/emulex/benet/be2net 0xe0ae9b82 be_roce_unregister_driver +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0x324f1a69 i40e_register_client +EXPORT_SYMBOL drivers/net/ethernet/intel/i40e/i40e 0xad45f974 i40e_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x1f0cc582 iavf_unregister_client +EXPORT_SYMBOL drivers/net/ethernet/intel/iavf/iavf 0x5216d661 iavf_register_client +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00ce895b mlx4_test_async +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x094657aa mlx4_test_interrupt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0a4b712c mlx4_SET_MCAST_FLTR +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0ab37d02 mlx4_query_diag_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x120692dd mlx4_get_is_vlan_offload_disabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1d3943cf mlx4_SET_PORT_fcs_check +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1ecdc719 mlx4_get_slave_pkey_gid_tbl_len +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x23743c64 mlx4_SET_VPORT_QOS_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c8f9ec8 mlx4_get_roce_gid_from_slave +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d079a43 mlx4_max_tc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x33adf51c mlx4_sync_pkey_table +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x38932edd mlx4_eq_get_irq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48bbefe9 set_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x48cad055 mlx4_is_slave_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4a5af6eb mlx4_ALLOCATE_VPP_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x571fa5df mlx4_get_parav_qkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62ee5c48 mlx4_get_eqs_per_port +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x63d7e9f4 mlx4_get_slave_from_roce_gid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x663af493 mlx4_gen_pkey_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x672e2e56 mlx4_gen_port_state_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6e4939b8 mlx4_SET_PORT_user_mtu +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6eabb8d9 mlx4_SET_VPORT_QOS_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7746952b mlx4_SET_PORT_general +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7976a61c mlx4_tunnel_steer_add EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fdde0b4 mlx4_handle_eth_header_mcast_prio -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x815a80fa mlx4_SET_PORT_user_mac -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x861c250a mlx4_SET_PORT_BEACON -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a70dfec mlx4_SET_PORT_SCHEDULER -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8f33cee4 mlx4_gen_pkey_eqe -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9ea12611 mlx4_is_eq_vector_valid -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f977bcb mlx4_gen_port_state_change_eqe -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa13c77b4 mlx4_tunnel_steer_add -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa14e15ca mlx4_get_cpu_rmap -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1919735 mlx4_SET_VPORT_QOS_get -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa6137c4e mlx4_eq_get_irq -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa84ea29b mlx4_is_eq_shared -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb03241af set_and_calc_slave_port_state -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb326bf33 mlx4_get_eqs_per_port -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbdd00e21 mlx4_SET_MCAST_FLTR -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc07702af mlx4_ALLOCATE_VPP_set -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc0e90a86 mlx4_test_async -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd22d9c06 mlx4_test_interrupt -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3d9a72c mlx4_get_module_info -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3fe67ce mlx4_max_tc -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe5be6051 mlx4_get_slave_node_guid -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf223edf4 mlx4_SET_PORT_PRIO2TC -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3ed146f mlx4_SET_PORT_user_mtu -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5ff8e5b mlx4_sync_pkey_table -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0226e2c0 mlx5_core_query_cq -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x04975484 __tracepoint_mlx5_fs_del_fte -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x055b105a mlx5_rl_add_rate_raw -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0ca4f017 __traceiter_mlx5_fw -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0d24200c mlx5_core_attach_mcg -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x10f65950 __tracepoint_mlx5_fw -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x11d5e325 mlx5_core_roce_gid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a644bac mlx4_SET_PORT_BEACON +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d421e51 mlx4_SET_PORT_PRIO2TC +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8fd5bf89 mlx4_ALLOCATE_VPP_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x93df1db9 set_and_calc_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x97ca551d mlx4_is_eq_shared +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa023fae9 mlx4_gen_slaves_port_mgt_ev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xab17ba87 mlx4_release_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb18d772e get_phv_bit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbdd82bfd mlx4_get_module_info +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc793f90d mlx4_get_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcb4f41ff mlx4_gen_guid_change_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd19fd8ea mlx4_is_eq_vector_valid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd331520d mlx4_get_slave_port_state +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd459bdbf mlx4_get_cpu_rmap +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd69d4747 mlx4_SET_PORT_VXLAN +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdfe90ca8 mlx4_put_slave_node_guid +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe1bb18d6 mlx4_SET_PORT_user_mac +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe56e32cd mlx4_SET_PORT_qpn_calc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xef2c2b88 mlx4_SET_PORT_SCHEDULER +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9fd5ac5 mlx4_assign_eq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x02e31c4c mlx5_comp_vectors_count +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x03261bff mlx5_cmd_destroy_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x039c3ab8 mlx5_core_create_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x03b0b7a9 mlx5_fs_remove_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x03bec024 mlx5_fs_add_rx_underlay_qpn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x065c0cb1 mlx5_eswitch_vport_match_metadata_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x082ff8c0 mlx5_debugfs_root +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x08d9b2f1 __SCK__tp_func_mlx5_fs_del_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09ffe3f0 mlx5_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0a65d1a0 mlx5_core_alloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b0ee980 mlx5_cmd_cleanup_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0b5bba2f __traceiter_mlx5_fs_del_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0c6f95c4 __SCK__tp_func_mlx5_fw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0cd03c0b mlx5_eq_disable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0e1ac900 mlx5_fpga_get_sbu_caps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0e91c0a2 mlx5_core_create_tis +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x128de939 mlx5_eq_destroy_generic EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x16971239 mlx5_del_flow_rules -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x185647f6 mlx5_packet_reformat_alloc -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x191fc21e mlx5_core_dealloc_pd -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x196cc276 __tracepoint_mlx5_fs_add_rule -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b57ff2e mlx5_core_create_rqt EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ba626fe __traceiter_mlx5_fs_add_rule -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c0057dc mlx5_eq_disable -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c1cfa65 mlx5_core_create_mkey -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c4c8fb1 mlx5_get_fdb_sub_ns -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1cb7b093 mlx5_eswitch_add_send_to_vport_rule -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ccef519 mlx5_core_modify_cq_moderation -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d107c45 mlx5_core_alloc_transport_domain -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1fe2cee8 mlx5_core_destroy_mkey -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x23a3f4d6 mlx5_eq_destroy_generic -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x242f53fb mlx5_core_dealloc_transport_domain -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2441150d __tracepoint_mlx5_fs_del_fg -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x26be50a3 __SCK__tp_func_mlx5_fs_add_fg -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2b20f595 mlx5_core_query_rq -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2c6a444e __SCK__tp_func_mlx5_fw -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2cd57b19 mlx5_rl_remove_rate_raw -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2da0ffb1 mlx5_fs_remove_rx_underlay_qpn -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2dced56b mlx5_cmd_create_vport_lag -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2e6150a4 mlx5_buf_alloc -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2f5ee4f1 __SCK__tp_func_mlx5_fs_del_rule -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3669bf46 mlx5_comp_irq_get_affinity_mask -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x373fa293 __SCK__tp_func_mlx5_fs_del_fte -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x373fdea0 mlx5_core_modify_sq -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3c2b5df2 mlx5_mpfs_del_mac -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3f56d867 mlx5_fpga_mem_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1cf8d0b1 mlx5_packet_reformat_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d0d566b mlx5_eswitch_add_send_to_vport_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1ea985d3 __SCK__tp_func_mlx5_fs_del_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20dfa43d mlx5_cmd_exec_cb +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x21b61ef1 mlx5_rsc_dump_next +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x242970b5 mlx5_rl_is_in_range +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27694476 mlx5_fpga_sbu_conn_sendmsg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x31238864 mlx5_modify_header_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x325c5e9a __tracepoint_mlx5_fw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x34dea12c __tracepoint_mlx5_fs_add_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x351987d9 mlx5_debug_qp_add +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x372bd7f9 __SCK__tp_func_mlx5_fs_set_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3e930bb0 mlx5_core_destroy_rq EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x3fb9179e mlx5_create_auto_grouped_flow_table -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x405037cd mlx5_core_destroy_tir -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x447567cc mlx5_cmd_exec -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x45ae549f __tracepoint_mlx5_fs_del_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x43432a60 mlx5_core_destroy_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x447875ad mlx5_core_query_cq EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x45eb656d __traceiter_mlx5_fs_del_fg -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x46c3ff8a mlx5_lag_is_sriov -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x47511131 __SCK__tp_func_mlx5_fs_add_ft -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4775eb98 mlx5_get_uars_page -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b88bca8 mlx5_eq_enable -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x52fe99cc mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4a2a5cd3 __tracepoint_mlx5_fs_del_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4acdc470 mlx5_fpga_mem_write +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e6054a1 mlx5_eq_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4e7937ff mlx5_rl_add_rate_raw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x51c6cd96 mlx5_eq_update_ci +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x53313771 mlx5_qp_debugfs_cleanup EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x540fb126 mlx5_create_flow_group EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x549cfb8e __traceiter_mlx5_fs_del_ft -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x54b75c66 mlx5_cmd_cleanup_async_ctx -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5596b7fc mlx5_cmd_exec_cb -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x59e5fe1d mlx5_vector2eqn -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c9d8682 mlx5_lag_is_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5531e0be __tracepoint_mlx5_fs_add_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x55557fdc mlx5_get_flow_namespace +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x59188451 mlx5_core_dealloc_pd +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x59c4af60 mlx5_rl_remove_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x59ffb09f __tracepoint_mlx5_fs_del_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5b187de7 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c166842 mlx5_lag_is_roce EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c9fbb88 __traceiter_mlx5_fs_del_rule -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5cd16a6e mlx5_cmd_free_uar -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5f339ac3 mlx5_rsc_dump_next EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x61492bb7 mlx5_rl_are_equal -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x618fc306 __traceiter_mlx5_fs_set_fte -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x629a691b mlx5_eq_notifier_unregister EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x62dc190a __SCT__tp_func_mlx5_fs_del_rule -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x642877b4 mlx5_add_flow_rules -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x657a9e00 mlx5_eq_notifier_register -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x65e6f9e0 mlx5_core_modify_rq -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6b9bae4f mlx5_eq_update_ci -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6bfc03ef mlx5_cmd_exec_polling -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x71453315 mlx5_nic_vport_disable_roce -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7406105d mlx5_eswitch_vport_rep -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x761adb53 mlx5_comp_vectors_count -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x76374b43 mlx5_eswitch_unregister_vport_reps -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x766d7b6b mlx5_debugfs_root -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7694cbdc mlx5_qp_debugfs_init -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7725cb02 mlx5_lag_is_roce -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x79f9d2d5 mlx5_core_query_sq -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b03b952 mlx5_core_query_vendor_id -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b38fe2d mlx5_core_modify_tis -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7bc8cab6 mlx5_fpga_sbu_conn_sendmsg -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7d648a3b mlx5_cmd_init_async_ctx -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7df1a00d mlx5_fpga_sbu_conn_destroy -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7e87c5d7 mlx5_rl_add_rate -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7fed681d mlx5_eswitch_get_vport_metadata_for_match -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x810cd20c mlx5_cmd_destroy_vport_lag -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x81e8081f mlx5_eq_get_eqe -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x859dc6d5 mlx5_eswitch_reg_c1_loopback_enabled -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x898fc7de mlx5_eswitch_get_vport_metadata_for_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x645a3154 mlx5_fpga_sbu_conn_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68dedb63 mlx5_notifier_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6936f363 __SCK__tp_func_mlx5_fs_del_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x71f37833 mlx5_eswitch_vport_rep +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7565043b mlx5_core_create_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7576b781 mlx5_fc_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7970a447 mlx5_eswitch_get_vport_metadata_for_match +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x797dc20d mlx5_lag_query_cong_counters +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7bf55491 mlx5_eswitch_unregister_vport_reps +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x82bed9f1 mlx5_qp_debugfs_init +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x84d70d1d mlx5_core_destroy_tir +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x84fa0516 mlx5_buf_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x86485f4d mlx5_free_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x866e4744 mlx5_fpga_sbu_conn_create EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x89fabe37 mlx5_create_flow_table -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c952f28 mlx5_eswitch_uplink_get_proto_dev -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8d55a2ce __tracepoint_mlx5_fs_add_fg -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8faae760 __SCK__tp_func_mlx5_fs_del_fg -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9365ec6d mlx5_fpga_get_sbu_caps -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x93bc84d9 mlx5_get_flow_namespace -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x955d1248 mlx5_rl_remove_rate -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x95d0f155 mlx5_core_create_psv -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96749725 mlx5_notifier_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8cd5db7c mlx5_get_fdb_sub_ns +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9161a35c mlx5_cmd_free_uar +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x92797988 mlx5_rdma_rn_get_params +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x935d9ca1 mlx5_core_destroy_rqt EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x96eb2c99 mlx5_fc_id -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98a7558a mlx5_core_modify_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x989705dc mlx5_core_modify_tis EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98ab7cc6 mlx5_destroy_flow_table -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9a37760e mlx5_core_detach_mcg -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9a8cef47 __SCK__tp_func_mlx5_fs_add_rule -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9c699831 mlx5_fc_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x99d5ba84 mlx5_add_flow_rules +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9b707e2e mlx5_core_destroy_tis EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d36ddd0 __SCT__tp_func_mlx5_fs_add_fg -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d6cec40 __tracepoint_mlx5_fs_set_fte -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa05d1695 mlx5_debug_qp_remove -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa1a1e04a mlx5_lag_query_cong_counters -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa1b16f28 mlx5_rsc_dump_cmd_create -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa3877820 __traceiter_mlx5_fs_del_fte -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa5a640e2 mlx5_modify_header_dealloc -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xacbec9c0 __tracepoint_mlx5_fs_del_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9dca16ef __tracepoint_mlx5_fs_del_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9e68b8f6 mlx5_rl_add_rate +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9eb0ebcb __traceiter_mlx5_fw +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9f84cc12 mlx5_fc_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa02e270a mlx5_cmd_init_async_ctx +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa1cd0532 __SCK__tp_func_mlx5_fs_add_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa445d941 mlx5_lag_is_sriov +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa603eede mlx5_core_modify_cq_moderation +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa673052e mlx5_eswitch_get_vport_metadata_for_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa8c0158d mlx5_modify_header_alloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa996855c mlx5_eq_create_generic +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaab778ba mlx5_core_modify_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xab7b8e65 __SCK__tp_func_mlx5_fs_add_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xac0c299b mlx5_core_create_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xac70d22d mlx5_core_modify_cq EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xacfe8a18 __SCT__tp_func_mlx5_fs_del_fte EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xad6815cd mlx5_rsc_dump_cmd_destroy -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xadad1cb2 mlx5_eswitch_vport_match_metadata_enabled -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae6bcc92 mlx5_fs_add_rx_underlay_qpn -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaec41a57 __SCK__tp_func_mlx5_fs_set_fte -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaf86dbe2 mlx5_put_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xae3d0dcc mlx5_core_query_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaed06f3d __SCK__tp_func_mlx5_fs_del_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaef4e24e mlx5_core_dealloc_transport_domain EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb06c0bfd __SCT__tp_func_mlx5_fs_set_fte -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb1aeb7bc mlx5_qp_debugfs_cleanup +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb0d545d4 mlx5_vector2eqn +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb25e1937 mlx5_rl_remove_rate_raw EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb4e976bb __SCT__tp_func_mlx5_fs_add_ft -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb52d64dc mlx5_free_bfreg -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb85564ef mlx5_core_create_tir -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb86a77d7 mlx5_rl_is_in_range -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb8c29f00 mlx5_fc_create -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbbcfac20 mlx5_eswitch_register_vport_reps -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbdf421d7 mlx5_mpfs_add_mac -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbe7d4ec4 mlx5_eswitch_get_proto_dev -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbfec8e00 mlx5_core_destroy_cq -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc0e37e33 mlx5_core_create_rq -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc0ea9ddc mlx5_core_destroy_psv -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc1e1ecef mlx5_modify_header_alloc -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc2c4c7f2 mlx5_core_query_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6198b40 mlx5_mpfs_add_mac +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb6f254b0 mlx5_fc_query +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbf7b9c34 mlx5_eq_enable +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc02244a0 __SCK__tp_func_mlx5_fs_add_fg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc08c9b31 mlx5_core_create_psv +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc1037bcd mlx5_alloc_bfreg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc1152338 mlx5_cmd_exec_polling +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc25ff31e mlx5_eswitch_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc4050eab mlx5_core_attach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc65c98af mlx5_eswitch_get_encap_mode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc67ba722 mlx5_fpga_mem_read +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc965f0ac mlx5_lag_get_slave_port EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcad019c3 __SCT__tp_func_mlx5_fs_del_fg -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xce1b061c mlx5_rdma_rn_get_params -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcedbfc58 mlx5_core_create_tis -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd44c5ee8 mlx5_fpga_sbu_conn_create -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd55e5b78 mlx5_eswitch_get_encap_mode -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd85d90a9 mlx5_notifier_unregister -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdabfbcc5 mlx5_fpga_mem_read +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcb8a7358 mlx5_packet_reformat_dealloc +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcd3626d1 mlx5_eswitch_uplink_get_proto_dev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd023240c mlx5_query_ib_port_oper +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd153c047 mlx5_core_create_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd213cf2d mlx5_cmd_exec +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd320f764 mlx5_comp_irq_get_affinity_mask +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd3d1e417 __tracepoint_mlx5_fs_set_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd56f5ab5 mlx5_core_destroy_mkey +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd6ebbcc0 __traceiter_mlx5_fs_set_fte +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd8a514c8 mlx5_core_alloc_transport_domain +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd933497a mlx5_core_detach_mcg +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xda650a09 mlx5_eswitch_register_vport_reps EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdb622108 __SCT__tp_func_mlx5_fs_add_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdc5c6c8f mlx5_cmd_alloc_uar EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdee4591d __traceiter_mlx5_fs_add_fg EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdfbc08aa __SCT__tp_func_mlx5_fw EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe1b97d95 mlx5_destroy_flow_group -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe2169bfb mlx5_lag_get_slave_port EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe30fb2a8 __SCT__tp_func_mlx5_fs_del_ft -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe8d92866 mlx5_lag_get_roce_netdev -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe9689260 mlx5_core_destroy_tis -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe97f83c5 mlx5_debug_qp_add -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xea1dbda1 mlx5_fc_destroy -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xebd3036d mlx5_eq_create_generic -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xecbae35c __tracepoint_mlx5_fs_add_ft -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xedda40cc mlx5_query_ib_port_oper -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xee45a6f2 __SCK__tp_func_mlx5_fs_del_ft -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xeec2cfba mlx5_core_destroy_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe7267538 mlx5_eswitch_reg_c1_loopback_enabled +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe75eaaa7 mlx5_put_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xebd23a06 mlx5_core_query_rq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xebe4c018 mlx5_debug_qp_remove +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xec203b0f mlx5_core_destroy_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xec2dbb29 __tracepoint_mlx5_fs_add_rule +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xef584f70 mlx5_core_modify_sq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xefd90702 mlx5_nic_vport_disable_roce EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf120e368 mlx5_create_lag_demux_flow_table -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf2dd14f0 mlx5_core_destroy_rqt +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1276415 mlx5_cmd_create_vport_lag +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf4c98dfe mlx5_get_uars_page +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf4f02d02 mlx5_mpfs_del_mac +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf6735be5 mlx5_lag_is_active +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf6f9f64c mlx5_lag_get_roce_netdev +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf87a31cc mlx5_eq_notifier_register EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf9c5a596 __traceiter_mlx5_fs_add_ft -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfe5d7cbd mlx5_cmd_alloc_uar -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfee8cdc3 mlx5_core_alloc_pd -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xffefc89d mlx5_packet_reformat_dealloc -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfff75171 mlx5_alloc_bfreg -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxfw/mlxfw 0xba019cc5 mlxfw_firmware_flash +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfc25577d __tracepoint_mlx5_fs_del_ft +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfcc057bf mlx5_eq_get_eqe +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfcdc4ecb mlx5_core_create_cq +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfd3a27c4 mlx5_core_roce_gid_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfdaa252d mlx5_rsc_dump_cmd_create +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfeb0fd9a mlx5_core_query_vendor_id +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxfw/mlxfw 0x02c5ce87 mlxfw_firmware_flash EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x02dfd3d0 mlxsw_afk_key_info_block_encoding_get -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0352a583 mlxsw_core_ptp_transmitted EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x07abcc0c mlxsw_afa_block_append_trap EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0ca34ccf mlxsw_core_max_ports EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x0e81c09c mlxsw_afk_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x1184ce8a mlxsw_core_port_devlink_port_get EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x120a1738 mlxsw_core_port_init EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x15801382 mlxsw_afk_key_info_put EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x18b0ad00 mlxsw_afa_block_append_police EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x19fa5852 mlxsw_core_flush_owq -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x1c1c1d9a mlxsw_core_rx_listener_unregister EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x1c6605f6 mlxsw_afa_block_append_qos_switch_prio EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x1cb8f858 mlxsw_reg_trans_query EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x202693f0 mlxsw_afa_block_cur_set EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x21daf3af mlxsw_afa_block_append_qos_dsfield EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x23eddc68 mlxsw_core_cpu_port_init EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2c68ced3 mlxsw_core_read_frc_h +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x2d25a8ac mlxsw_core_rx_listener_register EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x35ba2254 mlxsw_afk_values_add_u32 +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x37e3e999 mlxsw_core_skb_transmit EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x38185d87 mlxsw_afa_block_append_qos_ecn EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x406b4614 mlxsw_afa_block_append_counter EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x43a9b87e mlxsw_afa_block_terminate -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4581965f mlxsw_core_driver_unregister EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x47041e4e mlxsw_afk_key_info_blocks_count_get EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x484489a4 mlxsw_cmd_exec EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4a6ed376 mlxsw_core_port_fini EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x4b0bae55 mlxsw_core_kvd_sizes_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x51376526 mlxsw_afa_block_append_mirror +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x584e9bb5 mlxsw_core_trap_register EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5a099407 mlxsw_afa_block_append_qos_dscp EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5cf3dd79 mlxsw_core_bus_device_unregister -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5d9140b7 mlxsw_core_trap_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5de8faa4 mlxsw_core_driver_register EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x5ff17b5c mlxsw_afa_block_destroy EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x618a30ab mlxsw_afa_block_commit EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x61ea9293 mlxsw_core_event_listener_register @@ -2068,29 +2071,30 @@ EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x827a2f1f mlxsw_afa_block_jump EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x829e8851 mlxsw_afa_block_first_set EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x858c30d0 mlxsw_afa_block_create -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8606a2e7 mlxsw_core_driver_register EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x86a40342 mlxsw_core_res_get EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x87b88710 mlxsw_core_event_listener_unregister EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8854d198 mlxsw_reg_write EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8ba5fa7e mlxsw_core_lag_mapping_set +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8f0c0344 mlxsw_env_get_module_eeprom +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x8f7a771d mlxsw_core_driver_unregister EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x902c3533 mlxsw_core_schedule_dw -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x94c8d6a0 mlxsw_core_trap_state_set EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x97035a9c mlxsw_afa_block_append_fid_set EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x97cf0ab9 mlxsw_core_port_is_xm EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x996c5d6d mlxsw_reg_trans_bulk_wait -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9cbe93a3 mlxsw_core_port_devlink_port_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9aa831b9 mlxsw_core_rx_listener_unregister EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9cbf026d mlxsw_afa_destroy +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9d5034f0 mlxsw_core_skb_receive EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9e41f494 mlxsw_afk_encode +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0x9f30a016 mlxsw_core_ptp_transmitted +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa4ea1bbc mlxsw_core_trap_unregister EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xa7765e88 mlxsw_reg_query -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb1b72246 mlxsw_afa_block_append_mirror +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb0d240d6 mlxsw_core_port_eth_set EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb5e762fa mlxsw_afk_values_add_buf EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb6517b2e mlxsw_afa_block_append_trap_and_forward EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xb9f797a9 mlxsw_env_module_overheat_counter_get EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xba05b3b0 mlxsw_core_emad_string_tlv_enable -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbb286c74 mlxsw_afa_create EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbbb7a867 mlxsw_afa_block_append_sampler EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbc222a8d mlxsw_afk_clear -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbdbfcf9d mlxsw_env_get_module_eeprom EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbe82d6cc mlxsw_env_get_module_info EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfb7df3c mlxsw_core_driver_priv EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xbfd01f33 mlxsw_core_port_ib_set @@ -2098,31 +2102,28 @@ EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xca257489 mlxsw_afa_block_append_fwd EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xcbab836f mlxsw_core_fw_rev_minor_subminor_validate EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd1a82f0b mlxsw_core_lag_mapping_get +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd1bfcad6 mlxsw_core_bus_device_register EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd252e62d mlxsw_core_skb_transmit_busy EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd28256cf mlxsw_afa_block_append_allocated_counter EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd4874014 mlxsw_core_resources_query EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd71566b9 mlxsw_core_schedule_work EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd84eb6b0 mlxsw_afa_block_append_drop +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd85b38cb mlxsw_core_trap_state_set EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xd9f711ae mlxsw_afa_block_append_mcrouter EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc31781e mlxsw_reg_trans_write EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdc415cf1 mlxsw_afa_block_continue EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xde4e211f mlxsw_afa_block_append_l4port EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xdeb1dc2e mlxsw_afa_block_first_kvdl_index EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe16986dd mlxsw_afa_block_activity_get -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe2aa6be9 mlxsw_core_port_eth_set -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe5aef21e mlxsw_core_bus_device_register -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xe96d4ad7 mlxsw_core_rx_listener_register -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xeb30ecd0 mlxsw_core_skb_receive EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xecab212a mlxsw_afa_cookie_lookup -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf27630b7 mlxsw_core_trap_register EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf2ca3bae mlxsw_core_res_query_enabled EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf4909bea mlxsw_core_port_type_get -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf52e3231 mlxsw_core_skb_transmit +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xf4f34133 mlxsw_afa_create EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_core 0xff007c25 mlxsw_core_cpu_port_fini -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0x76c93b5e mlxsw_i2c_driver_unregister -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0xf1dd456f mlxsw_i2c_driver_register -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0x98583e4e mlxsw_pci_driver_register -EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0xb3b034d9 mlxsw_pci_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0x6aa62bf5 mlxsw_i2c_driver_unregister +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_i2c 0x88940f75 mlxsw_i2c_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0xbeec6f5c mlxsw_pci_driver_register +EXPORT_SYMBOL drivers/net/ethernet/mellanox/mlxsw/mlxsw_pci 0xed5381bb mlxsw_pci_driver_unregister EXPORT_SYMBOL drivers/net/mdio 0x3e17f466 mdio_set_flag EXPORT_SYMBOL drivers/net/mdio 0x424a69a2 mdio45_ethtool_ksettings_get_npage EXPORT_SYMBOL drivers/net/mdio 0x60443957 mdio45_probe @@ -2134,32 +2135,32 @@ EXPORT_SYMBOL drivers/net/mdio/mdio-bitbang 0xe54bd7bd free_mdio_bitbang EXPORT_SYMBOL drivers/net/mdio/mdio-bitbang 0xef46abf1 mdiobb_write EXPORT_SYMBOL drivers/net/mdio/mdio-bitbang 0xf1e762a4 mdiobb_read -EXPORT_SYMBOL drivers/net/mii 0x10070a09 mii_ethtool_sset -EXPORT_SYMBOL drivers/net/mii 0x109368b9 mii_nway_restart -EXPORT_SYMBOL drivers/net/mii 0x26af6822 mii_link_ok -EXPORT_SYMBOL drivers/net/mii 0x4614ac26 generic_mii_ioctl -EXPORT_SYMBOL drivers/net/mii 0x730b57d7 mii_ethtool_set_link_ksettings -EXPORT_SYMBOL drivers/net/mii 0x8e3105ad mii_ethtool_gset -EXPORT_SYMBOL drivers/net/mii 0xb5c944eb mii_check_gmii_support -EXPORT_SYMBOL drivers/net/mii 0xb9597142 mii_check_link -EXPORT_SYMBOL drivers/net/mii 0xd0e74937 mii_check_media -EXPORT_SYMBOL drivers/net/mii 0xe75e59fc mii_ethtool_get_link_ksettings -EXPORT_SYMBOL drivers/net/phy/bcm-phy-lib 0xf125b733 bcm54xx_auxctl_write -EXPORT_SYMBOL drivers/net/ppp/pppox 0x629ab62a pppox_compat_ioctl -EXPORT_SYMBOL drivers/net/ppp/pppox 0x6a9e4aaf register_pppox_proto -EXPORT_SYMBOL drivers/net/ppp/pppox 0x7ef0e693 pppox_ioctl +EXPORT_SYMBOL drivers/net/mii 0x10e7b804 mii_nway_restart +EXPORT_SYMBOL drivers/net/mii 0x13f7a6bc mii_ethtool_sset +EXPORT_SYMBOL drivers/net/mii 0x1762b556 mii_check_gmii_support +EXPORT_SYMBOL drivers/net/mii 0x21bf95d8 mii_ethtool_set_link_ksettings +EXPORT_SYMBOL drivers/net/mii 0x3aa37d46 mii_check_link +EXPORT_SYMBOL drivers/net/mii 0x42bba544 mii_link_ok +EXPORT_SYMBOL drivers/net/mii 0x67e07602 generic_mii_ioctl +EXPORT_SYMBOL drivers/net/mii 0x6951716d mii_ethtool_get_link_ksettings +EXPORT_SYMBOL drivers/net/mii 0x9fca66df mii_check_media +EXPORT_SYMBOL drivers/net/mii 0xa10e1697 mii_ethtool_gset +EXPORT_SYMBOL drivers/net/phy/bcm-phy-lib 0x461f7fc1 bcm54xx_auxctl_write +EXPORT_SYMBOL drivers/net/ppp/pppox 0x075f4bfe pppox_unbind_sock +EXPORT_SYMBOL drivers/net/ppp/pppox 0x231984a5 pppox_compat_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x232a9791 pppox_ioctl +EXPORT_SYMBOL drivers/net/ppp/pppox 0x400bbd66 register_pppox_proto EXPORT_SYMBOL drivers/net/ppp/pppox 0xe0ff7a18 unregister_pppox_proto -EXPORT_SYMBOL drivers/net/ppp/pppox 0xf8ce6923 pppox_unbind_sock -EXPORT_SYMBOL drivers/net/wan/hdlc 0x02018e58 hdlc_close -EXPORT_SYMBOL drivers/net/wan/hdlc 0x3f023808 hdlc_open -EXPORT_SYMBOL drivers/net/wan/hdlc 0x72048b71 alloc_hdlcdev -EXPORT_SYMBOL drivers/net/wan/hdlc 0x850d312c unregister_hdlc_device -EXPORT_SYMBOL drivers/net/wan/hdlc 0x8b144cde unregister_hdlc_protocol -EXPORT_SYMBOL drivers/net/wan/hdlc 0x8ea9d677 hdlc_ioctl -EXPORT_SYMBOL drivers/net/wan/hdlc 0x9504ac71 attach_hdlc_protocol -EXPORT_SYMBOL drivers/net/wan/hdlc 0xa20fe443 hdlc_start_xmit -EXPORT_SYMBOL drivers/net/wan/hdlc 0xd016da05 register_hdlc_protocol -EXPORT_SYMBOL drivers/net/wan/hdlc 0xd9165c28 detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x27b79b23 alloc_hdlcdev +EXPORT_SYMBOL drivers/net/wan/hdlc 0x2942f9cc hdlc_start_xmit +EXPORT_SYMBOL drivers/net/wan/hdlc 0x33076f7e register_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x347271d3 hdlc_close +EXPORT_SYMBOL drivers/net/wan/hdlc 0x63ec30e6 hdlc_ioctl +EXPORT_SYMBOL drivers/net/wan/hdlc 0x70d2794e hdlc_open +EXPORT_SYMBOL drivers/net/wan/hdlc 0x84ac0cde unregister_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x900af87f detach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0x938edb00 attach_hdlc_protocol +EXPORT_SYMBOL drivers/net/wan/hdlc 0xedc59d22 unregister_hdlc_device EXPORT_SYMBOL drivers/nfc/microread/microread 0xbc94ba86 microread_probe EXPORT_SYMBOL drivers/nfc/microread/microread 0xca94a929 microread_remove EXPORT_SYMBOL drivers/nfc/pn544/pn544 0xe2a0ab51 pn544_hci_probe @@ -2268,18 +2269,18 @@ EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0x1a20ef72 mraid_mm_register_adp EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xa21fafb9 mraid_mm_adapter_app_handle EXPORT_SYMBOL drivers/scsi/megaraid/megaraid_mm 0xb2cf7c01 mraid_mm_unregister_adp -EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x16bb6077 qlt_unreg_sess -EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x27dbf11e qlt_enable_vha -EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x2919220f qlt_free_mcmd -EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7c9016f1 qlt_abort_cmd -EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x8996f05d qlt_stop_phase2 -EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x971d8e7c qlt_xmit_tm_rsp -EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9b31706d qlt_lport_register -EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x9e15f8be qlt_stop_phase1 -EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xd9390c62 qlt_lport_deregister -EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xe0bef776 qlt_xmit_response -EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xed381257 qlt_free_cmd -EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xee024970 qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x12137edd qlt_rdy_to_xfer +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x32fc7fe9 qlt_unreg_sess +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x59ca0737 qlt_lport_register +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x612237e1 qlt_xmit_response +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x71cf5a53 qlt_free_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x7b186dd0 qlt_xmit_tm_rsp +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x93783f26 qlt_abort_cmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0x96569d7b qlt_free_mcmd +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcbb69471 qlt_stop_phase1 +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xcc5d8090 qlt_enable_vha +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xddcac801 qlt_lport_deregister +EXPORT_SYMBOL drivers/scsi/qla2xxx/qla2xxx 0xf6814891 qlt_stop_phase2 EXPORT_SYMBOL drivers/scsi/raid_class 0x3331b6f7 raid_component_add EXPORT_SYMBOL drivers/scsi/raid_class 0x44b80f4d raid_class_attach EXPORT_SYMBOL drivers/scsi/raid_class 0xb757e9f7 raid_class_release @@ -2381,154 +2382,154 @@ EXPORT_SYMBOL drivers/ssb/ssb 0xd3dc2c20 ssb_clockspeed EXPORT_SYMBOL drivers/ssb/ssb 0xdfc7c6ef ssb_admatch_size EXPORT_SYMBOL drivers/ssb/ssb 0xe6fadd6d ssb_pmu_set_ldo_paref +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x01f682e1 fbtft_write_gpio16_wr_latched EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0cdd9cfa fbtft_register_framebuffer +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x0e4faa94 fbtft_framebuffer_alloc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x165be7b7 fbtft_register_backlight EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x1d3729de fbtft_unregister_framebuffer -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2475c17f fbtft_unregister_backlight EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x2dc824ba fbtft_dbg_hex -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3a0f12b4 fbtft_write_spi_emulate_9 -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3b5577d7 fbtft_write_reg16_bus16 -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3f19953c fbtft_write_gpio16_wr -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x47778ba3 fbtft_write_reg16_bus8 -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x49351374 fbtft_write_spi -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x52d42ac9 fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3815ee3c fbtft_write_reg8_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x3ba4af3c fbtft_write_reg16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x41e625eb fbtft_write_reg16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4c118208 fbtft_write_spi_emulate_9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4dcaa9da fbtft_probe_common +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x4f06ce42 fbtft_write_vmem16_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x59afa827 fbtft_write_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x668c9636 fbtft_write_reg8_bus8 EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x6f6936bf fbtft_framebuffer_release -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x818c54d8 fbtft_write_gpio16_wr_latched -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8aa1d4c3 fbtft_write_gpio8_wr -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x923d2a5b fbtft_write_vmem16_bus8 -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x95b42b67 fbtft_probe_common -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa2c72263 fbtft_framebuffer_alloc -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xa7e29c4f fbtft_register_backlight -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xb52ef8e8 fbtft_read_spi -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc1214b89 fbtft_write_buf_dc -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc8607a53 fbtft_init_display -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xd9cefa10 fbtft_write_vmem16_bus16 -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdcd4f9a9 fbtft_write_vmem16_bus9 -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf26af382 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x7dcb0091 fbtft_init_display +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x8155ebbe fbtft_write_vmem16_bus9 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0x9dc1e94c fbtft_write_buf_dc +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xae28f6e8 fbtft_read_spi +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xc2a6db63 fbtft_unregister_backlight +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdb5bddd3 fbtft_write_vmem16_bus16 +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xdba392bc fbtft_write_gpio8_wr EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf454330b fbtft_remove_common -EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xfa5cb8ee fbtft_write_reg8_bus8 -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0031f449 iscsit_allocate_cmd -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x00b0acb9 iscsit_logout_post_handler -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x047b456f iscsit_reject_cmd -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1b4c81e3 iscsit_add_cmd_to_immediate_queue -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1e27ec74 iscsit_add_reject -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2c907c97 iscsit_find_cmd_from_itt -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x307f35dd iscsit_build_reject +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf8ad76f6 fbtft_write_gpio16_wr +EXPORT_SYMBOL drivers/staging/fbtft/fbtft 0xf98fdc38 fbtft_write_vmem8_bus8 +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x01adb23f iscsit_find_cmd_from_itt +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x08871930 iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x0a3f6768 iscsit_process_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1656956a iscsit_release_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x177a5942 iscsit_find_cmd_from_itt_or_dump +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x19014af4 iscsit_add_reject +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x1bc30fa4 iscsit_build_datain_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2374103d iscsit_check_dataout_payload +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x2979ce56 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x333626f3 iscsit_logout_post_handler EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x380fa3f4 iscsit_unregister_transport -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x38ed0a22 iscsit_aborted_task -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x39f12060 iscsit_handle_logout_cmd -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4abb9d78 iscsit_find_cmd_from_itt_or_dump -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x53c36362 iscsit_build_datain_pdu -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x53ec9abd iscsit_sequence_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x472edf4e iscsit_process_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x4c0365d6 iscsit_handle_task_mgt_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x52414cea iscsit_build_rsp_pdu +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x55f8ee06 iscsit_response_queue EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x58abc8e1 iscsit_tmr_post_handler +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x6335c930 iscsit_add_cmd_to_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x70254592 iscsit_sequence_cmd EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x74384209 iscsit_increment_maxcmdsn -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x82d43cc2 iscsit_check_dataout_payload -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x84238b9f iscsit_free_cmd -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8dbb7ce1 iscsit_setup_text_cmd -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x90a51548 iscsit_process_scsi_cmd -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x92e11c04 iscsit_build_rsp_pdu -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9fadce5f iscsit_release_cmd -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa0a55fc5 iscsit_queue_rsp -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xa67cdc07 iscsit_build_task_mgt_rsp -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaa56d044 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x80f0fe2d iscsi_change_param_sprintf +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x849e507b iscsit_allocate_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x87bf9760 iscsit_aborted_task +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8b8000de iscsit_queue_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x8f3c2fb2 iscsit_handle_snack +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x98107bfc __iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9bf92894 iscsit_build_logout_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0x9e17ea2f iscsit_check_dataout_hdr +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xad543adb iscsit_build_r2ts_for_cmd EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xae0bba24 iscsit_register_transport -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xaf8009b7 iscsi_change_param_sprintf EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xb0a3ec43 iscsit_stop_dataout_timer -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc46d7f8a iscsit_set_unsolicited_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xbd413b7f iscsit_free_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc4349180 iscsi_target_check_login_request EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc4f48192 iscsit_cause_connection_reinstatement -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xc993e2ec iscsit_check_dataout_hdr -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd0461500 iscsit_handle_task_mgt_cmd -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd190582e iscsit_process_nop_out -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd2cdf72a iscsit_setup_nop_out -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd60e9312 iscsi_target_check_login_request -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd73d5ecf iscsit_handle_snack -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe3b652a9 iscsit_build_text_rsp -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe6eada27 iscsit_response_queue -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe70899b5 iscsit_process_text_cmd -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xea1aac17 iscsit_build_r2ts_for_cmd -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xea38403a iscsit_setup_scsi_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcada7e8e iscsit_immediate_queue +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcbed77a5 iscsit_set_unsolicited_dataout +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xcfa25d0a iscsit_reject_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xd2c9e5c8 iscsit_setup_text_cmd +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xdea39fbb iscsit_build_task_mgt_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe2e2d41b iscsit_setup_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xe80cb3b8 iscsit_process_nop_out +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xee7c98fc iscsit_build_reject EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xefbc3b50 iscsit_get_datain_values +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf17b5c77 iscsit_handle_logout_cmd EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf34332f0 iscsi_find_param_from_key -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf53a5658 iscsit_immediate_queue -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf6c8939f __iscsit_check_dataout_hdr -EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xfcfe8243 iscsit_build_nopin_rsp +EXPORT_SYMBOL drivers/target/iscsi/iscsi_target_mod 0xf9eb6a8e iscsit_build_text_rsp EXPORT_SYMBOL drivers/target/target_core_mod 0x01091222 spc_emulate_report_luns -EXPORT_SYMBOL drivers/target/target_core_mod 0x01b325b8 target_submit_tmr -EXPORT_SYMBOL drivers/target/target_core_mod 0x01c99639 target_cmd_parse_cdb -EXPORT_SYMBOL drivers/target/target_core_mod 0x01e314fa core_allocate_nexus_loss_ua EXPORT_SYMBOL drivers/target/target_core_mod 0x04090f80 core_alua_check_nonop_delay -EXPORT_SYMBOL drivers/target/target_core_mod 0x04fe3e43 core_tpg_deregister EXPORT_SYMBOL drivers/target/target_core_mod 0x0871ffd6 transport_set_vpd_ident +EXPORT_SYMBOL drivers/target/target_core_mod 0x0f066c39 core_tpg_register EXPORT_SYMBOL drivers/target/target_core_mod 0x0fad2705 spc_emulate_evpd_83 +EXPORT_SYMBOL drivers/target/target_core_mod 0x101b49a8 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x1034ff0f transport_generic_free_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x131488a4 target_send_busy EXPORT_SYMBOL drivers/target/target_core_mod 0x142072c0 transport_set_vpd_assoc -EXPORT_SYMBOL drivers/target/target_core_mod 0x18e3102b __target_init_cmd -EXPORT_SYMBOL drivers/target/target_core_mod 0x1ebc804e transport_generic_new_cmd -EXPORT_SYMBOL drivers/target/target_core_mod 0x22d6874a target_complete_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x14beee5c target_setup_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x1bbd8327 transport_backend_register +EXPORT_SYMBOL drivers/target/target_core_mod 0x1d0c3479 target_complete_cmd EXPORT_SYMBOL drivers/target/target_core_mod 0x28394865 sbc_dif_copy_prot -EXPORT_SYMBOL drivers/target/target_core_mod 0x2895707e target_put_nacl -EXPORT_SYMBOL drivers/target/target_core_mod 0x2c26a2cd core_tpg_get_initiator_node_acl -EXPORT_SYMBOL drivers/target/target_core_mod 0x34a073d3 target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x2b0d44a7 transport_alloc_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x31b3926c transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x32575e4c target_cmd_parse_cdb EXPORT_SYMBOL drivers/target/target_core_mod 0x3a20a9d7 transport_set_vpd_ident_type +EXPORT_SYMBOL drivers/target/target_core_mod 0x3afaf3f7 transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x3de71875 transport_alloc_session_tags EXPORT_SYMBOL drivers/target/target_core_mod 0x3f0da301 passthrough_pr_attrib_attrs EXPORT_SYMBOL drivers/target/target_core_mod 0x40aa3751 passthrough_attrib_attrs EXPORT_SYMBOL drivers/target/target_core_mod 0x43831448 spc_emulate_inquiry_std -EXPORT_SYMBOL drivers/target/target_core_mod 0x4829cf31 transport_generic_request_failure EXPORT_SYMBOL drivers/target/target_core_mod 0x49d7b8fa sbc_parse_cdb -EXPORT_SYMBOL drivers/target/target_core_mod 0x4aeb7200 transport_kmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x4f71509c core_tpg_set_initiator_node_tag EXPORT_SYMBOL drivers/target/target_core_mod 0x50f0b62b sbc_attrib_attrs -EXPORT_SYMBOL drivers/target/target_core_mod 0x55ab6082 target_lun_is_rdonly -EXPORT_SYMBOL drivers/target/target_core_mod 0x5b30aa3d target_tpg_has_node_acl -EXPORT_SYMBOL drivers/target/target_core_mod 0x605f299d core_tpg_set_initiator_node_tag +EXPORT_SYMBOL drivers/target/target_core_mod 0x547dd499 target_stop_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x54efdd78 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0x589d7036 target_tpg_has_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x5a84dfee transport_generic_request_failure +EXPORT_SYMBOL drivers/target/target_core_mod 0x61853a00 transport_send_check_condition_and_sense EXPORT_SYMBOL drivers/target/target_core_mod 0x61a7cbf3 target_register_template EXPORT_SYMBOL drivers/target/target_core_mod 0x638bffb7 target_free_sgl -EXPORT_SYMBOL drivers/target/target_core_mod 0x639c4edc transport_lookup_cmd_lun -EXPORT_SYMBOL drivers/target/target_core_mod 0x65fc87bd __transport_register_session -EXPORT_SYMBOL drivers/target/target_core_mod 0x66d511c4 transport_kunmap_data_sg +EXPORT_SYMBOL drivers/target/target_core_mod 0x63b05bc8 target_show_dynamic_sessions +EXPORT_SYMBOL drivers/target/target_core_mod 0x74844b95 target_put_nacl EXPORT_SYMBOL drivers/target/target_core_mod 0x76143082 target_unregister_template -EXPORT_SYMBOL drivers/target/target_core_mod 0x78728dfc target_send_busy +EXPORT_SYMBOL drivers/target/target_core_mod 0x772801eb __transport_register_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7935ba1c transport_init_session EXPORT_SYMBOL drivers/target/target_core_mod 0x7a1d0d3c target_alloc_sgl -EXPORT_SYMBOL drivers/target/target_core_mod 0x7ab4a088 target_set_cmd_data_length -EXPORT_SYMBOL drivers/target/target_core_mod 0x7b5b1c3d transport_deregister_session_configfs -EXPORT_SYMBOL drivers/target/target_core_mod 0x7bb3cc1d target_show_cmd -EXPORT_SYMBOL drivers/target/target_core_mod 0x80358da8 transport_send_check_condition_and_sense -EXPORT_SYMBOL drivers/target/target_core_mod 0x803f7928 transport_init_session -EXPORT_SYMBOL drivers/target/target_core_mod 0x80624886 passthrough_parse_cdb -EXPORT_SYMBOL drivers/target/target_core_mod 0x86739f2b target_put_sess_cmd -EXPORT_SYMBOL drivers/target/target_core_mod 0x86a4de0c target_get_sess_cmd -EXPORT_SYMBOL drivers/target/target_core_mod 0x8745fcdf target_setup_session -EXPORT_SYMBOL drivers/target/target_core_mod 0x88dbd4b2 transport_handle_cdb_direct -EXPORT_SYMBOL drivers/target/target_core_mod 0x89a5a3ef target_nacl_find_deve -EXPORT_SYMBOL drivers/target/target_core_mod 0x8bf74aae transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x7a212e0f target_put_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x7ae32143 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0x7e1906d2 core_tpg_get_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0x83c97005 transport_handle_cdb_direct +EXPORT_SYMBOL drivers/target/target_core_mod 0x83ed94d8 transport_free_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x84c7d80d core_allocate_nexus_loss_ua +EXPORT_SYMBOL drivers/target/target_core_mod 0x872e758a target_execute_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8891a364 transport_deregister_session +EXPORT_SYMBOL drivers/target/target_core_mod 0x8da5e1e9 target_get_sess_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0x8f572939 core_tpg_set_initiator_node_queue_depth +EXPORT_SYMBOL drivers/target/target_core_mod 0x99d59425 target_complete_cmd_with_length EXPORT_SYMBOL drivers/target/target_core_mod 0x9a4b18c3 sbc_dif_verify -EXPORT_SYMBOL drivers/target/target_core_mod 0x9aab101c transport_copy_sense_to_cmd -EXPORT_SYMBOL drivers/target/target_core_mod 0xa390c254 core_tpg_set_initiator_node_queue_depth -EXPORT_SYMBOL drivers/target/target_core_mod 0xa450d696 transport_wait_for_tasks -EXPORT_SYMBOL drivers/target/target_core_mod 0xab2489f4 transport_backend_register -EXPORT_SYMBOL drivers/target/target_core_mod 0xab7d80cc target_wait_for_sess_cmds -EXPORT_SYMBOL drivers/target/target_core_mod 0xae5f6a6f transport_generic_free_cmd -EXPORT_SYMBOL drivers/target/target_core_mod 0xafc949ba target_to_linux_sector -EXPORT_SYMBOL drivers/target/target_core_mod 0xb01f9bbd transport_free_session -EXPORT_SYMBOL drivers/target/target_core_mod 0xba4200b0 target_submit_cmd -EXPORT_SYMBOL drivers/target/target_core_mod 0xc0a5b9ea core_tpg_register -EXPORT_SYMBOL drivers/target/target_core_mod 0xc11491f5 target_complete_cmd_with_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xa0f5a07f target_wait_for_sess_cmds +EXPORT_SYMBOL drivers/target/target_core_mod 0xa239d3c7 transport_wait_for_tasks +EXPORT_SYMBOL drivers/target/target_core_mod 0xa2fae98e target_nacl_find_deve +EXPORT_SYMBOL drivers/target/target_core_mod 0xae1542c5 passthrough_parse_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xb6b6f4b6 target_submit_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xc1492b98 transport_lookup_cmd_lun EXPORT_SYMBOL drivers/target/target_core_mod 0xc35e6f09 target_undepend_item -EXPORT_SYMBOL drivers/target/target_core_mod 0xc4f9623c target_backend_unregister -EXPORT_SYMBOL drivers/target/target_core_mod 0xc7c089ac transport_lookup_tmr_lun -EXPORT_SYMBOL drivers/target/target_core_mod 0xd083b110 target_remove_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xc46ecc7c target_backend_unregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xc5ed872c core_tpg_check_initiator_node_acl +EXPORT_SYMBOL drivers/target/target_core_mod 0xc6829442 target_cmd_init_cdb +EXPORT_SYMBOL drivers/target/target_core_mod 0xca3ff71f target_remove_session EXPORT_SYMBOL drivers/target/target_core_mod 0xd34c9f1e sbc_get_write_same_sectors -EXPORT_SYMBOL drivers/target/target_core_mod 0xd366f387 target_cmd_init_cdb -EXPORT_SYMBOL drivers/target/target_core_mod 0xd55b5906 transport_generic_handle_tmr +EXPORT_SYMBOL drivers/target/target_core_mod 0xd4938d55 target_set_cmd_data_length +EXPORT_SYMBOL drivers/target/target_core_mod 0xd64e518f transport_generic_new_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xd7f563c9 target_show_cmd EXPORT_SYMBOL drivers/target/target_core_mod 0xd8387bc7 spc_parse_cdb -EXPORT_SYMBOL drivers/target/target_core_mod 0xd90cbc7c core_tpg_check_initiator_node_acl -EXPORT_SYMBOL drivers/target/target_core_mod 0xd9b03487 transport_alloc_session_tags -EXPORT_SYMBOL drivers/target/target_core_mod 0xda69b5e3 target_stop_session EXPORT_SYMBOL drivers/target/target_core_mod 0xdacc07c1 target_depend_item +EXPORT_SYMBOL drivers/target/target_core_mod 0xde75f78b target_to_linux_sector EXPORT_SYMBOL drivers/target/target_core_mod 0xde9bd34a core_tmr_alloc_req -EXPORT_SYMBOL drivers/target/target_core_mod 0xe44c5c1e target_show_dynamic_sessions -EXPORT_SYMBOL drivers/target/target_core_mod 0xf01b8824 transport_register_session -EXPORT_SYMBOL drivers/target/target_core_mod 0xf0abcaa7 target_configure_unmap_from_queue +EXPORT_SYMBOL drivers/target/target_core_mod 0xdeac0c4d __target_init_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xe1cde528 target_submit_cmd +EXPORT_SYMBOL drivers/target/target_core_mod 0xee240973 transport_deregister_session_configfs +EXPORT_SYMBOL drivers/target/target_core_mod 0xef015f73 target_lun_is_rdonly EXPORT_SYMBOL drivers/target/target_core_mod 0xf3c2dfe0 transport_set_vpd_proto_id +EXPORT_SYMBOL drivers/target/target_core_mod 0xf3d48bc0 transport_lookup_tmr_lun EXPORT_SYMBOL drivers/target/target_core_mod 0xf4062b71 sbc_get_device_type -EXPORT_SYMBOL drivers/target/target_core_mod 0xfd68d147 transport_alloc_session +EXPORT_SYMBOL drivers/target/target_core_mod 0xfb99cf90 core_tpg_deregister +EXPORT_SYMBOL drivers/target/target_core_mod 0xfdb94979 transport_copy_sense_to_cmd EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x0f5369f2 mdev_unregister_driver EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x12ca2812 mdev_register_driver EXPORT_SYMBOL drivers/vfio/mdev/mdev 0x44feb5c1 mdev_register_device @@ -2749,16 +2750,16 @@ EXPORT_SYMBOL lib/zstd/zstd_compress 0xefe4f679 ZSTD_CCtxWorkspaceBound EXPORT_SYMBOL lib/zstd/zstd_compress 0xfdf70093 ZSTD_CStreamOutSize EXPORT_SYMBOL lib/zstd/zstd_compress 0xff9c4b56 ZSTD_compressBound -EXPORT_SYMBOL net/6lowpan/6lowpan 0x05745553 lowpan_nhc_add -EXPORT_SYMBOL net/6lowpan/6lowpan 0x1713491d lowpan_unregister_netdev -EXPORT_SYMBOL net/6lowpan/6lowpan 0x39fec7da lowpan_register_netdev -EXPORT_SYMBOL net/6lowpan/6lowpan 0x44ae31c3 lowpan_nhc_del -EXPORT_SYMBOL net/6lowpan/6lowpan 0x801628b8 lowpan_unregister_netdevice -EXPORT_SYMBOL net/6lowpan/6lowpan 0x9ee7b3fe lowpan_register_netdevice -EXPORT_SYMBOL net/802/p8022 0x0cc3e3db unregister_8022_client -EXPORT_SYMBOL net/802/p8022 0x43691189 register_8022_client -EXPORT_SYMBOL net/802/psnap 0x7f0b2869 register_snap_client -EXPORT_SYMBOL net/802/psnap 0xe1dc1e4d unregister_snap_client +EXPORT_SYMBOL net/6lowpan/6lowpan 0x1ab48666 lowpan_register_netdev +EXPORT_SYMBOL net/6lowpan/6lowpan 0x42c7365d lowpan_register_netdevice +EXPORT_SYMBOL net/6lowpan/6lowpan 0x78a3d449 lowpan_nhc_add +EXPORT_SYMBOL net/6lowpan/6lowpan 0x7d9be4fa lowpan_unregister_netdev +EXPORT_SYMBOL net/6lowpan/6lowpan 0xc56d21c4 lowpan_nhc_del +EXPORT_SYMBOL net/6lowpan/6lowpan 0xf190f252 lowpan_unregister_netdevice +EXPORT_SYMBOL net/802/p8022 0x0bde38fc register_8022_client +EXPORT_SYMBOL net/802/p8022 0x174efc2e unregister_8022_client +EXPORT_SYMBOL net/802/psnap 0x727adcf5 unregister_snap_client +EXPORT_SYMBOL net/802/psnap 0xaed2fb97 register_snap_client EXPORT_SYMBOL net/9p/9pnet 0x0065e1e3 p9_tag_lookup EXPORT_SYMBOL net/9p/9pnet 0x0ab918ef v9fs_get_default_trans EXPORT_SYMBOL net/9p/9pnet 0x0cf22bb8 p9_client_link @@ -2808,426 +2809,426 @@ EXPORT_SYMBOL net/9p/9pnet 0xeede66f5 p9_client_disconnect EXPORT_SYMBOL net/9p/9pnet 0xf0709d24 v9fs_register_trans EXPORT_SYMBOL net/9p/9pnet 0xfe5a7271 p9_show_client_options -EXPORT_SYMBOL net/appletalk/appletalk 0x309da40f alloc_ltalkdev -EXPORT_SYMBOL net/appletalk/appletalk 0x36bd459f atalk_find_dev_addr -EXPORT_SYMBOL net/appletalk/appletalk 0xe5c2a026 atrtr_get_dev -EXPORT_SYMBOL net/appletalk/appletalk 0xfb78a078 aarp_send_ddp -EXPORT_SYMBOL net/atm/atm 0x2b412bad atm_dev_release_vccs +EXPORT_SYMBOL net/appletalk/appletalk 0x1de82f0e atalk_find_dev_addr +EXPORT_SYMBOL net/appletalk/appletalk 0xa5b2095e alloc_ltalkdev +EXPORT_SYMBOL net/appletalk/appletalk 0xd7480147 aarp_send_ddp +EXPORT_SYMBOL net/appletalk/appletalk 0xf98264fa atrtr_get_dev +EXPORT_SYMBOL net/atm/atm 0x1916201b atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0x2880aa4e deregister_atm_ioctl EXPORT_SYMBOL net/atm/atm 0x2cc2d52d vcc_hash -EXPORT_SYMBOL net/atm/atm 0x3d3184a6 atm_init_aal5 +EXPORT_SYMBOL net/atm/atm 0x2fc2dac4 atm_dev_register +EXPORT_SYMBOL net/atm/atm 0x417295f4 atm_init_aal5 EXPORT_SYMBOL net/atm/atm 0x4443d399 atm_proc_root EXPORT_SYMBOL net/atm/atm 0x44c6e633 vcc_sklist_lock -EXPORT_SYMBOL net/atm/atm 0x6a62b821 atm_charge -EXPORT_SYMBOL net/atm/atm 0x85f09936 atm_dev_signal_change -EXPORT_SYMBOL net/atm/atm 0x99e64f3a deregister_atm_ioctl -EXPORT_SYMBOL net/atm/atm 0x9e661951 vcc_release_async +EXPORT_SYMBOL net/atm/atm 0x4864bcca atm_dev_deregister +EXPORT_SYMBOL net/atm/atm 0x6612c30e vcc_process_recv_queue +EXPORT_SYMBOL net/atm/atm 0x7aa03b27 vcc_release_async EXPORT_SYMBOL net/atm/atm 0x9feaf287 sonet_subtract_stats -EXPORT_SYMBOL net/atm/atm 0xa4e0dc9f atm_dev_deregister EXPORT_SYMBOL net/atm/atm 0xaa024146 sonet_copy_stats -EXPORT_SYMBOL net/atm/atm 0xb8f939fb atm_dev_lookup -EXPORT_SYMBOL net/atm/atm 0xcace1a09 atm_dev_register -EXPORT_SYMBOL net/atm/atm 0xd6c810be register_atm_ioctl -EXPORT_SYMBOL net/atm/atm 0xe264c3fd vcc_insert_socket -EXPORT_SYMBOL net/atm/atm 0xe471f488 atm_alloc_charge +EXPORT_SYMBOL net/atm/atm 0xab31e40e atm_dev_release_vccs +EXPORT_SYMBOL net/atm/atm 0xae27ba2b atm_dev_signal_change +EXPORT_SYMBOL net/atm/atm 0xb37e4243 vcc_insert_socket +EXPORT_SYMBOL net/atm/atm 0xc0e748eb atm_dev_lookup +EXPORT_SYMBOL net/atm/atm 0xcd9ca5f2 register_atm_ioctl +EXPORT_SYMBOL net/atm/atm 0xe3eed76a atm_charge EXPORT_SYMBOL net/atm/atm 0xf49bc67a atm_pcr_goal -EXPORT_SYMBOL net/atm/atm 0xfa83aad4 vcc_process_recv_queue -EXPORT_SYMBOL net/ax25/ax25 0x05924186 ax25_listen_release +EXPORT_SYMBOL net/ax25/ax25 0x139acc3a ax25_listen_register EXPORT_SYMBOL net/ax25/ax25 0x14cecd59 ax25_display_timer EXPORT_SYMBOL net/ax25/ax25 0x242852b9 ax25_uid_policy -EXPORT_SYMBOL net/ax25/ax25 0x441d1b2a ax25_linkfail_release +EXPORT_SYMBOL net/ax25/ax25 0x3f78d0bf ax25_linkfail_release EXPORT_SYMBOL net/ax25/ax25 0x4502c65a asc2ax EXPORT_SYMBOL net/ax25/ax25 0x53dea1ff ax2asc -EXPORT_SYMBOL net/ax25/ax25 0x53ea97ce ax25_ip_xmit -EXPORT_SYMBOL net/ax25/ax25 0x7bf3c0c4 ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x65ef43fb ax25_find_cb +EXPORT_SYMBOL net/ax25/ax25 0x76e28d69 ax25_linkfail_register EXPORT_SYMBOL net/ax25/ax25 0x8ede9e26 ax25_protocol_release -EXPORT_SYMBOL net/ax25/ax25 0x9fe5de86 ax25_listen_register -EXPORT_SYMBOL net/ax25/ax25 0xabadb2c5 ax25_send_frame +EXPORT_SYMBOL net/ax25/ax25 0xa06d7a24 ax25_send_frame EXPORT_SYMBOL net/ax25/ax25 0xc1444946 ax25cmp EXPORT_SYMBOL net/ax25/ax25 0xd43ecbf1 null_ax25_address -EXPORT_SYMBOL net/ax25/ax25 0xed1dc93e ax25_linkfail_register +EXPORT_SYMBOL net/ax25/ax25 0xe08ed118 ax25_ip_xmit EXPORT_SYMBOL net/ax25/ax25 0xee02e420 ax25_findbyuid -EXPORT_SYMBOL net/ax25/ax25 0xff25cee8 ax25_header_ops -EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x99a433b5 ebt_unregister_table -EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xc5474fb7 ebt_do_table -EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xe7dfb493 ebt_unregister_table_pre_exit -EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xfe717709 ebt_register_table -EXPORT_SYMBOL net/caif/caif 0x0bb05267 get_cfcnfg +EXPORT_SYMBOL net/ax25/ax25 0xf2dad2c2 ax25_header_ops +EXPORT_SYMBOL net/ax25/ax25 0xf2ea08f0 ax25_listen_release +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x10f9f391 ebt_unregister_table_pre_exit +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x53f90dae ebt_register_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0x68932d72 ebt_unregister_table +EXPORT_SYMBOL net/bridge/netfilter/ebtables 0xf6c62080 ebt_do_table EXPORT_SYMBOL net/caif/caif 0x1446b60a caif_client_register_refcnt +EXPORT_SYMBOL net/caif/caif 0x19012f40 cfcnfg_add_phy_layer EXPORT_SYMBOL net/caif/caif 0x2a09f713 cfpkt_fromnative +EXPORT_SYMBOL net/caif/caif 0x31e11047 caif_connect_client EXPORT_SYMBOL net/caif/caif 0x329dbd06 cfpkt_info EXPORT_SYMBOL net/caif/caif 0x38701a7c cfcnfg_del_phy_layer EXPORT_SYMBOL net/caif/caif 0x3fa84493 cfpkt_add_head EXPORT_SYMBOL net/caif/caif 0x40babbe0 cfpkt_extr_head EXPORT_SYMBOL net/caif/caif 0x4a237e57 cfpkt_tonative -EXPORT_SYMBOL net/caif/caif 0x651e7c3b caif_connect_client +EXPORT_SYMBOL net/caif/caif 0x8141a887 caif_disconnect_client EXPORT_SYMBOL net/caif/caif 0x839ddb7b cfcnfg_set_phy_state -EXPORT_SYMBOL net/caif/caif 0x8b36bd8d caif_enroll_dev +EXPORT_SYMBOL net/caif/caif 0x9aec36f0 caif_enroll_dev EXPORT_SYMBOL net/caif/caif 0x9e3e305d cfpkt_set_prio +EXPORT_SYMBOL net/caif/caif 0xacee34ff get_cfcnfg EXPORT_SYMBOL net/caif/caif 0xb7b6874e caif_free_client -EXPORT_SYMBOL net/caif/caif 0xf08c71aa caif_disconnect_client -EXPORT_SYMBOL net/caif/caif 0xf3b8a6c8 cfcnfg_add_phy_layer -EXPORT_SYMBOL net/can/can 0x09086d2b can_send -EXPORT_SYMBOL net/can/can 0x7e428c5b can_proto_unregister -EXPORT_SYMBOL net/can/can 0x843d0461 can_rx_unregister -EXPORT_SYMBOL net/can/can 0x971a7ffb can_sock_destruct -EXPORT_SYMBOL net/can/can 0xba9b82c6 can_proto_register -EXPORT_SYMBOL net/can/can 0xfa8ac9de can_rx_register -EXPORT_SYMBOL net/ceph/libceph 0x027037d6 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/can/can 0x39c4753b can_proto_register +EXPORT_SYMBOL net/can/can 0x724296e9 can_rx_unregister +EXPORT_SYMBOL net/can/can 0xb2ff031d can_rx_register +EXPORT_SYMBOL net/can/can 0xb3450ad6 can_proto_unregister +EXPORT_SYMBOL net/can/can 0xb5ef661c can_send +EXPORT_SYMBOL net/can/can 0xe37d9780 can_sock_destruct EXPORT_SYMBOL net/ceph/libceph 0x04cad6f0 ceph_pg_poolid_by_name -EXPORT_SYMBOL net/ceph/libceph 0x0509969c osd_req_op_init -EXPORT_SYMBOL net/ceph/libceph 0x0812d562 ceph_con_send -EXPORT_SYMBOL net/ceph/libceph 0x0848cd7a ceph_osdc_flush_notifies -EXPORT_SYMBOL net/ceph/libceph 0x0b8b8070 osd_req_op_cls_request_data_pages -EXPORT_SYMBOL net/ceph/libceph 0x0d986fa3 ceph_client_addr -EXPORT_SYMBOL net/ceph/libceph 0x0eff99d2 ceph_copy_user_to_page_vector -EXPORT_SYMBOL net/ceph/libceph 0x10d6c2e4 ceph_msg_get -EXPORT_SYMBOL net/ceph/libceph 0x1283246f ceph_wait_for_latest_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x059c9f52 osd_req_op_extent_osd_data_bvec_pos +EXPORT_SYMBOL net/ceph/libceph 0x0b766e01 ceph_con_send +EXPORT_SYMBOL net/ceph/libceph 0x0bce0934 ceph_monc_wait_osdmap +EXPORT_SYMBOL net/ceph/libceph 0x0ca4c780 ceph_con_keepalive +EXPORT_SYMBOL net/ceph/libceph 0x0fc70e8f ceph_auth_handle_svc_reply_done +EXPORT_SYMBOL net/ceph/libceph 0x100fdaa1 ceph_osdc_cancel_request +EXPORT_SYMBOL net/ceph/libceph 0x109a8d45 ceph_osdc_flush_notifies +EXPORT_SYMBOL net/ceph/libceph 0x10d359b4 ceph_osdc_notify EXPORT_SYMBOL net/ceph/libceph 0x1378aba3 ceph_pg_pool_name_by_id -EXPORT_SYMBOL net/ceph/libceph 0x13da2e07 ceph_copy_to_page_vector -EXPORT_SYMBOL net/ceph/libceph 0x142be215 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0x13888f00 osd_req_op_extent_init +EXPORT_SYMBOL net/ceph/libceph 0x14005124 ceph_monc_get_version EXPORT_SYMBOL net/ceph/libceph 0x165b1948 ceph_pagelist_free_reserve EXPORT_SYMBOL net/ceph/libceph 0x17c17611 ceph_pg_to_acting_primary -EXPORT_SYMBOL net/ceph/libceph 0x1b7db8a5 ceph_create_client -EXPORT_SYMBOL net/ceph/libceph 0x1bbb9b7a ceph_osdc_unwatch -EXPORT_SYMBOL net/ceph/libceph 0x1c0f1041 ceph_monc_get_version_async -EXPORT_SYMBOL net/ceph/libceph 0x1e38ff33 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x18cdcf18 osd_req_op_extent_osd_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x1a010296 ceph_monc_validate_auth +EXPORT_SYMBOL net/ceph/libceph 0x1ba19d5f ceph_msg_new +EXPORT_SYMBOL net/ceph/libceph 0x1f890743 ceph_alloc_page_vector EXPORT_SYMBOL net/ceph/libceph 0x2087719e ceph_oid_copy +EXPORT_SYMBOL net/ceph/libceph 0x20c352ac osd_req_op_init EXPORT_SYMBOL net/ceph/libceph 0x2101cbc9 ceph_oid_destroy -EXPORT_SYMBOL net/ceph/libceph 0x217612e2 ceph_cls_lock_info -EXPORT_SYMBOL net/ceph/libceph 0x22a8f230 ceph_osdc_put_request -EXPORT_SYMBOL net/ceph/libceph 0x25033eb0 ceph_osdc_abort_requests -EXPORT_SYMBOL net/ceph/libceph 0x25cf4bd8 ceph_osdc_cancel_request -EXPORT_SYMBOL net/ceph/libceph 0x2789c5cf ceph_osdc_update_epoch_barrier -EXPORT_SYMBOL net/ceph/libceph 0x281746aa ceph_auth_add_authorizer_challenge -EXPORT_SYMBOL net/ceph/libceph 0x298eb753 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0x21dfc970 ceph_auth_get_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x22366a08 ceph_monc_get_version_async +EXPORT_SYMBOL net/ceph/libceph 0x2311a635 osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0x25e97991 ceph_msg_data_add_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x2713f2a9 ceph_osdc_abort_requests +EXPORT_SYMBOL net/ceph/libceph 0x286a1709 ceph_release_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x2924124a osd_req_op_cls_response_data_pages EXPORT_SYMBOL net/ceph/libceph 0x2a983d26 ceph_pagelist_release -EXPORT_SYMBOL net/ceph/libceph 0x2ae5d35e osd_req_op_extent_dup_last -EXPORT_SYMBOL net/ceph/libceph 0x2ef6a76b ceph_osdc_alloc_request -EXPORT_SYMBOL net/ceph/libceph 0x303c8fb3 ceph_monc_blocklist_add -EXPORT_SYMBOL net/ceph/libceph 0x329d68af ceph_osdc_maybe_request_map -EXPORT_SYMBOL net/ceph/libceph 0x33884047 osd_req_op_extent_osd_data_pages -EXPORT_SYMBOL net/ceph/libceph 0x33d20a1e ceph_osdc_clear_abort_err -EXPORT_SYMBOL net/ceph/libceph 0x36f9ecd8 ceph_parse_mon_ips +EXPORT_SYMBOL net/ceph/libceph 0x2cf553b5 ceph_monc_want_map +EXPORT_SYMBOL net/ceph/libceph 0x2e770e20 osd_req_op_cls_request_data_pages +EXPORT_SYMBOL net/ceph/libceph 0x2f412b41 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0x330c274a ceph_reset_client_addr +EXPORT_SYMBOL net/ceph/libceph 0x33444c9b ceph_destroy_client +EXPORT_SYMBOL net/ceph/libceph 0x3895b91e ceph_monc_blocklist_add EXPORT_SYMBOL net/ceph/libceph 0x38f2d94e ceph_file_to_extents -EXPORT_SYMBOL net/ceph/libceph 0x3b4028bf osd_req_op_cls_request_data_pagelist EXPORT_SYMBOL net/ceph/libceph 0x3c8d7111 ceph_get_num_objects -EXPORT_SYMBOL net/ceph/libceph 0x3cb28e68 ceph_cls_lock -EXPORT_SYMBOL net/ceph/libceph 0x4078c1a2 ceph_con_close -EXPORT_SYMBOL net/ceph/libceph 0x40849d83 osd_req_op_extent_init EXPORT_SYMBOL net/ceph/libceph 0x417a9131 ceph_oloc_destroy -EXPORT_SYMBOL net/ceph/libceph 0x41dd71db ceph_con_open +EXPORT_SYMBOL net/ceph/libceph 0x43c9d4a2 ceph_print_client_options +EXPORT_SYMBOL net/ceph/libceph 0x45c5ada1 ceph_osdc_update_epoch_barrier EXPORT_SYMBOL net/ceph/libceph 0x466b85b8 libceph_compatible -EXPORT_SYMBOL net/ceph/libceph 0x501904fa ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x48e37459 ceph_client_gid +EXPORT_SYMBOL net/ceph/libceph 0x48f85b07 ceph_monc_renew_subs +EXPORT_SYMBOL net/ceph/libceph 0x4f3bb76d ceph_auth_handle_bad_authorizer EXPORT_SYMBOL net/ceph/libceph 0x50603ce3 ceph_decode_entity_addrvec -EXPORT_SYMBOL net/ceph/libceph 0x57486654 ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x553b22b0 __ceph_auth_get_authorizer +EXPORT_SYMBOL net/ceph/libceph 0x55c33eda ceph_msg_dump +EXPORT_SYMBOL net/ceph/libceph 0x5676fe04 ceph_osdc_watch +EXPORT_SYMBOL net/ceph/libceph 0x57a73663 osd_req_op_extent_osd_data EXPORT_SYMBOL net/ceph/libceph 0x57baf885 ceph_str_hash -EXPORT_SYMBOL net/ceph/libceph 0x58f888e5 osd_req_op_cls_request_data_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x58815077 ceph_msg_new2 EXPORT_SYMBOL net/ceph/libceph 0x5aeeee62 ceph_oid_aprintf -EXPORT_SYMBOL net/ceph/libceph 0x5b970c2c ceph_print_client_options -EXPORT_SYMBOL net/ceph/libceph 0x5dd2e00a ceph_monc_got_map -EXPORT_SYMBOL net/ceph/libceph 0x6052633d ceph_client_gid +EXPORT_SYMBOL net/ceph/libceph 0x5f1d3a86 ceph_con_close +EXPORT_SYMBOL net/ceph/libceph 0x6273489d osd_req_op_extent_osd_data_bvecs EXPORT_SYMBOL net/ceph/libceph 0x63758856 ceph_str_hash_name -EXPORT_SYMBOL net/ceph/libceph 0x69252f01 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0x64a538b4 ceph_cls_unlock +EXPORT_SYMBOL net/ceph/libceph 0x65c4a785 osd_req_op_extent_dup_last +EXPORT_SYMBOL net/ceph/libceph 0x6a39f633 ceph_osdc_wait_request EXPORT_SYMBOL net/ceph/libceph 0x6a7a38a0 ceph_pr_addr -EXPORT_SYMBOL net/ceph/libceph 0x6c8ab233 ceph_monc_wait_osdmap -EXPORT_SYMBOL net/ceph/libceph 0x71311838 ceph_msg_new -EXPORT_SYMBOL net/ceph/libceph 0x723e0685 osd_req_op_extent_osd_data_bvec_pos -EXPORT_SYMBOL net/ceph/libceph 0x7ae06e67 osd_req_op_extent_osd_data_bvecs -EXPORT_SYMBOL net/ceph/libceph 0x7b3a3773 __ceph_open_session -EXPORT_SYMBOL net/ceph/libceph 0x7c594c81 ceph_cls_set_cookie -EXPORT_SYMBOL net/ceph/libceph 0x85de5431 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x6cb133ce osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x6fec2f08 ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0x70fe5e75 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0x7628a219 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0x77466798 ceph_msg_data_add_bvecs +EXPORT_SYMBOL net/ceph/libceph 0x77511723 ceph_msg_data_add_pages +EXPORT_SYMBOL net/ceph/libceph 0x7cbf004a ceph_auth_handle_svc_reply_more +EXPORT_SYMBOL net/ceph/libceph 0x7d622632 osd_req_op_alloc_hint_init +EXPORT_SYMBOL net/ceph/libceph 0x8550fb9a ceph_monc_open_session +EXPORT_SYMBOL net/ceph/libceph 0x8621d8eb ceph_check_fsid +EXPORT_SYMBOL net/ceph/libceph 0x86e8f66d osd_req_op_extent_osd_data_pages EXPORT_SYMBOL net/ceph/libceph 0x86fca7e4 ceph_put_snap_context -EXPORT_SYMBOL net/ceph/libceph 0x875cc295 ceph_monc_get_version -EXPORT_SYMBOL net/ceph/libceph 0x87eba8ea ceph_con_keepalive -EXPORT_SYMBOL net/ceph/libceph 0x8875e843 ceph_osdc_copy_from -EXPORT_SYMBOL net/ceph/libceph 0x8daee5a0 ceph_destroy_client -EXPORT_SYMBOL net/ceph/libceph 0x8f02d12b ceph_monc_open_session -EXPORT_SYMBOL net/ceph/libceph 0x9104a71d ceph_osdc_watch +EXPORT_SYMBOL net/ceph/libceph 0x8767e2b2 ceph_osdc_list_watchers +EXPORT_SYMBOL net/ceph/libceph 0x8884ac53 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0x8885ff00 ceph_osdc_notify_ack +EXPORT_SYMBOL net/ceph/libceph 0x89ef4c02 osd_req_op_cls_request_data_pagelist +EXPORT_SYMBOL net/ceph/libceph 0x8f39e68d ceph_cls_break_lock +EXPORT_SYMBOL net/ceph/libceph 0x9130a24c ceph_con_open EXPORT_SYMBOL net/ceph/libceph 0x92b7b4ce ceph_pg_pool_flags -EXPORT_SYMBOL net/ceph/libceph 0x959cc60a ceph_cls_break_lock -EXPORT_SYMBOL net/ceph/libceph 0x96fc8441 ceph_reset_client_addr +EXPORT_SYMBOL net/ceph/libceph 0x93a8ef48 ceph_auth_verify_authorizer_reply +EXPORT_SYMBOL net/ceph/libceph 0x977ae04d ceph_msg_put EXPORT_SYMBOL net/ceph/libceph 0x987d3968 ceph_alloc_options -EXPORT_SYMBOL net/ceph/libceph 0x99f93780 osd_req_op_extent_update +EXPORT_SYMBOL net/ceph/libceph 0x9a0fe3c0 ceph_parse_mon_ips +EXPORT_SYMBOL net/ceph/libceph 0x9b119656 ceph_osdc_unwatch EXPORT_SYMBOL net/ceph/libceph 0x9bc6b539 ceph_find_or_create_string +EXPORT_SYMBOL net/ceph/libceph 0x9c83b043 ceph_osdc_call EXPORT_SYMBOL net/ceph/libceph 0x9ca95932 ceph_create_snap_context +EXPORT_SYMBOL net/ceph/libceph 0x9e00bb7e ceph_copy_to_page_vector EXPORT_SYMBOL net/ceph/libceph 0x9fbba67f ceph_buffer_new -EXPORT_SYMBOL net/ceph/libceph 0x9fd844d5 ceph_osdc_call EXPORT_SYMBOL net/ceph/libceph 0x9fefa3cb ceph_calc_file_object_mapping -EXPORT_SYMBOL net/ceph/libceph 0xa4e44bc8 ceph_osdc_list_watchers -EXPORT_SYMBOL net/ceph/libceph 0xa65912a0 osd_req_op_extent_osd_data_bio +EXPORT_SYMBOL net/ceph/libceph 0xa01abf5f ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xa18cfac5 ceph_auth_is_authenticated +EXPORT_SYMBOL net/ceph/libceph 0xa4958ad9 osd_req_op_xattr_init +EXPORT_SYMBOL net/ceph/libceph 0xa552b2a8 ceph_osdc_copy_from EXPORT_SYMBOL net/ceph/libceph 0xa698f998 ceph_free_lockers -EXPORT_SYMBOL net/ceph/libceph 0xaa3ac7dc ceph_monc_init -EXPORT_SYMBOL net/ceph/libceph 0xacba8060 ceph_osdc_notify_ack -EXPORT_SYMBOL net/ceph/libceph 0xacc4f6be osd_req_op_raw_data_in_pages +EXPORT_SYMBOL net/ceph/libceph 0xa76a5235 ceph_wait_for_latest_osdmap EXPORT_SYMBOL net/ceph/libceph 0xad703657 ceph_auth_destroy_authorizer -EXPORT_SYMBOL net/ceph/libceph 0xae0aa6ec osd_req_op_alloc_hint_init EXPORT_SYMBOL net/ceph/libceph 0xafb8a407 ceph_msgr_flush -EXPORT_SYMBOL net/ceph/libceph 0xb0279588 ceph_msg_data_add_bvecs -EXPORT_SYMBOL net/ceph/libceph 0xb08761a2 ceph_osdc_wait_request -EXPORT_SYMBOL net/ceph/libceph 0xb25935a7 ceph_osdc_start_request +EXPORT_SYMBOL net/ceph/libceph 0xb42d4b5a ceph_osdc_clear_abort_err EXPORT_SYMBOL net/ceph/libceph 0xb54676fa ceph_msg_type_name -EXPORT_SYMBOL net/ceph/libceph 0xb6a9df90 ceph_cls_unlock -EXPORT_SYMBOL net/ceph/libceph 0xb6c5c0d4 ceph_monc_do_statfs +EXPORT_SYMBOL net/ceph/libceph 0xb6098446 ceph_msg_get +EXPORT_SYMBOL net/ceph/libceph 0xb60ce4c6 osd_req_op_cls_request_data_bvecs EXPORT_SYMBOL net/ceph/libceph 0xb72c162e ceph_buffer_release -EXPORT_SYMBOL net/ceph/libceph 0xbabbd985 __ceph_auth_get_authorizer -EXPORT_SYMBOL net/ceph/libceph 0xbb57f13a ceph_auth_handle_svc_reply_more -EXPORT_SYMBOL net/ceph/libceph 0xbba0a844 osd_req_op_extent_osd_data_pagelist -EXPORT_SYMBOL net/ceph/libceph 0xbce55a3a ceph_osdc_alloc_messages EXPORT_SYMBOL net/ceph/libceph 0xbd2f79ae ceph_oloc_copy +EXPORT_SYMBOL net/ceph/libceph 0xbe194a3d ceph_monc_got_map EXPORT_SYMBOL net/ceph/libceph 0xbe3879aa ceph_get_snap_context -EXPORT_SYMBOL net/ceph/libceph 0xc06c682f ceph_auth_invalidate_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xbec5dd01 osd_req_op_cls_init +EXPORT_SYMBOL net/ceph/libceph 0xc32788a6 ceph_monc_stop EXPORT_SYMBOL net/ceph/libceph 0xc366bfa1 ceph_pagelist_truncate -EXPORT_SYMBOL net/ceph/libceph 0xc72d93c8 ceph_msg_put -EXPORT_SYMBOL net/ceph/libceph 0xc769f192 osd_req_op_extent_osd_data +EXPORT_SYMBOL net/ceph/libceph 0xc5b30ed8 ceph_cls_lock_info +EXPORT_SYMBOL net/ceph/libceph 0xc68929a2 ceph_osdc_maybe_request_map +EXPORT_SYMBOL net/ceph/libceph 0xca30a4dd ceph_copy_user_to_page_vector EXPORT_SYMBOL net/ceph/libceph 0xca80437b ceph_extent_to_file -EXPORT_SYMBOL net/ceph/libceph 0xcb75bc26 ceph_check_fsid -EXPORT_SYMBOL net/ceph/libceph 0xccb37c57 ceph_parse_param -EXPORT_SYMBOL net/ceph/libceph 0xcf975a41 ceph_auth_handle_svc_reply_done -EXPORT_SYMBOL net/ceph/libceph 0xd05107b0 ceph_open_session -EXPORT_SYMBOL net/ceph/libceph 0xd1c541b5 ceph_cls_assert_locked +EXPORT_SYMBOL net/ceph/libceph 0xcf3ea520 ceph_create_client +EXPORT_SYMBOL net/ceph/libceph 0xd1ca8323 ceph_copy_from_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xd3561137 ceph_osdc_new_request EXPORT_SYMBOL net/ceph/libceph 0xd4d736db ceph_destroy_options EXPORT_SYMBOL net/ceph/libceph 0xd4eb7735 ceph_decode_entity_addr -EXPORT_SYMBOL net/ceph/libceph 0xd7ddb585 ceph_con_init -EXPORT_SYMBOL net/ceph/libceph 0xdad6d960 ceph_osdc_get_request -EXPORT_SYMBOL net/ceph/libceph 0xdba43528 ceph_alloc_page_vector -EXPORT_SYMBOL net/ceph/libceph 0xdba4a904 ceph_monc_stop -EXPORT_SYMBOL net/ceph/libceph 0xdd1cdfc7 ceph_monc_validate_auth -EXPORT_SYMBOL net/ceph/libceph 0xdd709700 ceph_msg_new2 -EXPORT_SYMBOL net/ceph/libceph 0xdd8b20f6 osd_req_op_cls_response_data_pages -EXPORT_SYMBOL net/ceph/libceph 0xde00036f ceph_zero_page_vector_range +EXPORT_SYMBOL net/ceph/libceph 0xda2a8f9e ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xda73a7ee ceph_osdc_alloc_messages EXPORT_SYMBOL net/ceph/libceph 0xdf6ef4a1 ceph_oid_printf EXPORT_SYMBOL net/ceph/libceph 0xdfc091f9 ceph_entity_type_name -EXPORT_SYMBOL net/ceph/libceph 0xe11fe70e ceph_msg_data_add_bio +EXPORT_SYMBOL net/ceph/libceph 0xe06e85f2 ceph_cls_lock +EXPORT_SYMBOL net/ceph/libceph 0xe2544b24 ceph_zero_page_vector_range EXPORT_SYMBOL net/ceph/libceph 0xe34a59f2 ceph_object_locator_to_pg -EXPORT_SYMBOL net/ceph/libceph 0xe3dbd336 ceph_monc_renew_subs -EXPORT_SYMBOL net/ceph/libceph 0xe483ebd6 ceph_compare_options +EXPORT_SYMBOL net/ceph/libceph 0xe3890598 ceph_osdc_alloc_request +EXPORT_SYMBOL net/ceph/libceph 0xe6c924a1 ceph_osdc_put_request EXPORT_SYMBOL net/ceph/libceph 0xe76e7226 ceph_pagelist_alloc -EXPORT_SYMBOL net/ceph/libceph 0xe93c4450 ceph_auth_get_authorizer -EXPORT_SYMBOL net/ceph/libceph 0xecdc3d77 ceph_auth_handle_bad_authorizer +EXPORT_SYMBOL net/ceph/libceph 0xe81f4fdc ceph_parse_param +EXPORT_SYMBOL net/ceph/libceph 0xe9e57cc3 ceph_osdc_sync +EXPORT_SYMBOL net/ceph/libceph 0xed4fe9fd ceph_auth_add_authorizer_challenge EXPORT_SYMBOL net/ceph/libceph 0xee120c03 ceph_release_string EXPORT_SYMBOL net/ceph/libceph 0xeef6cfa3 ceph_iterate_extents -EXPORT_SYMBOL net/ceph/libceph 0xef776db0 ceph_osdc_new_request EXPORT_SYMBOL net/ceph/libceph 0xefce3c3b ceph_pagelist_reserve EXPORT_SYMBOL net/ceph/libceph 0xefce991c ceph_pagelist_append EXPORT_SYMBOL net/ceph/libceph 0xf03fe862 ceph_pagelist_set_cursor -EXPORT_SYMBOL net/ceph/libceph 0xf392e95b ceph_put_page_vector -EXPORT_SYMBOL net/ceph/libceph 0xf5011f3d ceph_monc_want_map -EXPORT_SYMBOL net/ceph/libceph 0xfa2850d7 osd_req_op_xattr_init -EXPORT_SYMBOL net/ceph/libceph 0xfd9f3a25 osd_req_op_cls_init -EXPORT_SYMBOL net/ceph/libceph 0xff30fcf0 ceph_osdc_notify -EXPORT_SYMBOL net/dccp/dccp_ipv4 0xc15c4686 dccp_req_err -EXPORT_SYMBOL net/dccp/dccp_ipv4 0xc7636d2b dccp_syn_ack_timeout -EXPORT_SYMBOL net/hsr/hsr 0x123c4ace is_hsr_master -EXPORT_SYMBOL net/hsr/hsr 0x79cb4873 hsr_get_version -EXPORT_SYMBOL net/ieee802154/ieee802154 0x4319c93d wpan_phy_free -EXPORT_SYMBOL net/ieee802154/ieee802154 0x59bcd258 wpan_phy_for_each -EXPORT_SYMBOL net/ieee802154/ieee802154 0x8d3841f9 wpan_phy_new -EXPORT_SYMBOL net/ieee802154/ieee802154 0xe170e337 wpan_phy_find -EXPORT_SYMBOL net/ieee802154/ieee802154 0xf967df8b wpan_phy_unregister -EXPORT_SYMBOL net/ieee802154/ieee802154 0xfadd3ecf wpan_phy_register -EXPORT_SYMBOL net/ipv4/fou 0x14873d99 __fou_build_header +EXPORT_SYMBOL net/ceph/libceph 0xf0af3172 ceph_monc_init +EXPORT_SYMBOL net/ceph/libceph 0xf16ea563 ceph_cls_set_cookie +EXPORT_SYMBOL net/ceph/libceph 0xf31d84c9 ceph_client_addr +EXPORT_SYMBOL net/ceph/libceph 0xf47885ec ceph_put_page_vector +EXPORT_SYMBOL net/ceph/libceph 0xf7e34cc4 ceph_osdc_get_request +EXPORT_SYMBOL net/ceph/libceph 0xfad4fd5d __ceph_open_session +EXPORT_SYMBOL net/ceph/libceph 0xfda6b598 ceph_cls_assert_locked +EXPORT_SYMBOL net/ceph/libceph 0xfec29d14 ceph_con_init +EXPORT_SYMBOL net/dccp/dccp_ipv4 0x000c47b5 dccp_req_err +EXPORT_SYMBOL net/dccp/dccp_ipv4 0xeba0547d dccp_syn_ack_timeout +EXPORT_SYMBOL net/hsr/hsr 0x83775206 is_hsr_master +EXPORT_SYMBOL net/hsr/hsr 0xc4500a85 hsr_get_version +EXPORT_SYMBOL net/ieee802154/ieee802154 0x312c2b75 wpan_phy_for_each +EXPORT_SYMBOL net/ieee802154/ieee802154 0x8ba387fa wpan_phy_find +EXPORT_SYMBOL net/ieee802154/ieee802154 0x9bd1c1c1 wpan_phy_register +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb6b0a5a5 wpan_phy_new +EXPORT_SYMBOL net/ieee802154/ieee802154 0xb7f89457 wpan_phy_free +EXPORT_SYMBOL net/ieee802154/ieee802154 0xd5b41bef wpan_phy_unregister EXPORT_SYMBOL net/ipv4/fou 0x1757d1a4 fou_encap_hlen -EXPORT_SYMBOL net/ipv4/fou 0xd1db736a __gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x7b26edad __gue_build_header +EXPORT_SYMBOL net/ipv4/fou 0x8e2d4669 __fou_build_header EXPORT_SYMBOL net/ipv4/fou 0xf13914b3 gue_encap_hlen -EXPORT_SYMBOL net/ipv4/gre 0xc01f2d61 gre_parse_header -EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x531ad92a arpt_unregister_table_pre_exit -EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x6a7f0c76 arpt_register_table -EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x8c030e81 arpt_unregister_table -EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x9dc8c4a0 arpt_do_table -EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x375f5912 ipt_unregister_table_exit -EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x5cd00525 ipt_unregister_table_pre_exit -EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xae74adb4 ipt_register_table -EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0xb99a8df8 ipt_do_table -EXPORT_SYMBOL net/ipv4/tunnel4 0x96abbf54 xfrm4_tunnel_deregister -EXPORT_SYMBOL net/ipv4/tunnel4 0xac76c67b xfrm4_tunnel_register -EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x0bd97b14 ip6_tnl_rcv -EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x3a8a4019 ip6_tnl_get_iflink -EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x3aee1145 ip6_tnl_encap_del_ops -EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x59d35c86 ip6_tnl_change_mtu -EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x71b57523 ip6_tnl_encap_add_ops -EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xb1d3f258 ip6_tnl_parse_tlv_enc_lim -EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xcd16b72d ip6_tnl_xmit -EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd8a80262 ip6_tnl_get_link_net -EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xd9d5dbcc ip6_tnl_get_cap -EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x3729acdd ip6t_do_table -EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x9285d8cf ip6t_unregister_table_pre_exit -EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x98a66f65 ip6t_unregister_table_exit -EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xdee24d33 ip6t_register_table -EXPORT_SYMBOL net/ipv6/tunnel6 0x1903fb6b xfrm6_tunnel_register -EXPORT_SYMBOL net/ipv6/tunnel6 0x37d678b3 xfrm6_tunnel_deregister -EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x1be4df8b xfrm6_tunnel_alloc_spi -EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x79907565 xfrm6_tunnel_spi_lookup -EXPORT_SYMBOL net/lapb/lapb 0x39133d7c lapb_unregister -EXPORT_SYMBOL net/lapb/lapb 0x3d40b2fe lapb_data_request -EXPORT_SYMBOL net/lapb/lapb 0x537e07fc lapb_setparms -EXPORT_SYMBOL net/lapb/lapb 0x62c26a09 lapb_getparms -EXPORT_SYMBOL net/lapb/lapb 0x66698070 lapb_data_received -EXPORT_SYMBOL net/lapb/lapb 0x9521a472 lapb_register -EXPORT_SYMBOL net/lapb/lapb 0xb643bb0e lapb_disconnect_request -EXPORT_SYMBOL net/lapb/lapb 0xd143088f lapb_connect_request -EXPORT_SYMBOL net/llc/llc 0x0fe358cd llc_set_station_handler -EXPORT_SYMBOL net/llc/llc 0x22e7ba0a llc_sap_close +EXPORT_SYMBOL net/ipv4/gre 0x1d3f2fe3 gre_parse_header +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x1f64d5b7 arpt_do_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0x52a56111 arpt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xa3e86af7 arpt_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv4/netfilter/arp_tables 0xe02204a3 arpt_unregister_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x1bb90706 ipt_unregister_table_exit +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x26b18ed9 ipt_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x57b2a529 ipt_register_table +EXPORT_SYMBOL net/ipv4/netfilter/ip_tables 0x8783347d ipt_do_table +EXPORT_SYMBOL net/ipv4/tunnel4 0x4d015eb2 xfrm4_tunnel_register +EXPORT_SYMBOL net/ipv4/tunnel4 0xfc56b9ad xfrm4_tunnel_deregister +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x185cde2b ip6_tnl_encap_del_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x33d6eba8 ip6_tnl_rcv +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x39ccdae6 ip6_tnl_get_iflink +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x42286ed0 ip6_tnl_encap_add_ops +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0x8529aa0b ip6_tnl_xmit +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xb51eccc6 ip6_tnl_parse_tlv_enc_lim +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xf3e4c86d ip6_tnl_get_link_net +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xf572acbd ip6_tnl_get_cap +EXPORT_SYMBOL net/ipv6/ip6_tunnel 0xf819f8d0 ip6_tnl_change_mtu +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x2f76291d ip6t_do_table +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x3d83b855 ip6t_unregister_table_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0x81dad254 ip6t_unregister_table_pre_exit +EXPORT_SYMBOL net/ipv6/netfilter/ip6_tables 0xbb13d8a4 ip6t_register_table +EXPORT_SYMBOL net/ipv6/tunnel6 0x6ca1ca0b xfrm6_tunnel_register +EXPORT_SYMBOL net/ipv6/tunnel6 0xb0fc248e xfrm6_tunnel_deregister +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0x6bd4a407 xfrm6_tunnel_alloc_spi +EXPORT_SYMBOL net/ipv6/xfrm6_tunnel 0xe71b8e68 xfrm6_tunnel_spi_lookup +EXPORT_SYMBOL net/lapb/lapb 0x0c701ba3 lapb_register +EXPORT_SYMBOL net/lapb/lapb 0x3680d829 lapb_getparms +EXPORT_SYMBOL net/lapb/lapb 0x3d4f9659 lapb_unregister +EXPORT_SYMBOL net/lapb/lapb 0x40c524c2 lapb_disconnect_request +EXPORT_SYMBOL net/lapb/lapb 0x644e37a4 lapb_data_request +EXPORT_SYMBOL net/lapb/lapb 0x87ad1ff5 lapb_data_received +EXPORT_SYMBOL net/lapb/lapb 0x89a36df1 lapb_setparms +EXPORT_SYMBOL net/lapb/lapb 0x8dca0916 lapb_connect_request +EXPORT_SYMBOL net/llc/llc 0x0b3aac9a llc_add_pack +EXPORT_SYMBOL net/llc/llc 0x340d6a7f llc_set_station_handler EXPORT_SYMBOL net/llc/llc 0x38b92846 llc_remove_pack +EXPORT_SYMBOL net/llc/llc 0x405f0599 llc_mac_hdr_init EXPORT_SYMBOL net/llc/llc 0x52d7b2fd llc_sap_list -EXPORT_SYMBOL net/llc/llc 0x6a643d37 llc_add_pack -EXPORT_SYMBOL net/llc/llc 0x92147461 llc_sap_open -EXPORT_SYMBOL net/llc/llc 0xb156145f llc_sap_find -EXPORT_SYMBOL net/llc/llc 0xc5baf4ae llc_mac_hdr_init -EXPORT_SYMBOL net/llc/llc 0xeef2d01d llc_build_and_send_ui_pkt -EXPORT_SYMBOL net/mac80211/mac80211 0x042d35d2 ieee80211_beacon_set_cntdwn -EXPORT_SYMBOL net/mac80211/mac80211 0x05fc08da ieee80211_beacon_cntdwn_is_complete +EXPORT_SYMBOL net/llc/llc 0xb6990680 llc_sap_find +EXPORT_SYMBOL net/llc/llc 0xe2924bc4 llc_sap_open +EXPORT_SYMBOL net/llc/llc 0xf2083179 llc_build_and_send_ui_pkt +EXPORT_SYMBOL net/llc/llc 0xf22c4466 llc_sap_close +EXPORT_SYMBOL net/mac80211/mac80211 0x01fdf277 ieee80211_rts_get +EXPORT_SYMBOL net/mac80211/mac80211 0x026fa740 ieee80211_beacon_update_cntdwn +EXPORT_SYMBOL net/mac80211/mac80211 0x029297d8 ieee80211_get_buffered_bc +EXPORT_SYMBOL net/mac80211/mac80211 0x03afb02d ieee80211_sched_scan_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0x050bb571 ieee80211_tx_prepare_skb +EXPORT_SYMBOL net/mac80211/mac80211 0x05d730d4 ieee80211_rate_control_register EXPORT_SYMBOL net/mac80211/mac80211 0x063f5308 ieee80211_get_tkip_p1k_iv -EXPORT_SYMBOL net/mac80211/mac80211 0x0aea3252 ieee80211_sta_set_buffered -EXPORT_SYMBOL net/mac80211/mac80211 0x0be91d27 ieee80211_start_tx_ba_session -EXPORT_SYMBOL net/mac80211/mac80211 0x0beb9060 ieee80211_get_fils_discovery_tmpl -EXPORT_SYMBOL net/mac80211/mac80211 0x0d16d31f ieee80211_tx_status_8023 -EXPORT_SYMBOL net/mac80211/mac80211 0x0da93936 __ieee80211_get_radio_led_name -EXPORT_SYMBOL net/mac80211/mac80211 0x18052105 ieee80211_beacon_update_cntdwn +EXPORT_SYMBOL net/mac80211/mac80211 0x0782e38e ieee80211_beacon_set_cntdwn +EXPORT_SYMBOL net/mac80211/mac80211 0x083536c7 ieee80211_get_tx_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x0a59f27b ieee80211_sta_pspoll +EXPORT_SYMBOL net/mac80211/mac80211 0x0eec8c4d ieee80211_wake_queues EXPORT_SYMBOL net/mac80211/mac80211 0x183dcd3b ieee80211_get_key_rx_seq +EXPORT_SYMBOL net/mac80211/mac80211 0x196843f6 ieee80211_free_hw EXPORT_SYMBOL net/mac80211/mac80211 0x19f37f0d ieee80211_update_p2p_noa -EXPORT_SYMBOL net/mac80211/mac80211 0x1a0f30c8 ieee80211_txq_schedule_start EXPORT_SYMBOL net/mac80211/mac80211 0x1a66fc17 ieee80211_get_tkip_rx_p1k -EXPORT_SYMBOL net/mac80211/mac80211 0x1aa9552d ieee80211_tx_status_irqsafe -EXPORT_SYMBOL net/mac80211/mac80211 0x1e53a563 ieee80211_start_tx_ba_cb_irqsafe -EXPORT_SYMBOL net/mac80211/mac80211 0x213ee133 ieee80211_radar_detected -EXPORT_SYMBOL net/mac80211/mac80211 0x23583b81 ieee80211_rate_control_unregister -EXPORT_SYMBOL net/mac80211/mac80211 0x241abb59 ieee80211_tx_rate_update -EXPORT_SYMBOL net/mac80211/mac80211 0x2474baed ieee80211_queue_work -EXPORT_SYMBOL net/mac80211/mac80211 0x28fe29cc ieee80211_rts_duration -EXPORT_SYMBOL net/mac80211/mac80211 0x318ace9d ieee80211_get_tx_rates -EXPORT_SYMBOL net/mac80211/mac80211 0x32f64c05 ieee80211_rx_ba_timer_expired -EXPORT_SYMBOL net/mac80211/mac80211 0x33916fb8 ieee80211_get_buffered_bc -EXPORT_SYMBOL net/mac80211/mac80211 0x35020d13 ieee80211_reserve_tid -EXPORT_SYMBOL net/mac80211/mac80211 0x37816be3 ieee80211_tdls_oper_request -EXPORT_SYMBOL net/mac80211/mac80211 0x38b9c3ce ieee80211_rate_control_register -EXPORT_SYMBOL net/mac80211/mac80211 0x3caae402 ieee80211_queue_stopped -EXPORT_SYMBOL net/mac80211/mac80211 0x4188b0d4 ieee80211_register_hw -EXPORT_SYMBOL net/mac80211/mac80211 0x41af5c5b ieee80211_manage_rx_ba_offl -EXPORT_SYMBOL net/mac80211/mac80211 0x43424cd7 ieee80211_cqm_rssi_notify -EXPORT_SYMBOL net/mac80211/mac80211 0x43c33c6c ieee80211_rx_irqsafe -EXPORT_SYMBOL net/mac80211/mac80211 0x4af7d0af ieee80211_send_bar -EXPORT_SYMBOL net/mac80211/mac80211 0x4b10a8d8 rate_control_set_rates -EXPORT_SYMBOL net/mac80211/mac80211 0x4bc70f5f ieee80211_ctstoself_get -EXPORT_SYMBOL net/mac80211/mac80211 0x50c25e63 ieee80211_beacon_get_template -EXPORT_SYMBOL net/mac80211/mac80211 0x5a2e67af __ieee80211_get_tx_led_name -EXPORT_SYMBOL net/mac80211/mac80211 0x5fd9a1c9 ieee80211_find_sta -EXPORT_SYMBOL net/mac80211/mac80211 0x600034fd ieee80211_wake_queue -EXPORT_SYMBOL net/mac80211/mac80211 0x62b61ffa ieee80211_tx_dequeue -EXPORT_SYMBOL net/mac80211/mac80211 0x6ba09478 ieee80211_sta_ps_transition -EXPORT_SYMBOL net/mac80211/mac80211 0x6ba1ba9b ieee80211_next_txq -EXPORT_SYMBOL net/mac80211/mac80211 0x6c68a057 ieee80211_rx_napi -EXPORT_SYMBOL net/mac80211/mac80211 0x6e749b58 ieee80211_tx_prepare_skb -EXPORT_SYMBOL net/mac80211/mac80211 0x71116216 ieee80211_enable_rssi_reports -EXPORT_SYMBOL net/mac80211/mac80211 0x737850bc ieee80211_sched_scan_stopped -EXPORT_SYMBOL net/mac80211/mac80211 0x73d47806 ieee80211_wake_queues -EXPORT_SYMBOL net/mac80211/mac80211 0x75fe136d ieee80211_alloc_hw_nm -EXPORT_SYMBOL net/mac80211/mac80211 0x766ca615 ieee80211_probereq_get -EXPORT_SYMBOL net/mac80211/mac80211 0x76caa862 ieee80211_stop_rx_ba_session -EXPORT_SYMBOL net/mac80211/mac80211 0x772b1c73 ieee80211_nullfunc_get -EXPORT_SYMBOL net/mac80211/mac80211 0x77e822dd ieee80211_ctstoself_duration -EXPORT_SYMBOL net/mac80211/mac80211 0x7837f5e1 ieee80211_restart_hw -EXPORT_SYMBOL net/mac80211/mac80211 0x78fc0418 __ieee80211_schedule_txq -EXPORT_SYMBOL net/mac80211/mac80211 0x7b952afb ieee80211_ap_probereq_get -EXPORT_SYMBOL net/mac80211/mac80211 0x7e1b88b2 ieee80211_queue_delayed_work -EXPORT_SYMBOL net/mac80211/mac80211 0x7f32e7af ieee80211_txq_may_transmit -EXPORT_SYMBOL net/mac80211/mac80211 0x7f8e1637 ieee80211_disable_rssi_reports -EXPORT_SYMBOL net/mac80211/mac80211 0x801761ac ieee80211_beacon_get_tim -EXPORT_SYMBOL net/mac80211/mac80211 0x84d2062e ieee80211_csa_finish -EXPORT_SYMBOL net/mac80211/mac80211 0x874f4b69 ieee80211_mark_rx_ba_filtered_frames -EXPORT_SYMBOL net/mac80211/mac80211 0x87f38c34 ieee80211_beacon_loss -EXPORT_SYMBOL net/mac80211/mac80211 0x8bcda779 ieee80211_proberesp_get -EXPORT_SYMBOL net/mac80211/mac80211 0x8cb57372 ieee80211_send_eosp_nullfunc -EXPORT_SYMBOL net/mac80211/mac80211 0x8f1d6680 wiphy_to_ieee80211_hw -EXPORT_SYMBOL net/mac80211/mac80211 0x9187ac24 ieee80211_sta_register_airtime -EXPORT_SYMBOL net/mac80211/mac80211 0x93e7e36c ieee80211_cqm_beacon_loss_notify -EXPORT_SYMBOL net/mac80211/mac80211 0x98a78ee8 ieee80211_sched_scan_results -EXPORT_SYMBOL net/mac80211/mac80211 0x98fd1de5 ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0x1b98e3b7 ieee80211_sta_block_awake +EXPORT_SYMBOL net/mac80211/mac80211 0x1ea89486 ieee80211_rx_ba_timer_expired +EXPORT_SYMBOL net/mac80211/mac80211 0x20a6e26c ieee80211_proberesp_get +EXPORT_SYMBOL net/mac80211/mac80211 0x24d94988 ieee80211_beacon_get_template +EXPORT_SYMBOL net/mac80211/mac80211 0x25570a4d ieee80211_manage_rx_ba_offl +EXPORT_SYMBOL net/mac80211/mac80211 0x31bbe0bd __ieee80211_schedule_txq +EXPORT_SYMBOL net/mac80211/mac80211 0x322b0be8 ieee80211_rx_list +EXPORT_SYMBOL net/mac80211/mac80211 0x36a043dc ieee80211_send_bar +EXPORT_SYMBOL net/mac80211/mac80211 0x36d09f3a ieee80211_sta_eosp +EXPORT_SYMBOL net/mac80211/mac80211 0x36e70d5f ieee80211_restart_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x373cec21 ieee80211_find_sta +EXPORT_SYMBOL net/mac80211/mac80211 0x38235a56 ieee80211_scan_completed +EXPORT_SYMBOL net/mac80211/mac80211 0x3bf068cd ieee80211_generic_frame_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x40ce7191 ieee80211_sta_set_buffered +EXPORT_SYMBOL net/mac80211/mac80211 0x4119eec9 ieee80211_queue_work +EXPORT_SYMBOL net/mac80211/mac80211 0x42e39299 ieee80211_tx_status_8023 +EXPORT_SYMBOL net/mac80211/mac80211 0x43a622e8 ieee80211_start_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x46c09d7f ieee80211_reserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x475b03bd ieee80211_get_tkip_p2k +EXPORT_SYMBOL net/mac80211/mac80211 0x4a280af5 ieee80211_ctstoself_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4a96d29b ieee80211_ap_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x4abd281f ieee80211_beacon_cntdwn_is_complete +EXPORT_SYMBOL net/mac80211/mac80211 0x4ea659d8 ieee80211_sched_scan_results +EXPORT_SYMBOL net/mac80211/mac80211 0x552bac8c ieee80211_register_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x56237a32 ieee80211_tx_status_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x57e6e765 ieee80211_start_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x5cb79cd0 rate_control_set_rates +EXPORT_SYMBOL net/mac80211/mac80211 0x5e33cedf ieee80211_unregister_hw +EXPORT_SYMBOL net/mac80211/mac80211 0x5ed0e9fb ieee80211_stop_queues +EXPORT_SYMBOL net/mac80211/mac80211 0x5f470f9c ieee80211_chswitch_done +EXPORT_SYMBOL net/mac80211/mac80211 0x5f7b33be ieee80211_stop_tx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x67a78de7 ieee80211_report_wowlan_wakeup +EXPORT_SYMBOL net/mac80211/mac80211 0x68588944 ieee80211_enable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0x6d42c453 ieee80211_unreserve_tid +EXPORT_SYMBOL net/mac80211/mac80211 0x6d661633 ieee80211_nan_func_terminated +EXPORT_SYMBOL net/mac80211/mac80211 0x6e70a165 __ieee80211_create_tpt_led_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x72f2bb88 ieee80211_txq_airtime_check +EXPORT_SYMBOL net/mac80211/mac80211 0x752ca55b ieee80211_stop_tx_ba_cb_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0x7668bdc0 __ieee80211_get_radio_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x7a6de0d5 ieee80211_ctstoself_duration +EXPORT_SYMBOL net/mac80211/mac80211 0x7af68a6e ieee80211_stop_rx_ba_session +EXPORT_SYMBOL net/mac80211/mac80211 0x7b9324c4 ieee80211_iter_keys +EXPORT_SYMBOL net/mac80211/mac80211 0x7be5a285 ieee80211_rx_napi +EXPORT_SYMBOL net/mac80211/mac80211 0x7e599ffe ieee80211_sta_ps_transition +EXPORT_SYMBOL net/mac80211/mac80211 0x7f43be57 ieee80211_tx_dequeue +EXPORT_SYMBOL net/mac80211/mac80211 0x81e6437e ieee80211_sta_uapsd_trigger +EXPORT_SYMBOL net/mac80211/mac80211 0x84e8379a ieee80211_probereq_get +EXPORT_SYMBOL net/mac80211/mac80211 0x85a52ce9 ieee80211_report_low_ack +EXPORT_SYMBOL net/mac80211/mac80211 0x8a4d2a5d ieee80211_send_eosp_nullfunc +EXPORT_SYMBOL net/mac80211/mac80211 0x8ae1f45f __ieee80211_get_rx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x8b57dc7a ieee80211_cqm_beacon_loss_notify +EXPORT_SYMBOL net/mac80211/mac80211 0x8d299ae1 ieee80211_nullfunc_get +EXPORT_SYMBOL net/mac80211/mac80211 0x92b96a8f ieee80211_tx_status +EXPORT_SYMBOL net/mac80211/mac80211 0x934cd33b __ieee80211_get_tx_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0x9644a7fd ieee80211_get_fils_discovery_tmpl +EXPORT_SYMBOL net/mac80211/mac80211 0x96bd7352 ieee80211_alloc_hw_nm EXPORT_SYMBOL net/mac80211/mac80211 0x991a0ca0 ieee80211_parse_p2p_noa -EXPORT_SYMBOL net/mac80211/mac80211 0x9ab279e5 ieee80211_unregister_hw -EXPORT_SYMBOL net/mac80211/mac80211 0x9e78d730 ieee80211_free_hw -EXPORT_SYMBOL net/mac80211/mac80211 0xa01bfee9 ieee80211_get_tkip_p2k -EXPORT_SYMBOL net/mac80211/mac80211 0xa1c0d9a9 ieee80211_report_low_ack -EXPORT_SYMBOL net/mac80211/mac80211 0xa365e504 __ieee80211_get_assoc_led_name -EXPORT_SYMBOL net/mac80211/mac80211 0xa38087c9 ieee80211_unreserve_tid -EXPORT_SYMBOL net/mac80211/mac80211 0xaa8250b0 ieee80211_get_unsol_bcast_probe_resp_tmpl -EXPORT_SYMBOL net/mac80211/mac80211 0xad3a78e1 ieee80211_nan_func_match -EXPORT_SYMBOL net/mac80211/mac80211 0xb2e65bdf ieee80211_free_txskb -EXPORT_SYMBOL net/mac80211/mac80211 0xb30bbf52 ieee80211_txq_get_depth -EXPORT_SYMBOL net/mac80211/mac80211 0xb3603353 ieee80211_sta_uapsd_trigger -EXPORT_SYMBOL net/mac80211/mac80211 0xb3d10a76 __ieee80211_create_tpt_led_trigger -EXPORT_SYMBOL net/mac80211/mac80211 0xb9e4ad87 ieee80211_tx_status -EXPORT_SYMBOL net/mac80211/mac80211 0xbcffb60f ieee80211_disconnect -EXPORT_SYMBOL net/mac80211/mac80211 0xbea308fb ieee80211_txq_airtime_check -EXPORT_SYMBOL net/mac80211/mac80211 0xc06f7fe4 ieee80211_generic_frame_duration -EXPORT_SYMBOL net/mac80211/mac80211 0xc3953200 ieee80211_iter_keys -EXPORT_SYMBOL net/mac80211/mac80211 0xc68396ff ieee80211_stop_tx_ba_session -EXPORT_SYMBOL net/mac80211/mac80211 0xca394d45 ieee80211_connection_loss -EXPORT_SYMBOL net/mac80211/mac80211 0xce462f7e ieee80211_nan_func_terminated -EXPORT_SYMBOL net/mac80211/mac80211 0xd3f66aa0 ieee80211_chswitch_done -EXPORT_SYMBOL net/mac80211/mac80211 0xd54b1d14 ieee80211_pspoll_get -EXPORT_SYMBOL net/mac80211/mac80211 0xd5727234 ieee80211_sta_eosp -EXPORT_SYMBOL net/mac80211/mac80211 0xd5b8dcb2 ieee80211_report_wowlan_wakeup -EXPORT_SYMBOL net/mac80211/mac80211 0xd68e981e ieee80211_rx_list -EXPORT_SYMBOL net/mac80211/mac80211 0xdfa8104c ieee80211_rts_get -EXPORT_SYMBOL net/mac80211/mac80211 0xe03bd406 ieee80211_sta_pspoll +EXPORT_SYMBOL net/mac80211/mac80211 0x9a0ead39 ieee80211_iter_keys_rcu +EXPORT_SYMBOL net/mac80211/mac80211 0x9a4538ac ieee80211_disconnect +EXPORT_SYMBOL net/mac80211/mac80211 0xa039aee6 ieee80211_radar_detected +EXPORT_SYMBOL net/mac80211/mac80211 0xa64e4e63 ieee80211_rate_control_unregister +EXPORT_SYMBOL net/mac80211/mac80211 0xa7f47d40 ieee80211_csa_finish +EXPORT_SYMBOL net/mac80211/mac80211 0xa8b04a80 ieee80211_queue_stopped +EXPORT_SYMBOL net/mac80211/mac80211 0xa9658670 ieee80211_txq_schedule_start +EXPORT_SYMBOL net/mac80211/mac80211 0xaa2a707b ieee80211_beacon_get_tim +EXPORT_SYMBOL net/mac80211/mac80211 0xaf9d2b4d ieee80211_queue_delayed_work +EXPORT_SYMBOL net/mac80211/mac80211 0xb21f2ad6 ieee80211_get_unsol_bcast_probe_resp_tmpl +EXPORT_SYMBOL net/mac80211/mac80211 0xb308e70c ieee80211_tx_rate_update +EXPORT_SYMBOL net/mac80211/mac80211 0xb5a1419e ieee80211_rts_duration +EXPORT_SYMBOL net/mac80211/mac80211 0xb9417235 ieee80211_disable_rssi_reports +EXPORT_SYMBOL net/mac80211/mac80211 0xb9f4cdb9 ieee80211_txq_get_depth +EXPORT_SYMBOL net/mac80211/mac80211 0xc0b6f9a3 ieee80211_next_txq +EXPORT_SYMBOL net/mac80211/mac80211 0xc1766c7b ieee80211_wake_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xc5c3d75e ieee80211_stop_queue +EXPORT_SYMBOL net/mac80211/mac80211 0xc8bebcb9 ieee80211_pspoll_get +EXPORT_SYMBOL net/mac80211/mac80211 0xcad325c8 ieee80211_tdls_oper_request +EXPORT_SYMBOL net/mac80211/mac80211 0xd03179d3 wiphy_to_ieee80211_hw +EXPORT_SYMBOL net/mac80211/mac80211 0xd5d98e5d ieee80211_txq_may_transmit +EXPORT_SYMBOL net/mac80211/mac80211 0xd758d1aa ieee80211_sta_register_airtime +EXPORT_SYMBOL net/mac80211/mac80211 0xdfc99c3e ieee80211_tx_status_ext EXPORT_SYMBOL net/mac80211/mac80211 0xe5752af3 ieee80211_get_bssid -EXPORT_SYMBOL net/mac80211/mac80211 0xe8e1a6dd ieee80211_iter_keys_rcu -EXPORT_SYMBOL net/mac80211/mac80211 0xe96b6cf4 ieee80211_scan_completed -EXPORT_SYMBOL net/mac80211/mac80211 0xeb2b12e5 __ieee80211_get_rx_led_name -EXPORT_SYMBOL net/mac80211/mac80211 0xee05d150 ieee80211_tx_status_ext -EXPORT_SYMBOL net/mac80211/mac80211 0xf64737d6 ieee80211_stop_tx_ba_cb_irqsafe -EXPORT_SYMBOL net/mac80211/mac80211 0xfa58998d ieee80211_sta_block_awake -EXPORT_SYMBOL net/mac80211/mac80211 0xfd13354b ieee80211_stop_queues -EXPORT_SYMBOL net/mac802154/mac802154 0x4c3e5f95 ieee802154_unregister_hw -EXPORT_SYMBOL net/mac802154/mac802154 0x59693933 ieee802154_xmit_complete -EXPORT_SYMBOL net/mac802154/mac802154 0x63384a9a ieee802154_stop_queue -EXPORT_SYMBOL net/mac802154/mac802154 0x85bd1dbf ieee802154_wake_queue -EXPORT_SYMBOL net/mac802154/mac802154 0x9cbb55b2 ieee802154_rx_irqsafe -EXPORT_SYMBOL net/mac802154/mac802154 0xa8b76030 ieee802154_register_hw -EXPORT_SYMBOL net/mac802154/mac802154 0xd124bc12 ieee802154_alloc_hw -EXPORT_SYMBOL net/mac802154/mac802154 0xe8f5d97e ieee802154_free_hw -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x20c7f04c ip_vs_conn_put -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x24f7aaa7 ip_vs_proto_data_get -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4bdaa49d ip_vs_conn_new -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x5cf6172b ip_vs_proto_get -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x657954c6 ip_vs_scheduler_err -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7686acbb ip_vs_tcp_conn_listen -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x785eb878 ip_vs_conn_out_get -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x7872b2c2 register_ip_vs_scheduler -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x8508afcd ip_vs_nfct_expect_related -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x9038a33d ip_vs_conn_in_get -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xad00cce7 register_ip_vs_app_inc +EXPORT_SYMBOL net/mac80211/mac80211 0xe63b24cb ieee80211_cqm_rssi_notify +EXPORT_SYMBOL net/mac80211/mac80211 0xe81626bb ieee80211_rx_irqsafe +EXPORT_SYMBOL net/mac80211/mac80211 0xea952e84 __ieee80211_get_assoc_led_name +EXPORT_SYMBOL net/mac80211/mac80211 0xeb453529 ieee80211_mark_rx_ba_filtered_frames +EXPORT_SYMBOL net/mac80211/mac80211 0xed8091d2 ieee80211_beacon_loss +EXPORT_SYMBOL net/mac80211/mac80211 0xef12c0e6 ieee80211_free_txskb +EXPORT_SYMBOL net/mac80211/mac80211 0xf031234f ieee80211_nan_func_match +EXPORT_SYMBOL net/mac80211/mac80211 0xf3f407a5 ieee80211_connection_loss +EXPORT_SYMBOL net/mac802154/mac802154 0x171c8fef ieee802154_wake_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x1efd62cf ieee802154_xmit_complete +EXPORT_SYMBOL net/mac802154/mac802154 0x2470affb ieee802154_register_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x5df9485a ieee802154_rx_irqsafe +EXPORT_SYMBOL net/mac802154/mac802154 0x851e8906 ieee802154_stop_queue +EXPORT_SYMBOL net/mac802154/mac802154 0x96f8a91b ieee802154_unregister_hw +EXPORT_SYMBOL net/mac802154/mac802154 0x99f57034 ieee802154_free_hw +EXPORT_SYMBOL net/mac802154/mac802154 0xa92a6d73 ieee802154_alloc_hw +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x12e60e9c ip_vs_conn_in_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1cee7c65 ip_vs_conn_put +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x1d74da03 register_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x2c3ed130 ip_vs_proto_data_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x4faa4bc1 ip_vs_new_conn_out +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6107fe15 ip_vs_conn_new +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x6a1453cf unregister_ip_vs_scheduler +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x72b49602 register_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x73638423 register_ip_vs_app_inc +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x75ff7f95 ip_vs_nfct_expect_related +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x84baddb5 unregister_ip_vs_app +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0x99515c0f ip_vs_tcp_conn_listen +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xc800eec1 ip_vs_scheduler_err EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd831a1a2 ip_vs_proto_name -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xdccdd692 unregister_ip_vs_scheduler -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xe611abd6 ip_vs_new_conn_out -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xf3d83b65 register_ip_vs_app -EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfff13c06 unregister_ip_vs_app -EXPORT_SYMBOL net/netfilter/nf_conntrack 0xbf7c9f33 nf_ct_ext_add +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xd90df5ab ip_vs_conn_out_get +EXPORT_SYMBOL net/netfilter/ipvs/ip_vs 0xfe50cac2 ip_vs_proto_get +EXPORT_SYMBOL net/netfilter/nf_conntrack 0xa90d8120 nf_ct_ext_add EXPORT_SYMBOL net/netfilter/nf_conntrack_pptp 0xf2a36612 pptp_msg_name -EXPORT_SYMBOL net/netfilter/nf_nat 0x6f121191 nf_nat_follow_master -EXPORT_SYMBOL net/netfilter/nf_nat 0x80c96bc1 nf_nat_setup_info -EXPORT_SYMBOL net/netfilter/nf_nat 0xe9d7e186 nf_nat_mangle_udp_packet -EXPORT_SYMBOL net/netfilter/nf_nat 0xec7b4dcc __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x09477b3c nf_nat_mangle_udp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0x3c873443 nf_nat_follow_master +EXPORT_SYMBOL net/netfilter/nf_nat 0xbf4f9013 __nf_nat_mangle_tcp_packet +EXPORT_SYMBOL net/netfilter/nf_nat 0xd797f45b nf_nat_setup_info EXPORT_SYMBOL net/netfilter/nft_fib 0xb3c36947 nft_fib_policy +EXPORT_SYMBOL net/netfilter/x_tables 0x0acfe8bc xt_unregister_matches EXPORT_SYMBOL net/netfilter/x_tables 0x0d7f5fcd xt_alloc_entry_offsets -EXPORT_SYMBOL net/netfilter/x_tables 0x1e63caf3 xt_register_match -EXPORT_SYMBOL net/netfilter/x_tables 0x2f24d9d2 xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x148abac9 xt_find_table +EXPORT_SYMBOL net/netfilter/x_tables 0x1dce4dab xt_unregister_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x34577d66 xt_find_match EXPORT_SYMBOL net/netfilter/x_tables 0x3bf9d084 xt_check_table_hooks EXPORT_SYMBOL net/netfilter/x_tables 0x48012e28 xt_check_proc_name -EXPORT_SYMBOL net/netfilter/x_tables 0x4b54aab6 xt_unregister_matches EXPORT_SYMBOL net/netfilter/x_tables 0x50873741 xt_compat_init_offsets -EXPORT_SYMBOL net/netfilter/x_tables 0x60ad2191 xt_register_matches -EXPORT_SYMBOL net/netfilter/x_tables 0x85a1342f xt_find_table -EXPORT_SYMBOL net/netfilter/x_tables 0x871ad6c5 xt_unregister_target -EXPORT_SYMBOL net/netfilter/x_tables 0x8a059532 xt_register_targets -EXPORT_SYMBOL net/netfilter/x_tables 0x961de16b xt_find_match +EXPORT_SYMBOL net/netfilter/x_tables 0x59376a93 xt_register_targets +EXPORT_SYMBOL net/netfilter/x_tables 0x69792900 xt_register_match EXPORT_SYMBOL net/netfilter/x_tables 0x977fd4bf xt_alloc_table_info -EXPORT_SYMBOL net/netfilter/x_tables 0xa000c8f7 xt_register_target EXPORT_SYMBOL net/netfilter/x_tables 0xa25fc115 xt_compat_check_entry_offsets EXPORT_SYMBOL net/netfilter/x_tables 0xcb3e91cc xt_counters_alloc EXPORT_SYMBOL net/netfilter/x_tables 0xd87ae60d xt_check_entry_offsets +EXPORT_SYMBOL net/netfilter/x_tables 0xdd2dee75 xt_register_target +EXPORT_SYMBOL net/netfilter/x_tables 0xe05b73fd xt_unregister_match EXPORT_SYMBOL net/netfilter/x_tables 0xe204e042 xt_free_table_info -EXPORT_SYMBOL net/netfilter/x_tables 0xf6bccc24 xt_unregister_match +EXPORT_SYMBOL net/netfilter/x_tables 0xf781404d xt_unregister_target +EXPORT_SYMBOL net/netfilter/x_tables 0xf7c5a3d0 xt_register_matches EXPORT_SYMBOL net/netfilter/x_tables 0xfef779fa xt_find_jump_offset EXPORT_SYMBOL net/nfc/hci/hci 0x19ca30b6 nfc_llc_stop EXPORT_SYMBOL net/nfc/hci/hci 0x1ecb73c9 nfc_hci_disconnect_all_gates @@ -3252,252 +3253,252 @@ EXPORT_SYMBOL net/nfc/hci/hci 0xdd231c55 nfc_hci_sak_to_protocol EXPORT_SYMBOL net/nfc/hci/hci 0xe4a804ae nfc_hci_unregister_device EXPORT_SYMBOL net/nfc/hci/hci 0xf6622759 nfc_hci_driver_failure -EXPORT_SYMBOL net/nfc/nci/nci 0x0892d307 nci_register_device -EXPORT_SYMBOL net/nfc/nci/nci 0x145690d9 nci_hci_send_event -EXPORT_SYMBOL net/nfc/nci/nci 0x1e864a81 nci_nfcc_loopback -EXPORT_SYMBOL net/nfc/nci/nci 0x26c9f5df nci_hci_connect_gate -EXPORT_SYMBOL net/nfc/nci/nci 0x2936f12c nci_get_conn_info_by_dest_type_params -EXPORT_SYMBOL net/nfc/nci/nci 0x3233e415 nci_hci_send_cmd -EXPORT_SYMBOL net/nfc/nci/nci 0x329683f2 nci_hci_get_param -EXPORT_SYMBOL net/nfc/nci/nci 0x35bfdf37 nci_send_cmd -EXPORT_SYMBOL net/nfc/nci/nci 0x39cc6c12 nci_hci_dev_session_init -EXPORT_SYMBOL net/nfc/nci/nci 0x3f6ee9cf nci_conn_max_data_pkt_payload_size -EXPORT_SYMBOL net/nfc/nci/nci 0x44f6101a nci_allocate_device -EXPORT_SYMBOL net/nfc/nci/nci 0x4f6896ba nci_core_init -EXPORT_SYMBOL net/nfc/nci/nci 0x55490287 nci_hci_set_param -EXPORT_SYMBOL net/nfc/nci/nci 0x59996f74 nci_hci_open_pipe -EXPORT_SYMBOL net/nfc/nci/nci 0x5d827392 nci_send_frame -EXPORT_SYMBOL net/nfc/nci/nci 0x706ab1e3 nci_core_conn_close -EXPORT_SYMBOL net/nfc/nci/nci 0x75ca0b2e nci_nfcee_discover -EXPORT_SYMBOL net/nfc/nci/nci 0x77b4bc14 nci_prop_cmd -EXPORT_SYMBOL net/nfc/nci/nci 0x7dcad7fa nci_free_device -EXPORT_SYMBOL net/nfc/nci/nci 0xacb05612 nci_core_cmd -EXPORT_SYMBOL net/nfc/nci/nci 0xad0625db nci_req_complete -EXPORT_SYMBOL net/nfc/nci/nci 0xb017f523 nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x0424ab86 nci_hci_clear_all_pipes +EXPORT_SYMBOL net/nfc/nci/nci 0x2b960caf nci_free_device +EXPORT_SYMBOL net/nfc/nci/nci 0x37d2a60d nci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x3f35d76d nci_core_conn_close +EXPORT_SYMBOL net/nfc/nci/nci 0x3f506404 nci_nfcee_discover +EXPORT_SYMBOL net/nfc/nci/nci 0x3f93c45b nci_core_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0x4234b74b nci_hci_get_param +EXPORT_SYMBOL net/nfc/nci/nci 0x45869646 nci_core_conn_create +EXPORT_SYMBOL net/nfc/nci/nci 0x4a495196 nci_register_device +EXPORT_SYMBOL net/nfc/nci/nci 0x4a811f9c nci_core_reset +EXPORT_SYMBOL net/nfc/nci/nci 0x50c7495f nci_allocate_device +EXPORT_SYMBOL net/nfc/nci/nci 0x54a2cb46 nci_send_frame +EXPORT_SYMBOL net/nfc/nci/nci 0x69802dae nci_hci_set_param +EXPORT_SYMBOL net/nfc/nci/nci 0x6a7c6f59 nci_hci_connect_gate +EXPORT_SYMBOL net/nfc/nci/nci 0x6b213bce nci_conn_max_data_pkt_payload_size +EXPORT_SYMBOL net/nfc/nci/nci 0x6d321c2e nci_send_data +EXPORT_SYMBOL net/nfc/nci/nci 0x71892ea8 nci_unregister_device +EXPORT_SYMBOL net/nfc/nci/nci 0x944b9832 nci_nfcee_mode_set +EXPORT_SYMBOL net/nfc/nci/nci 0x956b7c90 nci_set_config +EXPORT_SYMBOL net/nfc/nci/nci 0x9ec25867 nci_get_conn_info_by_dest_type_params +EXPORT_SYMBOL net/nfc/nci/nci 0xa7944d32 nci_hci_send_event +EXPORT_SYMBOL net/nfc/nci/nci 0xa803b47d nci_req_complete +EXPORT_SYMBOL net/nfc/nci/nci 0xb50604a9 nci_recv_frame +EXPORT_SYMBOL net/nfc/nci/nci 0xb704989f nci_nfcc_loopback EXPORT_SYMBOL net/nfc/nci/nci 0xba490602 nci_to_errno -EXPORT_SYMBOL net/nfc/nci/nci 0xd1a6e9df nci_recv_frame -EXPORT_SYMBOL net/nfc/nci/nci 0xd463d6f3 nci_nfcee_mode_set -EXPORT_SYMBOL net/nfc/nci/nci 0xd6096376 nci_send_data -EXPORT_SYMBOL net/nfc/nci/nci 0xde9b1582 nci_core_conn_create -EXPORT_SYMBOL net/nfc/nci/nci 0xe4567258 nci_hci_clear_all_pipes -EXPORT_SYMBOL net/nfc/nci/nci 0xe7679f1c nci_unregister_device -EXPORT_SYMBOL net/nfc/nci/nci 0xf6ddcd91 nci_set_config -EXPORT_SYMBOL net/nfc/nfc 0x0608d94f nfc_se_connectivity -EXPORT_SYMBOL net/nfc/nfc 0x107aa815 __nfc_alloc_vendor_cmd_reply_skb -EXPORT_SYMBOL net/nfc/nfc 0x10ef9ba4 nfc_driver_failure -EXPORT_SYMBOL net/nfc/nfc 0x18471a4b nfc_alloc_recv_skb -EXPORT_SYMBOL net/nfc/nfc 0x2ef328c7 nfc_targets_found -EXPORT_SYMBOL net/nfc/nfc 0x40649867 nfc_class -EXPORT_SYMBOL net/nfc/nfc 0x4160d510 nfc_tm_activated -EXPORT_SYMBOL net/nfc/nfc 0x52846740 nfc_set_remote_general_bytes -EXPORT_SYMBOL net/nfc/nfc 0x5769c710 nfc_send_to_raw_sock -EXPORT_SYMBOL net/nfc/nfc 0x5b5f79a8 nfc_target_lost -EXPORT_SYMBOL net/nfc/nfc 0x64b907c3 nfc_se_transaction -EXPORT_SYMBOL net/nfc/nfc 0x7b801581 nfc_add_se -EXPORT_SYMBOL net/nfc/nfc 0x7c826637 nfc_proto_unregister -EXPORT_SYMBOL net/nfc/nfc 0x8a58bb80 nfc_get_local_general_bytes -EXPORT_SYMBOL net/nfc/nfc 0x8b684f3a nfc_tm_deactivated -EXPORT_SYMBOL net/nfc/nfc 0xb335f83f nfc_register_device -EXPORT_SYMBOL net/nfc/nfc 0xb6aed705 nfc_allocate_device -EXPORT_SYMBOL net/nfc/nfc 0xb77d3e27 nfc_dep_link_is_up -EXPORT_SYMBOL net/nfc/nfc 0xbeab0102 nfc_tm_data_received -EXPORT_SYMBOL net/nfc/nfc 0xc1f8eaec nfc_proto_register -EXPORT_SYMBOL net/nfc/nfc 0xc6b1038d nfc_unregister_device -EXPORT_SYMBOL net/nfc/nfc 0xdfbac069 nfc_find_se -EXPORT_SYMBOL net/nfc/nfc 0xe6a4cc31 nfc_vendor_cmd_reply -EXPORT_SYMBOL net/nfc/nfc 0xed19c1c4 nfc_fw_download_done -EXPORT_SYMBOL net/nfc/nfc 0xfa6ccfed nfc_remove_se +EXPORT_SYMBOL net/nfc/nci/nci 0xbabff748 nci_core_init +EXPORT_SYMBOL net/nfc/nci/nci 0xcb066be0 nci_hci_dev_session_init +EXPORT_SYMBOL net/nfc/nci/nci 0xd11b2659 nci_hci_open_pipe +EXPORT_SYMBOL net/nfc/nci/nci 0xd36f1429 nci_hci_send_cmd +EXPORT_SYMBOL net/nfc/nci/nci 0xe83ace55 nci_prop_cmd +EXPORT_SYMBOL net/nfc/nfc 0x00c4a623 nfc_driver_failure +EXPORT_SYMBOL net/nfc/nfc 0x10c852d1 nfc_se_transaction +EXPORT_SYMBOL net/nfc/nfc 0x10fdaf60 nfc_tm_activated +EXPORT_SYMBOL net/nfc/nfc 0x159d4d26 nfc_find_se +EXPORT_SYMBOL net/nfc/nfc 0x2c4b662b nfc_target_lost +EXPORT_SYMBOL net/nfc/nfc 0x2dfcae38 nfc_tm_deactivated +EXPORT_SYMBOL net/nfc/nfc 0x3264cf70 nfc_vendor_cmd_reply +EXPORT_SYMBOL net/nfc/nfc 0x38b6fae1 nfc_add_se +EXPORT_SYMBOL net/nfc/nfc 0x54fbaa02 nfc_remove_se +EXPORT_SYMBOL net/nfc/nfc 0x563bdcad nfc_set_remote_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x7358e127 nfc_send_to_raw_sock +EXPORT_SYMBOL net/nfc/nfc 0x7c579493 nfc_fw_download_done +EXPORT_SYMBOL net/nfc/nfc 0x868d6d37 nfc_proto_unregister +EXPORT_SYMBOL net/nfc/nfc 0x8c6e220f nfc_get_local_general_bytes +EXPORT_SYMBOL net/nfc/nfc 0x95817e60 nfc_class +EXPORT_SYMBOL net/nfc/nfc 0xa44e16a0 nfc_unregister_device +EXPORT_SYMBOL net/nfc/nfc 0xc3fe1cf9 nfc_targets_found +EXPORT_SYMBOL net/nfc/nfc 0xcf5bb000 nfc_register_device +EXPORT_SYMBOL net/nfc/nfc 0xd0cd9836 nfc_se_connectivity +EXPORT_SYMBOL net/nfc/nfc 0xd3b56aad nfc_tm_data_received +EXPORT_SYMBOL net/nfc/nfc 0xe0cba7c3 nfc_alloc_recv_skb +EXPORT_SYMBOL net/nfc/nfc 0xe2127c37 nfc_proto_register +EXPORT_SYMBOL net/nfc/nfc 0xfa417bd9 nfc_allocate_device +EXPORT_SYMBOL net/nfc/nfc 0xfc52f8e0 __nfc_alloc_vendor_cmd_reply_skb +EXPORT_SYMBOL net/nfc/nfc 0xfd09f60c nfc_dep_link_is_up EXPORT_SYMBOL net/nfc/nfc_digital 0x51895929 nfc_digital_free_device EXPORT_SYMBOL net/nfc/nfc_digital 0x65218276 nfc_digital_unregister_device EXPORT_SYMBOL net/nfc/nfc_digital 0xd6b3a67f nfc_digital_allocate_device EXPORT_SYMBOL net/nfc/nfc_digital 0xfd02a51f nfc_digital_register_device -EXPORT_SYMBOL net/phonet/phonet 0x2d7f4e4d phonet_proto_register -EXPORT_SYMBOL net/phonet/phonet 0x54efd07b pn_sock_hash -EXPORT_SYMBOL net/phonet/phonet 0x6aca2651 pn_sock_get_port -EXPORT_SYMBOL net/phonet/phonet 0x8e64b656 pn_skb_send -EXPORT_SYMBOL net/phonet/phonet 0x9de2095e pn_sock_unhash -EXPORT_SYMBOL net/phonet/phonet 0xa4520f12 phonet_proto_unregister -EXPORT_SYMBOL net/phonet/phonet 0xe74ea023 phonet_stream_ops -EXPORT_SYMBOL net/phonet/phonet 0xebb5ec7f phonet_header_ops -EXPORT_SYMBOL net/rxrpc/rxrpc 0x30907962 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/phonet/phonet 0x2ebe5204 phonet_stream_ops +EXPORT_SYMBOL net/phonet/phonet 0x522a8196 pn_skb_send +EXPORT_SYMBOL net/phonet/phonet 0x9f1acf88 pn_sock_unhash +EXPORT_SYMBOL net/phonet/phonet 0xa3c5cf07 pn_sock_hash +EXPORT_SYMBOL net/phonet/phonet 0xc3958c8f phonet_header_ops +EXPORT_SYMBOL net/phonet/phonet 0xcf5f3d2f pn_sock_get_port +EXPORT_SYMBOL net/phonet/phonet 0xe297465d phonet_proto_register +EXPORT_SYMBOL net/phonet/phonet 0xe365dd0a phonet_proto_unregister +EXPORT_SYMBOL net/rxrpc/rxrpc 0x0798597b rxrpc_kernel_get_peer +EXPORT_SYMBOL net/rxrpc/rxrpc 0x08ad220c rxrpc_kernel_get_srtt +EXPORT_SYMBOL net/rxrpc/rxrpc 0x0e029aca rxrpc_kernel_get_epoch +EXPORT_SYMBOL net/rxrpc/rxrpc 0x22c8a3d1 rxrpc_kernel_check_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0x25de07af rxrpc_get_server_data_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0x2612e32d rxrpc_kernel_end_call EXPORT_SYMBOL net/rxrpc/rxrpc 0x31bf3ca3 rxrpc_debug_id -EXPORT_SYMBOL net/rxrpc/rxrpc 0x44d3eda8 rxrpc_kernel_get_peer -EXPORT_SYMBOL net/rxrpc/rxrpc 0x469836c2 rxrpc_kernel_recv_data -EXPORT_SYMBOL net/rxrpc/rxrpc 0x47867da2 key_type_rxrpc -EXPORT_SYMBOL net/rxrpc/rxrpc 0x5e6ae009 rxrpc_kernel_set_tx_length -EXPORT_SYMBOL net/rxrpc/rxrpc 0x6d777028 rxrpc_get_server_data_key -EXPORT_SYMBOL net/rxrpc/rxrpc 0x6f956f5a rxrpc_sock_set_min_security_level -EXPORT_SYMBOL net/rxrpc/rxrpc 0x7cfe5a44 rxrpc_kernel_new_call_notification -EXPORT_SYMBOL net/rxrpc/rxrpc 0x81f30706 rxrpc_get_null_key -EXPORT_SYMBOL net/rxrpc/rxrpc 0x845ced0a rxrpc_kernel_check_life -EXPORT_SYMBOL net/rxrpc/rxrpc 0x97b9d25c rxrpc_kernel_send_data -EXPORT_SYMBOL net/rxrpc/rxrpc 0xaa246f1a rxrpc_kernel_end_call -EXPORT_SYMBOL net/rxrpc/rxrpc 0xaac88e0e rxrpc_kernel_get_reply_time -EXPORT_SYMBOL net/rxrpc/rxrpc 0xb1fc18d2 rxrpc_kernel_set_max_life -EXPORT_SYMBOL net/rxrpc/rxrpc 0xb99e9817 rxrpc_kernel_get_epoch -EXPORT_SYMBOL net/rxrpc/rxrpc 0xd4db2cf3 rxrpc_kernel_get_srtt -EXPORT_SYMBOL net/rxrpc/rxrpc 0xe77ef9ff rxrpc_kernel_charge_accept -EXPORT_SYMBOL net/rxrpc/rxrpc 0xeb452d35 rxrpc_kernel_abort_call -EXPORT_SYMBOL net/sctp/sctp 0x3f8ffdeb sctp_do_peeloff -EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x38d861a8 gss_pseudoflavor_to_service -EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x3f529951 gss_mech_put -EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x98448951 gss_mech_get -EXPORT_SYMBOL net/sunrpc/sunrpc 0x06d2bfc9 xdr_truncate_encode -EXPORT_SYMBOL net/sunrpc/sunrpc 0x2d9b10d7 get_srcport -EXPORT_SYMBOL net/sunrpc/sunrpc 0xafa972f0 xdr_restrict_buflen -EXPORT_SYMBOL net/sunrpc/sunrpc 0xb435058c svc_pool_stats_open -EXPORT_SYMBOL net/tipc/tipc 0x3dd698c2 tipc_nl_sk_walk -EXPORT_SYMBOL net/tipc/tipc 0xb1a10972 tipc_dump_done -EXPORT_SYMBOL net/tipc/tipc 0xed3125b4 tipc_dump_start -EXPORT_SYMBOL net/tipc/tipc 0xfc7c667f tipc_sk_fill_sock_diag -EXPORT_SYMBOL net/tls/tls 0xce5f11cc tls_get_record -EXPORT_SYMBOL net/wireless/cfg80211 0x007ef721 cfg80211_sched_scan_stopped_locked -EXPORT_SYMBOL net/wireless/cfg80211 0x0329d89f cfg80211_cac_event -EXPORT_SYMBOL net/wireless/cfg80211 0x055f5ce8 wiphy_apply_custom_regulatory -EXPORT_SYMBOL net/wireless/cfg80211 0x07b13ad6 wiphy_rfkill_set_hw_state_reason -EXPORT_SYMBOL net/wireless/cfg80211 0x0b17d8e8 ieee80211_get_hdrlen_from_skb -EXPORT_SYMBOL net/wireless/cfg80211 0x0b8e138e cfg80211_register_netdevice +EXPORT_SYMBOL net/rxrpc/rxrpc 0x36029d31 rxrpc_kernel_new_call_notification +EXPORT_SYMBOL net/rxrpc/rxrpc 0x4b435132 rxrpc_kernel_recv_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0x6e941b55 rxrpc_kernel_send_data +EXPORT_SYMBOL net/rxrpc/rxrpc 0x76d228c8 rxrpc_kernel_charge_accept +EXPORT_SYMBOL net/rxrpc/rxrpc 0x8b71ff77 rxrpc_sock_set_min_security_level +EXPORT_SYMBOL net/rxrpc/rxrpc 0xb05418da rxrpc_get_null_key +EXPORT_SYMBOL net/rxrpc/rxrpc 0xb16b36e7 rxrpc_kernel_begin_call +EXPORT_SYMBOL net/rxrpc/rxrpc 0xc937044e key_type_rxrpc +EXPORT_SYMBOL net/rxrpc/rxrpc 0xd3d0929c rxrpc_kernel_set_max_life +EXPORT_SYMBOL net/rxrpc/rxrpc 0xe06f742d rxrpc_kernel_set_tx_length +EXPORT_SYMBOL net/rxrpc/rxrpc 0xeace8e11 rxrpc_kernel_get_reply_time +EXPORT_SYMBOL net/rxrpc/rxrpc 0xfbd19c16 rxrpc_kernel_abort_call +EXPORT_SYMBOL net/sctp/sctp 0x63c52063 sctp_do_peeloff +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x599d525d gss_pseudoflavor_to_service +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x641baab3 gss_mech_get +EXPORT_SYMBOL net/sunrpc/auth_gss/auth_rpcgss 0x6b2b9acf gss_mech_put +EXPORT_SYMBOL net/sunrpc/sunrpc 0x01cc5efa xdr_truncate_encode +EXPORT_SYMBOL net/sunrpc/sunrpc 0x7d194779 xdr_restrict_buflen +EXPORT_SYMBOL net/sunrpc/sunrpc 0xb1e494c3 get_srcport +EXPORT_SYMBOL net/sunrpc/sunrpc 0xd1fe2eca svc_pool_stats_open +EXPORT_SYMBOL net/tipc/tipc 0x44245b00 tipc_sk_fill_sock_diag +EXPORT_SYMBOL net/tipc/tipc 0x6b19f555 tipc_dump_start +EXPORT_SYMBOL net/tipc/tipc 0x9a6ec1dc tipc_dump_done +EXPORT_SYMBOL net/tipc/tipc 0xae0aaa37 tipc_nl_sk_walk +EXPORT_SYMBOL net/tls/tls 0xbc75c14f tls_get_record +EXPORT_SYMBOL net/wireless/cfg80211 0x02b712ff cfg80211_connect_done +EXPORT_SYMBOL net/wireless/cfg80211 0x04edd94d get_wiphy_regdom +EXPORT_SYMBOL net/wireless/cfg80211 0x0539f910 cfg80211_nan_match +EXPORT_SYMBOL net/wireless/cfg80211 0x07a0409a cfg80211_rx_control_port +EXPORT_SYMBOL net/wireless/cfg80211 0x0a7d8272 cfg80211_report_obss_beacon_khz +EXPORT_SYMBOL net/wireless/cfg80211 0x0d3f8610 cfg80211_ibss_joined +EXPORT_SYMBOL net/wireless/cfg80211 0x1065557c cfg80211_tdls_oper_request +EXPORT_SYMBOL net/wireless/cfg80211 0x11203d5c cfg80211_rx_mlme_mgmt EXPORT_SYMBOL net/wireless/cfg80211 0x117aca91 cfg80211_merge_profile +EXPORT_SYMBOL net/wireless/cfg80211 0x11cb60f6 cfg80211_send_layer2_update +EXPORT_SYMBOL net/wireless/cfg80211 0x1354f096 cfg80211_cqm_beacon_loss_notify EXPORT_SYMBOL net/wireless/cfg80211 0x1356ab28 ieee80211_mandatory_rates -EXPORT_SYMBOL net/wireless/cfg80211 0x13bccdcb cfg80211_get_bss EXPORT_SYMBOL net/wireless/cfg80211 0x15a37cf3 cfg80211_calculate_bitrate EXPORT_SYMBOL net/wireless/cfg80211 0x1879fcbd bridge_tunnel_header -EXPORT_SYMBOL net/wireless/cfg80211 0x196df38b cfg80211_cqm_beacon_loss_notify -EXPORT_SYMBOL net/wireless/cfg80211 0x19783d4a cfg80211_iftype_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0x19e0d0af cfg80211_remain_on_channel_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x1be5e346 regulatory_set_wiphy_regd EXPORT_SYMBOL net/wireless/cfg80211 0x1ce2497f reg_query_regdb_wmm -EXPORT_SYMBOL net/wireless/cfg80211 0x1e1dc9a6 cfg80211_classify8021d +EXPORT_SYMBOL net/wireless/cfg80211 0x1dba0c90 wiphy_rfkill_start_polling +EXPORT_SYMBOL net/wireless/cfg80211 0x218bb72f cfg80211_reg_can_beacon EXPORT_SYMBOL net/wireless/cfg80211 0x2310adee ieee80211_bss_get_elem -EXPORT_SYMBOL net/wireless/cfg80211 0x23ec3d4f cfg80211_control_port_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x252f16e2 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x257ab4a4 cfg80211_disconnected EXPORT_SYMBOL net/wireless/cfg80211 0x275269b3 ieee80211_ie_split_ric EXPORT_SYMBOL net/wireless/cfg80211 0x27efff25 ieee80211_s1g_channel_width EXPORT_SYMBOL net/wireless/cfg80211 0x2a5d816f cfg80211_chandef_valid -EXPORT_SYMBOL net/wireless/cfg80211 0x2acc1ddd cfg80211_scan_done -EXPORT_SYMBOL net/wireless/cfg80211 0x2c0458cf cfg80211_chandef_usable -EXPORT_SYMBOL net/wireless/cfg80211 0x34bf0a97 cfg80211_inform_bss_frame_data -EXPORT_SYMBOL net/wireless/cfg80211 0x352fc35b cfg80211_probe_status -EXPORT_SYMBOL net/wireless/cfg80211 0x358aabe7 cfg80211_michael_mic_failure -EXPORT_SYMBOL net/wireless/cfg80211 0x365eadfe cfg80211_inform_bss_data -EXPORT_SYMBOL net/wireless/cfg80211 0x37aab82c wiphy_new_nm -EXPORT_SYMBOL net/wireless/cfg80211 0x3920cbd5 cfg80211_send_layer2_update -EXPORT_SYMBOL net/wireless/cfg80211 0x39ed9d8a cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x2bf28712 cfg80211_rx_assoc_resp +EXPORT_SYMBOL net/wireless/cfg80211 0x315c11af cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x338d2da0 cfg80211_chandef_usable +EXPORT_SYMBOL net/wireless/cfg80211 0x360e8e13 cfg80211_register_netdevice +EXPORT_SYMBOL net/wireless/cfg80211 0x3b6c09fc cfg80211_assoc_timeout +EXPORT_SYMBOL net/wireless/cfg80211 0x3c5c4bd4 cfg80211_scan_done EXPORT_SYMBOL net/wireless/cfg80211 0x3d8e5894 cfg80211_chandef_compatible EXPORT_SYMBOL net/wireless/cfg80211 0x3f12e004 ieee80211_get_response_rate -EXPORT_SYMBOL net/wireless/cfg80211 0x4019362f cfg80211_rx_assoc_resp -EXPORT_SYMBOL net/wireless/cfg80211 0x411757c6 cfg80211_get_drvinfo -EXPORT_SYMBOL net/wireless/cfg80211 0x42030db8 cfg80211_unregister_wdev -EXPORT_SYMBOL net/wireless/cfg80211 0x44129936 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x4414c770 cfg80211_mgmt_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x4464e912 ieee80211_get_hdrlen_from_skb EXPORT_SYMBOL net/wireless/cfg80211 0x46312808 ieee80211_radiotap_iterator_next -EXPORT_SYMBOL net/wireless/cfg80211 0x4997318f cfg80211_external_auth_request -EXPORT_SYMBOL net/wireless/cfg80211 0x4c41686b cfg80211_rx_spurious_frame -EXPORT_SYMBOL net/wireless/cfg80211 0x4dab1904 cfg80211_conn_failed -EXPORT_SYMBOL net/wireless/cfg80211 0x4e18ce08 cfg80211_rx_unexpected_4addr_frame -EXPORT_SYMBOL net/wireless/cfg80211 0x50c58ac9 cfg80211_cqm_rssi_notify -EXPORT_SYMBOL net/wireless/cfg80211 0x56c3e8c9 cfg80211_sched_scan_results -EXPORT_SYMBOL net/wireless/cfg80211 0x57d190ae cfg80211_remain_on_channel_expired -EXPORT_SYMBOL net/wireless/cfg80211 0x5b880f9f cfg80211_check_station_change -EXPORT_SYMBOL net/wireless/cfg80211 0x5c1be1cb cfg80211_gtk_rekey_notify -EXPORT_SYMBOL net/wireless/cfg80211 0x5c3c7645 cfg80211_connect_done -EXPORT_SYMBOL net/wireless/cfg80211 0x5c3ded8d cfg80211_reg_can_beacon_relax -EXPORT_SYMBOL net/wireless/cfg80211 0x5da2246e ieee80211_get_channel_khz -EXPORT_SYMBOL net/wireless/cfg80211 0x5df2ac3b cfg80211_get_station -EXPORT_SYMBOL net/wireless/cfg80211 0x5ebfdd39 cfg80211_rx_unprot_mlme_mgmt -EXPORT_SYMBOL net/wireless/cfg80211 0x5f0e6893 cfg80211_assoc_timeout -EXPORT_SYMBOL net/wireless/cfg80211 0x60c83aa9 wiphy_free -EXPORT_SYMBOL net/wireless/cfg80211 0x610d2525 cfg80211_notify_new_peer_candidate -EXPORT_SYMBOL net/wireless/cfg80211 0x620e60b5 cfg80211_nan_func_terminated -EXPORT_SYMBOL net/wireless/cfg80211 0x6264069e cfg80211_abandon_assoc -EXPORT_SYMBOL net/wireless/cfg80211 0x65b346d8 cfg80211_tx_mgmt_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x48da967d cfg80211_control_port_tx_status +EXPORT_SYMBOL net/wireless/cfg80211 0x49546c55 cfg80211_conn_failed +EXPORT_SYMBOL net/wireless/cfg80211 0x4ece5ddd cfg80211_report_wowlan_wakeup +EXPORT_SYMBOL net/wireless/cfg80211 0x507b171d wiphy_rfkill_set_hw_state_reason +EXPORT_SYMBOL net/wireless/cfg80211 0x5088dc12 __cfg80211_alloc_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x50d9c0dd cfg80211_check_station_change +EXPORT_SYMBOL net/wireless/cfg80211 0x51b1c15b cfg80211_port_authorized +EXPORT_SYMBOL net/wireless/cfg80211 0x560bd23d cfg80211_rx_spurious_frame +EXPORT_SYMBOL net/wireless/cfg80211 0x5ada0747 cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0x5b9a5832 cfg80211_cac_event +EXPORT_SYMBOL net/wireless/cfg80211 0x5b9c755a cfg80211_sched_scan_results +EXPORT_SYMBOL net/wireless/cfg80211 0x5bdda589 regulatory_hint +EXPORT_SYMBOL net/wireless/cfg80211 0x5dc1473d __cfg80211_alloc_reply_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x5e134d23 cfg80211_put_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x621cb12a cfg80211_del_sta_sinfo +EXPORT_SYMBOL net/wireless/cfg80211 0x67e737d4 cfg80211_inform_bss_frame_data EXPORT_SYMBOL net/wireless/cfg80211 0x69b18f43 rfc1042_header +EXPORT_SYMBOL net/wireless/cfg80211 0x69c3f240 cfg80211_crit_proto_stopped EXPORT_SYMBOL net/wireless/cfg80211 0x6bedf402 ieee80211_freq_khz_to_channel -EXPORT_SYMBOL net/wireless/cfg80211 0x6d790f90 cfg80211_del_sta_sinfo -EXPORT_SYMBOL net/wireless/cfg80211 0x7273ec90 cfg80211_port_authorized -EXPORT_SYMBOL net/wireless/cfg80211 0x74ca4d43 __cfg80211_alloc_reply_skb -EXPORT_SYMBOL net/wireless/cfg80211 0x780db49b regulatory_pre_cac_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0x6cfca361 cfg80211_ch_switch_started_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x6ee2158b wiphy_apply_custom_regulatory +EXPORT_SYMBOL net/wireless/cfg80211 0x6f557a70 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x7403d52b cfg80211_tx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0x742b140b cfg80211_tx_mgmt_expired +EXPORT_SYMBOL net/wireless/cfg80211 0x75653945 cfg80211_inform_bss_data +EXPORT_SYMBOL net/wireless/cfg80211 0x7642ed34 cfg80211_cqm_rssi_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x7786cb5a cfg80211_iter_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0x77bc8501 cfg80211_rx_unprot_mlme_mgmt EXPORT_SYMBOL net/wireless/cfg80211 0x79b82a71 cfg80211_find_vendor_elem -EXPORT_SYMBOL net/wireless/cfg80211 0x79f82ce5 cfg80211_update_owe_info_event -EXPORT_SYMBOL net/wireless/cfg80211 0x7b3a04ff cfg80211_pmksa_candidate_notify -EXPORT_SYMBOL net/wireless/cfg80211 0x7b7345e5 cfg80211_reg_can_beacon +EXPORT_SYMBOL net/wireless/cfg80211 0x7afebf5a ieee80211_get_channel_khz EXPORT_SYMBOL net/wireless/cfg80211 0x7c3ac925 ieee80211_get_vht_max_nss EXPORT_SYMBOL net/wireless/cfg80211 0x7ef39823 ieee80211_hdrlen -EXPORT_SYMBOL net/wireless/cfg80211 0x7f807bcf cfg80211_report_wowlan_wakeup -EXPORT_SYMBOL net/wireless/cfg80211 0x832f6f60 regulatory_hint -EXPORT_SYMBOL net/wireless/cfg80211 0x8579db64 cfg80211_ibss_joined -EXPORT_SYMBOL net/wireless/cfg80211 0x862ef771 cfg80211_sta_opmode_change_notify -EXPORT_SYMBOL net/wireless/cfg80211 0x86968c75 cfg80211_disconnected -EXPORT_SYMBOL net/wireless/cfg80211 0x88dff1c5 cfg80211_nan_match -EXPORT_SYMBOL net/wireless/cfg80211 0x8b2ca431 cfg80211_iter_combinations -EXPORT_SYMBOL net/wireless/cfg80211 0x8b541fdd ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0x80b94a84 freq_reg_info +EXPORT_SYMBOL net/wireless/cfg80211 0x863c1391 cfg80211_rx_mgmt_khz +EXPORT_SYMBOL net/wireless/cfg80211 0x869fe917 cfg80211_bss_flush +EXPORT_SYMBOL net/wireless/cfg80211 0x86a961d3 cfg80211_ch_switch_notify +EXPORT_SYMBOL net/wireless/cfg80211 0x889de20a cfg80211_iftype_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0x8bf6535b regulatory_set_wiphy_regd_sync EXPORT_SYMBOL net/wireless/cfg80211 0x8fa02936 cfg80211_free_nan_func -EXPORT_SYMBOL net/wireless/cfg80211 0x9005831a cfg80211_bss_iter -EXPORT_SYMBOL net/wireless/cfg80211 0x91a8882d __cfg80211_alloc_event_skb -EXPORT_SYMBOL net/wireless/cfg80211 0x948c5f4e wiphy_rfkill_start_polling -EXPORT_SYMBOL net/wireless/cfg80211 0x960dbf87 ieee80211_data_to_8023_exthdr -EXPORT_SYMBOL net/wireless/cfg80211 0x96ce6187 cfg80211_stop_iface -EXPORT_SYMBOL net/wireless/cfg80211 0x99343cba wiphy_register -EXPORT_SYMBOL net/wireless/cfg80211 0x996eda0b regulatory_set_wiphy_regd_sync -EXPORT_SYMBOL net/wireless/cfg80211 0x9b9004ef cfg80211_radar_event +EXPORT_SYMBOL net/wireless/cfg80211 0x90325209 cfg80211_external_auth_request +EXPORT_SYMBOL net/wireless/cfg80211 0x94221271 cfg80211_unlink_bss +EXPORT_SYMBOL net/wireless/cfg80211 0x99c5b3cc wiphy_unregister +EXPORT_SYMBOL net/wireless/cfg80211 0x9ad4d2db cfg80211_bss_iter EXPORT_SYMBOL net/wireless/cfg80211 0x9d6cba30 cfg80211_find_elem_match -EXPORT_SYMBOL net/wireless/cfg80211 0x9edf9cba regulatory_set_wiphy_regd -EXPORT_SYMBOL net/wireless/cfg80211 0xa29b7a6a ieee80211_get_num_supported_channels -EXPORT_SYMBOL net/wireless/cfg80211 0xa602ac22 cfg80211_crit_proto_stopped -EXPORT_SYMBOL net/wireless/cfg80211 0xa6470d4a cfg80211_cqm_pktloss_notify -EXPORT_SYMBOL net/wireless/cfg80211 0xa7f1fd4b get_wiphy_regdom -EXPORT_SYMBOL net/wireless/cfg80211 0xa81e7236 cfg80211_roamed -EXPORT_SYMBOL net/wireless/cfg80211 0xab87ba7f __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0x9e464c5d __cfg80211_send_event_skb +EXPORT_SYMBOL net/wireless/cfg80211 0xa339bfe8 cfg80211_new_sta +EXPORT_SYMBOL net/wireless/cfg80211 0xa6b48388 regulatory_pre_cac_allowed +EXPORT_SYMBOL net/wireless/cfg80211 0xa89df759 cfg80211_reg_can_beacon_relax +EXPORT_SYMBOL net/wireless/cfg80211 0xa9808955 ieee80211_amsdu_to_8023s +EXPORT_SYMBOL net/wireless/cfg80211 0xab8ad95c cfg80211_auth_timeout EXPORT_SYMBOL net/wireless/cfg80211 0xac97a207 ieee80211_radiotap_iterator_init -EXPORT_SYMBOL net/wireless/cfg80211 0xace5491b cfg80211_unlink_bss -EXPORT_SYMBOL net/wireless/cfg80211 0xaf76cb01 cfg80211_rx_control_port -EXPORT_SYMBOL net/wireless/cfg80211 0xb295b001 wiphy_unregister -EXPORT_SYMBOL net/wireless/cfg80211 0xb4c85b83 cfg80211_rx_mlme_mgmt +EXPORT_SYMBOL net/wireless/cfg80211 0xb293ec3d cfg80211_get_bss +EXPORT_SYMBOL net/wireless/cfg80211 0xb53f7dd5 cfg80211_rx_unexpected_4addr_frame +EXPORT_SYMBOL net/wireless/cfg80211 0xb6729eb6 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xb70b07b3 cfg80211_stop_iface EXPORT_SYMBOL net/wireless/cfg80211 0xb73aafb1 ieee80211_chandef_to_operating_class -EXPORT_SYMBOL net/wireless/cfg80211 0xb8806c9a cfg80211_bss_flush -EXPORT_SYMBOL net/wireless/cfg80211 0xbeca398a cfg80211_report_obss_beacon_khz +EXPORT_SYMBOL net/wireless/cfg80211 0xb8217cf1 wiphy_register EXPORT_SYMBOL net/wireless/cfg80211 0xc1b99792 ieee80211_channel_to_freq_khz -EXPORT_SYMBOL net/wireless/cfg80211 0xc4546134 cfg80211_check_combinations +EXPORT_SYMBOL net/wireless/cfg80211 0xc2ebdc2c cfg80211_cqm_pktloss_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc3fac8ca cfg80211_probe_status +EXPORT_SYMBOL net/wireless/cfg80211 0xc4998290 cfg80211_ref_bss EXPORT_SYMBOL net/wireless/cfg80211 0xc5dcacef ieee80211_operating_class_to_band -EXPORT_SYMBOL net/wireless/cfg80211 0xc8c25a14 cfg80211_new_sta -EXPORT_SYMBOL net/wireless/cfg80211 0xcaece9a9 cfg80211_cqm_txe_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xc648d34e cfg80211_nan_func_terminated +EXPORT_SYMBOL net/wireless/cfg80211 0xc70de97a cfg80211_sched_scan_stopped_locked +EXPORT_SYMBOL net/wireless/cfg80211 0xc9c4589c ieee80211_data_to_8023_exthdr EXPORT_SYMBOL net/wireless/cfg80211 0xcc1a7c48 cfg80211_is_element_inherited -EXPORT_SYMBOL net/wireless/cfg80211 0xcda15639 cfg80211_mgmt_tx_status -EXPORT_SYMBOL net/wireless/cfg80211 0xce1ff51f cfg80211_ft_event +EXPORT_SYMBOL net/wireless/cfg80211 0xcfd31956 cfg80211_get_station +EXPORT_SYMBOL net/wireless/cfg80211 0xd0799c3d cfg80211_michael_mic_failure +EXPORT_SYMBOL net/wireless/cfg80211 0xd4b3f677 cfg80211_pmksa_candidate_notify EXPORT_SYMBOL net/wireless/cfg80211 0xd56d55f3 ieee80211_get_mesh_hdrlen -EXPORT_SYMBOL net/wireless/cfg80211 0xd88c33c3 wiphy_rfkill_stop_polling +EXPORT_SYMBOL net/wireless/cfg80211 0xd7ba84a8 cfg80211_classify8021d EXPORT_SYMBOL net/wireless/cfg80211 0xdba126c1 reg_initiator_name -EXPORT_SYMBOL net/wireless/cfg80211 0xdeaea7c9 cfg80211_rx_mgmt_khz -EXPORT_SYMBOL net/wireless/cfg80211 0xe23d0b8c freq_reg_info -EXPORT_SYMBOL net/wireless/cfg80211 0xe3192823 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xdbac3e8f cfg80211_sched_scan_stopped +EXPORT_SYMBOL net/wireless/cfg80211 0xdbb573c7 cfg80211_sta_opmode_change_notify +EXPORT_SYMBOL net/wireless/cfg80211 0xe0af9192 wiphy_new_nm +EXPORT_SYMBOL net/wireless/cfg80211 0xe109968d cfg80211_notify_new_peer_candidate +EXPORT_SYMBOL net/wireless/cfg80211 0xe1e57f96 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xe2754659 cfg80211_ready_on_channel +EXPORT_SYMBOL net/wireless/cfg80211 0xe28726d0 cfg80211_update_owe_info_event +EXPORT_SYMBOL net/wireless/cfg80211 0xe31533bc ieee80211_get_num_supported_channels EXPORT_SYMBOL net/wireless/cfg80211 0xe334e6df cfg80211_sinfo_alloc_tid_stats -EXPORT_SYMBOL net/wireless/cfg80211 0xe3ce85bf cfg80211_auth_timeout -EXPORT_SYMBOL net/wireless/cfg80211 0xecaf652e cfg80211_ref_bss EXPORT_SYMBOL net/wireless/cfg80211 0xef265f27 cfg80211_chandef_create EXPORT_SYMBOL net/wireless/cfg80211 0xf5596d89 cfg80211_get_p2p_attr -EXPORT_SYMBOL net/wireless/cfg80211 0xf6cf8974 cfg80211_ch_switch_started_notify -EXPORT_SYMBOL net/wireless/cfg80211 0xf866515c cfg80211_tdls_oper_request -EXPORT_SYMBOL net/wireless/cfg80211 0xfb333046 cfg80211_put_bss -EXPORT_SYMBOL net/wireless/cfg80211 0xfbbff1c7 cfg80211_sched_scan_stopped -EXPORT_SYMBOL net/wireless/cfg80211 0xfc487af7 cfg80211_chandef_dfs_required +EXPORT_SYMBOL net/wireless/cfg80211 0xf6d6e1a4 wiphy_free +EXPORT_SYMBOL net/wireless/cfg80211 0xf8d67f2f cfg80211_get_drvinfo +EXPORT_SYMBOL net/wireless/cfg80211 0xfc5ff115 cfg80211_roamed +EXPORT_SYMBOL net/wireless/cfg80211 0xfcfd736e cfg80211_unregister_wdev +EXPORT_SYMBOL net/wireless/cfg80211 0xfef55164 cfg80211_abandon_assoc +EXPORT_SYMBOL net/wireless/cfg80211 0xff5739b2 cfg80211_gtk_rekey_notify +EXPORT_SYMBOL vmlinux 0x0007d126 flow_rule_match_eth_addrs EXPORT_SYMBOL vmlinux 0x000b8aa1 vfs_get_tree EXPORT_SYMBOL vmlinux 0x00157669 kthread_blkcg -EXPORT_SYMBOL vmlinux 0x00265983 secpath_set -EXPORT_SYMBOL vmlinux 0x00390962 ndo_dflt_fdb_del +EXPORT_SYMBOL vmlinux 0x0051f14b skb_copy_and_csum_dev EXPORT_SYMBOL vmlinux 0x00582488 redirty_page_for_writepage -EXPORT_SYMBOL vmlinux 0x005bff2a __ip_select_ident -EXPORT_SYMBOL vmlinux 0x006d91c7 phy_ethtool_get_stats -EXPORT_SYMBOL vmlinux 0x00a31370 unregister_qdisc +EXPORT_SYMBOL vmlinux 0x006142ea lock_rename +EXPORT_SYMBOL vmlinux 0x0088e1b3 netlink_net_capable +EXPORT_SYMBOL vmlinux 0x008f418f tcp_poll EXPORT_SYMBOL vmlinux 0x00a4b044 amd_iommu_deactivate_guest_mode EXPORT_SYMBOL vmlinux 0x00b4e615 posix_acl_equiv_mode +EXPORT_SYMBOL vmlinux 0x00b8bca5 vfs_parse_fs_string EXPORT_SYMBOL vmlinux 0x00bca16a pci_bus_read_config_dword -EXPORT_SYMBOL vmlinux 0x00d15ac8 tcf_exts_validate EXPORT_SYMBOL vmlinux 0x00d7e722 vme_lm_count -EXPORT_SYMBOL vmlinux 0x00deea54 tc_setup_cb_reoffload -EXPORT_SYMBOL vmlinux 0x00e5621d flow_block_cb_incref -EXPORT_SYMBOL vmlinux 0x00e6374d dev_lstats_read EXPORT_SYMBOL vmlinux 0x00e8e451 key_validate -EXPORT_SYMBOL vmlinux 0x00f2f406 security_unix_stream_connect +EXPORT_SYMBOL vmlinux 0x00f1906d security_dentry_create_files_as EXPORT_SYMBOL vmlinux 0x01000e51 schedule +EXPORT_SYMBOL vmlinux 0x01136449 noop_qdisc +EXPORT_SYMBOL vmlinux 0x01144926 genphy_loopback EXPORT_SYMBOL vmlinux 0x011f97ab d_path EXPORT_SYMBOL vmlinux 0x0122d81d mipi_dsi_shutdown_peripheral EXPORT_SYMBOL vmlinux 0x01237704 sg_alloc_table_from_pages +EXPORT_SYMBOL vmlinux 0x01322fa7 reuseport_add_sock EXPORT_SYMBOL vmlinux 0x01347f7f agp_enable EXPORT_SYMBOL vmlinux 0x013b14e6 pci_save_state EXPORT_SYMBOL vmlinux 0x013f26ae dma_fence_get_stub @@ -3511,29 +3512,31 @@ EXPORT_SYMBOL vmlinux 0x018574a1 mb_cache_entry_delete EXPORT_SYMBOL vmlinux 0x0188cd88 vme_alloc_consistent EXPORT_SYMBOL vmlinux 0x018f1b57 request_partial_firmware_into_buf -EXPORT_SYMBOL vmlinux 0x0196eaa4 security_sb_remount +EXPORT_SYMBOL vmlinux 0x01942a6c dev_change_carrier EXPORT_SYMBOL vmlinux 0x0199c3bd ethtool_intersect_link_masks EXPORT_SYMBOL vmlinux 0x019fc8f1 __blk_mq_end_request +EXPORT_SYMBOL vmlinux 0x01a2707b fwnode_irq_get EXPORT_SYMBOL vmlinux 0x01a3a03d file_fdatawait_range +EXPORT_SYMBOL vmlinux 0x01b27457 netpoll_print_options EXPORT_SYMBOL vmlinux 0x01b6865c xa_get_mark +EXPORT_SYMBOL vmlinux 0x01b8737c vlan_vid_add EXPORT_SYMBOL vmlinux 0x01bf55fc paddr_vmcoreinfo_note EXPORT_SYMBOL vmlinux 0x01c84f26 devm_pci_alloc_host_bridge EXPORT_SYMBOL vmlinux 0x01c933e7 scsi_print_result -EXPORT_SYMBOL vmlinux 0x01cb688d inet_ioctl EXPORT_SYMBOL vmlinux 0x01d4241f elv_rb_add +EXPORT_SYMBOL vmlinux 0x01ed37be neigh_for_each +EXPORT_SYMBOL vmlinux 0x0202d964 xfrm_input_resume EXPORT_SYMBOL vmlinux 0x0203f7aa jbd2_journal_set_triggers EXPORT_SYMBOL vmlinux 0x0208734c simple_link EXPORT_SYMBOL vmlinux 0x020dbf27 bitmap_alloc EXPORT_SYMBOL vmlinux 0x02124474 ip_send_check EXPORT_SYMBOL vmlinux 0x0228925f iowrite64_hi_lo EXPORT_SYMBOL vmlinux 0x02293ac3 dma_fence_chain_ops -EXPORT_SYMBOL vmlinux 0x02296cd5 skb_tunnel_check_pmtu EXPORT_SYMBOL vmlinux 0x0237b57a arch_unregister_cpu EXPORT_SYMBOL vmlinux 0x023d1b90 wrmsr_on_cpu EXPORT_SYMBOL vmlinux 0x023d2f8d scsi_ioctl EXPORT_SYMBOL vmlinux 0x0248efd3 kstrtobool_from_user -EXPORT_SYMBOL vmlinux 0x025ccdde netpoll_poll_disable -EXPORT_SYMBOL vmlinux 0x025ea3e2 rtnl_set_sk_err +EXPORT_SYMBOL vmlinux 0x025c13f7 __ip_mc_dec_group EXPORT_SYMBOL vmlinux 0x0274dc2b netif_get_num_default_rss_queues EXPORT_SYMBOL vmlinux 0x02873fc3 invalidate_inode_buffers EXPORT_SYMBOL vmlinux 0x02935859 get_tree_single @@ -3543,139 +3546,125 @@ EXPORT_SYMBOL vmlinux 0x02a42660 do_clone_file_range EXPORT_SYMBOL vmlinux 0x02b8ab42 sg_copy_to_buffer EXPORT_SYMBOL vmlinux 0x02c656b6 acpi_enable_all_runtime_gpes -EXPORT_SYMBOL vmlinux 0x02dbc5e0 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0x02e3c2db ip4_datagram_connect EXPORT_SYMBOL vmlinux 0x02ea111e scsi_driverbyte_string -EXPORT_SYMBOL vmlinux 0x02f42c0d skb_find_text +EXPORT_SYMBOL vmlinux 0x02eaca09 __neigh_for_each_release +EXPORT_SYMBOL vmlinux 0x02edc5f4 unregister_netdev +EXPORT_SYMBOL vmlinux 0x030cf343 neigh_direct_output EXPORT_SYMBOL vmlinux 0x0314e75a ptp_cancel_worker_sync -EXPORT_SYMBOL vmlinux 0x031687f2 phy_support_asym_pause EXPORT_SYMBOL vmlinux 0x031a4742 get_vm_area -EXPORT_SYMBOL vmlinux 0x033091b4 memory_cgrp_subsys +EXPORT_SYMBOL vmlinux 0x0331a85a __mdiobus_read EXPORT_SYMBOL vmlinux 0x0334da4e scsi_command_size_tbl EXPORT_SYMBOL vmlinux 0x033cb6e5 kiocb_set_cancel_fn +EXPORT_SYMBOL vmlinux 0x0348a315 dev_change_proto_down_reason EXPORT_SYMBOL vmlinux 0x034f530e mipi_dsi_dcs_set_column_address EXPORT_SYMBOL vmlinux 0x035e4669 delete_from_page_cache +EXPORT_SYMBOL vmlinux 0x0361735d generic_parse_monolithic EXPORT_SYMBOL vmlinux 0x0366307a console_suspend_enabled EXPORT_SYMBOL vmlinux 0x037a0cba kfree EXPORT_SYMBOL vmlinux 0x03819fcc input_open_device -EXPORT_SYMBOL vmlinux 0x038355d9 xfrm_state_lookup_byspi EXPORT_SYMBOL vmlinux 0x0391f9b1 dquot_initialize EXPORT_SYMBOL vmlinux 0x0397edd5 fb_edid_to_monspecs EXPORT_SYMBOL vmlinux 0x039b5440 legacy_pic -EXPORT_SYMBOL vmlinux 0x03a37cf4 napi_schedule_prep EXPORT_SYMBOL vmlinux 0x03a4e24e fc_vport_terminate -EXPORT_SYMBOL vmlinux 0x03a79e09 dst_alloc EXPORT_SYMBOL vmlinux 0x03bf0e5a acpi_walk_resource_buffer EXPORT_SYMBOL vmlinux 0x03d7cd02 vme_irq_handler EXPORT_SYMBOL vmlinux 0x03dafccf tty_write_room -EXPORT_SYMBOL vmlinux 0x03e1815b eth_header_cache EXPORT_SYMBOL vmlinux 0x03fd2571 vm_unmap_ram -EXPORT_SYMBOL vmlinux 0x03fff136 __dynamic_netdev_dbg EXPORT_SYMBOL vmlinux 0x040b3199 dquot_operations +EXPORT_SYMBOL vmlinux 0x0414a40b __sk_mem_raise_allocated EXPORT_SYMBOL vmlinux 0x042be554 mipi_dsi_generic_write -EXPORT_SYMBOL vmlinux 0x042e4061 dev_vprintk_emit -EXPORT_SYMBOL vmlinux 0x0430d6c1 netdev_lower_state_changed -EXPORT_SYMBOL vmlinux 0x04393759 vif_device_init EXPORT_SYMBOL vmlinux 0x04482cdb __refrigerator -EXPORT_SYMBOL vmlinux 0x04523bb2 unregister_netdevice_notifier_net -EXPORT_SYMBOL vmlinux 0x045adaaa netlink_ack +EXPORT_SYMBOL vmlinux 0x04539cf5 sk_free +EXPORT_SYMBOL vmlinux 0x045f33c4 inet_put_port EXPORT_SYMBOL vmlinux 0x045f8f1a thaw_bdev -EXPORT_SYMBOL vmlinux 0x0460c3df sock_bind_add -EXPORT_SYMBOL vmlinux 0x04681e14 tcp_rtx_synack +EXPORT_SYMBOL vmlinux 0x046893f8 genphy_read_lpa +EXPORT_SYMBOL vmlinux 0x046de1ae key_unlink EXPORT_SYMBOL vmlinux 0x0472b832 uart_remove_one_port EXPORT_SYMBOL vmlinux 0x0474edef kstrtou16_from_user EXPORT_SYMBOL vmlinux 0x0484c6c4 acpi_enter_sleep_state_prep EXPORT_SYMBOL vmlinux 0x04863e28 hdmi_audio_infoframe_pack_only EXPORT_SYMBOL vmlinux 0x048dfe9c pnp_release_card_device +EXPORT_SYMBOL vmlinux 0x0493a694 tcp_get_md5sig_pool EXPORT_SYMBOL vmlinux 0x0494addd input_set_poll_interval EXPORT_SYMBOL vmlinux 0x0495156c jbd2_trans_will_send_data_barrier EXPORT_SYMBOL vmlinux 0x04c5bd5e vga_switcheroo_register_handler EXPORT_SYMBOL vmlinux 0x04c62fd7 __memset -EXPORT_SYMBOL vmlinux 0x04d7b4fb tcp_stream_memory_free +EXPORT_SYMBOL vmlinux 0x04cdbdd3 sock_enable_timestamps +EXPORT_SYMBOL vmlinux 0x04d4db61 flow_rule_match_enc_ipv6_addrs EXPORT_SYMBOL vmlinux 0x04d8c750 release_perfctr_nmi EXPORT_SYMBOL vmlinux 0x04d9bf4e blk_set_stacking_limits EXPORT_SYMBOL vmlinux 0x04db42f7 __x86_indirect_alt_jmp_r10 EXPORT_SYMBOL vmlinux 0x04ea5d10 ksize EXPORT_SYMBOL vmlinux 0x04f21d77 input_inject_event -EXPORT_SYMBOL vmlinux 0x0507cc74 netdev_pick_tx EXPORT_SYMBOL vmlinux 0x050877b9 dmi_first_match EXPORT_SYMBOL vmlinux 0x05112644 d_hash_and_lookup EXPORT_SYMBOL vmlinux 0x051d58e8 dma_fence_wait_any_timeout +EXPORT_SYMBOL vmlinux 0x05204380 phy_driver_unregister EXPORT_SYMBOL vmlinux 0x05240ee7 percpu_counter_batch EXPORT_SYMBOL vmlinux 0x052d62dd d_make_root EXPORT_SYMBOL vmlinux 0x054496b4 schedule_timeout_interruptible +EXPORT_SYMBOL vmlinux 0x0544e8a2 ip_sock_set_tos EXPORT_SYMBOL vmlinux 0x055e77e8 jiffies_64 EXPORT_SYMBOL vmlinux 0x0597f4f7 d_rehash -EXPORT_SYMBOL vmlinux 0x059b2ed7 __napi_schedule_irqoff EXPORT_SYMBOL vmlinux 0x059e1482 __traceiter_dma_fence_emit EXPORT_SYMBOL vmlinux 0x05dc71db truncate_inode_pages -EXPORT_SYMBOL vmlinux 0x05f12bd0 security_old_inode_init_security -EXPORT_SYMBOL vmlinux 0x05f5ff5e dev_set_mac_address -EXPORT_SYMBOL vmlinux 0x05f66392 gnet_stats_copy_basic +EXPORT_SYMBOL vmlinux 0x05f64170 __napi_alloc_skb EXPORT_SYMBOL vmlinux 0x05fb3b3b iov_iter_single_seg_count EXPORT_SYMBOL vmlinux 0x06052f8d __memmove EXPORT_SYMBOL vmlinux 0x06073298 fb_get_buffer_offset EXPORT_SYMBOL vmlinux 0x060ba97c gen_pool_free_owner EXPORT_SYMBOL vmlinux 0x061651be strcat -EXPORT_SYMBOL vmlinux 0x061e35ad dev_trans_start -EXPORT_SYMBOL vmlinux 0x062b5293 inet_frag_reasm_finish EXPORT_SYMBOL vmlinux 0x0634100a bitmap_parselist_user -EXPORT_SYMBOL vmlinux 0x0657f140 skb_flow_dissect_hash +EXPORT_SYMBOL vmlinux 0x06543fa8 __cgroup_bpf_run_filter_sock_addr EXPORT_SYMBOL vmlinux 0x0668b595 _kstrtoul EXPORT_SYMBOL vmlinux 0x06848c60 to_nfit_uuid -EXPORT_SYMBOL vmlinux 0x068cf4dc netif_set_real_num_rx_queues EXPORT_SYMBOL vmlinux 0x068f9f06 vga_switcheroo_get_client_state +EXPORT_SYMBOL vmlinux 0x06924bba napi_gro_frags EXPORT_SYMBOL vmlinux 0x069eb48a vmbus_sendpacket EXPORT_SYMBOL vmlinux 0x06a86bc1 iowrite16 -EXPORT_SYMBOL vmlinux 0x06b6c866 __genphy_config_aneg -EXPORT_SYMBOL vmlinux 0x06bd52ae km_new_mapping EXPORT_SYMBOL vmlinux 0x06bd88b5 ucs2_strnlen EXPORT_SYMBOL vmlinux 0x06c09604 elv_rb_find EXPORT_SYMBOL vmlinux 0x06c8f2de slhc_compress +EXPORT_SYMBOL vmlinux 0x06dbad5e pskb_trim_rcsum_slow EXPORT_SYMBOL vmlinux 0x070c98d1 md_flush_request EXPORT_SYMBOL vmlinux 0x072f901c vme_master_rmw EXPORT_SYMBOL vmlinux 0x073fb189 vme_master_request -EXPORT_SYMBOL vmlinux 0x0741b489 vfs_readlink EXPORT_SYMBOL vmlinux 0x074279b2 pnp_unregister_driver EXPORT_SYMBOL vmlinux 0x0745a981 xa_erase -EXPORT_SYMBOL vmlinux 0x074ec987 phy_reset_after_clk_enable +EXPORT_SYMBOL vmlinux 0x075038c1 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x07553ae4 ndisc_mc_map EXPORT_SYMBOL vmlinux 0x07580bb9 kernel_write -EXPORT_SYMBOL vmlinux 0x0760e16a inet_csk_reset_keepalive_timer -EXPORT_SYMBOL vmlinux 0x0763e465 tcf_action_dump_1 EXPORT_SYMBOL vmlinux 0x0774e24d make_kprojid +EXPORT_SYMBOL vmlinux 0x077f0520 flow_rule_match_cvlan EXPORT_SYMBOL vmlinux 0x07849b7a pcie_capability_read_word -EXPORT_SYMBOL vmlinux 0x079d771b rtnetlink_put_metrics +EXPORT_SYMBOL vmlinux 0x07a1e14b sock_setsockopt EXPORT_SYMBOL vmlinux 0x07a39822 tty_port_raise_dtr_rts -EXPORT_SYMBOL vmlinux 0x07a7e151 __qdisc_calculate_pkt_len EXPORT_SYMBOL vmlinux 0x07a890c8 fb_alloc_cmap -EXPORT_SYMBOL vmlinux 0x07cafba6 phy_stop EXPORT_SYMBOL vmlinux 0x07cc4a5d printk_timed_ratelimit EXPORT_SYMBOL vmlinux 0x07ceeac9 panic_notifier_list -EXPORT_SYMBOL vmlinux 0x07d9df0c km_state_notify -EXPORT_SYMBOL vmlinux 0x07ee62d0 vfs_rmdir +EXPORT_SYMBOL vmlinux 0x07ed44d6 security_sk_classify_flow EXPORT_SYMBOL vmlinux 0x07f57478 pci_unmap_iospace -EXPORT_SYMBOL vmlinux 0x07fa582b kernel_sendmsg EXPORT_SYMBOL vmlinux 0x0800473f __cond_resched EXPORT_SYMBOL vmlinux 0x0805f2c8 ecryptfs_get_auth_tok_key EXPORT_SYMBOL vmlinux 0x080e6e1d devfreq_register_opp_notifier EXPORT_SYMBOL vmlinux 0x08162c74 free_bucket_spinlocks -EXPORT_SYMBOL vmlinux 0x0816f83e netdev_set_tc_queue EXPORT_SYMBOL vmlinux 0x08249512 iwe_stream_add_point EXPORT_SYMBOL vmlinux 0x082c3213 pci_root_buses EXPORT_SYMBOL vmlinux 0x083eb21c rfkill_unregister EXPORT_SYMBOL vmlinux 0x085f736d phy_write_mmd -EXPORT_SYMBOL vmlinux 0x0866987e xfrm_state_lookup_byaddr -EXPORT_SYMBOL vmlinux 0x08787cd2 sock_no_sendmsg EXPORT_SYMBOL vmlinux 0x087ae023 end_buffer_read_sync +EXPORT_SYMBOL vmlinux 0x087c849b netif_tx_stop_all_queues EXPORT_SYMBOL vmlinux 0x0882a449 security_xfrm_policy_alloc EXPORT_SYMBOL vmlinux 0x0882cf19 jbd2_journal_load EXPORT_SYMBOL vmlinux 0x08873fee mipi_dsi_picture_parameter_set EXPORT_SYMBOL vmlinux 0x088e3274 fs_param_is_u32 -EXPORT_SYMBOL vmlinux 0x089345fe ipv6_dev_get_saddr -EXPORT_SYMBOL vmlinux 0x08b6b3d2 nf_hook_slow +EXPORT_SYMBOL vmlinux 0x08cc3361 done_path_create +EXPORT_SYMBOL vmlinux 0x08e56b4c bfifo_qdisc_ops EXPORT_SYMBOL vmlinux 0x08ffcd8e add_watch_to_object EXPORT_SYMBOL vmlinux 0x09090503 jbd2_journal_submit_inode_data_buffers EXPORT_SYMBOL vmlinux 0x090de805 param_set_ulong -EXPORT_SYMBOL vmlinux 0x0916b4c5 eth_validate_addr +EXPORT_SYMBOL vmlinux 0x09258eae sock_init_data EXPORT_SYMBOL vmlinux 0x09266512 ata_std_end_eh EXPORT_SYMBOL vmlinux 0x092e26bf acpi_remove_address_space_handler EXPORT_SYMBOL vmlinux 0x0930e1f5 blk_execute_rq @@ -3683,59 +3672,56 @@ EXPORT_SYMBOL vmlinux 0x094abcc7 bdev_dax_pgoff EXPORT_SYMBOL vmlinux 0x0956f678 sb_min_blocksize EXPORT_SYMBOL vmlinux 0x096493e9 pcie_set_readrq -EXPORT_SYMBOL vmlinux 0x0974ab8c __dev_get_by_name +EXPORT_SYMBOL vmlinux 0x0975c8a7 vlan_filter_push_vids EXPORT_SYMBOL vmlinux 0x09769037 dmt_modes -EXPORT_SYMBOL vmlinux 0x0979c132 xsk_clear_tx_need_wakeup EXPORT_SYMBOL vmlinux 0x097af021 neigh_proc_dointvec_jiffies EXPORT_SYMBOL vmlinux 0x098b71c6 fb_dealloc_cmap EXPORT_SYMBOL vmlinux 0x0998cc3c hdmi_infoframe_unpack EXPORT_SYMBOL vmlinux 0x09a353ae __x86_indirect_alt_call_rax -EXPORT_SYMBOL vmlinux 0x09a3c6d8 __dev_get_by_flags -EXPORT_SYMBOL vmlinux 0x09a93359 netpoll_parse_options -EXPORT_SYMBOL vmlinux 0x09be250f genphy_read_mmd_unsupported EXPORT_SYMBOL vmlinux 0x09cb39ea blk_mq_stop_hw_queue EXPORT_SYMBOL vmlinux 0x09d44df9 in_lock_functions EXPORT_SYMBOL vmlinux 0x09da0ba4 xa_set_mark EXPORT_SYMBOL vmlinux 0x09dc03b7 notify_change -EXPORT_SYMBOL vmlinux 0x09e23210 vlan_dev_real_dev -EXPORT_SYMBOL vmlinux 0x09f48b37 sk_filter_trim_cap +EXPORT_SYMBOL vmlinux 0x09f038ee icmp6_send EXPORT_SYMBOL vmlinux 0x0a00356b bio_integrity_alloc EXPORT_SYMBOL vmlinux 0x0a0ebc08 __xa_cmpxchg +EXPORT_SYMBOL vmlinux 0x0a109ff2 ipv6_dev_mc_inc EXPORT_SYMBOL vmlinux 0x0a14d68f kset_register EXPORT_SYMBOL vmlinux 0x0a1dbc76 tcp_rx_skb_cache_key EXPORT_SYMBOL vmlinux 0x0a23416b fc_eh_timed_out +EXPORT_SYMBOL vmlinux 0x0a2fed06 tso_build_hdr +EXPORT_SYMBOL vmlinux 0x0a3dd4bd xfrm_policy_hash_rebuild EXPORT_SYMBOL vmlinux 0x0a68cf2b vm_iomap_memory EXPORT_SYMBOL vmlinux 0x0a770832 register_memory_notifier +EXPORT_SYMBOL vmlinux 0x0a896ace phy_attach +EXPORT_SYMBOL vmlinux 0x0a9acb75 genphy_check_and_restart_aneg EXPORT_SYMBOL vmlinux 0x0aa309cf synchronize_hardirq EXPORT_SYMBOL vmlinux 0x0aaccc92 pci_remap_iospace EXPORT_SYMBOL vmlinux 0x0acf7679 dma_issue_pending_all EXPORT_SYMBOL vmlinux 0x0ad89d41 invalidate_bdev EXPORT_SYMBOL vmlinux 0x0adeb0eb nla_put_nohdr EXPORT_SYMBOL vmlinux 0x0af697d9 input_handler_for_each_handle -EXPORT_SYMBOL vmlinux 0x0b083eb3 phy_resume +EXPORT_SYMBOL vmlinux 0x0b0b127f skb_trim +EXPORT_SYMBOL vmlinux 0x0b0e3b73 ip_mc_check_igmp EXPORT_SYMBOL vmlinux 0x0b19b445 ioread8 EXPORT_SYMBOL vmlinux 0x0b1beb31 vmalloc_32_user +EXPORT_SYMBOL vmlinux 0x0b242fec netdev_has_upper_dev_all_rcu EXPORT_SYMBOL vmlinux 0x0b26b8c8 acpi_run_osc EXPORT_SYMBOL vmlinux 0x0b27d47c block_truncate_page EXPORT_SYMBOL vmlinux 0x0b290ada dma_fence_chain_walk EXPORT_SYMBOL vmlinux 0x0b2cb334 psched_ratecfg_precompute -EXPORT_SYMBOL vmlinux 0x0b50c86a dev_get_by_napi_id EXPORT_SYMBOL vmlinux 0x0b56d621 to_nd_pfn -EXPORT_SYMBOL vmlinux 0x0b608507 phy_aneg_done EXPORT_SYMBOL vmlinux 0x0b637410 cr4_update_irqsoff EXPORT_SYMBOL vmlinux 0x0b742fd7 simple_strtol EXPORT_SYMBOL vmlinux 0x0b77403a mipi_dsi_driver_unregister -EXPORT_SYMBOL vmlinux 0x0b8d2269 qdisc_reset EXPORT_SYMBOL vmlinux 0x0b8e8a8d kobject_put EXPORT_SYMBOL vmlinux 0x0b937ae5 set_pages_array_wb -EXPORT_SYMBOL vmlinux 0x0b94f3a1 phy_sfp_probe -EXPORT_SYMBOL vmlinux 0x0b9f7f14 get_task_cred EXPORT_SYMBOL vmlinux 0x0ba0b938 vm_brk EXPORT_SYMBOL vmlinux 0x0baa6252 dma_sync_single_for_cpu EXPORT_SYMBOL vmlinux 0x0bc020bb block_write_end EXPORT_SYMBOL vmlinux 0x0bc477a2 irq_set_irq_type -EXPORT_SYMBOL vmlinux 0x0bdb0e76 vfs_dup_fs_context -EXPORT_SYMBOL vmlinux 0x0bf97b75 phy_ethtool_get_sset_count +EXPORT_SYMBOL vmlinux 0x0bc7cab8 tcp_gro_complete +EXPORT_SYMBOL vmlinux 0x0bca92ad __skb_recv_udp EXPORT_SYMBOL vmlinux 0x0bfc1d1a check_zeroed_user EXPORT_SYMBOL vmlinux 0x0c005341 __tty_alloc_driver EXPORT_SYMBOL vmlinux 0x0c0f79af ZSTD_getDictID_fromFrame @@ -3745,90 +3731,86 @@ EXPORT_SYMBOL vmlinux 0x0c26d630 clocksource_unregister EXPORT_SYMBOL vmlinux 0x0c26f71d blk_mq_unique_tag EXPORT_SYMBOL vmlinux 0x0c2f7725 unmap_mapping_range +EXPORT_SYMBOL vmlinux 0x0c343969 mr_mfc_seq_next EXPORT_SYMBOL vmlinux 0x0c3690fc _raw_spin_lock_bh -EXPORT_SYMBOL vmlinux 0x0c3f594a sock_wake_async +EXPORT_SYMBOL vmlinux 0x0c4a6b9d __xfrm_route_forward EXPORT_SYMBOL vmlinux 0x0c4e9682 blkdev_get_by_dev EXPORT_SYMBOL vmlinux 0x0c5535fa param_get_ushort EXPORT_SYMBOL vmlinux 0x0c575719 __cond_resched_rwlock_write +EXPORT_SYMBOL vmlinux 0x0c6a4c64 dst_cow_metrics_generic EXPORT_SYMBOL vmlinux 0x0c6bdc3f vme_master_read EXPORT_SYMBOL vmlinux 0x0c829aaa ll_rw_block EXPORT_SYMBOL vmlinux 0x0c92713e shrink_dcache_sb EXPORT_SYMBOL vmlinux 0x0ca8a813 con_is_visible EXPORT_SYMBOL vmlinux 0x0cab5379 __cancel_dirty_page EXPORT_SYMBOL vmlinux 0x0cabec89 __free_pages +EXPORT_SYMBOL vmlinux 0x0caced12 xsk_tx_peek_release_desc_batch +EXPORT_SYMBOL vmlinux 0x0cc1abe9 inet_listen EXPORT_SYMBOL vmlinux 0x0cc4b4b6 crc_ccitt_false -EXPORT_SYMBOL vmlinux 0x0cc4d6bd seg6_hmac_validate_skb EXPORT_SYMBOL vmlinux 0x0ccaddf8 pci_biosrom_size -EXPORT_SYMBOL vmlinux 0x0ccec4a6 netlink_broadcast EXPORT_SYMBOL vmlinux 0x0ccefd77 __cleancache_init_fs EXPORT_SYMBOL vmlinux 0x0cd2e4a1 fb_is_primary_device EXPORT_SYMBOL vmlinux 0x0cd5835b ipv6_flowlabel_exclusive -EXPORT_SYMBOL vmlinux 0x0cd7b436 xfrm_state_alloc EXPORT_SYMBOL vmlinux 0x0cdce87c rfkill_set_hw_state_reason EXPORT_SYMBOL vmlinux 0x0ce19729 mb_cache_entry_touch EXPORT_SYMBOL vmlinux 0x0cf20412 scsi_verify_blk_ioctl +EXPORT_SYMBOL vmlinux 0x0cfcb127 tcp_getsockopt EXPORT_SYMBOL vmlinux 0x0d07f543 get_anon_bdev -EXPORT_SYMBOL vmlinux 0x0d09c305 xfrm_trans_queue_net -EXPORT_SYMBOL vmlinux 0x0d0d3aba netpoll_poll_enable -EXPORT_SYMBOL vmlinux 0x0d0ff3a4 fwnode_graph_parse_endpoint -EXPORT_SYMBOL vmlinux 0x0d3b417f ip_mc_check_igmp -EXPORT_SYMBOL vmlinux 0x0d42cfab thread_group_exited +EXPORT_SYMBOL vmlinux 0x0d0b7934 mini_qdisc_pair_init EXPORT_SYMBOL vmlinux 0x0d542439 __ipv6_addr_type EXPORT_SYMBOL vmlinux 0x0d5ac450 cdrom_check_events EXPORT_SYMBOL vmlinux 0x0d61eeee __bitmap_subset EXPORT_SYMBOL vmlinux 0x0d66b6a5 tty_port_close_end -EXPORT_SYMBOL vmlinux 0x0d6b884f __scm_send EXPORT_SYMBOL vmlinux 0x0d7e55ac posix_acl_from_xattr +EXPORT_SYMBOL vmlinux 0x0d81d1ab phy_advertise_supported +EXPORT_SYMBOL vmlinux 0x0d8c460f flow_rule_match_enc_control +EXPORT_SYMBOL vmlinux 0x0d91fd35 xfrm_stateonly_find EXPORT_SYMBOL vmlinux 0x0da61d77 backlight_force_update EXPORT_SYMBOL vmlinux 0x0daa3c77 address_space_init_once -EXPORT_SYMBOL vmlinux 0x0dbc7033 dev_get_flags -EXPORT_SYMBOL vmlinux 0x0dc23a96 unix_attach_fds EXPORT_SYMBOL vmlinux 0x0dcb979a __mmap_lock_do_trace_released +EXPORT_SYMBOL vmlinux 0x0dde7759 dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x0de3a0bd security_inode_copy_up EXPORT_SYMBOL vmlinux 0x0de56899 ioc_lookup_icq EXPORT_SYMBOL vmlinux 0x0deacd21 set_pages_array_uc +EXPORT_SYMBOL vmlinux 0x0dfd20e8 tcp_seq_start +EXPORT_SYMBOL vmlinux 0x0e01558a vlan_uses_dev EXPORT_SYMBOL vmlinux 0x0e1255bb node_data EXPORT_SYMBOL vmlinux 0x0e17678a siphash_4u64 EXPORT_SYMBOL vmlinux 0x0e23b37f alloc_cpumask_var_node -EXPORT_SYMBOL vmlinux 0x0e266fcb unix_get_socket -EXPORT_SYMBOL vmlinux 0x0e31d8af seg6_push_hmac EXPORT_SYMBOL vmlinux 0x0e335850 sync_mapping_buffers -EXPORT_SYMBOL vmlinux 0x0e3e01ce vlan_vid_del -EXPORT_SYMBOL vmlinux 0x0e44d653 inet_frag_queue_insert +EXPORT_SYMBOL vmlinux 0x0e34b8e6 dev_load EXPORT_SYMBOL vmlinux 0x0e6b1ef9 tty_driver_kref_put EXPORT_SYMBOL vmlinux 0x0e74ad2d utf8ncursor EXPORT_SYMBOL vmlinux 0x0e7bd2ac single_open_size EXPORT_SYMBOL vmlinux 0x0e8862e3 input_enable_softrepeat -EXPORT_SYMBOL vmlinux 0x0e9313be phy_set_asym_pause -EXPORT_SYMBOL vmlinux 0x0e987890 __neigh_event_send EXPORT_SYMBOL vmlinux 0x0ea3c74e tasklet_kill EXPORT_SYMBOL vmlinux 0x0ea593f6 hdmi_drm_infoframe_init -EXPORT_SYMBOL vmlinux 0x0eacac60 neigh_table_init +EXPORT_SYMBOL vmlinux 0x0eb2a5e3 __netlink_kernel_create EXPORT_SYMBOL vmlinux 0x0ec3470e devm_devfreq_register_opp_notifier EXPORT_SYMBOL vmlinux 0x0ec5babe vme_dma_free EXPORT_SYMBOL vmlinux 0x0ecfb237 tty_port_destroy +EXPORT_SYMBOL vmlinux 0x0ede46f2 qdisc_watchdog_init EXPORT_SYMBOL vmlinux 0x0eedf708 cpu_info +EXPORT_SYMBOL vmlinux 0x0ef1454f nf_log_bind_pf +EXPORT_SYMBOL vmlinux 0x0f0058b8 phy_queue_state_machine EXPORT_SYMBOL vmlinux 0x0f05c7b8 __x86_indirect_thunk_r15 EXPORT_SYMBOL vmlinux 0x0f09cc34 schedule_timeout_killable -EXPORT_SYMBOL vmlinux 0x0f230d15 mr_dump EXPORT_SYMBOL vmlinux 0x0f31048a get_tree_bdev EXPORT_SYMBOL vmlinux 0x0f37ca89 lockref_put_not_zero -EXPORT_SYMBOL vmlinux 0x0f4749e7 genphy_loopback -EXPORT_SYMBOL vmlinux 0x0f488c10 icmp_ndo_send +EXPORT_SYMBOL vmlinux 0x0f4e8751 pneigh_lookup EXPORT_SYMBOL vmlinux 0x0f53c4d3 dump_page EXPORT_SYMBOL vmlinux 0x0f584cc0 pcie_get_mps -EXPORT_SYMBOL vmlinux 0x0f5feaf1 phy_connect_direct EXPORT_SYMBOL vmlinux 0x0f68292f con_copy_unimap -EXPORT_SYMBOL vmlinux 0x0f710b16 __traceiter_spi_transfer_stop +EXPORT_SYMBOL vmlinux 0x0f71c707 neigh_event_ns EXPORT_SYMBOL vmlinux 0x0f86f560 kthread_delayed_work_timer_fn -EXPORT_SYMBOL vmlinux 0x0f88746b xfrm_register_type_offload EXPORT_SYMBOL vmlinux 0x0f98b58b elv_rb_del EXPORT_SYMBOL vmlinux 0x0f9ad907 pm_vt_switch_required EXPORT_SYMBOL vmlinux 0x0fab1ab0 hdmi_spd_infoframe_pack EXPORT_SYMBOL vmlinux 0x0fb2f8a4 mktime64 EXPORT_SYMBOL vmlinux 0x0fb6d803 security_secctx_to_secid EXPORT_SYMBOL vmlinux 0x0fbd498f free_task -EXPORT_SYMBOL vmlinux 0x0fc20c28 tcp_sync_mss -EXPORT_SYMBOL vmlinux 0x0fc2b7ae udp_seq_next +EXPORT_SYMBOL vmlinux 0x0fc2d568 ethtool_rx_flow_rule_destroy +EXPORT_SYMBOL vmlinux 0x0fcbf5ad mdiobus_unregister_device EXPORT_SYMBOL vmlinux 0x0fcf67e0 simple_get_link EXPORT_SYMBOL vmlinux 0x0fd902db mb_cache_entry_create EXPORT_SYMBOL vmlinux 0x0fef1bd3 unpin_user_pages @@ -3838,7 +3820,6 @@ EXPORT_SYMBOL vmlinux 0x0fff5afc time64_to_tm EXPORT_SYMBOL vmlinux 0x1007220a __SCK__tp_func_dma_fence_emit EXPORT_SYMBOL vmlinux 0x10274612 generic_write_end -EXPORT_SYMBOL vmlinux 0x1029cc98 netpoll_send_udp EXPORT_SYMBOL vmlinux 0x1035c7c2 __release_region EXPORT_SYMBOL vmlinux 0x1057a279 bsearch EXPORT_SYMBOL vmlinux 0x1068004b gf128mul_bbe @@ -3846,83 +3827,77 @@ EXPORT_SYMBOL vmlinux 0x10774102 file_path EXPORT_SYMBOL vmlinux 0x107be0b0 percpu_counter_sync EXPORT_SYMBOL vmlinux 0x107e5878 zlib_inflateEnd -EXPORT_SYMBOL vmlinux 0x10af830d nf_log_packet +EXPORT_SYMBOL vmlinux 0x108350e6 udp_pre_connect EXPORT_SYMBOL vmlinux 0x10ba5059 amd_iommu_flush_page EXPORT_SYMBOL vmlinux 0x10c3f57e __gnet_stats_copy_queue EXPORT_SYMBOL vmlinux 0x10d9f885 scsi_sense_desc_find EXPORT_SYMBOL vmlinux 0x10e1fee3 md_wakeup_thread EXPORT_SYMBOL vmlinux 0x10e6f74a free_contig_range -EXPORT_SYMBOL vmlinux 0x10ee10b6 phy_init_hw EXPORT_SYMBOL vmlinux 0x11089ac7 _ctype EXPORT_SYMBOL vmlinux 0x110b34c6 kmem_cache_create -EXPORT_SYMBOL vmlinux 0x1111697d tcp_initialize_rcv_mss -EXPORT_SYMBOL vmlinux 0x1119d661 reuseport_detach_prog EXPORT_SYMBOL vmlinux 0x11255bff md_bitmap_unplug -EXPORT_SYMBOL vmlinux 0x112c634e __sock_create -EXPORT_SYMBOL vmlinux 0x112d8415 ip6_err_gen_icmpv6_unreach EXPORT_SYMBOL vmlinux 0x113dd562 scsi_register_interface -EXPORT_SYMBOL vmlinux 0x11642937 phy_do_ioctl +EXPORT_SYMBOL vmlinux 0x1143e862 udp_gro_complete +EXPORT_SYMBOL vmlinux 0x114f3b62 vlan_ioctl_set +EXPORT_SYMBOL vmlinux 0x11617266 brioctl_set EXPORT_SYMBOL vmlinux 0x117093be qdisc_class_hash_init EXPORT_SYMBOL vmlinux 0x1170abc7 pcibios_resource_to_bus -EXPORT_SYMBOL vmlinux 0x1173dd41 dev_uc_unsync -EXPORT_SYMBOL vmlinux 0x11871899 gnet_stats_finish_copy EXPORT_SYMBOL vmlinux 0x11945e6b param_set_byte EXPORT_SYMBOL vmlinux 0x11a18860 md_wait_for_blocked_rdev +EXPORT_SYMBOL vmlinux 0x11c53973 sk_stream_error EXPORT_SYMBOL vmlinux 0x11cc6c66 page_pool_put_page_bulk -EXPORT_SYMBOL vmlinux 0x11d20d26 tcp_prot EXPORT_SYMBOL vmlinux 0x11e0ec41 dm_read_arg EXPORT_SYMBOL vmlinux 0x11e30762 chacha_block_generic -EXPORT_SYMBOL vmlinux 0x11e926cb mdiobus_unregister -EXPORT_SYMBOL vmlinux 0x11e9729c dev_deactivate EXPORT_SYMBOL vmlinux 0x11f47d8c utf8_strncmp EXPORT_SYMBOL vmlinux 0x11f6eba2 __do_once_done EXPORT_SYMBOL vmlinux 0x11f7ed4c hex_to_bin EXPORT_SYMBOL vmlinux 0x11f9808f dmaengine_get_unmap_data EXPORT_SYMBOL vmlinux 0x120b336a __rb_insert_augmented EXPORT_SYMBOL vmlinux 0x120daacf kmem_cache_destroy +EXPORT_SYMBOL vmlinux 0x122921aa ipv6_getsockopt EXPORT_SYMBOL vmlinux 0x124bad4d kstrtobool -EXPORT_SYMBOL vmlinux 0x125a8e29 inet_csk_complete_hashdance -EXPORT_SYMBOL vmlinux 0x126d6614 __netif_napi_del EXPORT_SYMBOL vmlinux 0x12793960 __traceiter_module_get EXPORT_SYMBOL vmlinux 0x1281ce97 dquot_file_open -EXPORT_SYMBOL vmlinux 0x1292a9b6 netdev_port_same_parent_id +EXPORT_SYMBOL vmlinux 0x128f25fa rtnl_configure_link EXPORT_SYMBOL vmlinux 0x12a33c36 pci_unregister_driver EXPORT_SYMBOL vmlinux 0x12a38747 usleep_range EXPORT_SYMBOL vmlinux 0x12cabc89 siphash_2u64 -EXPORT_SYMBOL vmlinux 0x12e5849a netdev_lower_get_first_private_rcu +EXPORT_SYMBOL vmlinux 0x12cd4c45 __kfree_skb EXPORT_SYMBOL vmlinux 0x12f6f69c fb_videomode_to_var EXPORT_SYMBOL vmlinux 0x12f95de7 dm_get_device EXPORT_SYMBOL vmlinux 0x130afd75 acpi_get_sleep_type_data -EXPORT_SYMBOL vmlinux 0x130cc61f flow_rule_match_tcp +EXPORT_SYMBOL vmlinux 0x130f1c05 netlink_ack EXPORT_SYMBOL vmlinux 0x13110126 request_resource EXPORT_SYMBOL vmlinux 0x131a6146 xa_clear_mark -EXPORT_SYMBOL vmlinux 0x133571da napi_disable +EXPORT_SYMBOL vmlinux 0x132685f0 xfrm_input_register_afinfo EXPORT_SYMBOL vmlinux 0x1344d7e6 acpi_enable_gpe EXPORT_SYMBOL vmlinux 0x1345c028 bh_submit_read EXPORT_SYMBOL vmlinux 0x134cdd34 inet_frag_rbtree_purge EXPORT_SYMBOL vmlinux 0x134ce9ff ex_handler_clear_fs -EXPORT_SYMBOL vmlinux 0x13546ad6 xfrm_state_flush -EXPORT_SYMBOL vmlinux 0x135b6fd6 flow_rule_match_meta +EXPORT_SYMBOL vmlinux 0x135d74f1 ping_prot EXPORT_SYMBOL vmlinux 0x136075ce submit_bio_noacct EXPORT_SYMBOL vmlinux 0x1361f6a9 kobject_del -EXPORT_SYMBOL vmlinux 0x137ad503 can_nice +EXPORT_SYMBOL vmlinux 0x136ff9f4 netdev_get_xmit_slave EXPORT_SYMBOL vmlinux 0x1389619c __max_die_per_package EXPORT_SYMBOL vmlinux 0x1392e38d pci_scan_root_bus_bridge EXPORT_SYMBOL vmlinux 0x139f2189 __kfifo_alloc EXPORT_SYMBOL vmlinux 0x13c49cc2 _copy_from_user -EXPORT_SYMBOL vmlinux 0x13c806a8 tcf_em_unregister EXPORT_SYMBOL vmlinux 0x13cd98ec pci_request_irq EXPORT_SYMBOL vmlinux 0x13d0adf7 __kfifo_out -EXPORT_SYMBOL vmlinux 0x13d3fc0a tcp_get_cookie_sock EXPORT_SYMBOL vmlinux 0x13dc4569 cleancache_register_ops +EXPORT_SYMBOL vmlinux 0x13dfe68c mini_qdisc_pair_block_init EXPORT_SYMBOL vmlinux 0x13f1baf7 mipi_dsi_dcs_enter_sleep_mode EXPORT_SYMBOL vmlinux 0x13f42152 system_entering_hibernation EXPORT_SYMBOL vmlinux 0x141271bf acpi_dev_found EXPORT_SYMBOL vmlinux 0x141fa5c9 padata_do_serial +EXPORT_SYMBOL vmlinux 0x144e047b inet_sock_destruct +EXPORT_SYMBOL vmlinux 0x145585b3 _dev_info EXPORT_SYMBOL vmlinux 0x14605535 dma_fence_context_alloc EXPORT_SYMBOL vmlinux 0x146289b7 crc16_table -EXPORT_SYMBOL vmlinux 0x14774b96 keyring_search +EXPORT_SYMBOL vmlinux 0x14766d50 phy_start_cable_test_tdr EXPORT_SYMBOL vmlinux 0x1486ded2 dma_fence_allocate_private_stub +EXPORT_SYMBOL vmlinux 0x148d2230 __alloc_skb +EXPORT_SYMBOL vmlinux 0x148e7944 sock_register EXPORT_SYMBOL vmlinux 0x14a1a98f fc_remote_port_rolechg EXPORT_SYMBOL vmlinux 0x14a214bc vmbus_recvpacket EXPORT_SYMBOL vmlinux 0x14c67e3e tcp_tx_delay_enabled @@ -3930,153 +3905,162 @@ EXPORT_SYMBOL vmlinux 0x14ea1ed7 jbd2_journal_lock_updates EXPORT_SYMBOL vmlinux 0x14fb2365 cmdline_parts_set EXPORT_SYMBOL vmlinux 0x150829e5 devfreq_update_target -EXPORT_SYMBOL vmlinux 0x151a1536 wake_up_process +EXPORT_SYMBOL vmlinux 0x1512f1ed ndo_dflt_fdb_add +EXPORT_SYMBOL vmlinux 0x151ab4ea qdisc_create_dflt EXPORT_SYMBOL vmlinux 0x151f4898 schedule_timeout_uninterruptible EXPORT_SYMBOL vmlinux 0x1526b301 unix_tot_inflight +EXPORT_SYMBOL vmlinux 0x1532b74d netpoll_cleanup EXPORT_SYMBOL vmlinux 0x153ce1f9 page_cache_prev_miss EXPORT_SYMBOL vmlinux 0x153f5506 mfd_add_devices EXPORT_SYMBOL vmlinux 0x1541f489 blk_integrity_register -EXPORT_SYMBOL vmlinux 0x1542ec90 genphy_read_status EXPORT_SYMBOL vmlinux 0x154c6338 dm_kcopyd_client_destroy EXPORT_SYMBOL vmlinux 0x15501e71 scsi_device_get EXPORT_SYMBOL vmlinux 0x155a4836 file_write_and_wait_range -EXPORT_SYMBOL vmlinux 0x155bbbc6 inet_bind -EXPORT_SYMBOL vmlinux 0x155e84d2 udp_poll -EXPORT_SYMBOL vmlinux 0x15870dec skb_set_owner_w -EXPORT_SYMBOL vmlinux 0x159aee21 __sk_mem_reclaim +EXPORT_SYMBOL vmlinux 0x15916fd3 sk_ns_capable EXPORT_SYMBOL vmlinux 0x15ba50a6 jiffies EXPORT_SYMBOL vmlinux 0x15bafe29 unregister_md_cluster_operations -EXPORT_SYMBOL vmlinux 0x15bbdd58 poll_freewait +EXPORT_SYMBOL vmlinux 0x15bd5e57 phy_ethtool_get_wol EXPORT_SYMBOL vmlinux 0x15bed7a5 LZ4_decompress_safe_partial -EXPORT_SYMBOL vmlinux 0x15c1b79a phy_ethtool_get_link_ksettings -EXPORT_SYMBOL vmlinux 0x15c5344b reuseport_select_sock EXPORT_SYMBOL vmlinux 0x15c85de3 mempool_init EXPORT_SYMBOL vmlinux 0x15d4b346 devm_clk_get_optional -EXPORT_SYMBOL vmlinux 0x15d908f9 napi_build_skb EXPORT_SYMBOL vmlinux 0x15dca28d __breadahead -EXPORT_SYMBOL vmlinux 0x16088a64 inet6_protos +EXPORT_SYMBOL vmlinux 0x1616f399 inet_release EXPORT_SYMBOL vmlinux 0x16286538 iowrite64be_lo_hi EXPORT_SYMBOL vmlinux 0x162893fd hashlen_string EXPORT_SYMBOL vmlinux 0x16301b34 wrmsrl_on_cpu EXPORT_SYMBOL vmlinux 0x16316a10 ZSTD_getFrameContentSize -EXPORT_SYMBOL vmlinux 0x165d0aa0 skb_copy_datagram_iter -EXPORT_SYMBOL vmlinux 0x166af6ec phy_drivers_register +EXPORT_SYMBOL vmlinux 0x1666d473 sk_stream_wait_memory +EXPORT_SYMBOL vmlinux 0x166f4335 __page_symlink +EXPORT_SYMBOL vmlinux 0x16726c44 __hw_addr_ref_sync_dev EXPORT_SYMBOL vmlinux 0x167c5967 print_hex_dump EXPORT_SYMBOL vmlinux 0x167e7f9d __get_user_1 EXPORT_SYMBOL vmlinux 0x169938c1 __sysfs_match_string +EXPORT_SYMBOL vmlinux 0x16ad0965 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x16b0ae14 flow_rule_match_ipv6_addrs EXPORT_SYMBOL vmlinux 0x16b76d5b devfreq_recommended_opp -EXPORT_SYMBOL vmlinux 0x16bee03c eth_header_cache_update EXPORT_SYMBOL vmlinux 0x16c21d47 clear_bdi_congested -EXPORT_SYMBOL vmlinux 0x16c69cb6 genphy_read_lpa +EXPORT_SYMBOL vmlinux 0x16c43e2a skb_add_rx_frag EXPORT_SYMBOL vmlinux 0x16cdc340 acpi_get_table +EXPORT_SYMBOL vmlinux 0x16d14bd1 neigh_carrier_down EXPORT_SYMBOL vmlinux 0x16d4b81b seq_put_decimal_ll -EXPORT_SYMBOL vmlinux 0x16deab0d __inet_stream_connect EXPORT_SYMBOL vmlinux 0x16dee44d dma_fence_init +EXPORT_SYMBOL vmlinux 0x16e0215f rtnl_kfree_skbs EXPORT_SYMBOL vmlinux 0x16e297c3 bit_wait -EXPORT_SYMBOL vmlinux 0x16e887be __netif_schedule EXPORT_SYMBOL vmlinux 0x16ff0094 vfs_create_mount -EXPORT_SYMBOL vmlinux 0x1706d771 xsk_tx_completed EXPORT_SYMBOL vmlinux 0x170ddf79 acpi_install_notify_handler -EXPORT_SYMBOL vmlinux 0x17293380 tcp_sock_set_keepcnt +EXPORT_SYMBOL vmlinux 0x175288a6 inet_csk_reqsk_queue_drop_and_put EXPORT_SYMBOL vmlinux 0x1758a925 elv_bio_merge_ok EXPORT_SYMBOL vmlinux 0x175e33fb dma_spin_lock EXPORT_SYMBOL vmlinux 0x176242ec md_bitmap_startwrite +EXPORT_SYMBOL vmlinux 0x1767afcb tcp_mss_to_mtu EXPORT_SYMBOL vmlinux 0x1768a101 acpi_pm_device_sleep_state -EXPORT_SYMBOL vmlinux 0x1771d45f netlink_net_capable EXPORT_SYMBOL vmlinux 0x177d5b76 param_set_long EXPORT_SYMBOL vmlinux 0x1784cb43 nobh_truncate_page +EXPORT_SYMBOL vmlinux 0x1799dcea tcp_add_backlog +EXPORT_SYMBOL vmlinux 0x17a5091c tcf_block_put_ext EXPORT_SYMBOL vmlinux 0x17bdea8c read_cache_page EXPORT_SYMBOL vmlinux 0x17be68ca acpi_clear_event +EXPORT_SYMBOL vmlinux 0x17c0c9cc vfs_mkdir +EXPORT_SYMBOL vmlinux 0x17ddbb1e nlmsg_notify EXPORT_SYMBOL vmlinux 0x17e61d2a pci_find_capability EXPORT_SYMBOL vmlinux 0x17f341a0 i8042_lock_chip EXPORT_SYMBOL vmlinux 0x17f813a9 __SCT__tp_func_kmalloc EXPORT_SYMBOL vmlinux 0x17f90723 generic_copy_file_range -EXPORT_SYMBOL vmlinux 0x1803c4c6 tcp_close EXPORT_SYMBOL vmlinux 0x180980f1 timestamp_truncate EXPORT_SYMBOL vmlinux 0x181fc597 input_register_handle +EXPORT_SYMBOL vmlinux 0x182c3154 inet_frag_destroy EXPORT_SYMBOL vmlinux 0x18345b8e __bitmap_replace -EXPORT_SYMBOL vmlinux 0x18423be7 sk_stream_error +EXPORT_SYMBOL vmlinux 0x1855dd19 skb_push EXPORT_SYMBOL vmlinux 0x1861779b __breadahead_gfp -EXPORT_SYMBOL vmlinux 0x18629a84 udp_lib_getsockopt +EXPORT_SYMBOL vmlinux 0x18661432 call_fib_notifiers EXPORT_SYMBOL vmlinux 0x186b1c91 locks_copy_lock +EXPORT_SYMBOL vmlinux 0x1873686c netdev_warn EXPORT_SYMBOL vmlinux 0x18840f38 input_mt_init_slots EXPORT_SYMBOL vmlinux 0x18888d00 downgrade_write EXPORT_SYMBOL vmlinux 0x188ccb32 param_ops_ulong EXPORT_SYMBOL vmlinux 0x188ea314 jiffies_to_timespec64 +EXPORT_SYMBOL vmlinux 0x18978a1a tcp_enter_cwr EXPORT_SYMBOL vmlinux 0x18a1842f always_delete_dentry EXPORT_SYMBOL vmlinux 0x18a8dc8f __frontswap_test EXPORT_SYMBOL vmlinux 0x18ad1b4e acpi_bus_get_device -EXPORT_SYMBOL vmlinux 0x18b10932 tcf_block_put_ext EXPORT_SYMBOL vmlinux 0x18b72573 register_kmmio_probe EXPORT_SYMBOL vmlinux 0x18b82e05 param_ops_string -EXPORT_SYMBOL vmlinux 0x18dc910c dst_cow_metrics_generic +EXPORT_SYMBOL vmlinux 0x18c03e74 phy_connect_direct EXPORT_SYMBOL vmlinux 0x18e60984 __do_once_start +EXPORT_SYMBOL vmlinux 0x18f1465e rtnl_unicast EXPORT_SYMBOL vmlinux 0x1902a50b mipi_dsi_dcs_exit_sleep_mode EXPORT_SYMBOL vmlinux 0x190a8750 __dec_zone_page_state +EXPORT_SYMBOL vmlinux 0x19143515 secpath_set EXPORT_SYMBOL vmlinux 0x19218199 pci_write_vpd -EXPORT_SYMBOL vmlinux 0x1925a64e qdisc_put +EXPORT_SYMBOL vmlinux 0x1921c75f sock_no_sendmsg EXPORT_SYMBOL vmlinux 0x19283191 blkdev_issue_discard EXPORT_SYMBOL vmlinux 0x192ea14f __SCT__tp_func_dma_fence_signaled -EXPORT_SYMBOL vmlinux 0x19513851 inet_dev_addr_type EXPORT_SYMBOL vmlinux 0x1953c958 mempool_create EXPORT_SYMBOL vmlinux 0x19567d06 vfio_info_cap_shift -EXPORT_SYMBOL vmlinux 0x195d30db dcb_ieee_getapp_prio_dscp_mask_map -EXPORT_SYMBOL vmlinux 0x197590ca xfrm_init_state EXPORT_SYMBOL vmlinux 0x1984d421 out_of_line_wait_on_bit -EXPORT_SYMBOL vmlinux 0x1985ea8d tso_count_descs EXPORT_SYMBOL vmlinux 0x198620d7 security_add_mnt_opt +EXPORT_SYMBOL vmlinux 0x1988795c tcf_exts_dump +EXPORT_SYMBOL vmlinux 0x198a87bc xfrm6_rcv +EXPORT_SYMBOL vmlinux 0x199583e0 ip_options_rcv_srr EXPORT_SYMBOL vmlinux 0x199ed0cd net_disable_timestamp EXPORT_SYMBOL vmlinux 0x19a25035 __SCK__tp_func_module_get EXPORT_SYMBOL vmlinux 0x19b42593 seq_write EXPORT_SYMBOL vmlinux 0x19b89638 jbd2_journal_clear_err EXPORT_SYMBOL vmlinux 0x19b9acfc set_blocksize EXPORT_SYMBOL vmlinux 0x19bd383b security_secmark_refcount_dec +EXPORT_SYMBOL vmlinux 0x19be7fa4 xfrm_register_km EXPORT_SYMBOL vmlinux 0x19c71648 bprm_change_interp +EXPORT_SYMBOL vmlinux 0x19c872ab xfrm_policy_destroy EXPORT_SYMBOL vmlinux 0x19d200ec __SCT__tp_func_kmalloc_node EXPORT_SYMBOL vmlinux 0x19df99b9 acpi_finish_gpe -EXPORT_SYMBOL vmlinux 0x19e18776 dev_uc_sync EXPORT_SYMBOL vmlinux 0x1a0949cf end_page_private_2 EXPORT_SYMBOL vmlinux 0x1a0cc7f5 pci_find_next_bus EXPORT_SYMBOL vmlinux 0x1a116e98 _copy_to_iter +EXPORT_SYMBOL vmlinux 0x1a11c7ec arp_send EXPORT_SYMBOL vmlinux 0x1a157375 blk_queue_update_dma_alignment EXPORT_SYMBOL vmlinux 0x1a1bac9c ZSTD_decompressDCtx +EXPORT_SYMBOL vmlinux 0x1a1db02b lookup_one_len_unlocked EXPORT_SYMBOL vmlinux 0x1a2a2692 config_item_get EXPORT_SYMBOL vmlinux 0x1a3c04f4 scsi_block_requests EXPORT_SYMBOL vmlinux 0x1a45cb6c acpi_disabled EXPORT_SYMBOL vmlinux 0x1a4f60f8 generic_file_mmap EXPORT_SYMBOL vmlinux 0x1a5e05c1 vme_bus_type EXPORT_SYMBOL vmlinux 0x1a5f36ab fb_get_mode +EXPORT_SYMBOL vmlinux 0x1a629829 xfrm_state_register_afinfo EXPORT_SYMBOL vmlinux 0x1a63af34 vga_switcheroo_process_delayed_switch -EXPORT_SYMBOL vmlinux 0x1a6669bb inet6_register_protosw -EXPORT_SYMBOL vmlinux 0x1a6d4ce2 tcp_v4_md5_lookup EXPORT_SYMBOL vmlinux 0x1a7a059d pcie_bandwidth_available EXPORT_SYMBOL vmlinux 0x1a92db7f md_write_start EXPORT_SYMBOL vmlinux 0x1a9a433c prandom_u32_state -EXPORT_SYMBOL vmlinux 0x1a9d52e4 xfrm4_rcv_encap EXPORT_SYMBOL vmlinux 0x1aa9fba0 vfio_dma_rw +EXPORT_SYMBOL vmlinux 0x1aba55a7 sk_net_capable EXPORT_SYMBOL vmlinux 0x1ac5d3cb strcspn -EXPORT_SYMBOL vmlinux 0x1ae2e136 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x1ad245e6 skb_mac_gso_segment EXPORT_SYMBOL vmlinux 0x1b015d25 bitmap_parselist -EXPORT_SYMBOL vmlinux 0x1b2f8dcb netdev_features_change +EXPORT_SYMBOL vmlinux 0x1b3beeb1 kernel_sendpage +EXPORT_SYMBOL vmlinux 0x1b588817 path_put EXPORT_SYMBOL vmlinux 0x1b597b7a swake_up_all EXPORT_SYMBOL vmlinux 0x1b6314fd in_aton EXPORT_SYMBOL vmlinux 0x1b777357 rdmacg_unregister_device -EXPORT_SYMBOL vmlinux 0x1b821bbf sk_reset_timer +EXPORT_SYMBOL vmlinux 0x1b7e9200 xfrm6_rcv_encap EXPORT_SYMBOL vmlinux 0x1b8420c7 find_get_pages_range_tag EXPORT_SYMBOL vmlinux 0x1b8b95ad i8042_unlock_chip EXPORT_SYMBOL vmlinux 0x1b923a3c kobject_add EXPORT_SYMBOL vmlinux 0x1b92b959 tty_devnum -EXPORT_SYMBOL vmlinux 0x1b990bae xsk_set_rx_need_wakeup EXPORT_SYMBOL vmlinux 0x1ba59527 __kmalloc_node EXPORT_SYMBOL vmlinux 0x1bb51249 tcp_have_smc EXPORT_SYMBOL vmlinux 0x1bd59dbe vme_free_consistent EXPORT_SYMBOL vmlinux 0x1bd6693e posix_acl_to_xattr +EXPORT_SYMBOL vmlinux 0x1bea2ed9 mdio_find_bus EXPORT_SYMBOL vmlinux 0x1bed179e pci_disable_link_state_locked EXPORT_SYMBOL vmlinux 0x1bef69a6 proc_remove +EXPORT_SYMBOL vmlinux 0x1c001e50 security_unix_may_send +EXPORT_SYMBOL vmlinux 0x1c1c5ad0 qdisc_hash_del +EXPORT_SYMBOL vmlinux 0x1c1cf23d tcp_md5_do_del EXPORT_SYMBOL vmlinux 0x1c338147 vm_numa_stat EXPORT_SYMBOL vmlinux 0x1c58427f acpi_remove_notify_handler EXPORT_SYMBOL vmlinux 0x1c5c89bb iov_iter_init EXPORT_SYMBOL vmlinux 0x1c5e85a5 mipi_dsi_dcs_nop +EXPORT_SYMBOL vmlinux 0x1c61bd3a bpf_prog_get_type_path EXPORT_SYMBOL vmlinux 0x1c74b172 elevator_alloc EXPORT_SYMBOL vmlinux 0x1c8aec74 proc_set_user EXPORT_SYMBOL vmlinux 0x1c93eaaa jbd2_journal_destroy @@ -4087,25 +4071,25 @@ EXPORT_SYMBOL vmlinux 0x1cb2ce0b audit_log_object_context EXPORT_SYMBOL vmlinux 0x1cc55e02 nosteal_pipe_buf_ops EXPORT_SYMBOL vmlinux 0x1cc62391 agp3_generic_tlbflush -EXPORT_SYMBOL vmlinux 0x1cc73cf6 flow_rule_match_basic EXPORT_SYMBOL vmlinux 0x1cd8438b pxm_to_node EXPORT_SYMBOL vmlinux 0x1cd91b88 no_seek_end_llseek_size -EXPORT_SYMBOL vmlinux 0x1ceb486c sock_bindtoindex -EXPORT_SYMBOL vmlinux 0x1ced7e06 vlan_uses_dev +EXPORT_SYMBOL vmlinux 0x1cf1f040 key_move EXPORT_SYMBOL vmlinux 0x1d03ede8 __x86_indirect_alt_call_r8 EXPORT_SYMBOL vmlinux 0x1d07e365 memdup_user_nul +EXPORT_SYMBOL vmlinux 0x1d129a10 tcf_action_exec EXPORT_SYMBOL vmlinux 0x1d19f77b physical_mask EXPORT_SYMBOL vmlinux 0x1d1a58ce __tracepoint_module_get EXPORT_SYMBOL vmlinux 0x1d1abdf0 acpi_get_physical_device_location EXPORT_SYMBOL vmlinux 0x1d24c881 ___ratelimit EXPORT_SYMBOL vmlinux 0x1d2d6d15 wait_iff_congested +EXPORT_SYMBOL vmlinux 0x1d3b3b04 follow_down EXPORT_SYMBOL vmlinux 0x1d40b6f3 idr_for_each EXPORT_SYMBOL vmlinux 0x1d6c16ea pci_bus_write_config_dword EXPORT_SYMBOL vmlinux 0x1d7061c1 pci_request_selected_regions +EXPORT_SYMBOL vmlinux 0x1d75cd18 dev_uc_init EXPORT_SYMBOL vmlinux 0x1d76ca98 cad_pid -EXPORT_SYMBOL vmlinux 0x1d79df02 secure_tcpv6_ts_off -EXPORT_SYMBOL vmlinux 0x1d7ae2e7 inet_addr_type_dev_table EXPORT_SYMBOL vmlinux 0x1d85e0fe param_ops_ushort +EXPORT_SYMBOL vmlinux 0x1da6c9f0 dev_set_mac_address_user EXPORT_SYMBOL vmlinux 0x1dae6bbd cdev_device_add EXPORT_SYMBOL vmlinux 0x1db7706b __copy_user_nocache EXPORT_SYMBOL vmlinux 0x1dc6c93b lookup_user_key @@ -4113,241 +4097,233 @@ EXPORT_SYMBOL vmlinux 0x1ddd643c flow_hash_from_keys EXPORT_SYMBOL vmlinux 0x1de4ccb2 get_sg_io_hdr EXPORT_SYMBOL vmlinux 0x1df47151 __vfs_getxattr +EXPORT_SYMBOL vmlinux 0x1dfd8a03 __zerocopy_sg_from_iter EXPORT_SYMBOL vmlinux 0x1dfdd782 refcount_dec_and_mutex_lock -EXPORT_SYMBOL vmlinux 0x1e039694 dev_uc_del EXPORT_SYMBOL vmlinux 0x1e0a0c24 mod_timer_pending EXPORT_SYMBOL vmlinux 0x1e0cd7fe acpi_detach_data EXPORT_SYMBOL vmlinux 0x1e0e4933 blk_queue_io_min EXPORT_SYMBOL vmlinux 0x1e10410c agp_collect_device_status EXPORT_SYMBOL vmlinux 0x1e1e140e ns_to_timespec64 -EXPORT_SYMBOL vmlinux 0x1e2c817e __dst_destroy_metrics_generic -EXPORT_SYMBOL vmlinux 0x1e3ad237 phy_ethtool_get_eee -EXPORT_SYMBOL vmlinux 0x1e54accd xfrm_lookup EXPORT_SYMBOL vmlinux 0x1e6d26a8 strstr EXPORT_SYMBOL vmlinux 0x1e6dc86a dcache_dir_close -EXPORT_SYMBOL vmlinux 0x1e744a36 __ip_options_compile -EXPORT_SYMBOL vmlinux 0x1e7b4be0 mdio_bus_type -EXPORT_SYMBOL vmlinux 0x1e82cf20 inet_protos +EXPORT_SYMBOL vmlinux 0x1e86d393 dcb_ieee_getapp_dscp_prio_mask_map +EXPORT_SYMBOL vmlinux 0x1e92a061 security_binder_transfer_file EXPORT_SYMBOL vmlinux 0x1e9edfb7 seq_hlist_start_head_rcu EXPORT_SYMBOL vmlinux 0x1eb922a3 IO_APIC_get_PCI_irq_vector +EXPORT_SYMBOL vmlinux 0x1ebb2a2c reuseport_detach_sock EXPORT_SYMBOL vmlinux 0x1ec94dbe shrink_dcache_parent EXPORT_SYMBOL vmlinux 0x1ecd3834 scsi_is_host_device EXPORT_SYMBOL vmlinux 0x1ecfbc59 vm_map_pages EXPORT_SYMBOL vmlinux 0x1ed8b599 __x86_indirect_thunk_r8 EXPORT_SYMBOL vmlinux 0x1edb69d6 ktime_get_raw_ts64 -EXPORT_SYMBOL vmlinux 0x1ede716e lookup_one_len EXPORT_SYMBOL vmlinux 0x1ee34f2b __tracepoint_kmem_cache_free EXPORT_SYMBOL vmlinux 0x1eeb819a devm_ioport_unmap EXPORT_SYMBOL vmlinux 0x1eec8775 filp_open +EXPORT_SYMBOL vmlinux 0x1efbb97a tcf_unregister_action EXPORT_SYMBOL vmlinux 0x1f199d24 copy_user_generic_string EXPORT_SYMBOL vmlinux 0x1f24f8bb nd_btt_probe EXPORT_SYMBOL vmlinux 0x1f2a91f1 set_nlink -EXPORT_SYMBOL vmlinux 0x1f3b0be7 sk_stream_wait_close EXPORT_SYMBOL vmlinux 0x1f3c1773 give_up_console -EXPORT_SYMBOL vmlinux 0x1f435870 seg6_hmac_info_del EXPORT_SYMBOL vmlinux 0x1f557414 gen_pool_has_addr -EXPORT_SYMBOL vmlinux 0x1f55c43a inet_sendmsg EXPORT_SYMBOL vmlinux 0x1f93ff5d __tracepoint_write_msr EXPORT_SYMBOL vmlinux 0x1f9b0b1c configfs_register_default_group -EXPORT_SYMBOL vmlinux 0x1fa87ce0 flow_rule_match_enc_control EXPORT_SYMBOL vmlinux 0x1fad2f3a dquot_load_quota_sb EXPORT_SYMBOL vmlinux 0x1fadddc3 component_match_add_release EXPORT_SYMBOL vmlinux 0x1fbd16da ip_tos2prio EXPORT_SYMBOL vmlinux 0x1fbdffdf input_event EXPORT_SYMBOL vmlinux 0x1fc0cc7c intel_gtt_insert_sg_entries -EXPORT_SYMBOL vmlinux 0x1fce953d skb_realloc_headroom EXPORT_SYMBOL vmlinux 0x1fd07fff kdb_grepping_flag -EXPORT_SYMBOL vmlinux 0x1fd8db7f netdev_class_create_file_ns -EXPORT_SYMBOL vmlinux 0x1fdef44a sock_set_keepalive -EXPORT_SYMBOL vmlinux 0x1ffb2f7f rt_dst_alloc EXPORT_SYMBOL vmlinux 0x1ffc03a3 scsi_rescan_device +EXPORT_SYMBOL vmlinux 0x1ffe496c __hw_addr_sync_dev EXPORT_SYMBOL vmlinux 0x20000329 simple_strtoul EXPORT_SYMBOL vmlinux 0x200973e0 blk_get_request EXPORT_SYMBOL vmlinux 0x200b2041 in6addr_any EXPORT_SYMBOL vmlinux 0x2014c3b9 scsi_alloc_sgtables EXPORT_SYMBOL vmlinux 0x202aa186 posix_lock_file -EXPORT_SYMBOL vmlinux 0x20413561 vfs_mkobj EXPORT_SYMBOL vmlinux 0x20463df4 wait_for_completion_killable EXPORT_SYMBOL vmlinux 0x204c19f5 tcp_alloc_md5sig_pool EXPORT_SYMBOL vmlinux 0x204c5067 scsi_dev_info_add_list -EXPORT_SYMBOL vmlinux 0x2079f1c9 ipv6_sock_mc_drop -EXPORT_SYMBOL vmlinux 0x207a74dd ndo_dflt_fdb_dump -EXPORT_SYMBOL vmlinux 0x207e7740 netdev_lower_get_next -EXPORT_SYMBOL vmlinux 0x208ab4cd inet_listen +EXPORT_SYMBOL vmlinux 0x205d110e security_sctp_assoc_request +EXPORT_SYMBOL vmlinux 0x20824213 phy_set_asym_pause +EXPORT_SYMBOL vmlinux 0x2084a595 udp_sock_create4 +EXPORT_SYMBOL vmlinux 0x2097cd49 __nlmsg_put EXPORT_SYMBOL vmlinux 0x20994a1e wait_for_key_construction EXPORT_SYMBOL vmlinux 0x209fce7a refresh_frequency_limits EXPORT_SYMBOL vmlinux 0x20a789ac irq_set_chip_data -EXPORT_SYMBOL vmlinux 0x20b5e997 netif_rx_any_context EXPORT_SYMBOL vmlinux 0x20ba4f3e rdmsr_on_cpu EXPORT_SYMBOL vmlinux 0x20cbb30a __percpu_counter_init EXPORT_SYMBOL vmlinux 0x20cbbea1 convert_art_to_tsc EXPORT_SYMBOL vmlinux 0x20d65e40 fb_find_nearest_mode EXPORT_SYMBOL vmlinux 0x20d86b03 iget_locked +EXPORT_SYMBOL vmlinux 0x20e5b27e xfrm_policy_insert EXPORT_SYMBOL vmlinux 0x20eadeb6 ip_compute_csum -EXPORT_SYMBOL vmlinux 0x20f3244c inet6_del_protocol EXPORT_SYMBOL vmlinux 0x20fa8b34 kobject_init -EXPORT_SYMBOL vmlinux 0x20fbfa8f sock_no_mmap EXPORT_SYMBOL vmlinux 0x20fff6ec ZSTD_DStreamInSize EXPORT_SYMBOL vmlinux 0x210608d7 get_user_pages_locked EXPORT_SYMBOL vmlinux 0x210c1349 bio_alloc_bioset EXPORT_SYMBOL vmlinux 0x211130c1 alloc_cpumask_var EXPORT_SYMBOL vmlinux 0x21271fd0 copy_user_enhanced_fast_string -EXPORT_SYMBOL vmlinux 0x21285d67 qdisc_watchdog_schedule_range_ns +EXPORT_SYMBOL vmlinux 0x2131c1e9 inet6_add_offload EXPORT_SYMBOL vmlinux 0x213a738d memregion_alloc -EXPORT_SYMBOL vmlinux 0x213b4481 napi_gro_frags EXPORT_SYMBOL vmlinux 0x213e4965 ps2_is_keyboard_id -EXPORT_SYMBOL vmlinux 0x214365eb udp_lib_setsockopt +EXPORT_SYMBOL vmlinux 0x214bc9a9 tcp_v4_connect EXPORT_SYMBOL vmlinux 0x215a8ec8 slhc_init -EXPORT_SYMBOL vmlinux 0x2169993c tcf_em_tree_dump -EXPORT_SYMBOL vmlinux 0x216e79fd tcp_child_process EXPORT_SYMBOL vmlinux 0x217137e2 kmem_cache_shrink EXPORT_SYMBOL vmlinux 0x2177bd71 acpi_disable_event EXPORT_SYMBOL vmlinux 0x2179591d clk_hw_get_clk EXPORT_SYMBOL vmlinux 0x218e600b pci_add_resource_offset +EXPORT_SYMBOL vmlinux 0x21afbd54 skb_checksum_trimmed EXPORT_SYMBOL vmlinux 0x21bdb523 errseq_check_and_advance EXPORT_SYMBOL vmlinux 0x21be37e1 hdmi_avi_infoframe_check +EXPORT_SYMBOL vmlinux 0x21df1046 vfs_rename EXPORT_SYMBOL vmlinux 0x21e13cb3 inet_peer_xrlim_allow +EXPORT_SYMBOL vmlinux 0x21e68f4a tcf_classify_ingress EXPORT_SYMBOL vmlinux 0x21ef374c try_wait_for_completion -EXPORT_SYMBOL vmlinux 0x2210cd03 set_user_nice +EXPORT_SYMBOL vmlinux 0x21f19112 kernel_bind EXPORT_SYMBOL vmlinux 0x222e7ce2 sysfs_streq EXPORT_SYMBOL vmlinux 0x2234ca51 acpi_match_platform_list +EXPORT_SYMBOL vmlinux 0x223d746d vfs_mkobj EXPORT_SYMBOL vmlinux 0x2248bd68 page_pool_create EXPORT_SYMBOL vmlinux 0x2250f786 pagevec_lookup_range_tag EXPORT_SYMBOL vmlinux 0x22556270 dquot_free_inode -EXPORT_SYMBOL vmlinux 0x226505a6 dev_uc_add_excl EXPORT_SYMBOL vmlinux 0x2286f766 iov_iter_xarray EXPORT_SYMBOL vmlinux 0x2288700e scsi_host_lookup EXPORT_SYMBOL vmlinux 0x2295e179 jbd2_fc_get_buf -EXPORT_SYMBOL vmlinux 0x229f8ff2 tcp_select_initial_window EXPORT_SYMBOL vmlinux 0x22ae16bc __SCK__tp_func_write_msr EXPORT_SYMBOL vmlinux 0x22b325d5 kd_mksound +EXPORT_SYMBOL vmlinux 0x22b54430 skb_flow_dissect_meta EXPORT_SYMBOL vmlinux 0x22de4931 amd_iommu_register_ga_log_notifier -EXPORT_SYMBOL vmlinux 0x22dfe85f netdev_upper_dev_unlink -EXPORT_SYMBOL vmlinux 0x22e9b39f release_sock -EXPORT_SYMBOL vmlinux 0x22ee2fcf xsk_get_pool_from_qid -EXPORT_SYMBOL vmlinux 0x22f74b40 dev_mc_del +EXPORT_SYMBOL vmlinux 0x22ea1de2 fwnode_get_mac_address +EXPORT_SYMBOL vmlinux 0x22f1f403 reuseport_detach_prog EXPORT_SYMBOL vmlinux 0x232783a2 tty_port_put EXPORT_SYMBOL vmlinux 0x2336f4f3 amd_iommu_domain_set_gcr3 +EXPORT_SYMBOL vmlinux 0x2338af1f vlan_dev_real_dev EXPORT_SYMBOL vmlinux 0x234ea84a vfs_getattr EXPORT_SYMBOL vmlinux 0x2364c85a tasklet_init +EXPORT_SYMBOL vmlinux 0x23763db8 udp_lib_setsockopt EXPORT_SYMBOL vmlinux 0x237a0b5c __traceiter_dma_fence_signaled EXPORT_SYMBOL vmlinux 0x238b099f mipi_dsi_packet_format_is_short EXPORT_SYMBOL vmlinux 0x238b55fe __bforget EXPORT_SYMBOL vmlinux 0x23ab117b pipe_lock -EXPORT_SYMBOL vmlinux 0x23adad36 inet_csk_reqsk_queue_drop +EXPORT_SYMBOL vmlinux 0x23b20a99 xfrm_policy_register_afinfo EXPORT_SYMBOL vmlinux 0x23b532a1 __x86_indirect_alt_jmp_rbx EXPORT_SYMBOL vmlinux 0x23b9d6e2 mangle_path EXPORT_SYMBOL vmlinux 0x23cabbb1 register_sysctl_paths -EXPORT_SYMBOL vmlinux 0x23d0aca1 sock_no_connect +EXPORT_SYMBOL vmlinux 0x23ce8638 skb_append EXPORT_SYMBOL vmlinux 0x23d2f2b3 insert_inode_locked4 EXPORT_SYMBOL vmlinux 0x23daa989 mipi_dsi_create_packet EXPORT_SYMBOL vmlinux 0x23ee13fd mb_cache_entry_find_first +EXPORT_SYMBOL vmlinux 0x23fce6e2 dev_printk EXPORT_SYMBOL vmlinux 0x23fd3028 vmalloc_node EXPORT_SYMBOL vmlinux 0x24092b39 clean_bdev_aliases +EXPORT_SYMBOL vmlinux 0x240b834f inet_twsk_deschedule_put +EXPORT_SYMBOL vmlinux 0x2413ca21 seg6_hmac_net_init EXPORT_SYMBOL vmlinux 0x241d786e kthread_stop EXPORT_SYMBOL vmlinux 0x24212d86 __frontswap_invalidate_page -EXPORT_SYMBOL vmlinux 0x2441c044 tcp_getsockopt +EXPORT_SYMBOL vmlinux 0x243873c8 neigh_connected_output +EXPORT_SYMBOL vmlinux 0x24434691 dcb_ieee_setapp EXPORT_SYMBOL vmlinux 0x244abccd cdrom_get_media_event EXPORT_SYMBOL vmlinux 0x2459bbcc console_set_on_cmdline EXPORT_SYMBOL vmlinux 0x246637da add_to_pipe -EXPORT_SYMBOL vmlinux 0x2470ab27 nf_unregister_sockopt -EXPORT_SYMBOL vmlinux 0x248246a8 qdisc_put_unlocked -EXPORT_SYMBOL vmlinux 0x24849a58 neigh_direct_output EXPORT_SYMBOL vmlinux 0x2484adc3 __kfifo_to_user_r -EXPORT_SYMBOL vmlinux 0x249956ef inet_reqsk_alloc -EXPORT_SYMBOL vmlinux 0x24abef8a ethtool_notify -EXPORT_SYMBOL vmlinux 0x24b62078 kernel_connect EXPORT_SYMBOL vmlinux 0x24b7cbb5 md_update_sb -EXPORT_SYMBOL vmlinux 0x24cfe3bc tcf_qevent_init EXPORT_SYMBOL vmlinux 0x24d273d1 add_timer -EXPORT_SYMBOL vmlinux 0x24d87d30 ip_mc_inc_group -EXPORT_SYMBOL vmlinux 0x24db86f6 pskb_expand_head +EXPORT_SYMBOL vmlinux 0x24dd8caf dev_uc_add +EXPORT_SYMBOL vmlinux 0x24fb66ff fib_default_rule_add EXPORT_SYMBOL vmlinux 0x24ffdf09 jbd2_journal_revoke EXPORT_SYMBOL vmlinux 0x25012f85 config_item_set_name -EXPORT_SYMBOL vmlinux 0x2505a9c4 xp_dma_unmap EXPORT_SYMBOL vmlinux 0x2505bf18 kstrtol_from_user EXPORT_SYMBOL vmlinux 0x250cbe95 request_key_with_auxdata -EXPORT_SYMBOL vmlinux 0x25294ceb flow_rule_match_enc_keyid +EXPORT_SYMBOL vmlinux 0x25359d16 netdev_err +EXPORT_SYMBOL vmlinux 0x253c7372 audit_log EXPORT_SYMBOL vmlinux 0x254d6f05 input_mt_drop_unused +EXPORT_SYMBOL vmlinux 0x2555e407 phy_remove_link_mode EXPORT_SYMBOL vmlinux 0x25820c64 fs_overflowuid EXPORT_SYMBOL vmlinux 0x258a2c02 _raw_write_trylock EXPORT_SYMBOL vmlinux 0x258d2f76 net_dim_get_tx_moderation EXPORT_SYMBOL vmlinux 0x25974000 wait_for_completion EXPORT_SYMBOL vmlinux 0x25bb859d vfio_pin_pages +EXPORT_SYMBOL vmlinux 0x25bce4e8 mdiobus_read +EXPORT_SYMBOL vmlinux 0x25c4404c sock_cmsg_send EXPORT_SYMBOL vmlinux 0x25cf6fab pci_dev_driver EXPORT_SYMBOL vmlinux 0x25db1577 do_trace_write_msr -EXPORT_SYMBOL vmlinux 0x25de1006 security_socket_getpeersec_dgram EXPORT_SYMBOL vmlinux 0x25e58a09 hdmi_avi_infoframe_init EXPORT_SYMBOL vmlinux 0x25e678e7 add_to_page_cache_locked +EXPORT_SYMBOL vmlinux 0x25e6f44d neigh_seq_start EXPORT_SYMBOL vmlinux 0x25e9d4bd resource_list_free EXPORT_SYMBOL vmlinux 0x25f9191e copy_page_to_iter +EXPORT_SYMBOL vmlinux 0x25f91a5a nf_log_register EXPORT_SYMBOL vmlinux 0x25fa9a2d input_alloc_absinfo +EXPORT_SYMBOL vmlinux 0x2604e580 put_cmsg_scm_timestamping64 EXPORT_SYMBOL vmlinux 0x260a095a __sg_alloc_table -EXPORT_SYMBOL vmlinux 0x261458ab eth_commit_mac_addr_change -EXPORT_SYMBOL vmlinux 0x261cc345 tcp_poll +EXPORT_SYMBOL vmlinux 0x2621ee25 phy_resume EXPORT_SYMBOL vmlinux 0x2621ef61 param_set_uint EXPORT_SYMBOL vmlinux 0x26299fb7 pin_user_pages_remote -EXPORT_SYMBOL vmlinux 0x262aa3d0 skb_udp_tunnel_segment +EXPORT_SYMBOL vmlinux 0x262a3108 inet_confirm_addr EXPORT_SYMBOL vmlinux 0x263beb75 ecryptfs_get_versions EXPORT_SYMBOL vmlinux 0x263c3152 bcmp EXPORT_SYMBOL vmlinux 0x263ed23b __x86_indirect_thunk_r12 -EXPORT_SYMBOL vmlinux 0x26715b6f dcb_setapp +EXPORT_SYMBOL vmlinux 0x26492dd1 mdiobus_free +EXPORT_SYMBOL vmlinux 0x264b9908 xp_dma_sync_for_cpu_slow +EXPORT_SYMBOL vmlinux 0x266ba956 fifo_create_dflt EXPORT_SYMBOL vmlinux 0x267c354c configfs_remove_default_groups +EXPORT_SYMBOL vmlinux 0x26871de9 xsk_set_rx_need_wakeup EXPORT_SYMBOL vmlinux 0x2688ec10 bitmap_zalloc EXPORT_SYMBOL vmlinux 0x268a29d0 end_page_writeback -EXPORT_SYMBOL vmlinux 0x26a12804 tc_setup_cb_call +EXPORT_SYMBOL vmlinux 0x268eab92 mdiobus_unregister +EXPORT_SYMBOL vmlinux 0x26b07919 sk_stream_kill_queues EXPORT_SYMBOL vmlinux 0x26bd83d1 pcie_port_service_register EXPORT_SYMBOL vmlinux 0x26be30d1 md_set_array_sectors EXPORT_SYMBOL vmlinux 0x26cc73c3 complete_and_exit EXPORT_SYMBOL vmlinux 0x26dc5488 input_unregister_handler EXPORT_SYMBOL vmlinux 0x26e298e0 unregister_memory_notifier -EXPORT_SYMBOL vmlinux 0x26e86552 mdio_find_bus +EXPORT_SYMBOL vmlinux 0x26f2a2e9 netdev_lower_get_next_private_rcu EXPORT_SYMBOL vmlinux 0x26f8f0b8 iowrite16be EXPORT_SYMBOL vmlinux 0x26f9816f pci_free_irq EXPORT_SYMBOL vmlinux 0x271cba95 acpi_bus_private_data_handler +EXPORT_SYMBOL vmlinux 0x27261dab sock_create EXPORT_SYMBOL vmlinux 0x272a8933 udp_memory_allocated EXPORT_SYMBOL vmlinux 0x2733eaf7 scsi_dev_info_list_add_keyed EXPORT_SYMBOL vmlinux 0x27479d14 param_free_charp -EXPORT_SYMBOL vmlinux 0x274dc55f phy_loopback -EXPORT_SYMBOL vmlinux 0x275ea044 ip6mr_rule_default +EXPORT_SYMBOL vmlinux 0x2753e67a inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0x27592523 build_skb EXPORT_SYMBOL vmlinux 0x275f3d49 hdmi_vendor_infoframe_check -EXPORT_SYMBOL vmlinux 0x275f5148 __skb_warn_lro_forwarding EXPORT_SYMBOL vmlinux 0x27639220 blk_verify_command EXPORT_SYMBOL vmlinux 0x27756bc8 scsi_sanitize_inquiry_string -EXPORT_SYMBOL vmlinux 0x2777526b genphy_suspend -EXPORT_SYMBOL vmlinux 0x277fa985 kfree_skb_list EXPORT_SYMBOL vmlinux 0x27810361 acpi_os_wait_events_complete EXPORT_SYMBOL vmlinux 0x2782b393 xfrm_state_walk_init EXPORT_SYMBOL vmlinux 0x27864d57 memparse -EXPORT_SYMBOL vmlinux 0x27abca0b udp_flush_pending_frames EXPORT_SYMBOL vmlinux 0x27ae6fe3 scsi_eh_finish_cmd +EXPORT_SYMBOL vmlinux 0x27b8f023 skb_unlink EXPORT_SYMBOL vmlinux 0x27bbf221 disable_irq_nosync EXPORT_SYMBOL vmlinux 0x27cdca93 pci_add_resource -EXPORT_SYMBOL vmlinux 0x27ec1890 neigh_update -EXPORT_SYMBOL vmlinux 0x27f1d9d7 sock_i_uid -EXPORT_SYMBOL vmlinux 0x27ffa5ef icmp6_send +EXPORT_SYMBOL vmlinux 0x27f5023e qdisc_reset +EXPORT_SYMBOL vmlinux 0x28014b54 tcp_v4_send_check EXPORT_SYMBOL vmlinux 0x28045d4a __x86_indirect_alt_call_r15 EXPORT_SYMBOL vmlinux 0x281823c5 __kfifo_out_peek EXPORT_SYMBOL vmlinux 0x2823a369 unregister_cdrom +EXPORT_SYMBOL vmlinux 0x283e48a7 genphy_setup_forced EXPORT_SYMBOL vmlinux 0x2858efc9 i8042_remove_filter EXPORT_SYMBOL vmlinux 0x2868ce87 framebuffer_release EXPORT_SYMBOL vmlinux 0x2875a315 utf32_to_utf8 -EXPORT_SYMBOL vmlinux 0x28861539 inet_confirm_addr -EXPORT_SYMBOL vmlinux 0x28baea41 ip_do_fragment -EXPORT_SYMBOL vmlinux 0x28dad7f2 sock_alloc EXPORT_SYMBOL vmlinux 0x28e03686 jbd2_journal_init_inode EXPORT_SYMBOL vmlinux 0x28e09af1 iosf_mbi_available EXPORT_SYMBOL vmlinux 0x28e78958 pci_disable_device +EXPORT_SYMBOL vmlinux 0x291914e6 __cgroup_bpf_run_filter_sock_ops EXPORT_SYMBOL vmlinux 0x291ee747 csum_and_copy_to_user +EXPORT_SYMBOL vmlinux 0x292f5d50 finish_swait EXPORT_SYMBOL vmlinux 0x29347665 fscrypt_encrypt_block_inplace +EXPORT_SYMBOL vmlinux 0x2941d6bc mr_rtm_dumproute +EXPORT_SYMBOL vmlinux 0x294e4548 lock_sock_fast +EXPORT_SYMBOL vmlinux 0x295dc474 security_sb_remount EXPORT_SYMBOL vmlinux 0x29604158 napi_busy_loop +EXPORT_SYMBOL vmlinux 0x2964fd63 ip_do_fragment EXPORT_SYMBOL vmlinux 0x296ce245 crypto_sha512_update -EXPORT_SYMBOL vmlinux 0x297be1a2 phy_attached_print -EXPORT_SYMBOL vmlinux 0x298a1c73 tcf_qevent_validate_change EXPORT_SYMBOL vmlinux 0x29ad8e33 x86_hyper_type -EXPORT_SYMBOL vmlinux 0x29d876ea netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x29c4c972 xfrm_state_add EXPORT_SYMBOL vmlinux 0x29daddc6 posix_acl_update_mode EXPORT_SYMBOL vmlinux 0x29e1e204 hdmi_audio_infoframe_pack +EXPORT_SYMBOL vmlinux 0x2a14bb46 dev_graft_qdisc EXPORT_SYMBOL vmlinux 0x2a1c3c8d kmem_cache_alloc_node EXPORT_SYMBOL vmlinux 0x2a1dfd2b bio_integrity_clone EXPORT_SYMBOL vmlinux 0x2a303d4d check_signature @@ -4357,101 +4333,96 @@ EXPORT_SYMBOL vmlinux 0x2a97ce2d security_secid_to_secctx EXPORT_SYMBOL vmlinux 0x2a98b597 register_cdrom EXPORT_SYMBOL vmlinux 0x2a9a3905 vme_master_get -EXPORT_SYMBOL vmlinux 0x2a9b4776 neigh_table_clear EXPORT_SYMBOL vmlinux 0x2aa00e26 intel_scu_ipc_dev_update EXPORT_SYMBOL vmlinux 0x2aa0843e mempool_resize EXPORT_SYMBOL vmlinux 0x2aa2c133 vmf_insert_pfn EXPORT_SYMBOL vmlinux 0x2aade122 scsi_command_normalize_sense EXPORT_SYMBOL vmlinux 0x2ab18a25 scsi_eh_prep_cmnd EXPORT_SYMBOL vmlinux 0x2ab7989d mutex_lock -EXPORT_SYMBOL vmlinux 0x2ab7a4ec inet_dgram_ops EXPORT_SYMBOL vmlinux 0x2abf737d dentry_path_raw +EXPORT_SYMBOL vmlinux 0x2ac44f1f ip_defrag EXPORT_SYMBOL vmlinux 0x2ad1aa23 get_user_pages_remote EXPORT_SYMBOL vmlinux 0x2aecfb49 empty_aops EXPORT_SYMBOL vmlinux 0x2aeea139 mipi_dsi_dcs_write EXPORT_SYMBOL vmlinux 0x2b3ccff9 load_nls_default EXPORT_SYMBOL vmlinux 0x2b4180d3 tty_lock -EXPORT_SYMBOL vmlinux 0x2b4f3636 sock_alloc_file EXPORT_SYMBOL vmlinux 0x2b593aa8 gen_pool_alloc_algo_owner EXPORT_SYMBOL vmlinux 0x2b68bd2f del_timer EXPORT_SYMBOL vmlinux 0x2b6f0962 __cpu_dying_mask -EXPORT_SYMBOL vmlinux 0x2b723ec2 km_query -EXPORT_SYMBOL vmlinux 0x2b73969a tcf_action_check_ctrlact +EXPORT_SYMBOL vmlinux 0x2b7be30a skb_find_text +EXPORT_SYMBOL vmlinux 0x2b812514 inet_del_offload EXPORT_SYMBOL vmlinux 0x2b992629 input_unregister_device EXPORT_SYMBOL vmlinux 0x2b9da7a4 genl_lock +EXPORT_SYMBOL vmlinux 0x2ba73757 sock_queue_rcv_skb EXPORT_SYMBOL vmlinux 0x2bb6099e dq_data_lock -EXPORT_SYMBOL vmlinux 0x2bbedba7 genphy_read_status_fixed -EXPORT_SYMBOL vmlinux 0x2bc7efdb phy_ethtool_set_eee +EXPORT_SYMBOL vmlinux 0x2bd118f5 ipv6_sock_mc_drop +EXPORT_SYMBOL vmlinux 0x2bd338f7 ipv6_push_frag_opts EXPORT_SYMBOL vmlinux 0x2bd60ab9 acpi_reset +EXPORT_SYMBOL vmlinux 0x2c0b40d8 skb_copy_datagram_iter EXPORT_SYMBOL vmlinux 0x2c2518b8 dquot_scan_active EXPORT_SYMBOL vmlinux 0x2c256e1f input_scancode_to_scalar EXPORT_SYMBOL vmlinux 0x2c364012 get_user_pages +EXPORT_SYMBOL vmlinux 0x2c3d4491 skb_csum_hwoffload_help +EXPORT_SYMBOL vmlinux 0x2c499c9b phy_loopback EXPORT_SYMBOL vmlinux 0x2c518f33 blk_rq_unmap_user EXPORT_SYMBOL vmlinux 0x2c541e7b radix_tree_next_chunk -EXPORT_SYMBOL vmlinux 0x2c5aa896 scm_fp_dup -EXPORT_SYMBOL vmlinux 0x2c6560f1 tcp_v4_conn_request EXPORT_SYMBOL vmlinux 0x2c667f41 __cleancache_put_page -EXPORT_SYMBOL vmlinux 0x2c6c049c ipv6_getsockopt EXPORT_SYMBOL vmlinux 0x2c6c517b wait_on_page_private_2 EXPORT_SYMBOL vmlinux 0x2c6cbca5 vfs_get_super -EXPORT_SYMBOL vmlinux 0x2c99924c phy_ethtool_set_wol -EXPORT_SYMBOL vmlinux 0x2c9f3844 dev_get_phys_port_id +EXPORT_SYMBOL vmlinux 0x2c7f40b1 __neigh_event_send +EXPORT_SYMBOL vmlinux 0x2c9c0a80 dev_change_proto_down_generic EXPORT_SYMBOL vmlinux 0x2ca02c03 dma_get_sgtable_attrs EXPORT_SYMBOL vmlinux 0x2ca2bfd1 generic_file_read_iter +EXPORT_SYMBOL vmlinux 0x2caaa5f9 rps_may_expire_flow EXPORT_SYMBOL vmlinux 0x2cac5756 __put_user_ns EXPORT_SYMBOL vmlinux 0x2caf63d1 topology_phys_to_logical_die EXPORT_SYMBOL vmlinux 0x2cafe41a dquot_set_dqinfo EXPORT_SYMBOL vmlinux 0x2cbf78e1 pagecache_get_page -EXPORT_SYMBOL vmlinux 0x2cc6727b dst_init EXPORT_SYMBOL vmlinux 0x2cc7e140 bdi_alloc EXPORT_SYMBOL vmlinux 0x2ccc29a6 pci_enable_device EXPORT_SYMBOL vmlinux 0x2ccd059a dim_on_top EXPORT_SYMBOL vmlinux 0x2cd01a8b __tracepoint_kmem_cache_alloc EXPORT_SYMBOL vmlinux 0x2cdf87a1 proc_dointvec_minmax EXPORT_SYMBOL vmlinux 0x2ce24098 input_match_device_id -EXPORT_SYMBOL vmlinux 0x2ce53e45 pneigh_lookup EXPORT_SYMBOL vmlinux 0x2ceb1584 path_is_mountpoint -EXPORT_SYMBOL vmlinux 0x2d02b23a netif_receive_skb_core +EXPORT_SYMBOL vmlinux 0x2cecd4a0 nf_register_queue_handler +EXPORT_SYMBOL vmlinux 0x2cf1ec9b sock_i_uid EXPORT_SYMBOL vmlinux 0x2d030e4a migrate_page EXPORT_SYMBOL vmlinux 0x2d043222 ptp_find_pin_unlocked -EXPORT_SYMBOL vmlinux 0x2d0b6a06 ip6_output +EXPORT_SYMBOL vmlinux 0x2d11b435 rtnl_create_link EXPORT_SYMBOL vmlinux 0x2d140a58 genl_unlock EXPORT_SYMBOL vmlinux 0x2d192c70 sg_zero_buffer EXPORT_SYMBOL vmlinux 0x2d1d0329 nvdimm_bus_unlock EXPORT_SYMBOL vmlinux 0x2d252a3e dmam_pool_create EXPORT_SYMBOL vmlinux 0x2d30596c from_kqid_munged EXPORT_SYMBOL vmlinux 0x2d30c9de seq_escape_mem_ascii -EXPORT_SYMBOL vmlinux 0x2d314b75 gro_find_receive_by_type -EXPORT_SYMBOL vmlinux 0x2d325521 xfrm_input_unregister_afinfo -EXPORT_SYMBOL vmlinux 0x2d3262b3 phy_init_eee EXPORT_SYMBOL vmlinux 0x2d3385d3 system_wq +EXPORT_SYMBOL vmlinux 0x2d3476a4 netdev_master_upper_dev_link EXPORT_SYMBOL vmlinux 0x2d39b0a7 kstrdup -EXPORT_SYMBOL vmlinux 0x2d49cf23 kernel_getpeername -EXPORT_SYMBOL vmlinux 0x2d4b5aef udp_gro_complete +EXPORT_SYMBOL vmlinux 0x2d416a17 xsk_clear_rx_need_wakeup EXPORT_SYMBOL vmlinux 0x2d4c773a hdmi_spd_infoframe_init EXPORT_SYMBOL vmlinux 0x2d4daef5 find_font -EXPORT_SYMBOL vmlinux 0x2d52d358 ip_setsockopt EXPORT_SYMBOL vmlinux 0x2d822517 watchdog_register_governor EXPORT_SYMBOL vmlinux 0x2d8244f4 blk_integrity_compare EXPORT_SYMBOL vmlinux 0x2d912bca dmi_get_bios_year EXPORT_SYMBOL vmlinux 0x2d994605 security_inode_copy_up_xattr -EXPORT_SYMBOL vmlinux 0x2dcea6df flow_rule_match_icmp +EXPORT_SYMBOL vmlinux 0x2d9bed90 __sock_queue_rcv_skb +EXPORT_SYMBOL vmlinux 0x2da50ae7 ip6_dst_alloc EXPORT_SYMBOL vmlinux 0x2dd16564 arch_register_cpu EXPORT_SYMBOL vmlinux 0x2dd747ab scsi_remove_device -EXPORT_SYMBOL vmlinux 0x2ddfc17a genphy_write_mmd_unsupported +EXPORT_SYMBOL vmlinux 0x2ddcd4b3 skb_vlan_push EXPORT_SYMBOL vmlinux 0x2de125c0 page_frag_alloc_align EXPORT_SYMBOL vmlinux 0x2de56da8 fs_param_is_s32 EXPORT_SYMBOL vmlinux 0x2def7f76 rtc_cmos_write -EXPORT_SYMBOL vmlinux 0x2df787a7 ipv4_dst_check EXPORT_SYMBOL vmlinux 0x2e0b1deb dma_fence_get_status EXPORT_SYMBOL vmlinux 0x2e1ca751 clk_put EXPORT_SYMBOL vmlinux 0x2e1d671c param_ops_bool EXPORT_SYMBOL vmlinux 0x2e241cfa pps_unregister_source +EXPORT_SYMBOL vmlinux 0x2e25afee xfrm_policy_flush EXPORT_SYMBOL vmlinux 0x2e268115 __tracepoint_dma_fence_signaled EXPORT_SYMBOL vmlinux 0x2e2b40d2 strncat EXPORT_SYMBOL vmlinux 0x2e2b829c acpi_bus_register_driver EXPORT_SYMBOL vmlinux 0x2e2bd3a2 remove_conflicting_pci_framebuffers -EXPORT_SYMBOL vmlinux 0x2e2e6a61 mini_qdisc_pair_block_init EXPORT_SYMBOL vmlinux 0x2e367d4b pipe_unlock EXPORT_SYMBOL vmlinux 0x2e3bcce2 wait_for_completion_interruptible EXPORT_SYMBOL vmlinux 0x2e44ccf7 configfs_depend_item @@ -4459,18 +4430,22 @@ EXPORT_SYMBOL vmlinux 0x2e58f837 find_inode_by_ino_rcu EXPORT_SYMBOL vmlinux 0x2e5c4ace fscrypt_free_inode EXPORT_SYMBOL vmlinux 0x2e5fe036 __skb_ext_put +EXPORT_SYMBOL vmlinux 0x2e69bc39 ppp_register_compressor EXPORT_SYMBOL vmlinux 0x2e7167bb rfkill_alloc EXPORT_SYMBOL vmlinux 0x2e858c63 scsi_cmd_blk_ioctl EXPORT_SYMBOL vmlinux 0x2ea2c95c __x86_indirect_thunk_rax EXPORT_SYMBOL vmlinux 0x2eaf8195 put_watch_queue +EXPORT_SYMBOL vmlinux 0x2eb3229e phy_register_fixup_for_uid EXPORT_SYMBOL vmlinux 0x2ec6bba0 errseq_set EXPORT_SYMBOL vmlinux 0x2ed00c1c agp_generic_alloc_pages +EXPORT_SYMBOL vmlinux 0x2ed9172d km_policy_expired EXPORT_SYMBOL vmlinux 0x2ee4c2b1 hdmi_avi_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x2ee772c9 kern_path_create EXPORT_SYMBOL vmlinux 0x2f02dd2b mipi_dsi_attach EXPORT_SYMBOL vmlinux 0x2f03fc4b security_secmark_refcount_inc EXPORT_SYMBOL vmlinux 0x2f0c3a99 __inode_add_bytes -EXPORT_SYMBOL vmlinux 0x2f0cbdd0 xp_dma_sync_for_device_slow EXPORT_SYMBOL vmlinux 0x2f2e91b2 security_ib_alloc_security +EXPORT_SYMBOL vmlinux 0x2f366c4b ip_check_defrag EXPORT_SYMBOL vmlinux 0x2f384db3 acpi_is_video_device EXPORT_SYMBOL vmlinux 0x2f66b60f balance_dirty_pages_ratelimited EXPORT_SYMBOL vmlinux 0x2f6adaed vme_bus_num @@ -4479,52 +4454,58 @@ EXPORT_SYMBOL vmlinux 0x2f7754a8 dma_pool_free EXPORT_SYMBOL vmlinux 0x2fa2aab5 remove_proc_subtree EXPORT_SYMBOL vmlinux 0x2fb6de5d add_device_randomness -EXPORT_SYMBOL vmlinux 0x2fd0866b __skb_checksum_complete EXPORT_SYMBOL vmlinux 0x2fe252cc unregister_inet6addr_notifier -EXPORT_SYMBOL vmlinux 0x2ff11e26 dev_set_mtu +EXPORT_SYMBOL vmlinux 0x2ff02af2 pid_task EXPORT_SYMBOL vmlinux 0x300f675b bio_put EXPORT_SYMBOL vmlinux 0x301304c2 __get_user_nocheck_8 EXPORT_SYMBOL vmlinux 0x301a8d51 vme_register_error_handler EXPORT_SYMBOL vmlinux 0x301f6216 __module_put_and_exit +EXPORT_SYMBOL vmlinux 0x30220504 flow_block_cb_setup_simple EXPORT_SYMBOL vmlinux 0x302dd0eb mipi_dsi_dcs_set_display_brightness +EXPORT_SYMBOL vmlinux 0x3036ad40 acpi_notifier_call_chain EXPORT_SYMBOL vmlinux 0x303c2de8 acpi_bus_get_status EXPORT_SYMBOL vmlinux 0x30464751 devm_memunmap +EXPORT_SYMBOL vmlinux 0x30468f20 release_sock EXPORT_SYMBOL vmlinux 0x305ad3b7 frontswap_register_ops EXPORT_SYMBOL vmlinux 0x3064fd22 seq_printf +EXPORT_SYMBOL vmlinux 0x3084fa1d __vlan_find_dev_deep_rcu EXPORT_SYMBOL vmlinux 0x3096be16 names_cachep +EXPORT_SYMBOL vmlinux 0x3098ab97 key_link +EXPORT_SYMBOL vmlinux 0x309a2e46 key_type_keyring EXPORT_SYMBOL vmlinux 0x30a80826 __kfifo_from_user EXPORT_SYMBOL vmlinux 0x30acfde9 hsiphash_2u32 -EXPORT_SYMBOL vmlinux 0x30c97261 xsk_uses_need_wakeup -EXPORT_SYMBOL vmlinux 0x30dc8c1b vfs_get_link EXPORT_SYMBOL vmlinux 0x30e6904e blk_queue_physical_block_size EXPORT_SYMBOL vmlinux 0x30e74134 tty_termios_copy_hw -EXPORT_SYMBOL vmlinux 0x30fdab82 udp6_set_csum EXPORT_SYMBOL vmlinux 0x3100cff9 lockref_get_or_lock EXPORT_SYMBOL vmlinux 0x3102d70b frontswap_curr_pages -EXPORT_SYMBOL vmlinux 0x3107d988 sock_no_accept EXPORT_SYMBOL vmlinux 0x3126a9e8 siphash_1u64 EXPORT_SYMBOL vmlinux 0x313670f4 pcim_enable_device +EXPORT_SYMBOL vmlinux 0x3138b2a6 __dev_kfree_skb_irq EXPORT_SYMBOL vmlinux 0x3142fda6 scsi_remove_target EXPORT_SYMBOL vmlinux 0x3145216f pci_dev_present EXPORT_SYMBOL vmlinux 0x3159f3c1 dma_find_channel +EXPORT_SYMBOL vmlinux 0x3167ff70 io_uring_get_socket +EXPORT_SYMBOL vmlinux 0x316ca57c inet_unregister_protosw EXPORT_SYMBOL vmlinux 0x317e78fb blk_rq_map_kern -EXPORT_SYMBOL vmlinux 0x31819303 mdiobus_get_phy EXPORT_SYMBOL vmlinux 0x3186f940 irq_set_chip -EXPORT_SYMBOL vmlinux 0x318a2bc2 sock_queue_rcv_skb -EXPORT_SYMBOL vmlinux 0x318d58b5 inet_recvmsg +EXPORT_SYMBOL vmlinux 0x3188d746 netdev_refcnt_read EXPORT_SYMBOL vmlinux 0x318d6fec mutex_is_locked -EXPORT_SYMBOL vmlinux 0x319c84e3 udp_gro_receive EXPORT_SYMBOL vmlinux 0x319d493d proc_dostring +EXPORT_SYMBOL vmlinux 0x31a7cde7 tcp_md5_hash_key EXPORT_SYMBOL vmlinux 0x31b93244 unpin_user_pages_dirty_lock -EXPORT_SYMBOL vmlinux 0x31c58203 sock_common_getsockopt +EXPORT_SYMBOL vmlinux 0x31bb4225 prepare_kernel_cred EXPORT_SYMBOL vmlinux 0x31da6416 locks_copy_conflock +EXPORT_SYMBOL vmlinux 0x31e627ef skb_page_frag_refill EXPORT_SYMBOL vmlinux 0x31e7f575 writeback_inodes_sb_nr -EXPORT_SYMBOL vmlinux 0x31f352ad skb_flow_dissect_meta EXPORT_SYMBOL vmlinux 0x31ffa309 devfreq_unregister_opp_notifier EXPORT_SYMBOL vmlinux 0x321d137c __splice_from_pipe EXPORT_SYMBOL vmlinux 0x322c59dc devm_request_threaded_irq EXPORT_SYMBOL vmlinux 0x32367278 simple_nosetlease +EXPORT_SYMBOL vmlinux 0x32495f1a skb_checksum_help +EXPORT_SYMBOL vmlinux 0x324b57a4 register_netdev +EXPORT_SYMBOL vmlinux 0x325453bf __inet_hash EXPORT_SYMBOL vmlinux 0x325579c6 component_match_add_typed +EXPORT_SYMBOL vmlinux 0x3261ad69 security_inode_setsecctx EXPORT_SYMBOL vmlinux 0x326425ca pci_unmap_biosrom EXPORT_SYMBOL vmlinux 0x32706b10 fc_remove_host EXPORT_SYMBOL vmlinux 0x32785144 set_disk_ro @@ -4532,80 +4513,86 @@ EXPORT_SYMBOL vmlinux 0x327fc81d jbd2_journal_start_reserved EXPORT_SYMBOL vmlinux 0x3283e6b0 prandom_seed_full_state EXPORT_SYMBOL vmlinux 0x328c9e58 xattr_full_name +EXPORT_SYMBOL vmlinux 0x32937399 flow_block_cb_incref +EXPORT_SYMBOL vmlinux 0x3293ebd3 phy_suspend EXPORT_SYMBOL vmlinux 0x32980deb security_secmark_relabel_packet +EXPORT_SYMBOL vmlinux 0x32c29c39 skb_store_bits EXPORT_SYMBOL vmlinux 0x32ce3777 radix_tree_preload EXPORT_SYMBOL vmlinux 0x32e6f1a0 acpi_video_backlight_string EXPORT_SYMBOL vmlinux 0x32efc52e input_set_max_poll_interval EXPORT_SYMBOL vmlinux 0x32fcaad6 processors -EXPORT_SYMBOL vmlinux 0x33104ea7 tcp_parse_options EXPORT_SYMBOL vmlinux 0x3324ef3b acpi_set_firmware_waking_vector EXPORT_SYMBOL vmlinux 0x3357130a simple_write_end +EXPORT_SYMBOL vmlinux 0x336aaec5 inet6_protos EXPORT_SYMBOL vmlinux 0x33736a1d __genradix_ptr_alloc -EXPORT_SYMBOL vmlinux 0x337a403a __ip_queue_xmit EXPORT_SYMBOL vmlinux 0x3385bd90 pagevec_lookup_range EXPORT_SYMBOL vmlinux 0x33ae0f9a amd_iommu_flush_tlb -EXPORT_SYMBOL vmlinux 0x33aed83e sock_queue_err_skb EXPORT_SYMBOL vmlinux 0x33b84f74 copy_page +EXPORT_SYMBOL vmlinux 0x33d32b72 udp_read_sock EXPORT_SYMBOL vmlinux 0x33e02e18 migrate_page_move_mapping EXPORT_SYMBOL vmlinux 0x33f0768c cpufreq_quick_get_max -EXPORT_SYMBOL vmlinux 0x33f4b6f0 pskb_extract EXPORT_SYMBOL vmlinux 0x33fcf44a __kfifo_out_r EXPORT_SYMBOL vmlinux 0x33fd9da4 acpi_get_gpe_device -EXPORT_SYMBOL vmlinux 0x3418a365 netdev_set_num_tc +EXPORT_SYMBOL vmlinux 0x3406742b flow_rule_match_icmp EXPORT_SYMBOL vmlinux 0x341cc13d __devm_mdiobus_register EXPORT_SYMBOL vmlinux 0x3424daf8 __traceiter_dma_fence_enable_signal EXPORT_SYMBOL vmlinux 0x3434c2f0 dma_sync_wait EXPORT_SYMBOL vmlinux 0x3439f2be vmf_insert_pfn_prot EXPORT_SYMBOL vmlinux 0x3441445f msrs_free EXPORT_SYMBOL vmlinux 0x344defaf generic_ro_fops -EXPORT_SYMBOL vmlinux 0x346d77c3 xp_can_alloc +EXPORT_SYMBOL vmlinux 0x3452f48e inet6_del_offload EXPORT_SYMBOL vmlinux 0x347548f8 generic_block_bmap +EXPORT_SYMBOL vmlinux 0x34832907 skb_try_coalesce +EXPORT_SYMBOL vmlinux 0x34882868 napi_consume_skb EXPORT_SYMBOL vmlinux 0x3489859f acpi_enter_sleep_state_s4bios -EXPORT_SYMBOL vmlinux 0x3489d2fd security_path_mkdir EXPORT_SYMBOL vmlinux 0x348e5e44 __alloc_pages +EXPORT_SYMBOL vmlinux 0x348fc643 tcp_sock_set_keepidle EXPORT_SYMBOL vmlinux 0x34934c08 bio_split EXPORT_SYMBOL vmlinux 0x349cba85 strchr EXPORT_SYMBOL vmlinux 0x34a1f7e3 acpi_processor_get_psd EXPORT_SYMBOL vmlinux 0x34aa6f90 generic_file_write_iter +EXPORT_SYMBOL vmlinux 0x34acf792 udp_prot EXPORT_SYMBOL vmlinux 0x34c7cdbc lookup_bdev EXPORT_SYMBOL vmlinux 0x34db050b _raw_spin_lock_irqsave EXPORT_SYMBOL vmlinux 0x34f3484e security_tun_dev_attach_queue EXPORT_SYMBOL vmlinux 0x350ea558 dma_fence_default_wait EXPORT_SYMBOL vmlinux 0x3517383e register_reboot_notifier +EXPORT_SYMBOL vmlinux 0x3521adbc __dev_set_mtu +EXPORT_SYMBOL vmlinux 0x35220e72 tcf_idr_check_alloc EXPORT_SYMBOL vmlinux 0x3522d87e blk_rq_map_user_iov -EXPORT_SYMBOL vmlinux 0x35264f5a inet_shutdown EXPORT_SYMBOL vmlinux 0x3527b0ed pcix_get_max_mmrbc EXPORT_SYMBOL vmlinux 0x353079d3 __register_chrdev EXPORT_SYMBOL vmlinux 0x3539f11b match_strlcpy -EXPORT_SYMBOL vmlinux 0x353e8bdf dev_queue_xmit_accel -EXPORT_SYMBOL vmlinux 0x354571d4 sock_recv_errqueue EXPORT_SYMBOL vmlinux 0x356461c8 rtc_time64_to_tm -EXPORT_SYMBOL vmlinux 0x35702ddd flow_rule_match_enc_opts +EXPORT_SYMBOL vmlinux 0x356b3913 fib_notifier_ops_register EXPORT_SYMBOL vmlinux 0x35a6bc9a mipi_dsi_device_register_full EXPORT_SYMBOL vmlinux 0x35a88f28 zlib_inflateInit2 EXPORT_SYMBOL vmlinux 0x35cf6c11 seq_lseek EXPORT_SYMBOL vmlinux 0x35f81b89 serial8250_set_isa_configurator -EXPORT_SYMBOL vmlinux 0x35fc9f5f netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x35f958d3 skb_checksum_setup EXPORT_SYMBOL vmlinux 0x360b1afe probe_irq_mask EXPORT_SYMBOL vmlinux 0x3618ce30 pci_wake_from_d3 EXPORT_SYMBOL vmlinux 0x361fd19a set_security_override +EXPORT_SYMBOL vmlinux 0x362237a9 dev_set_alias EXPORT_SYMBOL vmlinux 0x36237b6a filemap_range_has_page EXPORT_SYMBOL vmlinux 0x364850b1 down_write_killable EXPORT_SYMBOL vmlinux 0x364d4b7e hash_and_copy_to_iter EXPORT_SYMBOL vmlinux 0x3656dd94 inc_zone_page_state EXPORT_SYMBOL vmlinux 0x365acda7 set_normalized_timespec64 EXPORT_SYMBOL vmlinux 0x365e7911 kstrdup_const -EXPORT_SYMBOL vmlinux 0x36638d47 poll_initwait EXPORT_SYMBOL vmlinux 0x3663e068 __vfs_removexattr EXPORT_SYMBOL vmlinux 0x366d71ab md_cluster_ops EXPORT_SYMBOL vmlinux 0x3684ceb8 __getblk_gfp +EXPORT_SYMBOL vmlinux 0x36a33da4 follow_down_one EXPORT_SYMBOL vmlinux 0x36b6ebbf down_killable -EXPORT_SYMBOL vmlinux 0x36b7e15e tcp_make_synack EXPORT_SYMBOL vmlinux 0x36b8c928 from_kprojid_munged EXPORT_SYMBOL vmlinux 0x36c70311 __mark_inode_dirty EXPORT_SYMBOL vmlinux 0x36d28522 ptp_clock_index EXPORT_SYMBOL vmlinux 0x36da3993 bdev_read_only +EXPORT_SYMBOL vmlinux 0x36ddc6c5 sockfd_lookup +EXPORT_SYMBOL vmlinux 0x36ef0fd3 ipv6_chk_custom_prefix EXPORT_SYMBOL vmlinux 0x37072fbb inode_init_owner +EXPORT_SYMBOL vmlinux 0x3708db30 neigh_update EXPORT_SYMBOL vmlinux 0x37110088 remove_wait_queue EXPORT_SYMBOL vmlinux 0x372ba407 __mod_node_page_state EXPORT_SYMBOL vmlinux 0x3737d9a9 ZSTD_DStreamWorkspaceBound @@ -4613,48 +4600,44 @@ EXPORT_SYMBOL vmlinux 0x3755f990 gf128mul_init_64k_bbe EXPORT_SYMBOL vmlinux 0x375f8bbd fc_get_event_number EXPORT_SYMBOL vmlinux 0x37662fe6 kmalloc_caches -EXPORT_SYMBOL vmlinux 0x37693f22 inet_frag_find EXPORT_SYMBOL vmlinux 0x377105f7 tty_check_change EXPORT_SYMBOL vmlinux 0x37746fde ZSTD_initDStream +EXPORT_SYMBOL vmlinux 0x37762be0 udp_poll EXPORT_SYMBOL vmlinux 0x377d8004 acpi_error +EXPORT_SYMBOL vmlinux 0x3782b94a passthru_features_check +EXPORT_SYMBOL vmlinux 0x3788f04c audit_log_start EXPORT_SYMBOL vmlinux 0x3794bd9c __cleancache_get_page -EXPORT_SYMBOL vmlinux 0x379fdb94 netif_receive_skb -EXPORT_SYMBOL vmlinux 0x37a2bd6d tcp_syn_ack_timeout EXPORT_SYMBOL vmlinux 0x37b8b39e screen_info EXPORT_SYMBOL vmlinux 0x37befc70 jiffies_to_msecs EXPORT_SYMBOL vmlinux 0x37c2c20c simple_unlink +EXPORT_SYMBOL vmlinux 0x37cba143 xsk_tx_release EXPORT_SYMBOL vmlinux 0x37d683e5 noop_llseek EXPORT_SYMBOL vmlinux 0x37db8f19 dmi_get_date -EXPORT_SYMBOL vmlinux 0x37f680e2 skb_vlan_push -EXPORT_SYMBOL vmlinux 0x37f8096a register_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0x37ed14c6 sk_stream_wait_connect EXPORT_SYMBOL vmlinux 0x3805d648 __tracepoint_rdpmc EXPORT_SYMBOL vmlinux 0x381a798a setup_max_cpus EXPORT_SYMBOL vmlinux 0x3821fa1a __mmap_lock_do_trace_acquire_returned EXPORT_SYMBOL vmlinux 0x38258fe7 blk_queue_bounce_limit EXPORT_SYMBOL vmlinux 0x38451942 simple_dentry_operations -EXPORT_SYMBOL vmlinux 0x384cadfd netdev_master_upper_dev_get EXPORT_SYMBOL vmlinux 0x3854774b kstrtoll -EXPORT_SYMBOL vmlinux 0x385d69dc sock_create_lite -EXPORT_SYMBOL vmlinux 0x38692c2b phy_config_aneg EXPORT_SYMBOL vmlinux 0x3880a4b6 configfs_register_group EXPORT_SYMBOL vmlinux 0x38869d88 kstat EXPORT_SYMBOL vmlinux 0x388aa3c9 neigh_proc_dointvec_ms_jiffies EXPORT_SYMBOL vmlinux 0x3891ffc8 ecryptfs_fill_auth_tok EXPORT_SYMBOL vmlinux 0x389617b0 LZ4_decompress_fast_continue -EXPORT_SYMBOL vmlinux 0x38997018 phy_mii_ioctl -EXPORT_SYMBOL vmlinux 0x38a2f9ff km_report EXPORT_SYMBOL vmlinux 0x38a71b7e pci_free_resource_list EXPORT_SYMBOL vmlinux 0x38a9f7c5 in6addr_loopback EXPORT_SYMBOL vmlinux 0x38c2ae4a generic_key_instantiate EXPORT_SYMBOL vmlinux 0x38d07a40 tty_set_operations -EXPORT_SYMBOL vmlinux 0x38d0d1f4 unlock_rename -EXPORT_SYMBOL vmlinux 0x38d0edfc skb_copy_and_csum_dev EXPORT_SYMBOL vmlinux 0x38d7fea5 __cpuhp_setup_state_cpuslocked +EXPORT_SYMBOL vmlinux 0x38e43130 xp_dma_map EXPORT_SYMBOL vmlinux 0x38e46431 mempool_exit EXPORT_SYMBOL vmlinux 0x39081193 __max_logical_packages +EXPORT_SYMBOL vmlinux 0x391b4ac4 call_netdevice_notifiers EXPORT_SYMBOL vmlinux 0x392b1fea wait_for_completion_io EXPORT_SYMBOL vmlinux 0x392ccb42 simple_pin_fs EXPORT_SYMBOL vmlinux 0x392d14de jbd2_journal_stop +EXPORT_SYMBOL vmlinux 0x3937067c kernel_sendpage_locked EXPORT_SYMBOL vmlinux 0x3938c010 d_find_alias EXPORT_SYMBOL vmlinux 0x3939f8f0 rfkill_pause_polling EXPORT_SYMBOL vmlinux 0x393c143e file_remove_privs @@ -4662,20 +4645,21 @@ EXPORT_SYMBOL vmlinux 0x394957db scsi_eh_restore_cmnd EXPORT_SYMBOL vmlinux 0x394a1e11 phy_sfp_attach EXPORT_SYMBOL vmlinux 0x3955fcf6 __kfifo_in_r -EXPORT_SYMBOL vmlinux 0x396795d1 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x3958c019 __qdisc_calculate_pkt_len EXPORT_SYMBOL vmlinux 0x39745629 pci_ep_cfs_add_epf_group +EXPORT_SYMBOL vmlinux 0x39776ffb rt_dst_clone EXPORT_SYMBOL vmlinux 0x397a553a dma_resv_fini EXPORT_SYMBOL vmlinux 0x3983c098 blk_pre_runtime_suspend EXPORT_SYMBOL vmlinux 0x3987eb67 read_cache_page_gfp EXPORT_SYMBOL vmlinux 0x39991865 icmp_global_allow EXPORT_SYMBOL vmlinux 0x399ad043 __kfifo_dma_out_finish_r +EXPORT_SYMBOL vmlinux 0x399c2a5e genphy_write_mmd_unsupported EXPORT_SYMBOL vmlinux 0x39b52d19 __bitmap_and -EXPORT_SYMBOL vmlinux 0x39bb7e18 netif_schedule_queue -EXPORT_SYMBOL vmlinux 0x39c78a8b netlink_unicast +EXPORT_SYMBOL vmlinux 0x39d828c2 follow_up +EXPORT_SYMBOL vmlinux 0x39d9905f netdev_reset_tc EXPORT_SYMBOL vmlinux 0x39de944e seq_dentry EXPORT_SYMBOL vmlinux 0x39e3c030 do_trace_read_msr EXPORT_SYMBOL vmlinux 0x39f4df83 block_read_full_page -EXPORT_SYMBOL vmlinux 0x39ff11a1 __netdev_alloc_skb EXPORT_SYMBOL vmlinux 0x3a08475f platform_thermal_notify EXPORT_SYMBOL vmlinux 0x3a099605 __get_user_nocheck_4 EXPORT_SYMBOL vmlinux 0x3a0dbbda devm_clk_hw_register_clkdev @@ -4688,43 +4672,50 @@ EXPORT_SYMBOL vmlinux 0x3a2f6702 sg_alloc_table EXPORT_SYMBOL vmlinux 0x3a32839e intel_gtt_chipset_flush EXPORT_SYMBOL vmlinux 0x3a3b3ba7 fc_release_transport +EXPORT_SYMBOL vmlinux 0x3a3e4b35 napi_gro_receive EXPORT_SYMBOL vmlinux 0x3a4f9d28 rng_is_initialized EXPORT_SYMBOL vmlinux 0x3a52b8cb tty_register_device +EXPORT_SYMBOL vmlinux 0x3a64d4ed skb_vlan_untag +EXPORT_SYMBOL vmlinux 0x3aaa5e07 proto_unregister EXPORT_SYMBOL vmlinux 0x3ab7b1cc scsi_set_sense_field_pointer EXPORT_SYMBOL vmlinux 0x3aca0190 _raw_write_lock_irq EXPORT_SYMBOL vmlinux 0x3ad5cda3 lockref_get_not_zero EXPORT_SYMBOL vmlinux 0x3ad7a5d5 acpi_evaluate_reference EXPORT_SYMBOL vmlinux 0x3ada9e06 acpi_check_region EXPORT_SYMBOL vmlinux 0x3adb5629 dquot_reclaim_space_nodirty +EXPORT_SYMBOL vmlinux 0x3add424b sock_no_shutdown EXPORT_SYMBOL vmlinux 0x3ae93002 t10_pi_type1_ip -EXPORT_SYMBOL vmlinux 0x3aea73b0 xfrm6_protocol_register +EXPORT_SYMBOL vmlinux 0x3afbac3b km_query EXPORT_SYMBOL vmlinux 0x3aff3200 acpi_evaluate_object_typed EXPORT_SYMBOL vmlinux 0x3aff8a0f __SCK__tp_func_kmalloc EXPORT_SYMBOL vmlinux 0x3b029f48 acpi_install_fixed_event_handler +EXPORT_SYMBOL vmlinux 0x3b12a073 skb_kill_datagram EXPORT_SYMBOL vmlinux 0x3b12c9c0 input_setup_polling EXPORT_SYMBOL vmlinux 0x3b20fb95 dma_fence_remove_callback EXPORT_SYMBOL vmlinux 0x3b2175b7 generic_splice_sendpage EXPORT_SYMBOL vmlinux 0x3b24b092 param_set_ushort EXPORT_SYMBOL vmlinux 0x3b321462 LZ4_setStreamDecode EXPORT_SYMBOL vmlinux 0x3b35ef05 __SCK__tp_func_kmem_cache_alloc -EXPORT_SYMBOL vmlinux 0x3b4df4db dcb_ieee_setapp +EXPORT_SYMBOL vmlinux 0x3b37f39a ethtool_rx_flow_rule_create EXPORT_SYMBOL vmlinux 0x3b644591 __bitmap_shift_left EXPORT_SYMBOL vmlinux 0x3b6a7c85 mipi_dsi_dcs_soft_reset EXPORT_SYMBOL vmlinux 0x3b6c1802 blkdev_get_by_path EXPORT_SYMBOL vmlinux 0x3b6c41ea kstrtouint EXPORT_SYMBOL vmlinux 0x3b72644f vm_map_pages_zero EXPORT_SYMBOL vmlinux 0x3b76d423 file_update_time -EXPORT_SYMBOL vmlinux 0x3b7db0b8 inet_stream_ops EXPORT_SYMBOL vmlinux 0x3b81fec9 dquot_quotactl_sysfile_ops EXPORT_SYMBOL vmlinux 0x3b83610f cpu_sibling_map -EXPORT_SYMBOL vmlinux 0x3b84b8d4 tcp_v4_send_check EXPORT_SYMBOL vmlinux 0x3b9144c9 acpi_get_current_resources EXPORT_SYMBOL vmlinux 0x3b92ccbc put_devmap_managed_page +EXPORT_SYMBOL vmlinux 0x3ba920d5 mr_mfc_find_any_parent EXPORT_SYMBOL vmlinux 0x3bb0b0c0 filemap_fault -EXPORT_SYMBOL vmlinux 0x3bc9069d fqdir_init +EXPORT_SYMBOL vmlinux 0x3bb4b00a in_dev_finish_destroy EXPORT_SYMBOL vmlinux 0x3be7643e security_xfrm_policy_free +EXPORT_SYMBOL vmlinux 0x3be9c850 alloc_fddidev EXPORT_SYMBOL vmlinux 0x3c185c61 page_put_link EXPORT_SYMBOL vmlinux 0x3c25cfd2 __x86_indirect_alt_jmp_r9 +EXPORT_SYMBOL vmlinux 0x3c25d2a5 inet_frags_fini +EXPORT_SYMBOL vmlinux 0x3c38e444 skb_prepare_seq_read EXPORT_SYMBOL vmlinux 0x3c3aa774 blkdev_issue_flush EXPORT_SYMBOL vmlinux 0x3c3fce39 __local_bh_enable_ip EXPORT_SYMBOL vmlinux 0x3c3ff9fd sprintf @@ -4732,37 +4723,33 @@ EXPORT_SYMBOL vmlinux 0x3c429d7c __dquot_transfer EXPORT_SYMBOL vmlinux 0x3c5929f7 mipi_dsi_host_register EXPORT_SYMBOL vmlinux 0x3c5aba9a kill_pgrp -EXPORT_SYMBOL vmlinux 0x3c6fdb93 ip6_xmit EXPORT_SYMBOL vmlinux 0x3c8f9f52 __SCK__tp_func_mmap_lock_start_locking +EXPORT_SYMBOL vmlinux 0x3c92b82e sock_common_recvmsg EXPORT_SYMBOL vmlinux 0x3c95d994 tty_port_hangup EXPORT_SYMBOL vmlinux 0x3c9a0701 set_anon_super -EXPORT_SYMBOL vmlinux 0x3c9efd41 eth_prepare_mac_addr_change -EXPORT_SYMBOL vmlinux 0x3c9ff461 ip6_frag_init -EXPORT_SYMBOL vmlinux 0x3ca5ae45 tcf_em_tree_validate EXPORT_SYMBOL vmlinux 0x3cd16a03 vga_put EXPORT_SYMBOL vmlinux 0x3ce4ca6f disable_irq +EXPORT_SYMBOL vmlinux 0x3cec05d6 eth_header_parse_protocol EXPORT_SYMBOL vmlinux 0x3cf71d38 scsi_host_alloc -EXPORT_SYMBOL vmlinux 0x3cfafc78 zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x3cf94028 udp_set_csum +EXPORT_SYMBOL vmlinux 0x3cfec59c genphy_aneg_done EXPORT_SYMBOL vmlinux 0x3d02cd70 dma_fence_signal_locked EXPORT_SYMBOL vmlinux 0x3d098d97 call_usermodehelper_exec -EXPORT_SYMBOL vmlinux 0x3d09fa02 ipv6_dev_mc_inc EXPORT_SYMBOL vmlinux 0x3d0bc61f mdio_device_register EXPORT_SYMBOL vmlinux 0x3d173bf1 netlbl_audit_start -EXPORT_SYMBOL vmlinux 0x3d18c3a3 dev_get_iflink EXPORT_SYMBOL vmlinux 0x3d210724 gen_pool_dma_zalloc_align EXPORT_SYMBOL vmlinux 0x3d2a86e3 crypto_sha256_finup -EXPORT_SYMBOL vmlinux 0x3d4b1fc3 netlink_broadcast_filtered -EXPORT_SYMBOL vmlinux 0x3d4cfe9b fget EXPORT_SYMBOL vmlinux 0x3d56e7b3 utf8_unload -EXPORT_SYMBOL vmlinux 0x3d5828c5 sock_no_getname +EXPORT_SYMBOL vmlinux 0x3d611b9a dcb_ieee_delapp +EXPORT_SYMBOL vmlinux 0x3d7011c2 unregister_netdevice_queue +EXPORT_SYMBOL vmlinux 0x3d8a21c0 __skb_pad EXPORT_SYMBOL vmlinux 0x3da171f9 pci_mem_start EXPORT_SYMBOL vmlinux 0x3dabf271 memcg_sockets_enabled_key EXPORT_SYMBOL vmlinux 0x3dac779a bpf_sk_lookup_enabled EXPORT_SYMBOL vmlinux 0x3dad9978 cancel_delayed_work -EXPORT_SYMBOL vmlinux 0x3dc3c063 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x3daed7ce flow_rule_match_enc_opts EXPORT_SYMBOL vmlinux 0x3dc619d3 swake_up_locked EXPORT_SYMBOL vmlinux 0x3dcb88a0 irq_set_handler_data -EXPORT_SYMBOL vmlinux 0x3dd25a86 follow_up EXPORT_SYMBOL vmlinux 0x3dd9b230 proc_dointvec_userhz_jiffies EXPORT_SYMBOL vmlinux 0x3ddc6c04 x86_bios_cpu_apicid EXPORT_SYMBOL vmlinux 0x3de14e49 __scsi_device_lookup @@ -4772,26 +4759,26 @@ EXPORT_SYMBOL vmlinux 0x3dfc897c seq_hlist_start_head EXPORT_SYMBOL vmlinux 0x3e194bf0 invalidate_mapping_pages EXPORT_SYMBOL vmlinux 0x3e3bad0a __tasklet_hi_schedule -EXPORT_SYMBOL vmlinux 0x3e40ed3a dev_set_promiscuity EXPORT_SYMBOL vmlinux 0x3e410f05 kmem_cache_size EXPORT_SYMBOL vmlinux 0x3e498015 md_bitmap_update_sb +EXPORT_SYMBOL vmlinux 0x3e593144 sock_no_accept EXPORT_SYMBOL vmlinux 0x3e691362 agp_allocate_memory -EXPORT_SYMBOL vmlinux 0x3e73f789 lookup_one_len_unlocked -EXPORT_SYMBOL vmlinux 0x3e8f3e0c dcb_ieee_getapp_dscp_prio_mask_map EXPORT_SYMBOL vmlinux 0x3e9110fa __hw_addr_unsync EXPORT_SYMBOL vmlinux 0x3eafdce6 pci_match_id +EXPORT_SYMBOL vmlinux 0x3ee21073 inet_add_offload EXPORT_SYMBOL vmlinux 0x3eeb2322 __wake_up -EXPORT_SYMBOL vmlinux 0x3ef60000 security_sk_clone -EXPORT_SYMBOL vmlinux 0x3efd1cb9 _dev_emerg EXPORT_SYMBOL vmlinux 0x3efdc19f dmam_free_coherent EXPORT_SYMBOL vmlinux 0x3efe1703 phy_unregister_fixup_for_id +EXPORT_SYMBOL vmlinux 0x3f037899 xfrm_init_state +EXPORT_SYMBOL vmlinux 0x3f0d7026 skb_orphan_partial EXPORT_SYMBOL vmlinux 0x3f0da6c8 free_cgroup_ns EXPORT_SYMBOL vmlinux 0x3f0eabd2 xxh64_update +EXPORT_SYMBOL vmlinux 0x3f332e06 security_sctp_bind_connect EXPORT_SYMBOL vmlinux 0x3f4547a7 put_unused_fd EXPORT_SYMBOL vmlinux 0x3f4bd846 gen_pool_first_fit_order_align -EXPORT_SYMBOL vmlinux 0x3f4bdff1 __xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x3f664c52 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x3f887de5 phy_find_first EXPORT_SYMBOL vmlinux 0x3f89071b security_ib_pkey_access -EXPORT_SYMBOL vmlinux 0x3f8eaa54 neigh_ifdown EXPORT_SYMBOL vmlinux 0x3fa6006a __tty_insert_flip_char EXPORT_SYMBOL vmlinux 0x3fbf3c89 vme_slave_set EXPORT_SYMBOL vmlinux 0x3fccfff7 buffer_migrate_page @@ -4799,35 +4786,28 @@ EXPORT_SYMBOL vmlinux 0x3fe2ccbe memweight EXPORT_SYMBOL vmlinux 0x40159fc1 generic_fadvise EXPORT_SYMBOL vmlinux 0x40296362 t10_pi_type3_ip -EXPORT_SYMBOL vmlinux 0x402d689c nf_log_bind_pf -EXPORT_SYMBOL vmlinux 0x4037d7c2 netdev_rx_csum_fault +EXPORT_SYMBOL vmlinux 0x402a2a4a unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0x403d45a0 dcb_ieee_getapp_prio_dscp_mask_map EXPORT_SYMBOL vmlinux 0x4055a920 acpi_remove_fixed_event_handler -EXPORT_SYMBOL vmlinux 0x40602474 tcp_req_err EXPORT_SYMBOL vmlinux 0x40648879 sdev_enable_disk_events EXPORT_SYMBOL vmlinux 0x407b61dc bio_reset -EXPORT_SYMBOL vmlinux 0x407e96fc ip_cmsg_recv_offset EXPORT_SYMBOL vmlinux 0x408b21d5 vfs_fileattr_set EXPORT_SYMBOL vmlinux 0x40973662 sysctl_udp_mem EXPORT_SYMBOL vmlinux 0x409873e3 tty_termios_baud_rate EXPORT_SYMBOL vmlinux 0x409bcb62 mutex_unlock +EXPORT_SYMBOL vmlinux 0x40a714b8 unregister_qdisc EXPORT_SYMBOL vmlinux 0x40a9b349 vzalloc EXPORT_SYMBOL vmlinux 0x40afc58b thermal_zone_device_critical -EXPORT_SYMBOL vmlinux 0x40b53b2d kfree_skb EXPORT_SYMBOL vmlinux 0x40c7247c si_meminfo -EXPORT_SYMBOL vmlinux 0x40cd27b0 inet_frags_init -EXPORT_SYMBOL vmlinux 0x40cd929a genphy_resume EXPORT_SYMBOL vmlinux 0x40d04664 console_trylock EXPORT_SYMBOL vmlinux 0x40d492b4 dmaenginem_async_device_register EXPORT_SYMBOL vmlinux 0x40d59096 unregister_restart_handler EXPORT_SYMBOL vmlinux 0x40d84a37 ZSTD_getFrameParams EXPORT_SYMBOL vmlinux 0x40d9a615 sb_set_blocksize -EXPORT_SYMBOL vmlinux 0x40dab062 netif_napi_add EXPORT_SYMBOL vmlinux 0x40fcec00 kill_block_super -EXPORT_SYMBOL vmlinux 0x410c40fd blackhole_netdev -EXPORT_SYMBOL vmlinux 0x4118d65d __netlink_kernel_create +EXPORT_SYMBOL vmlinux 0x4101b6e9 skb_put EXPORT_SYMBOL vmlinux 0x411bac0c fscrypt_decrypt_pagecache_blocks EXPORT_SYMBOL vmlinux 0x411cd2eb crypto_sha256_update -EXPORT_SYMBOL vmlinux 0x4128b9bf ip6_dst_check EXPORT_SYMBOL vmlinux 0x412f6577 set_binfmt EXPORT_SYMBOL vmlinux 0x41482d8b strndup_user EXPORT_SYMBOL vmlinux 0x4155f351 d_tmpfile @@ -4835,31 +4815,40 @@ EXPORT_SYMBOL vmlinux 0x417aba99 param_get_short EXPORT_SYMBOL vmlinux 0x417eeeea blk_mq_stop_hw_queues EXPORT_SYMBOL vmlinux 0x4188d439 neigh_rand_reach_time -EXPORT_SYMBOL vmlinux 0x419916ad dev_change_proto_down_generic +EXPORT_SYMBOL vmlinux 0x41a3f1dc ipv6_chk_addr EXPORT_SYMBOL vmlinux 0x41ad7993 try_module_get -EXPORT_SYMBOL vmlinux 0x41cd2004 nvmem_get_mac_address +EXPORT_SYMBOL vmlinux 0x41cd60a0 tcp_setsockopt EXPORT_SYMBOL vmlinux 0x41d7aea3 blk_mq_run_hw_queue EXPORT_SYMBOL vmlinux 0x41efdeaf radix_tree_lookup_slot EXPORT_SYMBOL vmlinux 0x420964e3 __nla_parse +EXPORT_SYMBOL vmlinux 0x42157dcb inet_addr_type_dev_table +EXPORT_SYMBOL vmlinux 0x421586fc dev_get_stats EXPORT_SYMBOL vmlinux 0x42160169 flush_workqueue EXPORT_SYMBOL vmlinux 0x42190267 tty_kref_put +EXPORT_SYMBOL vmlinux 0x421eb836 free_netdev EXPORT_SYMBOL vmlinux 0x4222ea4a create_empty_buffers +EXPORT_SYMBOL vmlinux 0x42258533 unregister_nexthop_notifier EXPORT_SYMBOL vmlinux 0x4230a8d7 sg_nents_for_len EXPORT_SYMBOL vmlinux 0x4248ae3c single_task_running EXPORT_SYMBOL vmlinux 0x424d3620 zlib_inflateIncomp +EXPORT_SYMBOL vmlinux 0x424f2c23 genphy_c37_read_status EXPORT_SYMBOL vmlinux 0x425293ed blk_mq_delay_run_hw_queues EXPORT_SYMBOL vmlinux 0x42548355 finish_open EXPORT_SYMBOL vmlinux 0x42578e80 acpi_get_type EXPORT_SYMBOL vmlinux 0x42595e58 vgacon_text_force -EXPORT_SYMBOL vmlinux 0x4274644c tcf_em_tree_destroy -EXPORT_SYMBOL vmlinux 0x42855703 sk_stream_kill_queues +EXPORT_SYMBOL vmlinux 0x42686359 __sk_dst_check +EXPORT_SYMBOL vmlinux 0x426b3d1d mr_fill_mroute EXPORT_SYMBOL vmlinux 0x4285bf95 fc_host_post_fc_event +EXPORT_SYMBOL vmlinux 0x42ad4910 dev_mc_add_global EXPORT_SYMBOL vmlinux 0x42bd7d61 bio_init EXPORT_SYMBOL vmlinux 0x42bed8d4 unix_gc_lock EXPORT_SYMBOL vmlinux 0x42f1b900 fb_pad_unaligned_buffer +EXPORT_SYMBOL vmlinux 0x42fd4975 inet_stream_ops EXPORT_SYMBOL vmlinux 0x4302d0eb free_pages EXPORT_SYMBOL vmlinux 0x4317c06e is_bad_inode EXPORT_SYMBOL vmlinux 0x431ec3a9 __nla_validate +EXPORT_SYMBOL vmlinux 0x431fe088 xfrm6_protocol_deregister +EXPORT_SYMBOL vmlinux 0x4320658a tcf_em_register EXPORT_SYMBOL vmlinux 0x43251297 proc_create_single_data EXPORT_SYMBOL vmlinux 0x4336fcca ucs2_as_utf8 EXPORT_SYMBOL vmlinux 0x4337c2af bio_copy_data @@ -4868,98 +4857,98 @@ EXPORT_SYMBOL vmlinux 0x434230a3 inode_needs_sync EXPORT_SYMBOL vmlinux 0x434fddec pci_disable_link_state EXPORT_SYMBOL vmlinux 0x4351577a fb_parse_edid +EXPORT_SYMBOL vmlinux 0x43693a59 _dev_notice EXPORT_SYMBOL vmlinux 0x43730459 vfs_iocb_iter_write -EXPORT_SYMBOL vmlinux 0x43734958 dev_change_proto_down_reason EXPORT_SYMBOL vmlinux 0x437a0d6d __sock_tx_timestamp +EXPORT_SYMBOL vmlinux 0x4383b572 skb_tx_error EXPORT_SYMBOL vmlinux 0x438610bd security_tun_dev_alloc_security -EXPORT_SYMBOL vmlinux 0x438aa6ef sock_gettstamp EXPORT_SYMBOL vmlinux 0x43a42640 __ps2_command +EXPORT_SYMBOL vmlinux 0x43a92098 kernel_sendmsg EXPORT_SYMBOL vmlinux 0x43a98cc7 nd_dev_to_uuid EXPORT_SYMBOL vmlinux 0x43b66a3c pnp_stop_dev EXPORT_SYMBOL vmlinux 0x43b830d9 override_creds EXPORT_SYMBOL vmlinux 0x43c5f1da sget_fc EXPORT_SYMBOL vmlinux 0x43d22fb9 groups_alloc -EXPORT_SYMBOL vmlinux 0x43d92be5 neigh_seq_next +EXPORT_SYMBOL vmlinux 0x43e147b3 kernel_accept EXPORT_SYMBOL vmlinux 0x43e37816 __cpuhp_setup_state -EXPORT_SYMBOL vmlinux 0x43e66bf1 inet_proto_csum_replace_by_diff EXPORT_SYMBOL vmlinux 0x43f53cbe pci_map_biosrom EXPORT_SYMBOL vmlinux 0x43fd6226 nla_reserve +EXPORT_SYMBOL vmlinux 0x44177259 inet6_offloads +EXPORT_SYMBOL vmlinux 0x441dfddf netdev_class_create_file_ns +EXPORT_SYMBOL vmlinux 0x4420e93b tcp_enter_quickack_mode EXPORT_SYMBOL vmlinux 0x44241b8c jbd2_complete_transaction EXPORT_SYMBOL vmlinux 0x442b544c __nla_put EXPORT_SYMBOL vmlinux 0x443d20f5 get_bitmap_from_slot EXPORT_SYMBOL vmlinux 0x44414ff2 iosf_mbi_unblock_punit_i2c_access -EXPORT_SYMBOL vmlinux 0x4445773c ppp_input_error EXPORT_SYMBOL vmlinux 0x44469a76 crc_ccitt_false_table -EXPORT_SYMBOL vmlinux 0x4450e0bb tcp_mmap +EXPORT_SYMBOL vmlinux 0x4446d816 nf_log_trace +EXPORT_SYMBOL vmlinux 0x445d8a8b kernel_listen EXPORT_SYMBOL vmlinux 0x4462d35e cpufreq_get_hw_max_freq -EXPORT_SYMBOL vmlinux 0x44655f64 skb_page_frag_refill -EXPORT_SYMBOL vmlinux 0x4465fbef mini_qdisc_pair_init -EXPORT_SYMBOL vmlinux 0x446fb573 skb_queue_purge EXPORT_SYMBOL vmlinux 0x44902cff acpi_enable_event EXPORT_SYMBOL vmlinux 0x449ad0a7 memcmp -EXPORT_SYMBOL vmlinux 0x44a4f630 kernel_sendmsg_locked EXPORT_SYMBOL vmlinux 0x44a564e0 pcie_capability_write_word EXPORT_SYMBOL vmlinux 0x44a6e90a irq_cpu_rmap_add EXPORT_SYMBOL vmlinux 0x44aaf30f tsc_khz -EXPORT_SYMBOL vmlinux 0x44ac1b88 tcp_setsockopt +EXPORT_SYMBOL vmlinux 0x44b3d037 dev_get_phys_port_name EXPORT_SYMBOL vmlinux 0x44e867cc trace_event_printf EXPORT_SYMBOL vmlinux 0x44e9a829 match_token +EXPORT_SYMBOL vmlinux 0x44e9ac4e netlink_unicast EXPORT_SYMBOL vmlinux 0x45006cee default_red EXPORT_SYMBOL vmlinux 0x45081703 ec_get_handle +EXPORT_SYMBOL vmlinux 0x45085288 dev_addr_add EXPORT_SYMBOL vmlinux 0x4510d1f4 dcache_dir_open EXPORT_SYMBOL vmlinux 0x452ba683 ipv6_ext_hdr -EXPORT_SYMBOL vmlinux 0x452e8787 inet_put_port EXPORT_SYMBOL vmlinux 0x45324db9 dquot_quota_off -EXPORT_SYMBOL vmlinux 0x453831a2 __dynamic_ibdev_dbg EXPORT_SYMBOL vmlinux 0x453c8403 pci_msi_enabled EXPORT_SYMBOL vmlinux 0x4552a4fd nvdimm_namespace_attach_btt EXPORT_SYMBOL vmlinux 0x45535485 xxh32_update -EXPORT_SYMBOL vmlinux 0x456005ae netdev_emerg -EXPORT_SYMBOL vmlinux 0x45651221 iterate_fd -EXPORT_SYMBOL vmlinux 0x45769c2a tcp_set_rcvlowat EXPORT_SYMBOL vmlinux 0x4578f528 __kfifo_to_user -EXPORT_SYMBOL vmlinux 0x45870963 ppp_register_compressor EXPORT_SYMBOL vmlinux 0x4589acd0 pci_set_master EXPORT_SYMBOL vmlinux 0x45967165 scsi_register_driver +EXPORT_SYMBOL vmlinux 0x459ac250 skb_realloc_headroom EXPORT_SYMBOL vmlinux 0x45cc1d8b posix_test_lock EXPORT_SYMBOL vmlinux 0x45d246da node_to_cpumask_map EXPORT_SYMBOL vmlinux 0x45e8d7b5 native_write_cr0 EXPORT_SYMBOL vmlinux 0x45f0262d acpi_match_device_ids -EXPORT_SYMBOL vmlinux 0x460adbb6 register_gifconf +EXPORT_SYMBOL vmlinux 0x45f77c18 xfrm_trans_queue +EXPORT_SYMBOL vmlinux 0x45f9501e sock_release EXPORT_SYMBOL vmlinux 0x461d16ca sg_nents EXPORT_SYMBOL vmlinux 0x4629334c __preempt_count EXPORT_SYMBOL vmlinux 0x463219fb tcp_hashinfo EXPORT_SYMBOL vmlinux 0x4638b68a blk_queue_max_write_same_sectors +EXPORT_SYMBOL vmlinux 0x464141fa tcp_sock_set_cork EXPORT_SYMBOL vmlinux 0x465e24ff ucs2_utf8size -EXPORT_SYMBOL vmlinux 0x466be962 tcp_read_sock EXPORT_SYMBOL vmlinux 0x466c14a7 __delay EXPORT_SYMBOL vmlinux 0x4673c824 jbd2_journal_inode_ranged_wait EXPORT_SYMBOL vmlinux 0x4677bb0b register_md_personality EXPORT_SYMBOL vmlinux 0x467a6aff pci_stop_and_remove_bus_device EXPORT_SYMBOL vmlinux 0x467df16d netdev_rss_key_fill -EXPORT_SYMBOL vmlinux 0x468692c4 dev_driver_string -EXPORT_SYMBOL vmlinux 0x468af563 fifo_create_dflt EXPORT_SYMBOL vmlinux 0x469a6ec7 tcp_parse_md5sig_option +EXPORT_SYMBOL vmlinux 0x469b50d9 ip_tunnel_encap_del_ops +EXPORT_SYMBOL vmlinux 0x469df723 gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x469e8234 dev_mc_del_global EXPORT_SYMBOL vmlinux 0x46ad975f simple_dir_operations +EXPORT_SYMBOL vmlinux 0x46b6673c security_unix_stream_connect EXPORT_SYMBOL vmlinux 0x46c47fb6 __node_distance EXPORT_SYMBOL vmlinux 0x46cca404 agp_unbind_memory +EXPORT_SYMBOL vmlinux 0x46cd2669 security_path_unlink EXPORT_SYMBOL vmlinux 0x46cf10eb cachemode2protval -EXPORT_SYMBOL vmlinux 0x46f2a110 page_get_link -EXPORT_SYMBOL vmlinux 0x46f2d985 rps_may_expire_flow +EXPORT_SYMBOL vmlinux 0x4710b429 xsk_tx_completed EXPORT_SYMBOL vmlinux 0x4715a909 acpi_load_table +EXPORT_SYMBOL vmlinux 0x471e1de4 nf_log_packet EXPORT_SYMBOL vmlinux 0x472c2135 __scsi_execute +EXPORT_SYMBOL vmlinux 0x47332a85 tcf_chain_get_by_act EXPORT_SYMBOL vmlinux 0x4734ec8b amd_iommu_domain_enable_v2 -EXPORT_SYMBOL vmlinux 0x4767d964 phy_device_free EXPORT_SYMBOL vmlinux 0x47709e42 free_anon_bdev EXPORT_SYMBOL vmlinux 0x477352cc nd_btt_arena_is_valid +EXPORT_SYMBOL vmlinux 0x47757b1b netdev_emerg +EXPORT_SYMBOL vmlinux 0x47758eda tc_setup_cb_replace EXPORT_SYMBOL vmlinux 0x477be977 abort_creds -EXPORT_SYMBOL vmlinux 0x4790ec1d mdiobus_free EXPORT_SYMBOL vmlinux 0x47960bc4 proc_do_large_bitmap EXPORT_SYMBOL vmlinux 0x47a0cdcb mb_cache_entry_find_next +EXPORT_SYMBOL vmlinux 0x47ac0b90 sock_kfree_s EXPORT_SYMBOL vmlinux 0x47ad8988 bio_copy_data_iter -EXPORT_SYMBOL vmlinux 0x47b2df5e udp_ioctl EXPORT_SYMBOL vmlinux 0x47b50ca9 __wait_on_buffer -EXPORT_SYMBOL vmlinux 0x47b998bb dev_mc_add EXPORT_SYMBOL vmlinux 0x47c20f8a refcount_dec_not_one EXPORT_SYMBOL vmlinux 0x47c65bfc unregister_inet6addr_validator_notifier EXPORT_SYMBOL vmlinux 0x47c66098 blk_integrity_unregister @@ -4967,28 +4956,26 @@ EXPORT_SYMBOL vmlinux 0x47d6b667 blk_queue_logical_block_size EXPORT_SYMBOL vmlinux 0x47d8d301 __cond_resched_rwlock_read EXPORT_SYMBOL vmlinux 0x47deeaef key_invalidate -EXPORT_SYMBOL vmlinux 0x47e0be02 sock_register +EXPORT_SYMBOL vmlinux 0x47e24150 keyring_search +EXPORT_SYMBOL vmlinux 0x47f41a0e dst_release EXPORT_SYMBOL vmlinux 0x47ffe0f3 is_nd_dax EXPORT_SYMBOL vmlinux 0x480ba9f5 may_umount_tree -EXPORT_SYMBOL vmlinux 0x4810a2ed gro_cells_init EXPORT_SYMBOL vmlinux 0x48112d76 _raw_read_lock_irq EXPORT_SYMBOL vmlinux 0x48193639 acpi_lid_open EXPORT_SYMBOL vmlinux 0x4829cf6b fscrypt_enqueue_decrypt_work -EXPORT_SYMBOL vmlinux 0x482f37eb phy_connect +EXPORT_SYMBOL vmlinux 0x483107cd phy_ethtool_ksettings_set EXPORT_SYMBOL vmlinux 0x4836fd87 devm_mfd_add_devices -EXPORT_SYMBOL vmlinux 0x483e3d19 gnet_stats_start_copy EXPORT_SYMBOL vmlinux 0x4841bdee strnchr EXPORT_SYMBOL vmlinux 0x48476bcb intel_gtt_insert_page -EXPORT_SYMBOL vmlinux 0x4848997f mdiobus_is_registered_device +EXPORT_SYMBOL vmlinux 0x484aec63 __mdiobus_write EXPORT_SYMBOL vmlinux 0x484f6edf ktime_get_coarse_real_ts64 EXPORT_SYMBOL vmlinux 0x4859b8bb rtc_year_days -EXPORT_SYMBOL vmlinux 0x485a2f45 fib_notifier_ops_unregister EXPORT_SYMBOL vmlinux 0x485d699f vga_switcheroo_client_fb_set EXPORT_SYMBOL vmlinux 0x485dc529 posix_acl_chmod EXPORT_SYMBOL vmlinux 0x486075c8 gen_pool_dma_alloc -EXPORT_SYMBOL vmlinux 0x4860a54b flow_rule_match_ct EXPORT_SYMBOL vmlinux 0x486d3715 phy_modify_paged EXPORT_SYMBOL vmlinux 0x4871d75d clk_hw_register_clkdev +EXPORT_SYMBOL vmlinux 0x489c99e4 xfrm_unregister_type_offload EXPORT_SYMBOL vmlinux 0x489f6e0b rdma_dim EXPORT_SYMBOL vmlinux 0x48a81d7e vfio_group_pin_pages EXPORT_SYMBOL vmlinux 0x48a8d025 devm_kvasprintf @@ -4998,77 +4985,83 @@ EXPORT_SYMBOL vmlinux 0x48bd325d set_page_dirty_lock EXPORT_SYMBOL vmlinux 0x48bd69b2 __tracepoint_spi_transfer_stop EXPORT_SYMBOL vmlinux 0x48c093fb _atomic_dec_and_lock_irqsave +EXPORT_SYMBOL vmlinux 0x48c31366 sock_rfree +EXPORT_SYMBOL vmlinux 0x48c83a5f inetdev_by_index EXPORT_SYMBOL vmlinux 0x48d50e79 amd_iommu_register_ppr_notifier -EXPORT_SYMBOL vmlinux 0x48ebecb9 __ip_mc_dec_group -EXPORT_SYMBOL vmlinux 0x48ee4195 ip6_find_1stfragopt -EXPORT_SYMBOL vmlinux 0x48f9f4ea eth_header_parse +EXPORT_SYMBOL vmlinux 0x48febbe2 mdiobus_alloc_size EXPORT_SYMBOL vmlinux 0x49045426 icmp_err_convert -EXPORT_SYMBOL vmlinux 0x490621b9 netdev_refcnt_read +EXPORT_SYMBOL vmlinux 0x49055167 netdev_unbind_sb_channel EXPORT_SYMBOL vmlinux 0x49280f7b param_set_copystring -EXPORT_SYMBOL vmlinux 0x49289720 tcp_md5_do_del EXPORT_SYMBOL vmlinux 0x4933f3d4 scsi_report_device_reset -EXPORT_SYMBOL vmlinux 0x493990db ip_tunnel_get_iflink +EXPORT_SYMBOL vmlinux 0x493b6bd7 dst_destroy EXPORT_SYMBOL vmlinux 0x4941478b cdrom_number_of_slots EXPORT_SYMBOL vmlinux 0x494e3393 vm_get_page_prot EXPORT_SYMBOL vmlinux 0x495e378d __pv_queued_spin_lock_slowpath EXPORT_SYMBOL vmlinux 0x4967e79f radix_tree_iter_resume EXPORT_SYMBOL vmlinux 0x49840dd5 blk_queue_max_segment_size EXPORT_SYMBOL vmlinux 0x498e9128 ZSTD_findDecompressedSize -EXPORT_SYMBOL vmlinux 0x499d8760 dev_alloc_name +EXPORT_SYMBOL vmlinux 0x499c3e84 mdiobus_scan EXPORT_SYMBOL vmlinux 0x499f0ecf nd_sb_checksum EXPORT_SYMBOL vmlinux 0x49b163b8 acpi_bus_scan -EXPORT_SYMBOL vmlinux 0x49b895ad tcp_ioctl -EXPORT_SYMBOL vmlinux 0x49d9c269 mdio_driver_unregister EXPORT_SYMBOL vmlinux 0x49e33850 dquot_disable EXPORT_SYMBOL vmlinux 0x49f13c69 iov_iter_bvec +EXPORT_SYMBOL vmlinux 0x49fec498 security_sock_graft +EXPORT_SYMBOL vmlinux 0x4a1d3b73 in6_dev_finish_destroy EXPORT_SYMBOL vmlinux 0x4a28df1e devm_pci_remap_cfgspace EXPORT_SYMBOL vmlinux 0x4a3ad70e wait_for_completion_timeout EXPORT_SYMBOL vmlinux 0x4a453f53 iowrite32 -EXPORT_SYMBOL vmlinux 0x4a4a6a25 qdisc_hash_add +EXPORT_SYMBOL vmlinux 0x4a4dbb7d wake_up_process +EXPORT_SYMBOL vmlinux 0x4a591692 tcf_exts_dump_stats +EXPORT_SYMBOL vmlinux 0x4a78cdda netlink_ns_capable EXPORT_SYMBOL vmlinux 0x4a89d823 misc_deregister EXPORT_SYMBOL vmlinux 0x4a8a6949 get_random_bytes_arch +EXPORT_SYMBOL vmlinux 0x4a8f3bc4 tcp_ld_RTO_revert EXPORT_SYMBOL vmlinux 0x4a96a8eb xxh32_digest EXPORT_SYMBOL vmlinux 0x4a9c9769 tty_port_open -EXPORT_SYMBOL vmlinux 0x4a9f34f7 noop_qdisc EXPORT_SYMBOL vmlinux 0x4abb7d10 cpu_rmap_update EXPORT_SYMBOL vmlinux 0x4abd6c99 vga_switcheroo_client_probe_defer EXPORT_SYMBOL vmlinux 0x4ac41f52 generic_file_open -EXPORT_SYMBOL vmlinux 0x4ac4934c phy_print_status EXPORT_SYMBOL vmlinux 0x4ac85e6d __nla_reserve +EXPORT_SYMBOL vmlinux 0x4ac8ff3f qdisc_offload_dump_helper +EXPORT_SYMBOL vmlinux 0x4ad8f1cd phy_attached_info EXPORT_SYMBOL vmlinux 0x4aea463f crc32_le_shift -EXPORT_SYMBOL vmlinux 0x4aeaf5d8 vlan_vid_add EXPORT_SYMBOL vmlinux 0x4af6ddf0 kstrtou16 EXPORT_SYMBOL vmlinux 0x4afb2238 add_wait_queue EXPORT_SYMBOL vmlinux 0x4afe0979 remove_watch_from_object +EXPORT_SYMBOL vmlinux 0x4b04e549 netlink_rcv_skb EXPORT_SYMBOL vmlinux 0x4b085dbf agp3_generic_configure -EXPORT_SYMBOL vmlinux 0x4b101f88 dev_mc_add_excl -EXPORT_SYMBOL vmlinux 0x4b33d0b9 phy_start_aneg -EXPORT_SYMBOL vmlinux 0x4b4e3b74 phy_drivers_unregister +EXPORT_SYMBOL vmlinux 0x4b14e78e sk_reset_timer +EXPORT_SYMBOL vmlinux 0x4b15fc3c mdiobus_write EXPORT_SYMBOL vmlinux 0x4b52b1d2 scsicam_bios_param EXPORT_SYMBOL vmlinux 0x4b5e3a47 __get_user_nocheck_1 EXPORT_SYMBOL vmlinux 0x4b5fd49e dm_kcopyd_do_callback +EXPORT_SYMBOL vmlinux 0x4b6bc81e xfrm_find_acq EXPORT_SYMBOL vmlinux 0x4b6df007 acpi_evaluate_reg EXPORT_SYMBOL vmlinux 0x4b89767e vfio_unpin_pages EXPORT_SYMBOL vmlinux 0x4b93997a pci_bus_alloc_resource EXPORT_SYMBOL vmlinux 0x4ba186bd sync_blockdev -EXPORT_SYMBOL vmlinux 0x4bb1138a sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x4ba22ea2 tcf_qevent_dump EXPORT_SYMBOL vmlinux 0x4bb1bb7d textsearch_unregister EXPORT_SYMBOL vmlinux 0x4bb4e042 inode_io_list_del EXPORT_SYMBOL vmlinux 0x4bb92413 cred_fscmp EXPORT_SYMBOL vmlinux 0x4bbfbe20 current_time EXPORT_SYMBOL vmlinux 0x4bcc2662 mempool_init_node +EXPORT_SYMBOL vmlinux 0x4bd0226a xsk_uses_need_wakeup EXPORT_SYMBOL vmlinux 0x4bd9390e blk_mq_init_allocated_queue EXPORT_SYMBOL vmlinux 0x4bef1c67 empty_name EXPORT_SYMBOL vmlinux 0x4bf2cd30 jbd2_journal_init_dev +EXPORT_SYMBOL vmlinux 0x4c0272d7 ip_sock_set_mtu_discover EXPORT_SYMBOL vmlinux 0x4c07a7e0 acpi_processor_unregister_performance +EXPORT_SYMBOL vmlinux 0x4c0bf650 netdev_lower_get_first_private_rcu EXPORT_SYMBOL vmlinux 0x4c0ea09d iov_iter_gap_alignment -EXPORT_SYMBOL vmlinux 0x4c2b4762 vlan_dev_vlan_proto +EXPORT_SYMBOL vmlinux 0x4c111d44 tc_cleanup_flow_action +EXPORT_SYMBOL vmlinux 0x4c1c7040 udp_seq_ops +EXPORT_SYMBOL vmlinux 0x4c20ea75 xfrm_dst_ifdown EXPORT_SYMBOL vmlinux 0x4c38d4e0 utf8_strncasecmp_folded -EXPORT_SYMBOL vmlinux 0x4c3fba49 keyring_alloc EXPORT_SYMBOL vmlinux 0x4c416eb9 LZ4_decompress_fast -EXPORT_SYMBOL vmlinux 0x4c7a6da7 inet6_getname -EXPORT_SYMBOL vmlinux 0x4c87a958 dcb_ieee_getapp_mask -EXPORT_SYMBOL vmlinux 0x4c93b8d4 xfrm4_protocol_register +EXPORT_SYMBOL vmlinux 0x4c4603c3 __dynamic_ibdev_dbg +EXPORT_SYMBOL vmlinux 0x4c719025 dev_uc_add_excl +EXPORT_SYMBOL vmlinux 0x4c7b7891 register_qdisc EXPORT_SYMBOL vmlinux 0x4c952bdb md_reap_sync_thread EXPORT_SYMBOL vmlinux 0x4c9d28b0 phys_base EXPORT_SYMBOL vmlinux 0x4ca3a5ea is_subdir @@ -5076,117 +5069,117 @@ EXPORT_SYMBOL vmlinux 0x4ca882b5 __SCK__tp_func_kmem_cache_free EXPORT_SYMBOL vmlinux 0x4cb4fe6c jbd2_fc_wait_bufs EXPORT_SYMBOL vmlinux 0x4cba441d iwe_stream_add_event -EXPORT_SYMBOL vmlinux 0x4cc4d22d __zerocopy_sg_from_iter +EXPORT_SYMBOL vmlinux 0x4cc0a673 tcf_idrinfo_destroy EXPORT_SYMBOL vmlinux 0x4cd5bc5e rdmsr_safe_regs EXPORT_SYMBOL vmlinux 0x4ce2a062 dma_set_mask EXPORT_SYMBOL vmlinux 0x4d0222fe kmem_cache_free -EXPORT_SYMBOL vmlinux 0x4d271ea5 sock_from_file EXPORT_SYMBOL vmlinux 0x4d2c7133 acpi_info EXPORT_SYMBOL vmlinux 0x4d2cc909 mfd_cell_enable -EXPORT_SYMBOL vmlinux 0x4d334318 put_cmsg_scm_timestamping -EXPORT_SYMBOL vmlinux 0x4d3ccfc9 sock_no_sendmsg_locked -EXPORT_SYMBOL vmlinux 0x4d50b6c3 genphy_config_eee_advert +EXPORT_SYMBOL vmlinux 0x4d342778 dst_alloc +EXPORT_SYMBOL vmlinux 0x4d4dd853 tcf_block_put EXPORT_SYMBOL vmlinux 0x4d5fc91a seq_pad EXPORT_SYMBOL vmlinux 0x4d6855bc fb_set_cmap EXPORT_SYMBOL vmlinux 0x4d704312 scsi_scan_host EXPORT_SYMBOL vmlinux 0x4d720c37 key_instantiate_and_link EXPORT_SYMBOL vmlinux 0x4d734e60 param_get_ulong +EXPORT_SYMBOL vmlinux 0x4d792e08 set_user_nice +EXPORT_SYMBOL vmlinux 0x4d7efec8 security_binder_transaction EXPORT_SYMBOL vmlinux 0x4d924f20 memremap -EXPORT_SYMBOL vmlinux 0x4d9b47d2 skb_ext_add EXPORT_SYMBOL vmlinux 0x4d9b652b rb_erase EXPORT_SYMBOL vmlinux 0x4d9d5bcd cdev_add +EXPORT_SYMBOL vmlinux 0x4d9d7c37 tcf_em_tree_dump +EXPORT_SYMBOL vmlinux 0x4dac527a gro_cells_init EXPORT_SYMBOL vmlinux 0x4db68b7b config_item_put -EXPORT_SYMBOL vmlinux 0x4dc38dfd netdev_set_sb_channel EXPORT_SYMBOL vmlinux 0x4dc5acfb __SCK__tp_func_kmem_cache_alloc_node EXPORT_SYMBOL vmlinux 0x4dca08ee sync_file_get_fence +EXPORT_SYMBOL vmlinux 0x4dd11ef9 inet6_unregister_protosw EXPORT_SYMBOL vmlinux 0x4dd56273 bdevname +EXPORT_SYMBOL vmlinux 0x4ddb31bd skb_copy_expand EXPORT_SYMBOL vmlinux 0x4de995ec gen_pool_dma_alloc_algo EXPORT_SYMBOL vmlinux 0x4df02057 crc32_be EXPORT_SYMBOL vmlinux 0x4df2ea84 gen_estimator_read -EXPORT_SYMBOL vmlinux 0x4dfb8b4b vfs_unlink +EXPORT_SYMBOL vmlinux 0x4e01b022 try_lookup_one_len EXPORT_SYMBOL vmlinux 0x4e03dbb2 generic_pipe_buf_get -EXPORT_SYMBOL vmlinux 0x4e15ef47 sock_set_rcvbuf EXPORT_SYMBOL vmlinux 0x4e1bac22 _copy_from_iter -EXPORT_SYMBOL vmlinux 0x4e1eb1db udp_push_pending_frames EXPORT_SYMBOL vmlinux 0x4e20bcf8 radix_tree_tag_set EXPORT_SYMBOL vmlinux 0x4e3567f7 match_int EXPORT_SYMBOL vmlinux 0x4e3bc77d vm_map_ram EXPORT_SYMBOL vmlinux 0x4e3e6b9b zpool_unregister_driver EXPORT_SYMBOL vmlinux 0x4e4f0f16 dma_fence_chain_find_seqno EXPORT_SYMBOL vmlinux 0x4e547048 __kmalloc_node_track_caller -EXPORT_SYMBOL vmlinux 0x4e5ad3cc netdev_reset_tc +EXPORT_SYMBOL vmlinux 0x4e61459b skb_copy_and_hash_datagram_iter EXPORT_SYMBOL vmlinux 0x4e68e9be rb_next_postorder -EXPORT_SYMBOL vmlinux 0x4e6d99ea vlan_dev_vlan_id EXPORT_SYMBOL vmlinux 0x4e6e4b41 radix_tree_delete EXPORT_SYMBOL vmlinux 0x4e6e8ea7 fg_console -EXPORT_SYMBOL vmlinux 0x4e75d095 __netdev_notify_peers -EXPORT_SYMBOL vmlinux 0x4e799f08 put_cmsg -EXPORT_SYMBOL vmlinux 0x4e7ae342 tcf_idr_cleanup -EXPORT_SYMBOL vmlinux 0x4e919868 phy_driver_register +EXPORT_SYMBOL vmlinux 0x4e7fbd7b phy_device_register EXPORT_SYMBOL vmlinux 0x4ea25709 dql_reset EXPORT_SYMBOL vmlinux 0x4eadc229 pci_fixup_device +EXPORT_SYMBOL vmlinux 0x4eaf4474 sock_wfree +EXPORT_SYMBOL vmlinux 0x4ec37f3b eth_get_headlen EXPORT_SYMBOL vmlinux 0x4ec54e78 bitmap_to_arr32 +EXPORT_SYMBOL vmlinux 0x4ec9ddfc qdisc_offload_graft_helper +EXPORT_SYMBOL vmlinux 0x4edccf7f inode_permission +EXPORT_SYMBOL vmlinux 0x4eff9187 pneigh_enqueue EXPORT_SYMBOL vmlinux 0x4f018af8 capable_wrt_inode_uidgid -EXPORT_SYMBOL vmlinux 0x4f159924 sock_kzfree_s +EXPORT_SYMBOL vmlinux 0x4f0b73b3 xp_raw_get_data EXPORT_SYMBOL vmlinux 0x4f1cd128 security_tun_dev_create EXPORT_SYMBOL vmlinux 0x4f2250ba rtc_tm_to_time64 -EXPORT_SYMBOL vmlinux 0x4f3f4f45 netdev_crit -EXPORT_SYMBOL vmlinux 0x4f4b853a inet_stream_connect EXPORT_SYMBOL vmlinux 0x4f55166f acpi_set_current_resources -EXPORT_SYMBOL vmlinux 0x4f66f0a6 netlink_capable EXPORT_SYMBOL vmlinux 0x4f711f84 intel_scu_ipc_dev_iowrite8 -EXPORT_SYMBOL vmlinux 0x4f72b33a tcp_ld_RTO_revert EXPORT_SYMBOL vmlinux 0x4f869569 param_ops_short EXPORT_SYMBOL vmlinux 0x4f9ea816 dquot_get_dqblk -EXPORT_SYMBOL vmlinux 0x4fa58e1a dev_loopback_xmit +EXPORT_SYMBOL vmlinux 0x4fa76a42 dev_add_offload +EXPORT_SYMBOL vmlinux 0x4fb0e9b1 sock_no_recvmsg EXPORT_SYMBOL vmlinux 0x4fb27a7f nvdimm_bus_lock +EXPORT_SYMBOL vmlinux 0x4fc229f2 inet_dgram_connect EXPORT_SYMBOL vmlinux 0x4fcc8ad2 ex_handler_uaccess -EXPORT_SYMBOL vmlinux 0x4fd61b53 nf_register_net_hooks EXPORT_SYMBOL vmlinux 0x4fd988db pci_release_region EXPORT_SYMBOL vmlinux 0x4fdb55be nvdimm_namespace_common_probe EXPORT_SYMBOL vmlinux 0x4fdee897 i8042_command +EXPORT_SYMBOL vmlinux 0x4fecd378 page_symlink EXPORT_SYMBOL vmlinux 0x4fed53af dquot_commit +EXPORT_SYMBOL vmlinux 0x4ff35e45 sock_wake_async EXPORT_SYMBOL vmlinux 0x50097088 security_tun_dev_free_security EXPORT_SYMBOL vmlinux 0x5009c71d glob_match EXPORT_SYMBOL vmlinux 0x50100ac6 task_work_add EXPORT_SYMBOL vmlinux 0x5021bd81 _raw_write_lock_irqsave EXPORT_SYMBOL vmlinux 0x5027bde2 acpi_acquire_mutex +EXPORT_SYMBOL vmlinux 0x5041ca0b __dev_get_by_name EXPORT_SYMBOL vmlinux 0x505437a4 dump_align -EXPORT_SYMBOL vmlinux 0x5055f738 ipv6_push_frag_opts +EXPORT_SYMBOL vmlinux 0x505a099c phy_request_interrupt +EXPORT_SYMBOL vmlinux 0x505ebc7f xfrm_state_lookup EXPORT_SYMBOL vmlinux 0x505ecc9e devm_iounmap EXPORT_SYMBOL vmlinux 0x50624917 sha1_init -EXPORT_SYMBOL vmlinux 0x5069e630 dcbnl_cee_notify EXPORT_SYMBOL vmlinux 0x506dff1a __genradix_free -EXPORT_SYMBOL vmlinux 0x508b04df ip_tunnel_parse_protocol -EXPORT_SYMBOL vmlinux 0x50999dc8 netpoll_send_skb +EXPORT_SYMBOL vmlinux 0x507ae493 __genphy_config_aneg +EXPORT_SYMBOL vmlinux 0x50882ada dev_mc_sync EXPORT_SYMBOL vmlinux 0x509afca6 d_exact_alias EXPORT_SYMBOL vmlinux 0x509b64ea acpi_has_method EXPORT_SYMBOL vmlinux 0x50a4698c fb_videomode_to_modelist EXPORT_SYMBOL vmlinux 0x50b73ce2 rfkill_find_type EXPORT_SYMBOL vmlinux 0x50be748d security_ib_free_security EXPORT_SYMBOL vmlinux 0x50c23cac vme_unregister_bridge -EXPORT_SYMBOL vmlinux 0x50c7e3ec __neigh_create EXPORT_SYMBOL vmlinux 0x50cf7585 hex2bin EXPORT_SYMBOL vmlinux 0x50d68377 arch_phys_wc_del EXPORT_SYMBOL vmlinux 0x50e6cfd9 jbd2_journal_errno +EXPORT_SYMBOL vmlinux 0x50f60c21 inet_proto_csum_replace4 EXPORT_SYMBOL vmlinux 0x50f91491 __genradix_ptr +EXPORT_SYMBOL vmlinux 0x50ff7c0c ppp_input_error EXPORT_SYMBOL vmlinux 0x5102a30b do_wait_intr_irq EXPORT_SYMBOL vmlinux 0x510bbedd md_bitmap_close_sync +EXPORT_SYMBOL vmlinux 0x510e33b5 udp_lib_rehash EXPORT_SYMBOL vmlinux 0x5119ded3 remap_pfn_range EXPORT_SYMBOL vmlinux 0x511c3b6b param_get_string -EXPORT_SYMBOL vmlinux 0x5126df4d inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x51211c25 dns_query EXPORT_SYMBOL vmlinux 0x51313579 generic_file_splice_read EXPORT_SYMBOL vmlinux 0x513efd71 ps2_command EXPORT_SYMBOL vmlinux 0x515083bf acpi_release_mutex EXPORT_SYMBOL vmlinux 0x5156804c pci_resize_resource EXPORT_SYMBOL vmlinux 0x51572cf6 sg_miter_skip EXPORT_SYMBOL vmlinux 0x51641162 opal_unlock_from_suspend -EXPORT_SYMBOL vmlinux 0x5167d2aa inet6_add_offload -EXPORT_SYMBOL vmlinux 0x51748ed0 netdev_txq_to_tc -EXPORT_SYMBOL vmlinux 0x5188879c ip6_dst_alloc +EXPORT_SYMBOL vmlinux 0x518d805e scm_fp_dup EXPORT_SYMBOL vmlinux 0x519820b2 blk_cleanup_queue EXPORT_SYMBOL vmlinux 0x519a7958 md_bitmap_cond_end_sync -EXPORT_SYMBOL vmlinux 0x519f14d6 neigh_destroy EXPORT_SYMBOL vmlinux 0x51a511eb _raw_write_lock_bh EXPORT_SYMBOL vmlinux 0x51cc0942 disk_start_io_acct EXPORT_SYMBOL vmlinux 0x51d12d4e acpi_pci_disabled @@ -5194,20 +5187,19 @@ EXPORT_SYMBOL vmlinux 0x51f298e0 intel_scu_ipc_dev_ioread8 EXPORT_SYMBOL vmlinux 0x51f5b061 simple_rename EXPORT_SYMBOL vmlinux 0x51f86a1a blk_limits_io_opt -EXPORT_SYMBOL vmlinux 0x51fe2a24 netdev_alert -EXPORT_SYMBOL vmlinux 0x5208b8c4 skb_recv_datagram -EXPORT_SYMBOL vmlinux 0x520be2dc skb_abort_seq_read +EXPORT_SYMBOL vmlinux 0x52286beb inet6_release EXPORT_SYMBOL vmlinux 0x5232e40f d_alloc EXPORT_SYMBOL vmlinux 0x5244245f mipi_dsi_set_maximum_return_packet_size -EXPORT_SYMBOL vmlinux 0x524f8852 kernel_sendpage_locked EXPORT_SYMBOL vmlinux 0x525bb14c uart_suspend_port EXPORT_SYMBOL vmlinux 0x52698294 iov_iter_advance EXPORT_SYMBOL vmlinux 0x526eef2c hdmi_vendor_infoframe_pack -EXPORT_SYMBOL vmlinux 0x527410aa tcf_em_register +EXPORT_SYMBOL vmlinux 0x527c7ed0 ip_fraglist_prepare EXPORT_SYMBOL vmlinux 0x527dcdb0 set_pages_uc EXPORT_SYMBOL vmlinux 0x5296bfd2 param_get_charp EXPORT_SYMBOL vmlinux 0x52983a4f vme_master_write EXPORT_SYMBOL vmlinux 0x529e949e generic_read_dir +EXPORT_SYMBOL vmlinux 0x52ac27e2 ip_ct_attach +EXPORT_SYMBOL vmlinux 0x52b77ef6 xfrm6_rcv_tnl EXPORT_SYMBOL vmlinux 0x52c8f411 blk_rq_map_user EXPORT_SYMBOL vmlinux 0x52d717da xz_dec_init EXPORT_SYMBOL vmlinux 0x52dcb85b __traceiter_kmalloc @@ -5217,52 +5209,47 @@ EXPORT_SYMBOL vmlinux 0x530b1e98 pm_suspend EXPORT_SYMBOL vmlinux 0x530e10cd mark_buffer_dirty_inode EXPORT_SYMBOL vmlinux 0x53126ecc __percpu_counter_sum +EXPORT_SYMBOL vmlinux 0x531906ee vif_device_init EXPORT_SYMBOL vmlinux 0x531b604e __virt_addr_valid -EXPORT_SYMBOL vmlinux 0x531ce245 skb_put EXPORT_SYMBOL vmlinux 0x533206b5 sort_r EXPORT_SYMBOL vmlinux 0x5338184f ethtool_sprintf +EXPORT_SYMBOL vmlinux 0x53412a54 lookup_positive_unlocked EXPORT_SYMBOL vmlinux 0x53421085 blk_pm_runtime_init +EXPORT_SYMBOL vmlinux 0x53554705 __skb_gso_segment EXPORT_SYMBOL vmlinux 0x53569707 this_cpu_off -EXPORT_SYMBOL vmlinux 0x5370c407 tso_start EXPORT_SYMBOL vmlinux 0x537a6e7a d_set_fallthru EXPORT_SYMBOL vmlinux 0x53903d51 devm_of_find_backlight EXPORT_SYMBOL vmlinux 0x53a1372e kthread_bind EXPORT_SYMBOL vmlinux 0x53aa969b d_drop +EXPORT_SYMBOL vmlinux 0x53aec9a4 dev_getfirstbyhwtype EXPORT_SYMBOL vmlinux 0x53aed524 devm_get_clk_from_child EXPORT_SYMBOL vmlinux 0x53b954a2 up_read EXPORT_SYMBOL vmlinux 0x53d1e213 dma_pool_create -EXPORT_SYMBOL vmlinux 0x53d680a4 netif_set_real_num_tx_queues EXPORT_SYMBOL vmlinux 0x53e84435 setup_arg_pages EXPORT_SYMBOL vmlinux 0x53fa36d1 ZSTD_decompressBlock +EXPORT_SYMBOL vmlinux 0x5410b08f ndo_dflt_fdb_del EXPORT_SYMBOL vmlinux 0x54175c5f acpi_read_bit_register -EXPORT_SYMBOL vmlinux 0x5421c996 skb_dequeue EXPORT_SYMBOL vmlinux 0x5424eabb generic_pipe_buf_try_steal EXPORT_SYMBOL vmlinux 0x542be051 __x86_indirect_alt_jmp_rax -EXPORT_SYMBOL vmlinux 0x54363058 seg6_hmac_net_init EXPORT_SYMBOL vmlinux 0x54392a9f tty_hung_up_p -EXPORT_SYMBOL vmlinux 0x543afa2f lock_sock_fast EXPORT_SYMBOL vmlinux 0x543cb5e3 is_nd_pfn EXPORT_SYMBOL vmlinux 0x543ef284 seq_hlist_start -EXPORT_SYMBOL vmlinux 0x544128db nf_log_unset EXPORT_SYMBOL vmlinux 0x5442b757 generic_remap_file_range_prep -EXPORT_SYMBOL vmlinux 0x5451c152 gnet_stats_copy_queue +EXPORT_SYMBOL vmlinux 0x544f7d96 tcf_idr_release +EXPORT_SYMBOL vmlinux 0x5455ba70 dev_get_port_parent_id EXPORT_SYMBOL vmlinux 0x54570b24 __SCK__tp_func_dma_fence_enable_signal +EXPORT_SYMBOL vmlinux 0x5461a6f8 dev_get_by_index_rcu EXPORT_SYMBOL vmlinux 0x547e3344 acpi_disable -EXPORT_SYMBOL vmlinux 0x54836cde nf_log_register -EXPORT_SYMBOL vmlinux 0x5484de8a __cgroup_bpf_run_filter_skb -EXPORT_SYMBOL vmlinux 0x548d9a30 fwnode_irq_get EXPORT_SYMBOL vmlinux 0x549357c8 vc_resize EXPORT_SYMBOL vmlinux 0x54b22bb1 __SCT__tp_func_mmap_lock_acquire_returned -EXPORT_SYMBOL vmlinux 0x54d728be skb_eth_push +EXPORT_SYMBOL vmlinux 0x54cc696a phy_do_ioctl_running EXPORT_SYMBOL vmlinux 0x54deacfa touchscreen_report_pos EXPORT_SYMBOL vmlinux 0x54e6fcdd net_enable_timestamp EXPORT_SYMBOL vmlinux 0x54eed555 blk_rq_count_integrity_sg -EXPORT_SYMBOL vmlinux 0x54f7b1e5 dev_get_by_name EXPORT_SYMBOL vmlinux 0x5506b8f7 netlbl_bitmap_setbit EXPORT_SYMBOL vmlinux 0x55179260 sync_inode EXPORT_SYMBOL vmlinux 0x551bd071 __rb_erase_color -EXPORT_SYMBOL vmlinux 0x552a2fe8 genlmsg_put -EXPORT_SYMBOL vmlinux 0x55341878 tcf_action_exec +EXPORT_SYMBOL vmlinux 0x552dc354 udp6_set_csum EXPORT_SYMBOL vmlinux 0x553cb598 scsi_device_resume EXPORT_SYMBOL vmlinux 0x554ae3a4 irq_poll_sched EXPORT_SYMBOL vmlinux 0x5554c8be dump_emit @@ -5270,12 +5257,13 @@ EXPORT_SYMBOL vmlinux 0x556b5d62 __kfifo_dma_in_prepare_r EXPORT_SYMBOL vmlinux 0x556cca46 x86_apple_machine EXPORT_SYMBOL vmlinux 0x558b281d aes_expandkey +EXPORT_SYMBOL vmlinux 0x559810cb xfrm_unregister_type EXPORT_SYMBOL vmlinux 0x559981d2 tag_pages_for_writeback -EXPORT_SYMBOL vmlinux 0x55a300ed flow_indr_dev_setup_offload -EXPORT_SYMBOL vmlinux 0x55b1c5fe inet_proto_csum_replace4 +EXPORT_SYMBOL vmlinux 0x559ea209 xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x55ba9f03 netif_device_detach EXPORT_SYMBOL vmlinux 0x55cebb28 serio_unregister_child_port -EXPORT_SYMBOL vmlinux 0x55d790ca sock_no_socketpair -EXPORT_SYMBOL vmlinux 0x55d818ce dev_queue_xmit +EXPORT_SYMBOL vmlinux 0x55d18359 qdisc_tree_reduce_backlog +EXPORT_SYMBOL vmlinux 0x55d526e3 security_inode_notifysecctx EXPORT_SYMBOL vmlinux 0x55ddfc99 mount_subtree EXPORT_SYMBOL vmlinux 0x55e31703 ethtool_convert_link_mode_to_legacy_u32 EXPORT_SYMBOL vmlinux 0x55f704a5 loop_register_transfer @@ -5284,36 +5272,31 @@ EXPORT_SYMBOL vmlinux 0x56185269 mipi_dsi_generic_read EXPORT_SYMBOL vmlinux 0x5625fcf2 bdgrab EXPORT_SYMBOL vmlinux 0x562e6f12 dquot_claim_space_nodirty -EXPORT_SYMBOL vmlinux 0x562e7049 kernel_sock_shutdown EXPORT_SYMBOL vmlinux 0x5635a60a vmalloc_user +EXPORT_SYMBOL vmlinux 0x563a93ea udp_sendmsg EXPORT_SYMBOL vmlinux 0x56470118 __warn_printk EXPORT_SYMBOL vmlinux 0x564f7608 acpi_reconfig_notifier_register EXPORT_SYMBOL vmlinux 0x5655e148 dma_resv_add_excl_fence EXPORT_SYMBOL vmlinux 0x565d0a73 ata_link_printk -EXPORT_SYMBOL vmlinux 0x566611d7 ipmr_rule_default -EXPORT_SYMBOL vmlinux 0x566cd807 tcp_md5_do_add -EXPORT_SYMBOL vmlinux 0x5672d181 tcp_md5_hash_skb_data -EXPORT_SYMBOL vmlinux 0x56773fb3 phy_register_fixup_for_uid +EXPORT_SYMBOL vmlinux 0x565f21b2 netlink_kernel_release +EXPORT_SYMBOL vmlinux 0x56717e0b rt6_lookup +EXPORT_SYMBOL vmlinux 0x567ac9bf sk_dst_check EXPORT_SYMBOL vmlinux 0x56802ae8 rps_cpu_mask -EXPORT_SYMBOL vmlinux 0x569e907d dev_addr_del -EXPORT_SYMBOL vmlinux 0x56a61e2e tcp_sock_set_quickack -EXPORT_SYMBOL vmlinux 0x56c60d71 skb_copy_expand EXPORT_SYMBOL vmlinux 0x56c8799d scsi_kunmap_atomic_sg -EXPORT_SYMBOL vmlinux 0x56cb0829 netif_set_xps_queue EXPORT_SYMBOL vmlinux 0x56dc30a3 freeze_bdev -EXPORT_SYMBOL vmlinux 0x56e33393 fib6_info_hw_flags_set EXPORT_SYMBOL vmlinux 0x56ed189d cpufreq_get_policy EXPORT_SYMBOL vmlinux 0x56f3e040 nd_region_to_nstype -EXPORT_SYMBOL vmlinux 0x571636ef tcf_idr_check_alloc -EXPORT_SYMBOL vmlinux 0x571fadcc init_net EXPORT_SYMBOL vmlinux 0x57245163 kernel_read +EXPORT_SYMBOL vmlinux 0x57423063 __ip_dev_find EXPORT_SYMBOL vmlinux 0x574c2e74 bitmap_release_region +EXPORT_SYMBOL vmlinux 0x5756f9f2 eth_header_cache EXPORT_SYMBOL vmlinux 0x57575f08 dmaengine_put +EXPORT_SYMBOL vmlinux 0x575bf313 phy_driver_register EXPORT_SYMBOL vmlinux 0x5760f4f3 param_set_int EXPORT_SYMBOL vmlinux 0x576610fb remove_proc_entry EXPORT_SYMBOL vmlinux 0x576a855b tty_driver_flush_buffer EXPORT_SYMBOL vmlinux 0x577c9339 pci_enable_wake -EXPORT_SYMBOL vmlinux 0x57822a71 netdev_info +EXPORT_SYMBOL vmlinux 0x57891a63 ip_cmsg_recv_offset EXPORT_SYMBOL vmlinux 0x5789621a generic_cont_expand_simple EXPORT_SYMBOL vmlinux 0x578a408b ZSTD_initDCtx EXPORT_SYMBOL vmlinux 0x578c6b68 __mod_zone_page_state @@ -5322,40 +5305,40 @@ EXPORT_SYMBOL vmlinux 0x57a2f59a config_group_init EXPORT_SYMBOL vmlinux 0x57bc19d2 down_write EXPORT_SYMBOL vmlinux 0x57c54474 generic_listxattr +EXPORT_SYMBOL vmlinux 0x57c7e78a netdev_has_any_upper_dev EXPORT_SYMBOL vmlinux 0x57d04fd9 pcie_capability_read_dword -EXPORT_SYMBOL vmlinux 0x57e5eb52 security_tun_dev_attach EXPORT_SYMBOL vmlinux 0x5801d240 __tracepoint_kmem_cache_alloc_node EXPORT_SYMBOL vmlinux 0x581156a2 forget_cached_acl EXPORT_SYMBOL vmlinux 0x5818fe3c posix_acl_from_mode EXPORT_SYMBOL vmlinux 0x581f5719 fs_param_is_u64 EXPORT_SYMBOL vmlinux 0x581f98da zlib_inflate EXPORT_SYMBOL vmlinux 0x582b6275 xfrm_if_unregister_cb -EXPORT_SYMBOL vmlinux 0x5832b41d dev_addr_init EXPORT_SYMBOL vmlinux 0x5838f6c9 rtc_valid_tm -EXPORT_SYMBOL vmlinux 0x585094b3 skb_csum_hwoffload_help -EXPORT_SYMBOL vmlinux 0x58668d83 inet_add_protocol +EXPORT_SYMBOL vmlinux 0x584a6353 dev_addr_flush EXPORT_SYMBOL vmlinux 0x5872f4d8 put_disk EXPORT_SYMBOL vmlinux 0x587f22d7 devmap_managed_key -EXPORT_SYMBOL vmlinux 0x588067b3 __dynamic_dev_dbg EXPORT_SYMBOL vmlinux 0x588bcd52 md_integrity_add_rdev -EXPORT_SYMBOL vmlinux 0x589d2254 phy_mac_interrupt EXPORT_SYMBOL vmlinux 0x589d651d dma_unmap_sg_attrs EXPORT_SYMBOL vmlinux 0x58acf24b mdiobus_register_board_info -EXPORT_SYMBOL vmlinux 0x58b2ac6c netpoll_setup EXPORT_SYMBOL vmlinux 0x58b4645c dev_close_many EXPORT_SYMBOL vmlinux 0x58b73bc7 match_wildcard EXPORT_SYMBOL vmlinux 0x58e3306d bit_wait_io EXPORT_SYMBOL vmlinux 0x59234d70 uart_match_port EXPORT_SYMBOL vmlinux 0x5926c36d inode_owner_or_capable +EXPORT_SYMBOL vmlinux 0x59306bba skb_checksum EXPORT_SYMBOL vmlinux 0x593c1bac __x86_indirect_thunk_rbx EXPORT_SYMBOL vmlinux 0x593edc4b cpu_tlbstate_shared EXPORT_SYMBOL vmlinux 0x594bf15b ioport_map +EXPORT_SYMBOL vmlinux 0x594d9f85 inet_dev_addr_type +EXPORT_SYMBOL vmlinux 0x594fcde1 xfrm_if_register_cb EXPORT_SYMBOL vmlinux 0x5953f108 __x86_indirect_alt_call_r10 +EXPORT_SYMBOL vmlinux 0x59566ed3 udp_ioctl EXPORT_SYMBOL vmlinux 0x59588850 vsscanf EXPORT_SYMBOL vmlinux 0x595d8002 hdmi_infoframe_pack EXPORT_SYMBOL vmlinux 0x5963116d bio_devname +EXPORT_SYMBOL vmlinux 0x596f58b5 phy_free_interrupt EXPORT_SYMBOL vmlinux 0x59799107 debugfs_create_automount -EXPORT_SYMBOL vmlinux 0x597cbb9c seg6_hmac_info_lookup +EXPORT_SYMBOL vmlinux 0x59854e58 ip_tunnel_get_link_net EXPORT_SYMBOL vmlinux 0x59893050 fs_param_is_blob EXPORT_SYMBOL vmlinux 0x598fa9f0 devfreq_remove_governor EXPORT_SYMBOL vmlinux 0x599fb41c kvmalloc_node @@ -5363,39 +5346,42 @@ EXPORT_SYMBOL vmlinux 0x59ae903a inc_nlink EXPORT_SYMBOL vmlinux 0x59b4ac3e tcp_memory_allocated EXPORT_SYMBOL vmlinux 0x59bd6799 unregister_nls +EXPORT_SYMBOL vmlinux 0x59c2cd09 xfrm_state_update EXPORT_SYMBOL vmlinux 0x59c3677c ns_capable +EXPORT_SYMBOL vmlinux 0x59c67644 vlan_vid_del +EXPORT_SYMBOL vmlinux 0x59d5b6f4 udplite_prot EXPORT_SYMBOL vmlinux 0x59e8b167 seq_read_iter EXPORT_SYMBOL vmlinux 0x59efebe9 mark_buffer_write_io_error EXPORT_SYMBOL vmlinux 0x59f7b890 fc_remote_port_delete +EXPORT_SYMBOL vmlinux 0x5a01ac2d wireless_send_event EXPORT_SYMBOL vmlinux 0x5a0b73d0 zlib_deflateInit2 EXPORT_SYMBOL vmlinux 0x5a11b158 pci_msix_vec_count EXPORT_SYMBOL vmlinux 0x5a22f955 __blockdev_direct_IO +EXPORT_SYMBOL vmlinux 0x5a262dd1 inet6_csk_route_req EXPORT_SYMBOL vmlinux 0x5a290250 hdmi_drm_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0x5a2e234d tcp_parse_options EXPORT_SYMBOL vmlinux 0x5a44f8cb __crypto_memneq EXPORT_SYMBOL vmlinux 0x5a4896a8 __put_user_2 EXPORT_SYMBOL vmlinux 0x5a4d313e gf128mul_4k_lle EXPORT_SYMBOL vmlinux 0x5a5a2271 __cpu_online_mask EXPORT_SYMBOL vmlinux 0x5a5ba603 iov_iter_alignment EXPORT_SYMBOL vmlinux 0x5a5f98bc ps2_end_command -EXPORT_SYMBOL vmlinux 0x5a6a520f mdiobus_register_device EXPORT_SYMBOL vmlinux 0x5a6f813c param_ops_uint EXPORT_SYMBOL vmlinux 0x5a8ae15a ZSTD_initDDict EXPORT_SYMBOL vmlinux 0x5a921311 strncmp EXPORT_SYMBOL vmlinux 0x5a9a8006 dquot_quota_sync EXPORT_SYMBOL vmlinux 0x5aa84ffd security_cred_getsecid -EXPORT_SYMBOL vmlinux 0x5ad2e1d6 inet_del_offload +EXPORT_SYMBOL vmlinux 0x5abeac9d __sk_mem_schedule EXPORT_SYMBOL vmlinux 0x5ae1154b __traceiter_kfree -EXPORT_SYMBOL vmlinux 0x5aeb4a37 inet_frag_pull_head +EXPORT_SYMBOL vmlinux 0x5ae6ce8f vfs_create EXPORT_SYMBOL vmlinux 0x5af03eea vfs_dedupe_file_range -EXPORT_SYMBOL vmlinux 0x5af21317 netlbl_calipso_ops_register EXPORT_SYMBOL vmlinux 0x5af81f54 dmam_alloc_attrs EXPORT_SYMBOL vmlinux 0x5afbd6ed insert_inode_locked -EXPORT_SYMBOL vmlinux 0x5b04e7c0 sock_create_kern -EXPORT_SYMBOL vmlinux 0x5b0932b5 genl_notify EXPORT_SYMBOL vmlinux 0x5b15f07e mipi_dsi_dcs_set_display_on -EXPORT_SYMBOL vmlinux 0x5b2513b7 fd_install +EXPORT_SYMBOL vmlinux 0x5b183acf ip6_dst_hoplimit EXPORT_SYMBOL vmlinux 0x5b2f27fb do_wait_intr EXPORT_SYMBOL vmlinux 0x5b2f42dc pci_back_from_sleep +EXPORT_SYMBOL vmlinux 0x5b3187a7 ip_mc_inc_group EXPORT_SYMBOL vmlinux 0x5b36d5dd utf8agemax EXPORT_SYMBOL vmlinux 0x5b3e282f xa_store EXPORT_SYMBOL vmlinux 0x5b56860c vm_munmap @@ -5403,15 +5389,15 @@ EXPORT_SYMBOL vmlinux 0x5b641283 arch_phys_wc_add EXPORT_SYMBOL vmlinux 0x5b6f0f9e cdev_set_parent EXPORT_SYMBOL vmlinux 0x5b89b54b fiemap_prep -EXPORT_SYMBOL vmlinux 0x5b94a27c rtnl_kfree_skbs EXPORT_SYMBOL vmlinux 0x5b9fd870 devm_clk_get EXPORT_SYMBOL vmlinux 0x5bd4ff88 flow_action_cookie_create -EXPORT_SYMBOL vmlinux 0x5bdef808 flow_rule_match_ports +EXPORT_SYMBOL vmlinux 0x5bdb7fbf arp_tbl EXPORT_SYMBOL vmlinux 0x5be63c5b crc32c_csum_stub -EXPORT_SYMBOL vmlinux 0x5c15d619 dev_close EXPORT_SYMBOL vmlinux 0x5c26a53b wait_for_completion_io_timeout EXPORT_SYMBOL vmlinux 0x5c270c38 devm_mdiobus_alloc_size +EXPORT_SYMBOL vmlinux 0x5c32b852 __traceiter_spi_transfer_stop EXPORT_SYMBOL vmlinux 0x5c330e7f scsi_unblock_requests +EXPORT_SYMBOL vmlinux 0x5c3a4890 tcf_qevent_handle EXPORT_SYMBOL vmlinux 0x5c3a9a52 ata_dev_printk EXPORT_SYMBOL vmlinux 0x5c3c7387 kstrtoull EXPORT_SYMBOL vmlinux 0x5c3e5dea ns_capable_setid @@ -5419,77 +5405,76 @@ EXPORT_SYMBOL vmlinux 0x5c619a37 setattr_copy EXPORT_SYMBOL vmlinux 0x5c6623f6 __filemap_set_wb_err EXPORT_SYMBOL vmlinux 0x5c68d9b5 acpi_dev_get_next_match_dev -EXPORT_SYMBOL vmlinux 0x5c719990 dev_remove_pack EXPORT_SYMBOL vmlinux 0x5c7ee7ae vga_switcheroo_fini_domain_pm_ops +EXPORT_SYMBOL vmlinux 0x5c90b522 ip6_err_gen_icmpv6_unreach +EXPORT_SYMBOL vmlinux 0x5c990cec genl_notify +EXPORT_SYMBOL vmlinux 0x5cab16d0 sock_recvmsg EXPORT_SYMBOL vmlinux 0x5cb38c3d seq_open EXPORT_SYMBOL vmlinux 0x5cb7fb36 __x86_indirect_alt_jmp_r12 EXPORT_SYMBOL vmlinux 0x5cbea6bc xattr_supported_namespace EXPORT_SYMBOL vmlinux 0x5cf53ce2 input_free_minor EXPORT_SYMBOL vmlinux 0x5cfb26a0 acpi_enter_sleep_state EXPORT_SYMBOL vmlinux 0x5cfd5722 dquot_drop -EXPORT_SYMBOL vmlinux 0x5d05422c tcp_sock_set_nodelay -EXPORT_SYMBOL vmlinux 0x5d07609d fs_context_for_reconfigure -EXPORT_SYMBOL vmlinux 0x5d17122a vfs_mkdir +EXPORT_SYMBOL vmlinux 0x5d2e636d netdev_set_num_tc EXPORT_SYMBOL vmlinux 0x5d33c533 nd_device_register -EXPORT_SYMBOL vmlinux 0x5d3874b1 netif_tx_wake_queue EXPORT_SYMBOL vmlinux 0x5d3e994c eisa_driver_register EXPORT_SYMBOL vmlinux 0x5d49aabc init_wait_var_entry -EXPORT_SYMBOL vmlinux 0x5d665c81 qdisc_watchdog_init_clockid -EXPORT_SYMBOL vmlinux 0x5dbeb7d2 udp_seq_start -EXPORT_SYMBOL vmlinux 0x5dd13cec xfrm_find_acq -EXPORT_SYMBOL vmlinux 0x5deb7bdf sock_i_ino +EXPORT_SYMBOL vmlinux 0x5d63e126 dst_init +EXPORT_SYMBOL vmlinux 0x5de9b16b inet_proto_csum_replace16 +EXPORT_SYMBOL vmlinux 0x5dfd90e8 phy_start EXPORT_SYMBOL vmlinux 0x5dff0fd9 locks_remove_posix EXPORT_SYMBOL vmlinux 0x5dffb495 ZSTD_decompress_usingDDict -EXPORT_SYMBOL vmlinux 0x5e020ed2 tcp_rcv_established EXPORT_SYMBOL vmlinux 0x5e06bc5c refcount_dec_and_lock EXPORT_SYMBOL vmlinux 0x5e0ccb9f sha1_transform EXPORT_SYMBOL vmlinux 0x5e132868 input_set_abs_params EXPORT_SYMBOL vmlinux 0x5e1c76dc ps2_sendbyte +EXPORT_SYMBOL vmlinux 0x5e1ce5e8 ppp_output_wakeup +EXPORT_SYMBOL vmlinux 0x5e290c2d unlock_rename EXPORT_SYMBOL vmlinux 0x5e332b52 __var_waitqueue EXPORT_SYMBOL vmlinux 0x5e373fb4 gf128mul_64k_bbe EXPORT_SYMBOL vmlinux 0x5e3e1fbc phy_read_paged -EXPORT_SYMBOL vmlinux 0x5e409585 tcp_enter_cwr +EXPORT_SYMBOL vmlinux 0x5e5dec9a _dev_emerg +EXPORT_SYMBOL vmlinux 0x5e73889f phy_ethtool_set_wol EXPORT_SYMBOL vmlinux 0x5e855e56 gen_pool_first_fit_align +EXPORT_SYMBOL vmlinux 0x5e942d7a sk_stop_timer EXPORT_SYMBOL vmlinux 0x5e95b1cd current_umask -EXPORT_SYMBOL vmlinux 0x5e9ec5da flow_rule_match_vlan EXPORT_SYMBOL vmlinux 0x5eb24829 dm_shift_arg +EXPORT_SYMBOL vmlinux 0x5ebb1204 inet_reqsk_alloc EXPORT_SYMBOL vmlinux 0x5ec4aee6 put_sg_io_hdr EXPORT_SYMBOL vmlinux 0x5ec66285 dma_sync_sg_for_device EXPORT_SYMBOL vmlinux 0x5ec92bba forget_all_cached_acls EXPORT_SYMBOL vmlinux 0x5ed040b0 pm_set_vt_switch EXPORT_SYMBOL vmlinux 0x5ed2969e string_escape_mem_ascii EXPORT_SYMBOL vmlinux 0x5ed90adc int_to_scsilun +EXPORT_SYMBOL vmlinux 0x5edeaaf2 phy_init_eee EXPORT_SYMBOL vmlinux 0x5edf0040 sg_miter_stop EXPORT_SYMBOL vmlinux 0x5ee16721 flow_get_u32_src -EXPORT_SYMBOL vmlinux 0x5ee219d7 register_netdevice_notifier_net EXPORT_SYMBOL vmlinux 0x5eed9e23 scsi_bios_ptable EXPORT_SYMBOL vmlinux 0x5ef6a672 gen_pool_for_each_chunk -EXPORT_SYMBOL vmlinux 0x5ef93bdc ipv6_chk_addr EXPORT_SYMBOL vmlinux 0x5efde8e6 proc_doulongvec_ms_jiffies_minmax +EXPORT_SYMBOL vmlinux 0x5f033406 skb_dump EXPORT_SYMBOL vmlinux 0x5f098b2a in6addr_interfacelocal_allrouters -EXPORT_SYMBOL vmlinux 0x5f129093 init_task +EXPORT_SYMBOL vmlinux 0x5f0c8c67 tcf_exts_change +EXPORT_SYMBOL vmlinux 0x5f0d9da6 flow_rule_match_ipv4_addrs +EXPORT_SYMBOL vmlinux 0x5f27cb44 tcf_action_set_ctrlact +EXPORT_SYMBOL vmlinux 0x5f2f574b phy_get_eee_err EXPORT_SYMBOL vmlinux 0x5f4b1d8b readahead_expand +EXPORT_SYMBOL vmlinux 0x5f4f1541 gnet_stats_start_copy_compat EXPORT_SYMBOL vmlinux 0x5f56663b rdmsrl_on_cpu -EXPORT_SYMBOL vmlinux 0x5f585013 phy_validate_pause EXPORT_SYMBOL vmlinux 0x5f63326b devm_clk_release_clkdev -EXPORT_SYMBOL vmlinux 0x5f7673ab netif_tx_stop_all_queues -EXPORT_SYMBOL vmlinux 0x5f7d850c lock_sock_nested -EXPORT_SYMBOL vmlinux 0x5f81da55 sock_pfree EXPORT_SYMBOL vmlinux 0x5f93525c acpi_extract_package EXPORT_SYMBOL vmlinux 0x5f974304 open_exec EXPORT_SYMBOL vmlinux 0x5f99383a ioread64_hi_lo -EXPORT_SYMBOL vmlinux 0x5fa4d021 path_put EXPORT_SYMBOL vmlinux 0x5fa688ec irq_domain_set_info EXPORT_SYMBOL vmlinux 0x5fa73dfb bio_integrity_trim -EXPORT_SYMBOL vmlinux 0x5faccb59 ethtool_rx_flow_rule_destroy +EXPORT_SYMBOL vmlinux 0x5fa7414a genphy_suspend EXPORT_SYMBOL vmlinux 0x5fc67252 ioread16_rep EXPORT_SYMBOL vmlinux 0x5fc72f0e alloc_pages_exact EXPORT_SYMBOL vmlinux 0x5fc9e089 pci_irq_get_affinity +EXPORT_SYMBOL vmlinux 0x5fd067bd reuseport_attach_prog EXPORT_SYMBOL vmlinux 0x5fe13529 __SCT__tp_func_spi_transfer_start -EXPORT_SYMBOL vmlinux 0x5fedd129 ip_sock_set_freebind -EXPORT_SYMBOL vmlinux 0x5feee24e skb_clone EXPORT_SYMBOL vmlinux 0x5ff9eb0e lockref_mark_dead -EXPORT_SYMBOL vmlinux 0x5ff9fb92 netlink_set_err +EXPORT_SYMBOL vmlinux 0x6002ec13 ip_sock_set_freebind EXPORT_SYMBOL vmlinux 0x6005c351 zpool_has_pool EXPORT_SYMBOL vmlinux 0x600683d3 do_unblank_screen EXPORT_SYMBOL vmlinux 0x601f665f dm_io_client_create @@ -5498,7 +5483,9 @@ EXPORT_SYMBOL vmlinux 0x604c7a3b tty_flip_buffer_push EXPORT_SYMBOL vmlinux 0x605790dc fiemap_fill_next_extent EXPORT_SYMBOL vmlinux 0x605c6bb1 kobject_get +EXPORT_SYMBOL vmlinux 0x6071e880 ip_options_compile EXPORT_SYMBOL vmlinux 0x60749fe4 migrate_vma_finalize +EXPORT_SYMBOL vmlinux 0x60852359 security_inode_invalidate_secctx EXPORT_SYMBOL vmlinux 0x608741b5 __init_swait_queue_head EXPORT_SYMBOL vmlinux 0x6089033a iter_file_splice_write EXPORT_SYMBOL vmlinux 0x608ac06b padata_do_parallel @@ -5508,145 +5495,145 @@ EXPORT_SYMBOL vmlinux 0x609bcd98 in6_pton EXPORT_SYMBOL vmlinux 0x609f1c7e synchronize_net EXPORT_SYMBOL vmlinux 0x60a32ea9 pm_power_off +EXPORT_SYMBOL vmlinux 0x60b2dd0a inet_addr_type EXPORT_SYMBOL vmlinux 0x60b3071f neigh_proc_dointvec -EXPORT_SYMBOL vmlinux 0x60b4fd55 consume_skb -EXPORT_SYMBOL vmlinux 0x60cddb53 _dev_err +EXPORT_SYMBOL vmlinux 0x60b9b698 kernel_getsockname EXPORT_SYMBOL vmlinux 0x60d8ab30 vme_lm_get -EXPORT_SYMBOL vmlinux 0x60e33d6d gnet_stats_copy_rate_est +EXPORT_SYMBOL vmlinux 0x60e06d6d netif_skb_features +EXPORT_SYMBOL vmlinux 0x60e700c9 km_state_notify EXPORT_SYMBOL vmlinux 0x61073e4a acpi_os_map_generic_address -EXPORT_SYMBOL vmlinux 0x610e04b9 sock_dequeue_err_skb -EXPORT_SYMBOL vmlinux 0x61110129 skb_checksum EXPORT_SYMBOL vmlinux 0x6128b5fc __printk_ratelimit EXPORT_SYMBOL vmlinux 0x61407a47 scaled_ppm_to_ppb EXPORT_SYMBOL vmlinux 0x6154ff15 __find_get_block EXPORT_SYMBOL vmlinux 0x615911d7 __bitmap_set EXPORT_SYMBOL vmlinux 0x6167e72c vmalloc_no_huge +EXPORT_SYMBOL vmlinux 0x617b5d32 dev_pre_changeaddr_notify EXPORT_SYMBOL vmlinux 0x617c452b queued_read_lock_slowpath EXPORT_SYMBOL vmlinux 0x61850e4d unlock_buffer EXPORT_SYMBOL vmlinux 0x6185b747 radix_tree_gang_lookup_tag -EXPORT_SYMBOL vmlinux 0x618679a6 tcf_classify_ingress EXPORT_SYMBOL vmlinux 0x618911fc numa_node EXPORT_SYMBOL vmlinux 0x618ad49c serio_interrupt EXPORT_SYMBOL vmlinux 0x619cb7dd simple_read_from_buffer EXPORT_SYMBOL vmlinux 0x619dfcdc intel_scu_ipc_dev_readv +EXPORT_SYMBOL vmlinux 0x61a15c11 eth_header_cache_update EXPORT_SYMBOL vmlinux 0x61a34264 tty_register_ldisc EXPORT_SYMBOL vmlinux 0x61b7b126 simple_strtoull EXPORT_SYMBOL vmlinux 0x61ba932e scsi_remove_host -EXPORT_SYMBOL vmlinux 0x61d17c08 netdev_class_remove_file_ns +EXPORT_SYMBOL vmlinux 0x61d1475d udp_seq_stop EXPORT_SYMBOL vmlinux 0x61d7ac19 __cleancache_invalidate_inode EXPORT_SYMBOL vmlinux 0x61e272c9 sha256_final EXPORT_SYMBOL vmlinux 0x61ea189b fb_pad_aligned_buffer EXPORT_SYMBOL vmlinux 0x61f36119 dquot_resume EXPORT_SYMBOL vmlinux 0x61f9a702 clear_inode +EXPORT_SYMBOL vmlinux 0x61ffaa23 phy_init_hw +EXPORT_SYMBOL vmlinux 0x620708b5 unregister_netdevice_notifier_dev_net EXPORT_SYMBOL vmlinux 0x6207cd28 kmem_cache_alloc_bulk EXPORT_SYMBOL vmlinux 0x620fd100 pci_bus_write_config_word EXPORT_SYMBOL vmlinux 0x6214aef2 cpufreq_unregister_notifier EXPORT_SYMBOL vmlinux 0x621e2d59 __alloc_disk_node EXPORT_SYMBOL vmlinux 0x6223cdc5 get_thermal_instance +EXPORT_SYMBOL vmlinux 0x62283a52 xp_can_alloc EXPORT_SYMBOL vmlinux 0x6228c21f smp_call_function_single EXPORT_SYMBOL vmlinux 0x6235be79 writeback_inodes_sb -EXPORT_SYMBOL vmlinux 0x6237ddbb skb_push EXPORT_SYMBOL vmlinux 0x623c3b94 page_mapping EXPORT_SYMBOL vmlinux 0x6240a121 request_firmware_nowait EXPORT_SYMBOL vmlinux 0x626299a1 unregister_quota_format EXPORT_SYMBOL vmlinux 0x626e2392 simple_statfs EXPORT_SYMBOL vmlinux 0x62737e1d sock_unregister +EXPORT_SYMBOL vmlinux 0x6283ad8e tcp_splice_read EXPORT_SYMBOL vmlinux 0x62849ac7 dev_valid_name EXPORT_SYMBOL vmlinux 0x628790bf md_finish_reshape EXPORT_SYMBOL vmlinux 0x629079b3 dma_fence_signal_timestamp EXPORT_SYMBOL vmlinux 0x62949074 acpi_buffer_to_resource +EXPORT_SYMBOL vmlinux 0x62982599 xsk_get_pool_from_qid EXPORT_SYMBOL vmlinux 0x629b5d2b get_acl EXPORT_SYMBOL vmlinux 0x62b8396d pnp_activate_dev EXPORT_SYMBOL vmlinux 0x62bf6e1a pci_bus_find_capability EXPORT_SYMBOL vmlinux 0x62bf6edf utf8agemin -EXPORT_SYMBOL vmlinux 0x62cb1eae register_netdevice +EXPORT_SYMBOL vmlinux 0x62c43c71 tcp_init_sock +EXPORT_SYMBOL vmlinux 0x62c99716 phy_device_remove +EXPORT_SYMBOL vmlinux 0x62d500a3 vfs_readlink EXPORT_SYMBOL vmlinux 0x62da4ff1 nonseekable_open EXPORT_SYMBOL vmlinux 0x62e85915 jbd2_log_wait_commit +EXPORT_SYMBOL vmlinux 0x62ea8e86 flow_block_cb_free EXPORT_SYMBOL vmlinux 0x62f4c018 to_nd_btt EXPORT_SYMBOL vmlinux 0x62f7e207 down_read_killable -EXPORT_SYMBOL vmlinux 0x630cc523 genphy_restart_aneg EXPORT_SYMBOL vmlinux 0x63187451 pcie_aspm_support_enabled EXPORT_SYMBOL vmlinux 0x63188427 scsi_host_put EXPORT_SYMBOL vmlinux 0x631cc672 ptp_clock_unregister EXPORT_SYMBOL vmlinux 0x631d06aa cpu_rmap_put +EXPORT_SYMBOL vmlinux 0x63225e44 nf_hook_slow EXPORT_SYMBOL vmlinux 0x6322a2ef alloc_pages -EXPORT_SYMBOL vmlinux 0x6330ef00 xfrm_input_register_afinfo EXPORT_SYMBOL vmlinux 0x6340c89b tty_unthrottle -EXPORT_SYMBOL vmlinux 0x635948a3 tcp_mss_to_mtu EXPORT_SYMBOL vmlinux 0x636257f7 get_ibs_caps EXPORT_SYMBOL vmlinux 0x63641f4f scsi_device_put EXPORT_SYMBOL vmlinux 0x6364dd2e unlock_two_nondirectories EXPORT_SYMBOL vmlinux 0x6369ede3 mpage_writepages EXPORT_SYMBOL vmlinux 0x638606af generic_file_llseek_size -EXPORT_SYMBOL vmlinux 0x63a058c6 sk_stop_timer EXPORT_SYMBOL vmlinux 0x63a58370 flow_action_cookie_destroy EXPORT_SYMBOL vmlinux 0x63a7c28c bitmap_find_free_region -EXPORT_SYMBOL vmlinux 0x63b0dcd9 unix_destruct_scm EXPORT_SYMBOL vmlinux 0x63c4d61f __bitmap_weight -EXPORT_SYMBOL vmlinux 0x63ccf3bd kernel_listen EXPORT_SYMBOL vmlinux 0x63eb9355 panic_blink EXPORT_SYMBOL vmlinux 0x63f835ba on_each_cpu_cond_mask EXPORT_SYMBOL vmlinux 0x6405dcd3 slhc_toss EXPORT_SYMBOL vmlinux 0x64127b67 bitmap_find_next_zero_area_off EXPORT_SYMBOL vmlinux 0x641a9158 pci_bus_read_config_byte +EXPORT_SYMBOL vmlinux 0x643d2a7f sock_no_mmap EXPORT_SYMBOL vmlinux 0x6446bd5c pci_clear_mwi EXPORT_SYMBOL vmlinux 0x6459cd11 posix_acl_valid EXPORT_SYMBOL vmlinux 0x645f0031 pps_register_source EXPORT_SYMBOL vmlinux 0x64710212 igrab -EXPORT_SYMBOL vmlinux 0x64794a89 xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0x64786690 skb_recv_datagram +EXPORT_SYMBOL vmlinux 0x647de6d0 sk_capable EXPORT_SYMBOL vmlinux 0x6481ffe0 hsiphash_1u32 -EXPORT_SYMBOL vmlinux 0x648b106c netlink_ns_capable -EXPORT_SYMBOL vmlinux 0x648b1234 inet_csk_delete_keepalive_timer EXPORT_SYMBOL vmlinux 0x648eb59d gc_inflight_list EXPORT_SYMBOL vmlinux 0x64999478 congestion_wait -EXPORT_SYMBOL vmlinux 0x64a821a1 netdev_printk EXPORT_SYMBOL vmlinux 0x64a9c928 default_blu -EXPORT_SYMBOL vmlinux 0x64b217ad dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x64b73863 qdisc_put EXPORT_SYMBOL vmlinux 0x64bbc288 string_unescape +EXPORT_SYMBOL vmlinux 0x64d6ebb4 netif_tx_wake_queue EXPORT_SYMBOL vmlinux 0x64e208a6 scmd_printk EXPORT_SYMBOL vmlinux 0x6513a3fa fb_get_color_depth EXPORT_SYMBOL vmlinux 0x651a4139 test_taint EXPORT_SYMBOL vmlinux 0x651d6425 iget5_locked EXPORT_SYMBOL vmlinux 0x652032cb mac_pton -EXPORT_SYMBOL vmlinux 0x6520ac4d neigh_sysctl_unregister -EXPORT_SYMBOL vmlinux 0x6525ba96 __dev_kfree_skb_any EXPORT_SYMBOL vmlinux 0x652ce9aa nla_memcmp -EXPORT_SYMBOL vmlinux 0x653f09be security_inet_conn_established +EXPORT_SYMBOL vmlinux 0x652e8867 eth_commit_mac_addr_change EXPORT_SYMBOL vmlinux 0x65408378 zlib_inflate_blob EXPORT_SYMBOL vmlinux 0x654438cc eisa_driver_unregister -EXPORT_SYMBOL vmlinux 0x654446d1 tc_setup_cb_add EXPORT_SYMBOL vmlinux 0x65464c16 clkdev_drop +EXPORT_SYMBOL vmlinux 0x6549599a __xfrm_state_destroy EXPORT_SYMBOL vmlinux 0x65540732 mipi_dsi_host_unregister -EXPORT_SYMBOL vmlinux 0x6561fae5 inet_csk_reqsk_queue_add EXPORT_SYMBOL vmlinux 0x6565f933 padata_free_shell EXPORT_SYMBOL vmlinux 0x656c1a0e string_escape_mem EXPORT_SYMBOL vmlinux 0x656e4a6e snprintf -EXPORT_SYMBOL vmlinux 0x6574b4bd neigh_carrier_down +EXPORT_SYMBOL vmlinux 0x65731cae kfree_skb_partial EXPORT_SYMBOL vmlinux 0x657b3e48 page_pool_release_page EXPORT_SYMBOL vmlinux 0x658ce1a8 xxh64_reset -EXPORT_SYMBOL vmlinux 0x658e0fab phy_suspend EXPORT_SYMBOL vmlinux 0x65916bfe vmalloc_to_page EXPORT_SYMBOL vmlinux 0x65926557 nd_btt_version +EXPORT_SYMBOL vmlinux 0x6598caca sched_autogroup_detach EXPORT_SYMBOL vmlinux 0x659ded26 xfrm_flush_gc EXPORT_SYMBOL vmlinux 0x65a08f32 uart_resume_port -EXPORT_SYMBOL vmlinux 0x65a83805 ip_queue_xmit EXPORT_SYMBOL vmlinux 0x65cf8831 ZSTD_decompress_usingDict EXPORT_SYMBOL vmlinux 0x65d1bab2 acpi_bios_warning -EXPORT_SYMBOL vmlinux 0x65d7e45e security_path_mknod EXPORT_SYMBOL vmlinux 0x65d9e877 cpufreq_register_notifier EXPORT_SYMBOL vmlinux 0x65dccf13 xz_dec_end EXPORT_SYMBOL vmlinux 0x65df35ca __put_user_nocheck_2 EXPORT_SYMBOL vmlinux 0x65e0d6d7 memory_read_from_buffer +EXPORT_SYMBOL vmlinux 0x65fa98fb tcp_sock_set_keepcnt +EXPORT_SYMBOL vmlinux 0x66006788 xp_set_rxq_info EXPORT_SYMBOL vmlinux 0x660426c0 generic_delete_inode -EXPORT_SYMBOL vmlinux 0x6618c0e6 tcp_gro_complete EXPORT_SYMBOL vmlinux 0x6619b031 csum_and_copy_from_iter EXPORT_SYMBOL vmlinux 0x6626afca down +EXPORT_SYMBOL vmlinux 0x662b6e59 tcp_sock_set_user_timeout EXPORT_SYMBOL vmlinux 0x663182c9 acpi_get_gpe_status EXPORT_SYMBOL vmlinux 0x663db3b7 jbd2_journal_force_commit_nested +EXPORT_SYMBOL vmlinux 0x66439198 tcp_shutdown EXPORT_SYMBOL vmlinux 0x66628bf3 ip_tunnel_metadata_cnt -EXPORT_SYMBOL vmlinux 0x6663dea9 qdisc_hash_del EXPORT_SYMBOL vmlinux 0x6673f96d xxh32_reset EXPORT_SYMBOL vmlinux 0x66819fde md_bitmap_free +EXPORT_SYMBOL vmlinux 0x668636f8 netif_set_real_num_tx_queues EXPORT_SYMBOL vmlinux 0x668b19a1 down_read EXPORT_SYMBOL vmlinux 0x66af1fd1 lockref_put_or_lock EXPORT_SYMBOL vmlinux 0x66b4cc41 kmemdup @@ -5657,136 +5644,125 @@ EXPORT_SYMBOL vmlinux 0x67428cdc pci_ep_cfs_add_epc_group EXPORT_SYMBOL vmlinux 0x6749d53f hdmi_vendor_infoframe_init EXPORT_SYMBOL vmlinux 0x6749f836 ns_capable_noaudit -EXPORT_SYMBOL vmlinux 0x675e54a8 ip_output -EXPORT_SYMBOL vmlinux 0x675f8056 napi_gro_receive -EXPORT_SYMBOL vmlinux 0x676894c1 mr_mfc_find_any_parent -EXPORT_SYMBOL vmlinux 0x67766df4 dns_query EXPORT_SYMBOL vmlinux 0x677ae6d1 wait_on_page_bit -EXPORT_SYMBOL vmlinux 0x677b8a00 ip_route_input_noref EXPORT_SYMBOL vmlinux 0x677da045 devfreq_suspend_device EXPORT_SYMBOL vmlinux 0x678b96ec dma_pool_alloc +EXPORT_SYMBOL vmlinux 0x67a4c3db mdio_driver_unregister EXPORT_SYMBOL vmlinux 0x67b27ec1 tty_std_termios EXPORT_SYMBOL vmlinux 0x67b4140a n_tty_ioctl_helper EXPORT_SYMBOL vmlinux 0x67b78eb3 seq_hlist_next_rcu +EXPORT_SYMBOL vmlinux 0x67baadc4 seg6_hmac_validate_skb EXPORT_SYMBOL vmlinux 0x67c13ea0 acpi_read EXPORT_SYMBOL vmlinux 0x67cb2c8c current_in_userns EXPORT_SYMBOL vmlinux 0x67cedd5a tty_unregister_device -EXPORT_SYMBOL vmlinux 0x67eddba8 reuseport_detach_sock +EXPORT_SYMBOL vmlinux 0x67fb4893 ip_output EXPORT_SYMBOL vmlinux 0x68018449 blk_queue_flag_set EXPORT_SYMBOL vmlinux 0x6806627d dquot_get_state EXPORT_SYMBOL vmlinux 0x68100710 pcim_iounmap -EXPORT_SYMBOL vmlinux 0x681ed685 ip_fraglist_init EXPORT_SYMBOL vmlinux 0x682bcc68 prepare_creds EXPORT_SYMBOL vmlinux 0x6832d3a1 get_task_exe_file EXPORT_SYMBOL vmlinux 0x68335dac jbd2_fc_end_commit EXPORT_SYMBOL vmlinux 0x683a9560 __gnet_stats_copy_basic EXPORT_SYMBOL vmlinux 0x683d17b4 d_find_any_alias EXPORT_SYMBOL vmlinux 0x684a12ba scsi_host_busy +EXPORT_SYMBOL vmlinux 0x684d0bf8 xfrm_lookup_route EXPORT_SYMBOL vmlinux 0x6851664e wrmsrl_safe_on_cpu EXPORT_SYMBOL vmlinux 0x686029a2 input_close_device +EXPORT_SYMBOL vmlinux 0x686e385b __tcf_em_tree_match EXPORT_SYMBOL vmlinux 0x687b6a16 kdbgetsymval EXPORT_SYMBOL vmlinux 0x68aa8853 scsi_track_queue_full -EXPORT_SYMBOL vmlinux 0x68b3775e prepare_to_swait_event EXPORT_SYMBOL vmlinux 0x68c2ef99 __register_nls EXPORT_SYMBOL vmlinux 0x68c4b824 cpumask_any_but -EXPORT_SYMBOL vmlinux 0x68e1476b try_lookup_one_len -EXPORT_SYMBOL vmlinux 0x690090fc tcp_v4_destroy_sock -EXPORT_SYMBOL vmlinux 0x6901795f dev_uc_init +EXPORT_SYMBOL vmlinux 0x68db97e4 ethtool_virtdev_set_link_ksettings +EXPORT_SYMBOL vmlinux 0x68de3759 eth_mac_addr EXPORT_SYMBOL vmlinux 0x69049cd2 radix_tree_replace_slot +EXPORT_SYMBOL vmlinux 0x6904e5f7 __tcp_md5_do_lookup EXPORT_SYMBOL vmlinux 0x6917a77e __traceiter_kmem_cache_free EXPORT_SYMBOL vmlinux 0x6936ae1b I_BDEV EXPORT_SYMBOL vmlinux 0x6953b39a init_pseudo EXPORT_SYMBOL vmlinux 0x69585523 __ksize EXPORT_SYMBOL vmlinux 0x695d4b42 disk_stack_limits EXPORT_SYMBOL vmlinux 0x695f185a fb_set_var -EXPORT_SYMBOL vmlinux 0x6966709f alloc_netdev_mqs +EXPORT_SYMBOL vmlinux 0x696270b1 pfifo_qdisc_ops EXPORT_SYMBOL vmlinux 0x69668826 netdev_increment_features +EXPORT_SYMBOL vmlinux 0x696ab818 inet_frag_queue_insert EXPORT_SYMBOL vmlinux 0x696dbaa4 vprintk_emit EXPORT_SYMBOL vmlinux 0x6971447a rtc_month_days -EXPORT_SYMBOL vmlinux 0x697b1ac3 reuseport_attach_prog -EXPORT_SYMBOL vmlinux 0x698410d5 skb_copy EXPORT_SYMBOL vmlinux 0x6988d0ca cpu_dr7 EXPORT_SYMBOL vmlinux 0x6990a193 proc_create_mount_point +EXPORT_SYMBOL vmlinux 0x699d97e1 netdev_upper_get_next_dev_rcu +EXPORT_SYMBOL vmlinux 0x699e69ae udp_lib_unhash EXPORT_SYMBOL vmlinux 0x69acdf38 memcpy EXPORT_SYMBOL vmlinux 0x69b35557 bioset_exit +EXPORT_SYMBOL vmlinux 0x69b992f6 nf_hook_slow_list EXPORT_SYMBOL vmlinux 0x69c52d91 pci_free_irq_vectors +EXPORT_SYMBOL vmlinux 0x69d3c169 __cgroup_bpf_run_filter_skb EXPORT_SYMBOL vmlinux 0x69dd3b5b crc32_le EXPORT_SYMBOL vmlinux 0x69de8757 vme_check_window -EXPORT_SYMBOL vmlinux 0x69eb3e76 tcp_seq_start EXPORT_SYMBOL vmlinux 0x69fa2a62 set_posix_acl EXPORT_SYMBOL vmlinux 0x6a03751f sgl_free_order EXPORT_SYMBOL vmlinux 0x6a037cf1 mempool_kfree -EXPORT_SYMBOL vmlinux 0x6a09d820 security_binder_transaction EXPORT_SYMBOL vmlinux 0x6a10dd8d devfreq_monitor_start EXPORT_SYMBOL vmlinux 0x6a194446 __blkdev_issue_zeroout +EXPORT_SYMBOL vmlinux 0x6a260505 phy_sfp_probe EXPORT_SYMBOL vmlinux 0x6a261b78 irq_stat EXPORT_SYMBOL vmlinux 0x6a449c4f register_sysctl_table +EXPORT_SYMBOL vmlinux 0x6a50e2c1 fs_context_for_reconfigure EXPORT_SYMBOL vmlinux 0x6a5cb5ee __get_free_pages EXPORT_SYMBOL vmlinux 0x6a5ecb18 unregister_module_notifier EXPORT_SYMBOL vmlinux 0x6a5f372e uart_unregister_driver EXPORT_SYMBOL vmlinux 0x6a5fa363 sigprocmask -EXPORT_SYMBOL vmlinux 0x6a6685b1 qdisc_class_hash_grow EXPORT_SYMBOL vmlinux 0x6a6e05bf kstrtou8 -EXPORT_SYMBOL vmlinux 0x6a7c8bf9 arp_tbl EXPORT_SYMBOL vmlinux 0x6a81a7c0 pci_bus_size_bridges EXPORT_SYMBOL vmlinux 0x6a9e1f71 seq_release_private EXPORT_SYMBOL vmlinux 0x6aa11aa6 sgl_free_n_order -EXPORT_SYMBOL vmlinux 0x6aa9d70d skb_prepare_seq_read EXPORT_SYMBOL vmlinux 0x6ab89bdc pcim_iomap -EXPORT_SYMBOL vmlinux 0x6ac6fd76 sock_edemux EXPORT_SYMBOL vmlinux 0x6ada7eb3 key_revoke EXPORT_SYMBOL vmlinux 0x6add5c9a dmi_find_device +EXPORT_SYMBOL vmlinux 0x6adeb931 xfrm_state_walk EXPORT_SYMBOL vmlinux 0x6aeefac4 zlib_deflateReset EXPORT_SYMBOL vmlinux 0x6af80134 jbd2_journal_free_reserved EXPORT_SYMBOL vmlinux 0x6af8d2a6 fs_param_is_blockdev -EXPORT_SYMBOL vmlinux 0x6afe8fe7 sock_no_bind EXPORT_SYMBOL vmlinux 0x6b030609 padata_alloc_shell EXPORT_SYMBOL vmlinux 0x6b10bee1 _copy_to_user -EXPORT_SYMBOL vmlinux 0x6b13b329 close_fd_get_file EXPORT_SYMBOL vmlinux 0x6b27729b radix_tree_gang_lookup +EXPORT_SYMBOL vmlinux 0x6b2cb8ad dev_mc_del EXPORT_SYMBOL vmlinux 0x6b2d8b08 set_pages_array_wc EXPORT_SYMBOL vmlinux 0x6b2dc060 dump_stack -EXPORT_SYMBOL vmlinux 0x6b33e1c5 cookie_timestamp_decode EXPORT_SYMBOL vmlinux 0x6b36884a register_filesystem -EXPORT_SYMBOL vmlinux 0x6b3f16c8 netdev_name_node_alt_create EXPORT_SYMBOL vmlinux 0x6b4da055 ww_mutex_lock EXPORT_SYMBOL vmlinux 0x6b55acd0 rtnl_lock_killable -EXPORT_SYMBOL vmlinux 0x6b6dbe72 xfrm_init_replay EXPORT_SYMBOL vmlinux 0x6b6e2863 __phy_write_mmd +EXPORT_SYMBOL vmlinux 0x6b702c07 neigh_destroy EXPORT_SYMBOL vmlinux 0x6b718cd0 fb_set_suspend -EXPORT_SYMBOL vmlinux 0x6b7777b6 xfrm_policy_register_afinfo EXPORT_SYMBOL vmlinux 0x6b7de529 jbd2_journal_release_jbd_inode EXPORT_SYMBOL vmlinux 0x6b853d06 ns_to_kernel_old_timeval EXPORT_SYMBOL vmlinux 0x6b8bf149 netif_receive_skb_list EXPORT_SYMBOL vmlinux 0x6b9d1c95 security_req_classify_flow -EXPORT_SYMBOL vmlinux 0x6bba1450 ppp_unit_number -EXPORT_SYMBOL vmlinux 0x6bbd86d7 lookup_positive_unlocked -EXPORT_SYMBOL vmlinux 0x6bbf9058 phy_get_internal_delay -EXPORT_SYMBOL vmlinux 0x6bc379fc __tcp_md5_do_lookup EXPORT_SYMBOL vmlinux 0x6bc3fbc0 __unregister_chrdev EXPORT_SYMBOL vmlinux 0x6bd0e573 down_interruptible +EXPORT_SYMBOL vmlinux 0x6bd9f008 tcp_syn_ack_timeout EXPORT_SYMBOL vmlinux 0x6be1c1f8 acpi_install_method -EXPORT_SYMBOL vmlinux 0x6c0d8d27 ethtool_op_get_ts_info +EXPORT_SYMBOL vmlinux 0x6c07bdd3 km_policy_notify EXPORT_SYMBOL vmlinux 0x6c155058 d_delete -EXPORT_SYMBOL vmlinux 0x6c1f834a km_policy_expired EXPORT_SYMBOL vmlinux 0x6c224cda gen_pool_destroy EXPORT_SYMBOL vmlinux 0x6c257ac0 tty_termios_hw_change EXPORT_SYMBOL vmlinux 0x6c28be5a vfio_info_add_capability -EXPORT_SYMBOL vmlinux 0x6c33e050 xp_free EXPORT_SYMBOL vmlinux 0x6c4578c9 submit_bio +EXPORT_SYMBOL vmlinux 0x6c5d9750 neigh_lookup EXPORT_SYMBOL vmlinux 0x6c5dae23 scsi_kmap_atomic_sg +EXPORT_SYMBOL vmlinux 0x6c6115ff xfrm_state_insert EXPORT_SYMBOL vmlinux 0x6c61ce70 num_registered_fb EXPORT_SYMBOL vmlinux 0x6c8b77cf __SCK__tp_func_kfree +EXPORT_SYMBOL vmlinux 0x6c8ebe41 netdev_upper_dev_link EXPORT_SYMBOL vmlinux 0x6c91d70f blk_mq_start_hw_queues EXPORT_SYMBOL vmlinux 0x6c9c469e param_get_bool EXPORT_SYMBOL vmlinux 0x6cb2f5a1 cpumask_next_and EXPORT_SYMBOL vmlinux 0x6cb46525 netlbl_catmap_walk EXPORT_SYMBOL vmlinux 0x6cb56887 uart_get_divisor -EXPORT_SYMBOL vmlinux 0x6cbc4ef7 nexthop_set_hw_flags EXPORT_SYMBOL vmlinux 0x6cc09945 ioread32_rep +EXPORT_SYMBOL vmlinux 0x6cd3a4e3 mr_mfc_find_parent EXPORT_SYMBOL vmlinux 0x6cfbdd81 __inode_sub_bytes -EXPORT_SYMBOL vmlinux 0x6d1c5cc7 xfrm6_find_1stfragopt -EXPORT_SYMBOL vmlinux 0x6d1f1b09 unregister_netdev EXPORT_SYMBOL vmlinux 0x6d24bf75 pci_assign_resource EXPORT_SYMBOL vmlinux 0x6d294e43 clock_t_to_jiffies EXPORT_SYMBOL vmlinux 0x6d2f8b53 jbd2_journal_flush @@ -5794,145 +5770,160 @@ EXPORT_SYMBOL vmlinux 0x6d340f64 tty_termios_input_baud_rate EXPORT_SYMBOL vmlinux 0x6d37d69e pin_user_pages_locked EXPORT_SYMBOL vmlinux 0x6d38c5ab __block_write_full_page +EXPORT_SYMBOL vmlinux 0x6d43cd3f mr_mfc_seq_idx EXPORT_SYMBOL vmlinux 0x6d51d01a request_key_rcu +EXPORT_SYMBOL vmlinux 0x6d55b2d1 tcf_qevent_validate_change EXPORT_SYMBOL vmlinux 0x6d58f69e agp3_generic_sizes EXPORT_SYMBOL vmlinux 0x6d5ba545 sync_file_create EXPORT_SYMBOL vmlinux 0x6d5f5b91 radix_tree_tagged EXPORT_SYMBOL vmlinux 0x6d5fc1e2 free_inode_nonrcu EXPORT_SYMBOL vmlinux 0x6d674141 starget_for_each_device +EXPORT_SYMBOL vmlinux 0x6d6ca94c udp6_seq_ops EXPORT_SYMBOL vmlinux 0x6d73a8fd pci_clear_master EXPORT_SYMBOL vmlinux 0x6d7abe02 first_ec EXPORT_SYMBOL vmlinux 0x6d7c7dcc bitmap_cut -EXPORT_SYMBOL vmlinux 0x6da2b83b ipv6_chk_custom_prefix +EXPORT_SYMBOL vmlinux 0x6d87dabc tcf_generic_walker +EXPORT_SYMBOL vmlinux 0x6d93268d skb_abort_seq_read EXPORT_SYMBOL vmlinux 0x6dad400d vm_insert_page -EXPORT_SYMBOL vmlinux 0x6db21448 phy_get_pause -EXPORT_SYMBOL vmlinux 0x6db81d4c nf_ct_attach -EXPORT_SYMBOL vmlinux 0x6db9dc96 free_netdev EXPORT_SYMBOL vmlinux 0x6dc35b25 radix_tree_iter_delete EXPORT_SYMBOL vmlinux 0x6dc5663f block_is_partially_uptodate EXPORT_SYMBOL vmlinux 0x6dcf857f uuid_null -EXPORT_SYMBOL vmlinux 0x6dd00d98 finish_swait -EXPORT_SYMBOL vmlinux 0x6dd1077e neigh_lookup EXPORT_SYMBOL vmlinux 0x6dd17e7b acpi_get_table_header +EXPORT_SYMBOL vmlinux 0x6dd715c2 inet_csk_reqsk_queue_drop EXPORT_SYMBOL vmlinux 0x6dda6829 vme_dma_request -EXPORT_SYMBOL vmlinux 0x6dde89cb arp_send -EXPORT_SYMBOL vmlinux 0x6de40d2f dev_mc_sync_multiple +EXPORT_SYMBOL vmlinux 0x6de39d1b logfc EXPORT_SYMBOL vmlinux 0x6df1aaf1 kernel_sigaction +EXPORT_SYMBOL vmlinux 0x6e037264 netif_rx_ni EXPORT_SYMBOL vmlinux 0x6e0631f7 __get_hash_from_flowi6 -EXPORT_SYMBOL vmlinux 0x6e1193f9 tcf_exts_num_actions +EXPORT_SYMBOL vmlinux 0x6e081944 seg6_hmac_info_del +EXPORT_SYMBOL vmlinux 0x6e1da173 get_phy_device EXPORT_SYMBOL vmlinux 0x6e1e26d5 page_zero_new_buffers EXPORT_SYMBOL vmlinux 0x6e20876d uart_get_baud_rate -EXPORT_SYMBOL vmlinux 0x6e429090 rtnl_link_get_net +EXPORT_SYMBOL vmlinux 0x6e2089bc xp_raw_get_dma +EXPORT_SYMBOL vmlinux 0x6e4b3b11 devm_register_netdev EXPORT_SYMBOL vmlinux 0x6e56edf6 param_ops_ullong EXPORT_SYMBOL vmlinux 0x6e5b8651 xz_dec_run EXPORT_SYMBOL vmlinux 0x6e720ff2 rtnl_unlock -EXPORT_SYMBOL vmlinux 0x6e868fc7 __skb_checksum -EXPORT_SYMBOL vmlinux 0x6e8e114c genl_register_family -EXPORT_SYMBOL vmlinux 0x6e916740 __skb_recv_udp -EXPORT_SYMBOL vmlinux 0x6e98c339 ipv6_sock_mc_join +EXPORT_SYMBOL vmlinux 0x6e7f243c tcp_set_rcvlowat EXPORT_SYMBOL vmlinux 0x6e9dd606 __symbol_put +EXPORT_SYMBOL vmlinux 0x6ea0f56b genphy_config_eee_advert +EXPORT_SYMBOL vmlinux 0x6ea39957 secure_tcpv6_ts_off EXPORT_SYMBOL vmlinux 0x6ea7575d acpi_dispatch_gpe EXPORT_SYMBOL vmlinux 0x6ea9363b force_sig +EXPORT_SYMBOL vmlinux 0x6eacd006 xfrm_state_delete_tunnel EXPORT_SYMBOL vmlinux 0x6eb02897 pin_user_pages_unlocked EXPORT_SYMBOL vmlinux 0x6ec6f65c try_to_free_buffers -EXPORT_SYMBOL vmlinux 0x6ecf7ab6 sock_no_sendpage_locked EXPORT_SYMBOL vmlinux 0x6edb0d91 kmem_cache_alloc_trace -EXPORT_SYMBOL vmlinux 0x6efd13ef dst_release_immediate +EXPORT_SYMBOL vmlinux 0x6ee304cb tcp_sock_set_nodelay EXPORT_SYMBOL vmlinux 0x6f0d0989 free_buffer_head +EXPORT_SYMBOL vmlinux 0x6f106188 ip_fraglist_init +EXPORT_SYMBOL vmlinux 0x6f230975 dev_get_mac_address EXPORT_SYMBOL vmlinux 0x6f2609a1 jbd2__journal_restart EXPORT_SYMBOL vmlinux 0x6f41a428 acpi_get_vendor_resource EXPORT_SYMBOL vmlinux 0x6f43eacf devm_devfreq_unregister_opp_notifier EXPORT_SYMBOL vmlinux 0x6f454692 devfreq_remove_device EXPORT_SYMBOL vmlinux 0x6f57003b nvdimm_check_and_set_ro EXPORT_SYMBOL vmlinux 0x6f5e359a blk_put_queue +EXPORT_SYMBOL vmlinux 0x6f7dd590 ip_queue_xmit EXPORT_SYMBOL vmlinux 0x6f8f674a bpf_dispatcher_xdp_func EXPORT_SYMBOL vmlinux 0x6f915a45 dqstats EXPORT_SYMBOL vmlinux 0x6f9c2e6c read_cache_pages -EXPORT_SYMBOL vmlinux 0x6fa1bfbc vfs_rename EXPORT_SYMBOL vmlinux 0x6fb49676 queue_rcu_work +EXPORT_SYMBOL vmlinux 0x6fba3e62 phy_error EXPORT_SYMBOL vmlinux 0x6fbc6a00 radix_tree_insert EXPORT_SYMBOL vmlinux 0x6fc67e32 __lock_page EXPORT_SYMBOL vmlinux 0x6fcb87a1 touch_softlockup_watchdog EXPORT_SYMBOL vmlinux 0x6fced6a8 start_tty EXPORT_SYMBOL vmlinux 0x6fd9c35a __clzdi2 -EXPORT_SYMBOL vmlinux 0x6fef338a security_inode_setsecctx EXPORT_SYMBOL vmlinux 0x6ffdd235 cdrom_ioctl EXPORT_SYMBOL vmlinux 0x70002fe8 siphash_1u32 EXPORT_SYMBOL vmlinux 0x70039f4d input_unregister_handle -EXPORT_SYMBOL vmlinux 0x701b98dd __skb_ext_del EXPORT_SYMBOL vmlinux 0x7023bea8 unregister_acpi_notifier -EXPORT_SYMBOL vmlinux 0x7025f253 phy_remove_link_mode EXPORT_SYMBOL vmlinux 0x702946da ucs2_strlen +EXPORT_SYMBOL vmlinux 0x70327811 tcp_sock_set_quickack EXPORT_SYMBOL vmlinux 0x7040fff9 rtc_lock EXPORT_SYMBOL vmlinux 0x7054a3e4 request_dma -EXPORT_SYMBOL vmlinux 0x7057a9e2 seg6_hmac_info_add EXPORT_SYMBOL vmlinux 0x7071a4f2 cmdline_parts_free -EXPORT_SYMBOL vmlinux 0x709ba5bc get_mem_cgroup_from_mm +EXPORT_SYMBOL vmlinux 0x709048ff napi_get_frags EXPORT_SYMBOL vmlinux 0x70a24ac2 add_random_ready_callback EXPORT_SYMBOL vmlinux 0x70ad75fb radix_tree_lookup EXPORT_SYMBOL vmlinux 0x70c6c845 __d_lookup_done +EXPORT_SYMBOL vmlinux 0x70ccc941 __task_pid_nr_ns EXPORT_SYMBOL vmlinux 0x70ea99cb write_cache_pages +EXPORT_SYMBOL vmlinux 0x70eb439d sock_set_reuseaddr +EXPORT_SYMBOL vmlinux 0x70f778f0 sock_edemux EXPORT_SYMBOL vmlinux 0x71000a99 update_devfreq -EXPORT_SYMBOL vmlinux 0x7103972b phy_support_sym_pause -EXPORT_SYMBOL vmlinux 0x7105f919 skb_eth_pop +EXPORT_SYMBOL vmlinux 0x71018157 sock_no_socketpair EXPORT_SYMBOL vmlinux 0x71236fc7 pv_ops EXPORT_SYMBOL vmlinux 0x712563b3 mipi_dsi_dcs_set_tear_off EXPORT_SYMBOL vmlinux 0x7129e5f8 hex_asc EXPORT_SYMBOL vmlinux 0x713c85ea setup_new_exec EXPORT_SYMBOL vmlinux 0x71454934 jbd2_journal_restart +EXPORT_SYMBOL vmlinux 0x714ca114 netdev_bind_sb_channel_queue EXPORT_SYMBOL vmlinux 0x71501805 pnp_request_card_device +EXPORT_SYMBOL vmlinux 0x71574cdc sock_recv_errqueue +EXPORT_SYMBOL vmlinux 0x715eddf5 ip6_dst_check EXPORT_SYMBOL vmlinux 0x71697616 jbd2_journal_begin_ordered_truncate EXPORT_SYMBOL vmlinux 0x7171121c overflowgid -EXPORT_SYMBOL vmlinux 0x717433aa xfrm_policy_alloc -EXPORT_SYMBOL vmlinux 0x71799006 dev_change_carrier +EXPORT_SYMBOL vmlinux 0x7171669a netif_set_xps_queue +EXPORT_SYMBOL vmlinux 0x718a2da5 inet_ioctl EXPORT_SYMBOL vmlinux 0x718a4693 __SCT__tp_func_mmap_lock_start_locking +EXPORT_SYMBOL vmlinux 0x7192c249 inet6_bind +EXPORT_SYMBOL vmlinux 0x719f6d6c xfrm_sad_getinfo EXPORT_SYMBOL vmlinux 0x71a0b83e vfs_fadvise +EXPORT_SYMBOL vmlinux 0x71a113de inet_pton_with_scope EXPORT_SYMBOL vmlinux 0x71a672ef dmam_pool_destroy +EXPORT_SYMBOL vmlinux 0x71a82a9d tcp_mtup_init EXPORT_SYMBOL vmlinux 0x71a95ef0 mnt_set_expiry -EXPORT_SYMBOL vmlinux 0x71aa433e nf_register_sockopt EXPORT_SYMBOL vmlinux 0x71aaa0f8 dquot_alloc EXPORT_SYMBOL vmlinux 0x71b36dba __tracepoint_read_msr EXPORT_SYMBOL vmlinux 0x71b7fa26 kill_anon_super +EXPORT_SYMBOL vmlinux 0x71bcb24c rtnl_link_get_net EXPORT_SYMBOL vmlinux 0x71cfd9c1 jbd2_journal_blocks_per_page EXPORT_SYMBOL vmlinux 0x71d27bd2 input_mt_sync_frame -EXPORT_SYMBOL vmlinux 0x71ddbe94 xfrm_trans_queue EXPORT_SYMBOL vmlinux 0x71dfc095 acpi_walk_resources EXPORT_SYMBOL vmlinux 0x71ee7ab7 pcie_capability_clear_and_set_word EXPORT_SYMBOL vmlinux 0x71f06408 input_set_min_poll_interval -EXPORT_SYMBOL vmlinux 0x71fa935c inet_release -EXPORT_SYMBOL vmlinux 0x72039ade gro_find_complete_by_type EXPORT_SYMBOL vmlinux 0x720a27a7 __register_blkdev EXPORT_SYMBOL vmlinux 0x720ac56c key_alloc +EXPORT_SYMBOL vmlinux 0x7223c73d dst_release_immediate EXPORT_SYMBOL vmlinux 0x72420727 dqget EXPORT_SYMBOL vmlinux 0x7249739b dma_map_resource EXPORT_SYMBOL vmlinux 0x724ddac7 utf8version_is_supported EXPORT_SYMBOL vmlinux 0x7259ecd2 pci_read_config_word EXPORT_SYMBOL vmlinux 0x726bc3c7 wait_for_completion_killable_timeout EXPORT_SYMBOL vmlinux 0x7287195c blkdev_put +EXPORT_SYMBOL vmlinux 0x728b57e2 netdev_rx_csum_fault EXPORT_SYMBOL vmlinux 0x7291aaf1 find_vma EXPORT_SYMBOL vmlinux 0x72a363d0 pci_enable_ptm +EXPORT_SYMBOL vmlinux 0x72b07b4f inet_shutdown EXPORT_SYMBOL vmlinux 0x72b243d4 free_dma EXPORT_SYMBOL vmlinux 0x72b62f94 seq_put_decimal_ull EXPORT_SYMBOL vmlinux 0x72b9d287 default_grn EXPORT_SYMBOL vmlinux 0x72c8597e __traceiter_mmap_lock_start_locking +EXPORT_SYMBOL vmlinux 0x72cf0644 netif_carrier_off EXPORT_SYMBOL vmlinux 0x72d79d83 pgdir_shift -EXPORT_SYMBOL vmlinux 0x72e782ae tcf_generic_walker EXPORT_SYMBOL vmlinux 0x72ea7b2d scsi_device_type EXPORT_SYMBOL vmlinux 0x72f14ff7 acpi_get_object_info EXPORT_SYMBOL vmlinux 0x73032fb9 jbd2_transaction_committed EXPORT_SYMBOL vmlinux 0x731b6a81 param_ops_long EXPORT_SYMBOL vmlinux 0x731c4a9c dma_fence_signal -EXPORT_SYMBOL vmlinux 0x732dc7ff unregister_nexthop_notifier EXPORT_SYMBOL vmlinux 0x732dd326 groups_free EXPORT_SYMBOL vmlinux 0x73326726 proc_create_seq_private EXPORT_SYMBOL vmlinux 0x73388290 serio_unregister_driver +EXPORT_SYMBOL vmlinux 0x733de740 __mdiobus_register +EXPORT_SYMBOL vmlinux 0x73437cbb netlink_set_err +EXPORT_SYMBOL vmlinux 0x7350adb0 device_get_mac_address EXPORT_SYMBOL vmlinux 0x7352d12f vga_set_legacy_decoding +EXPORT_SYMBOL vmlinux 0x7354fc92 flow_rule_match_meta EXPORT_SYMBOL vmlinux 0x735a0bd5 native_io_delay EXPORT_SYMBOL vmlinux 0x735e6a81 acpi_evaluate_integer +EXPORT_SYMBOL vmlinux 0x73794001 inet_sk_rebuild_header EXPORT_SYMBOL vmlinux 0x7380dffa argv_split EXPORT_SYMBOL vmlinux 0x7388bed5 lru_cache_add EXPORT_SYMBOL vmlinux 0x73abb180 alloc_contig_range -EXPORT_SYMBOL vmlinux 0x73bd5f11 fs_context_for_mount +EXPORT_SYMBOL vmlinux 0x73b55575 __check_sticky +EXPORT_SYMBOL vmlinux 0x73bdcafe iterate_fd EXPORT_SYMBOL vmlinux 0x73cbb051 key_reject_and_link EXPORT_SYMBOL vmlinux 0x73dd54eb irq_fpu_usable EXPORT_SYMBOL vmlinux 0x73ff029c truncate_setsize @@ -5940,18 +5931,19 @@ EXPORT_SYMBOL vmlinux 0x7410aba2 strreplace EXPORT_SYMBOL vmlinux 0x7412ed5b kvfree_sensitive EXPORT_SYMBOL vmlinux 0x7413793a EISA_bus -EXPORT_SYMBOL vmlinux 0x742064f8 ppp_unregister_compressor EXPORT_SYMBOL vmlinux 0x742578a5 wait_for_random_bytes +EXPORT_SYMBOL vmlinux 0x7426fb48 gnet_stats_copy_basic_hw EXPORT_SYMBOL vmlinux 0x7428edc7 to_nd_dax EXPORT_SYMBOL vmlinux 0x7429e20c kstrtos8 +EXPORT_SYMBOL vmlinux 0x743153ad netdev_crit EXPORT_SYMBOL vmlinux 0x74356613 tty_schedule_flip EXPORT_SYMBOL vmlinux 0x7447000d seq_read EXPORT_SYMBOL vmlinux 0x74523cb0 cdrom_dummy_generic_packet EXPORT_SYMBOL vmlinux 0x7453d3e8 security_release_secctx EXPORT_SYMBOL vmlinux 0x745b0206 scsi_set_medium_removal -EXPORT_SYMBOL vmlinux 0x745d2879 kern_path_create EXPORT_SYMBOL vmlinux 0x746a7bdf scsi_vpd_tpg_id EXPORT_SYMBOL vmlinux 0x74754435 acpi_bus_generate_netlink_event +EXPORT_SYMBOL vmlinux 0x74765399 netdev_class_remove_file_ns EXPORT_SYMBOL vmlinux 0x747c1378 dma_async_tx_descriptor_init EXPORT_SYMBOL vmlinux 0x74a31e71 truncate_pagecache EXPORT_SYMBOL vmlinux 0x74b3f3a9 vga_switcheroo_unregister_client @@ -5960,56 +5952,56 @@ EXPORT_SYMBOL vmlinux 0x74df86e7 msi_desc_to_pci_dev EXPORT_SYMBOL vmlinux 0x74e5ff1a udpv6_encap_enable EXPORT_SYMBOL vmlinux 0x74e64d47 registered_fb -EXPORT_SYMBOL vmlinux 0x74f200bc scm_detach_fds EXPORT_SYMBOL vmlinux 0x751e1383 inode_set_flags -EXPORT_SYMBOL vmlinux 0x7521ae37 netif_skb_features +EXPORT_SYMBOL vmlinux 0x7528bc32 vlan_dev_vlan_id EXPORT_SYMBOL vmlinux 0x7530bb0c __SCT__tp_func_write_msr EXPORT_SYMBOL vmlinux 0x7538b132 agp_off EXPORT_SYMBOL vmlinux 0x754d539c strlen -EXPORT_SYMBOL vmlinux 0x757f38c2 mem_cgroup_from_task -EXPORT_SYMBOL vmlinux 0x758260c0 netdev_name_node_alt_destroy +EXPORT_SYMBOL vmlinux 0x757761a5 tcf_qevent_init EXPORT_SYMBOL vmlinux 0x75871f5e acpi_get_next_object EXPORT_SYMBOL vmlinux 0x758ceeb5 __x86_indirect_alt_jmp_r15 EXPORT_SYMBOL vmlinux 0x75943e25 i8253_lock EXPORT_SYMBOL vmlinux 0x759decdc textsearch_register EXPORT_SYMBOL vmlinux 0x75a737bd setattr_prepare EXPORT_SYMBOL vmlinux 0x75b219cf __seq_open_private -EXPORT_SYMBOL vmlinux 0x75bbbf58 security_inode_copy_up EXPORT_SYMBOL vmlinux 0x75bda77a seq_hlist_next EXPORT_SYMBOL vmlinux 0x75d0deb9 nsecs_to_jiffies64 -EXPORT_SYMBOL vmlinux 0x75d2666a phy_attached_info EXPORT_SYMBOL vmlinux 0x75d499dd vmcore_add_device_dump EXPORT_SYMBOL vmlinux 0x75d5f478 configfs_unregister_subsystem EXPORT_SYMBOL vmlinux 0x75dcad52 jbd2_journal_unlock_updates -EXPORT_SYMBOL vmlinux 0x75e5574c xp_set_rxq_info +EXPORT_SYMBOL vmlinux 0x75ed45b5 dev_change_proto_down +EXPORT_SYMBOL vmlinux 0x75edb2ad kfree_skb_list EXPORT_SYMBOL vmlinux 0x75f7dd2b vfs_iocb_iter_read -EXPORT_SYMBOL vmlinux 0x75ff4526 flow_block_cb_alloc EXPORT_SYMBOL vmlinux 0x760705bb pci_alloc_dev EXPORT_SYMBOL vmlinux 0x760a0f4f yield EXPORT_SYMBOL vmlinux 0x7618af39 hdmi_infoframe_check EXPORT_SYMBOL vmlinux 0x76190d53 filemap_fdatawait_range_keep_errors EXPORT_SYMBOL vmlinux 0x761cd1ee textsearch_find_continuous +EXPORT_SYMBOL vmlinux 0x7623144d proto_register EXPORT_SYMBOL vmlinux 0x7624249e dim_park_tired -EXPORT_SYMBOL vmlinux 0x762a4f6d dst_release -EXPORT_SYMBOL vmlinux 0x762ec5ef security_inode_notifysecctx +EXPORT_SYMBOL vmlinux 0x7638d945 skb_copy +EXPORT_SYMBOL vmlinux 0x763bab8a netdev_master_upper_dev_get EXPORT_SYMBOL vmlinux 0x7647726c handle_sysrq EXPORT_SYMBOL vmlinux 0x765ff474 crc_t10dif_generic EXPORT_SYMBOL vmlinux 0x76604213 simple_getattr EXPORT_SYMBOL vmlinux 0x766a0927 mempool_alloc_pages EXPORT_SYMBOL vmlinux 0x767dce4b acpi_disable_all_gpes EXPORT_SYMBOL vmlinux 0x767ddb02 set_memory_wc -EXPORT_SYMBOL vmlinux 0x7684fecc netdev_lower_get_next_private_rcu EXPORT_SYMBOL vmlinux 0x769f6e64 errseq_check +EXPORT_SYMBOL vmlinux 0x76b622a9 tcf_action_update_stats EXPORT_SYMBOL vmlinux 0x76b72e4b pci_request_region -EXPORT_SYMBOL vmlinux 0x76cce27e generic_permission +EXPORT_SYMBOL vmlinux 0x76c6c099 sk_common_release EXPORT_SYMBOL vmlinux 0x76d3cd60 laptop_mode EXPORT_SYMBOL vmlinux 0x76d451c4 add_taint EXPORT_SYMBOL vmlinux 0x76db5fc3 pci_read_vpd EXPORT_SYMBOL vmlinux 0x76ddb893 vme_slave_request EXPORT_SYMBOL vmlinux 0x76eaf627 pnp_unregister_card_driver +EXPORT_SYMBOL vmlinux 0x76ec85c3 ipv6_find_hdr EXPORT_SYMBOL vmlinux 0x76ef2e8a __pagevec_release +EXPORT_SYMBOL vmlinux 0x76f6cde5 inet_dgram_ops EXPORT_SYMBOL vmlinux 0x76fb08a7 amd_iommu_unregister_ppr_notifier -EXPORT_SYMBOL vmlinux 0x77022431 __hw_addr_ref_unsync_dev +EXPORT_SYMBOL vmlinux 0x77086c93 ip_getsockopt +EXPORT_SYMBOL vmlinux 0x770cfe76 default_qdisc_ops EXPORT_SYMBOL vmlinux 0x77108d8f complete_request_key EXPORT_SYMBOL vmlinux 0x7732159c free_irq_cpu_rmap EXPORT_SYMBOL vmlinux 0x77358855 iomem_resource @@ -6019,117 +6011,131 @@ EXPORT_SYMBOL vmlinux 0x77755248 generic_iommu_put_resv_regions EXPORT_SYMBOL vmlinux 0x777dcc04 tty_name EXPORT_SYMBOL vmlinux 0x777ed1d0 nla_put_64bit -EXPORT_SYMBOL vmlinux 0x77882e04 ipv6_dev_mc_dec +EXPORT_SYMBOL vmlinux 0x778aac40 register_gifconf EXPORT_SYMBOL vmlinux 0x7791cd60 __cpuhp_remove_state -EXPORT_SYMBOL vmlinux 0x7792d846 security_dentry_create_files_as -EXPORT_SYMBOL vmlinux 0x77a24def flow_indr_block_cb_alloc -EXPORT_SYMBOL vmlinux 0x77acfc32 io_uring_get_socket EXPORT_SYMBOL vmlinux 0x77b0fed9 __next_node_in -EXPORT_SYMBOL vmlinux 0x77b34bdf dst_discard_out EXPORT_SYMBOL vmlinux 0x77bc13a0 strim +EXPORT_SYMBOL vmlinux 0x77c49281 ppp_unit_number EXPORT_SYMBOL vmlinux 0x77d0328b blk_mq_free_tag_set EXPORT_SYMBOL vmlinux 0x77e9eb37 aes_encrypt EXPORT_SYMBOL vmlinux 0x77ed7eb9 mdio_device_reset -EXPORT_SYMBOL vmlinux 0x77f0f9b7 phy_register_fixup -EXPORT_SYMBOL vmlinux 0x7806412b prepare_to_swait_exclusive EXPORT_SYMBOL vmlinux 0x7807f0f8 schedule_timeout_idle EXPORT_SYMBOL vmlinux 0x780fdfd1 intel_enable_gtt +EXPORT_SYMBOL vmlinux 0x782a2c56 __skb_recv_datagram EXPORT_SYMBOL vmlinux 0x7834defd vfio_group_unpin_pages -EXPORT_SYMBOL vmlinux 0x783d58ce ip_tunnel_header_ops +EXPORT_SYMBOL vmlinux 0x783865a2 phy_ethtool_get_link_ksettings EXPORT_SYMBOL vmlinux 0x7846af3e __kfifo_len_r +EXPORT_SYMBOL vmlinux 0x784943fb skb_ext_add +EXPORT_SYMBOL vmlinux 0x78684682 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0x7879cc96 flow_block_cb_alloc EXPORT_SYMBOL vmlinux 0x787c59e8 jbd2_journal_update_sb_errno EXPORT_SYMBOL vmlinux 0x7880c781 dm_kcopyd_prepare_callback -EXPORT_SYMBOL vmlinux 0x7886a0a7 sk_capable EXPORT_SYMBOL vmlinux 0x789affb1 frontswap_tmem_exclusive_gets EXPORT_SYMBOL vmlinux 0x78a16f48 aes_decrypt EXPORT_SYMBOL vmlinux 0x78d29eec blk_queue_virt_boundary EXPORT_SYMBOL vmlinux 0x78df6bd7 no_pci_devices -EXPORT_SYMBOL vmlinux 0x78e597ac kfree_skb_partial +EXPORT_SYMBOL vmlinux 0x78ef916b inet_rcv_saddr_equal +EXPORT_SYMBOL vmlinux 0x790150cd xfrm_state_check_expire EXPORT_SYMBOL vmlinux 0x790bafd4 blk_stack_limits +EXPORT_SYMBOL vmlinux 0x791b6f43 netpoll_send_skb EXPORT_SYMBOL vmlinux 0x7923fb0e dma_alloc_attrs EXPORT_SYMBOL vmlinux 0x7933b229 truncate_inode_pages_final EXPORT_SYMBOL vmlinux 0x793596f0 fscrypt_setup_filename +EXPORT_SYMBOL vmlinux 0x793a465d tcp_create_openreq_child EXPORT_SYMBOL vmlinux 0x795188ca tty_insert_flip_string_fixed_flag +EXPORT_SYMBOL vmlinux 0x7953fa6b tcp_sock_set_keepintvl +EXPORT_SYMBOL vmlinux 0x795e41cb kfree_skb EXPORT_SYMBOL vmlinux 0x79656425 __serio_register_port -EXPORT_SYMBOL vmlinux 0x796722f7 xfrm_unregister_type_offload EXPORT_SYMBOL vmlinux 0x796c7e3e locks_delete_block EXPORT_SYMBOL vmlinux 0x79739c3c utf8nagemin EXPORT_SYMBOL vmlinux 0x7984eefc key_update EXPORT_SYMBOL vmlinux 0x7988912c write_one_page EXPORT_SYMBOL vmlinux 0x799687a9 __put_page EXPORT_SYMBOL vmlinux 0x799a5099 devm_request_resource +EXPORT_SYMBOL vmlinux 0x79a0b81e mr_table_alloc EXPORT_SYMBOL vmlinux 0x79a33f85 vme_get_size EXPORT_SYMBOL vmlinux 0x79aa04a2 get_random_bytes -EXPORT_SYMBOL vmlinux 0x79aead2c sock_recvmsg +EXPORT_SYMBOL vmlinux 0x79bd54ea vfs_symlink +EXPORT_SYMBOL vmlinux 0x79bdfa30 flow_block_cb_lookup EXPORT_SYMBOL vmlinux 0x79bee5d5 unregister_framebuffer -EXPORT_SYMBOL vmlinux 0x79ca4573 unlock_page_memcg +EXPORT_SYMBOL vmlinux 0x79c1dc47 netdev_state_change EXPORT_SYMBOL vmlinux 0x79cf3889 pci_remove_bus +EXPORT_SYMBOL vmlinux 0x79d159e7 __phy_resume +EXPORT_SYMBOL vmlinux 0x79dd03a7 inet_rtx_syn_ack EXPORT_SYMBOL vmlinux 0x79df9633 ioremap_encrypted EXPORT_SYMBOL vmlinux 0x79ec8f93 blk_start_plug EXPORT_SYMBOL vmlinux 0x79ef400f dma_async_device_unregister EXPORT_SYMBOL vmlinux 0x7a09a064 seg6_hmac_compute -EXPORT_SYMBOL vmlinux 0x7a1a62c0 tcp_md5_hash_key +EXPORT_SYMBOL vmlinux 0x7a145d67 generic_permission EXPORT_SYMBOL vmlinux 0x7a1bcd59 gf128mul_x8_ble -EXPORT_SYMBOL vmlinux 0x7a1fa6f2 _dev_warn EXPORT_SYMBOL vmlinux 0x7a2af7b4 cpu_number -EXPORT_SYMBOL vmlinux 0x7a3862b4 tcp_recvmsg EXPORT_SYMBOL vmlinux 0x7a415784 device_add_disk_no_queue_reg -EXPORT_SYMBOL vmlinux 0x7a4f503b __sk_mem_schedule EXPORT_SYMBOL vmlinux 0x7a52bdfe dm_unregister_target +EXPORT_SYMBOL vmlinux 0x7a5686ee dev_remove_pack EXPORT_SYMBOL vmlinux 0x7a71698c jbd2_journal_inode_ranged_write +EXPORT_SYMBOL vmlinux 0x7a7ab8b4 skb_copy_datagram_from_iter +EXPORT_SYMBOL vmlinux 0x7a837ca9 netpoll_poll_disable EXPORT_SYMBOL vmlinux 0x7a88da87 iosf_mbi_write EXPORT_SYMBOL vmlinux 0x7a8d8592 generic_set_encrypted_ci_d_ops EXPORT_SYMBOL vmlinux 0x7a95e5ae do_settimeofday64 -EXPORT_SYMBOL vmlinux 0x7a9ef0e3 security_sb_clone_mnt_opts EXPORT_SYMBOL vmlinux 0x7aa1756e kvfree EXPORT_SYMBOL vmlinux 0x7ab45d25 dma_fence_array_create EXPORT_SYMBOL vmlinux 0x7ab88a45 system_freezing_cnt EXPORT_SYMBOL vmlinux 0x7abb3e9c backlight_device_register -EXPORT_SYMBOL vmlinux 0x7acfde92 ip_sock_set_pktinfo +EXPORT_SYMBOL vmlinux 0x7ac3dbb4 vfs_tmpfile +EXPORT_SYMBOL vmlinux 0x7ac42170 udp_gro_receive +EXPORT_SYMBOL vmlinux 0x7acda2e7 fqdir_exit EXPORT_SYMBOL vmlinux 0x7ad01abe cdev_del EXPORT_SYMBOL vmlinux 0x7ad050b9 qid_lt +EXPORT_SYMBOL vmlinux 0x7ad2d278 sock_from_file EXPORT_SYMBOL vmlinux 0x7adc0fbf rb_replace_node_rcu +EXPORT_SYMBOL vmlinux 0x7adfc999 __skb_checksum_complete EXPORT_SYMBOL vmlinux 0x7ae2a51f no_llseek EXPORT_SYMBOL vmlinux 0x7ae3a814 proc_mkdir -EXPORT_SYMBOL vmlinux 0x7ae94c96 kernel_bind EXPORT_SYMBOL vmlinux 0x7aee5d9a call_usermodehelper_setup EXPORT_SYMBOL vmlinux 0x7aff77a3 __cpu_present_mask -EXPORT_SYMBOL vmlinux 0x7b0bee65 security_sb_set_mnt_opts -EXPORT_SYMBOL vmlinux 0x7b200e9c dst_dev_put +EXPORT_SYMBOL vmlinux 0x7b21b53b xfrm_input_unregister_afinfo EXPORT_SYMBOL vmlinux 0x7b37d4a7 _find_first_zero_bit EXPORT_SYMBOL vmlinux 0x7b4136e5 jbd2_log_start_commit -EXPORT_SYMBOL vmlinux 0x7b4d456f dev_uc_add EXPORT_SYMBOL vmlinux 0x7b4da6ff __init_rwsem EXPORT_SYMBOL vmlinux 0x7b52e178 dup_iter -EXPORT_SYMBOL vmlinux 0x7b575c83 tcp_enter_quickack_mode EXPORT_SYMBOL vmlinux 0x7b58ca5d vc_cons +EXPORT_SYMBOL vmlinux 0x7b5b44d1 tcp_rcv_established EXPORT_SYMBOL vmlinux 0x7b5b8f31 sha256_update +EXPORT_SYMBOL vmlinux 0x7b6250fc nf_unregister_net_hooks +EXPORT_SYMBOL vmlinux 0x7b668da0 phy_mii_ioctl EXPORT_SYMBOL vmlinux 0x7b6c351c dma_ops -EXPORT_SYMBOL vmlinux 0x7b7abd54 tcf_classify EXPORT_SYMBOL vmlinux 0x7b7e3a34 kset_unregister EXPORT_SYMBOL vmlinux 0x7b82b9a1 idr_replace +EXPORT_SYMBOL vmlinux 0x7ba0da40 tcf_exts_validate EXPORT_SYMBOL vmlinux 0x7bb50b88 acpi_write EXPORT_SYMBOL vmlinux 0x7bb8d6c7 tty_port_close_start EXPORT_SYMBOL vmlinux 0x7bbccd05 nr_node_ids EXPORT_SYMBOL vmlinux 0x7bc4fdcc watchdog_unregister_governor +EXPORT_SYMBOL vmlinux 0x7bc645ef udp6_csum_init EXPORT_SYMBOL vmlinux 0x7bfa6ede touch_atime +EXPORT_SYMBOL vmlinux 0x7c0b51ed vfs_link EXPORT_SYMBOL vmlinux 0x7c173634 __bitmap_complement EXPORT_SYMBOL vmlinux 0x7c25a16a nd_pfn_probe +EXPORT_SYMBOL vmlinux 0x7c35244b security_task_getsecid_obj EXPORT_SYMBOL vmlinux 0x7c3f3d33 mntget +EXPORT_SYMBOL vmlinux 0x7c420e33 genphy_restart_aneg EXPORT_SYMBOL vmlinux 0x7c46233a cpufreq_quick_get +EXPORT_SYMBOL vmlinux 0x7c54c8eb netif_stacked_transfer_operstate EXPORT_SYMBOL vmlinux 0x7c55fbef fuse_dequeue_forget +EXPORT_SYMBOL vmlinux 0x7c560784 tso_build_data +EXPORT_SYMBOL vmlinux 0x7c599296 eth_type_trans EXPORT_SYMBOL vmlinux 0x7c663db6 vfio_unregister_notifier -EXPORT_SYMBOL vmlinux 0x7c667e09 __pskb_copy_fclone +EXPORT_SYMBOL vmlinux 0x7c6bcb13 xfrm_register_type_offload EXPORT_SYMBOL vmlinux 0x7c86f0b7 input_set_timestamp EXPORT_SYMBOL vmlinux 0x7c9278fb pmem_should_map_pages EXPORT_SYMBOL vmlinux 0x7c939950 devm_ioremap EXPORT_SYMBOL vmlinux 0x7c9ca58f __sg_page_iter_next EXPORT_SYMBOL vmlinux 0x7ca49a2d pci_prepare_to_sleep +EXPORT_SYMBOL vmlinux 0x7cad7272 sock_alloc_file EXPORT_SYMBOL vmlinux 0x7cb1aea1 devlink_dpipe_header_ethernet -EXPORT_SYMBOL vmlinux 0x7cb7d736 netif_device_attach -EXPORT_SYMBOL vmlinux 0x7cbe9144 __skb_pad -EXPORT_SYMBOL vmlinux 0x7cc361a2 flow_rule_match_enc_ports EXPORT_SYMBOL vmlinux 0x7cc55efb clear_page_dirty_for_io +EXPORT_SYMBOL vmlinux 0x7cc79b73 skb_copy_bits EXPORT_SYMBOL vmlinux 0x7cd8d75e page_offset_base EXPORT_SYMBOL vmlinux 0x7ce18c9f from_kqid EXPORT_SYMBOL vmlinux 0x7ce28a69 vfs_fsync_range @@ -6138,70 +6144,67 @@ EXPORT_SYMBOL vmlinux 0x7cfe368d net_dim_get_def_tx_moderation EXPORT_SYMBOL vmlinux 0x7d0838df iov_iter_get_pages EXPORT_SYMBOL vmlinux 0x7d0ba682 gen_pool_virt_to_phys -EXPORT_SYMBOL vmlinux 0x7d0c50fb ipv6_skip_exthdr EXPORT_SYMBOL vmlinux 0x7d0db45c jiffies_to_clock_t EXPORT_SYMBOL vmlinux 0x7d112d16 pci_request_selected_regions_exclusive EXPORT_SYMBOL vmlinux 0x7d12d76d acpi_get_parent -EXPORT_SYMBOL vmlinux 0x7d3d878b tcp_filter -EXPORT_SYMBOL vmlinux 0x7d3fd2f1 __xfrm_route_forward +EXPORT_SYMBOL vmlinux 0x7d291514 nexthop_set_hw_flags +EXPORT_SYMBOL vmlinux 0x7d3a446b nf_getsockopt EXPORT_SYMBOL vmlinux 0x7d4b176a netlbl_catmap_setbit EXPORT_SYMBOL vmlinux 0x7d54f720 __destroy_inode -EXPORT_SYMBOL vmlinux 0x7d5896c3 nf_unregister_queue_handler EXPORT_SYMBOL vmlinux 0x7d5e1008 __crc32c_le_shift -EXPORT_SYMBOL vmlinux 0x7d5e853a phy_attached_info_irq EXPORT_SYMBOL vmlinux 0x7d628444 memcpy_fromio +EXPORT_SYMBOL vmlinux 0x7d69dfbc nf_ct_attach EXPORT_SYMBOL vmlinux 0x7d74d522 kstrtoull_from_user -EXPORT_SYMBOL vmlinux 0x7d796fc7 tcp_seq_stop -EXPORT_SYMBOL vmlinux 0x7d821479 nf_ct_get_tuple_skb +EXPORT_SYMBOL vmlinux 0x7da1998a mdiobus_is_registered_device EXPORT_SYMBOL vmlinux 0x7daece67 quota_send_warning -EXPORT_SYMBOL vmlinux 0x7dc5a4ca inet_sk_rx_dst_set EXPORT_SYMBOL vmlinux 0x7dcf4135 __xa_insert -EXPORT_SYMBOL vmlinux 0x7dd1a7da inet_rcv_saddr_equal EXPORT_SYMBOL vmlinux 0x7dd554fc unregister_kmmio_probe +EXPORT_SYMBOL vmlinux 0x7de51176 tcp_v4_destroy_sock EXPORT_SYMBOL vmlinux 0x7dec87f8 revert_creds EXPORT_SYMBOL vmlinux 0x7dedabaf pci_select_bars EXPORT_SYMBOL vmlinux 0x7deff673 dm_consume_args EXPORT_SYMBOL vmlinux 0x7df3b44a trace_raw_output_prep EXPORT_SYMBOL vmlinux 0x7e0826e2 atomic_dec_and_mutex_lock -EXPORT_SYMBOL vmlinux 0x7e1a58d5 __hw_addr_ref_sync_dev +EXPORT_SYMBOL vmlinux 0x7e1cd87f xfrm_init_replay +EXPORT_SYMBOL vmlinux 0x7e1e528f netpoll_send_udp EXPORT_SYMBOL vmlinux 0x7e3191f6 try_to_del_timer_sync EXPORT_SYMBOL vmlinux 0x7e33512d init_special_inode EXPORT_SYMBOL vmlinux 0x7e3d815e __x86_indirect_alt_call_rbx +EXPORT_SYMBOL vmlinux 0x7e41f8c6 skb_copy_and_csum_datagram_msg EXPORT_SYMBOL vmlinux 0x7e45c0e0 csum_and_copy_from_iter_full EXPORT_SYMBOL vmlinux 0x7e526bfa __x86_indirect_thunk_r10 EXPORT_SYMBOL vmlinux 0x7e6091fd bdi_register -EXPORT_SYMBOL vmlinux 0x7e6c63e9 ip_frag_init +EXPORT_SYMBOL vmlinux 0x7e727dfb sock_kmalloc EXPORT_SYMBOL vmlinux 0x7e7bcf26 acpi_map_cpu EXPORT_SYMBOL vmlinux 0x7e83acc1 input_mt_get_slot_by_key +EXPORT_SYMBOL vmlinux 0x7ebe7885 lookup_one_len +EXPORT_SYMBOL vmlinux 0x7edbf4fd inet_sk_set_state EXPORT_SYMBOL vmlinux 0x7ee83203 input_release_device -EXPORT_SYMBOL vmlinux 0x7effbcdf dev_set_mac_address_user -EXPORT_SYMBOL vmlinux 0x7effe02b tcf_get_next_chain +EXPORT_SYMBOL vmlinux 0x7ee97473 flow_indr_block_cb_alloc EXPORT_SYMBOL vmlinux 0x7f02188f __msecs_to_jiffies EXPORT_SYMBOL vmlinux 0x7f03b6a9 crc_ccitt_table EXPORT_SYMBOL vmlinux 0x7f07418b __SCT__tp_func_kmem_cache_alloc_node -EXPORT_SYMBOL vmlinux 0x7f0e7cb8 phy_free_interrupt +EXPORT_SYMBOL vmlinux 0x7f08dc30 sched_autogroup_create_attach +EXPORT_SYMBOL vmlinux 0x7f129159 keyring_clear +EXPORT_SYMBOL vmlinux 0x7f155dd4 ip_setsockopt EXPORT_SYMBOL vmlinux 0x7f24de73 jiffies_to_usecs -EXPORT_SYMBOL vmlinux 0x7f2abb02 sk_stream_wait_connect EXPORT_SYMBOL vmlinux 0x7f52071a net_dim EXPORT_SYMBOL vmlinux 0x7f5b4fe4 sg_free_table -EXPORT_SYMBOL vmlinux 0x7f6ffe1c seg6_hmac_net_exit EXPORT_SYMBOL vmlinux 0x7f7f7bb4 irq_poll_disable -EXPORT_SYMBOL vmlinux 0x7f8fb0f9 udp_read_sock -EXPORT_SYMBOL vmlinux 0x7f918be0 dev_get_phys_port_name EXPORT_SYMBOL vmlinux 0x7f9c24f2 jbd2_journal_dirty_metadata -EXPORT_SYMBOL vmlinux 0x7fbde194 mr_rtm_dumproute +EXPORT_SYMBOL vmlinux 0x7fa9fb0c keyring_alloc +EXPORT_SYMBOL vmlinux 0x7fbf1769 tcp_md5_do_add EXPORT_SYMBOL vmlinux 0x7fc009d2 uart_update_timeout EXPORT_SYMBOL vmlinux 0x7fc09c3c zap_page_range -EXPORT_SYMBOL vmlinux 0x7fc740fc datagram_poll -EXPORT_SYMBOL vmlinux 0x7fd6490a dev_add_pack +EXPORT_SYMBOL vmlinux 0x7fdfd4ad km_new_mapping EXPORT_SYMBOL vmlinux 0x7fe32873 rb_replace_node EXPORT_SYMBOL vmlinux 0x7fe36d9d nvdimm_namespace_capacity -EXPORT_SYMBOL vmlinux 0x7fed74c5 ip6_fraglist_prepare EXPORT_SYMBOL vmlinux 0x7fed91c9 backlight_device_get_by_name -EXPORT_SYMBOL vmlinux 0x7ffffd33 sock_wfree EXPORT_SYMBOL vmlinux 0x80003dd9 agp_generic_free_by_type -EXPORT_SYMBOL vmlinux 0x800f9911 nf_unregister_net_hook EXPORT_SYMBOL vmlinux 0x80112fe1 fc_find_rport_by_wwpn +EXPORT_SYMBOL vmlinux 0x801166d1 netif_carrier_on +EXPORT_SYMBOL vmlinux 0x801ea039 __skb_flow_get_ports +EXPORT_SYMBOL vmlinux 0x80226b01 arp_create EXPORT_SYMBOL vmlinux 0x802c0b04 dma_sync_sg_for_cpu EXPORT_SYMBOL vmlinux 0x803ddbb6 __posix_acl_create EXPORT_SYMBOL vmlinux 0x804af87c wrmsr_safe_on_cpu @@ -6209,294 +6212,297 @@ EXPORT_SYMBOL vmlinux 0x805258b7 vm_mmap EXPORT_SYMBOL vmlinux 0x805bd037 mipi_dsi_dcs_set_display_off EXPORT_SYMBOL vmlinux 0x805c92d7 devm_ioremap_resource -EXPORT_SYMBOL vmlinux 0x806b1f78 inet_select_addr +EXPORT_SYMBOL vmlinux 0x80771923 lock_sock_nested EXPORT_SYMBOL vmlinux 0x8081f6f1 from_kprojid EXPORT_SYMBOL vmlinux 0x809712ff hdmi_avi_infoframe_pack +EXPORT_SYMBOL vmlinux 0x8098a70b ethtool_op_get_link EXPORT_SYMBOL vmlinux 0x80a717a8 __percpu_counter_compare +EXPORT_SYMBOL vmlinux 0x80b3eff9 xfrm_state_alloc EXPORT_SYMBOL vmlinux 0x80bcb1fd blk_get_queue -EXPORT_SYMBOL vmlinux 0x80bff64c genl_unregister_family -EXPORT_SYMBOL vmlinux 0x80c46c44 vlan_filter_drop_vids +EXPORT_SYMBOL vmlinux 0x80beef2d dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0x80c085c0 eth_header EXPORT_SYMBOL vmlinux 0x80ca5026 _bin2bcd -EXPORT_SYMBOL vmlinux 0x80cd305e __hw_addr_sync_dev EXPORT_SYMBOL vmlinux 0x80d30a73 unregister_console EXPORT_SYMBOL vmlinux 0x80d68d3e fb_register_client EXPORT_SYMBOL vmlinux 0x80e1b3bb pnp_get_resource EXPORT_SYMBOL vmlinux 0x80e5f86f fscrypt_fname_alloc_buffer +EXPORT_SYMBOL vmlinux 0x80ec95bd netlbl_calipso_ops_register EXPORT_SYMBOL vmlinux 0x80ee6a58 bd_abort_claiming EXPORT_SYMBOL vmlinux 0x80ef6a66 ps2_handle_ack +EXPORT_SYMBOL vmlinux 0x80fd7c8b nf_unregister_net_hook +EXPORT_SYMBOL vmlinux 0x80fffc84 phy_attach_direct +EXPORT_SYMBOL vmlinux 0x81083347 tcf_idr_create EXPORT_SYMBOL vmlinux 0x8112b3d2 scsi_build_sense_buffer EXPORT_SYMBOL vmlinux 0x81188c30 match_string -EXPORT_SYMBOL vmlinux 0x811b8d9e ppp_register_net_channel +EXPORT_SYMBOL vmlinux 0x8123556d __skb_checksum_complete_head EXPORT_SYMBOL vmlinux 0x812527dc vme_unregister_driver -EXPORT_SYMBOL vmlinux 0x81332dbb nf_register_queue_handler EXPORT_SYMBOL vmlinux 0x8140f77b scsi_partsize EXPORT_SYMBOL vmlinux 0x81533963 sysfs_format_mac EXPORT_SYMBOL vmlinux 0x815b5dd4 match_octal EXPORT_SYMBOL vmlinux 0x815f2897 empty_zero_page +EXPORT_SYMBOL vmlinux 0x815fe326 register_netdevice EXPORT_SYMBOL vmlinux 0x816347c6 agp_device_command -EXPORT_SYMBOL vmlinux 0x8178aa98 gnet_stats_start_copy_compat EXPORT_SYMBOL vmlinux 0x817df955 send_sig EXPORT_SYMBOL vmlinux 0x818416e1 scsi_set_sense_information EXPORT_SYMBOL vmlinux 0x81ac5e33 trace_print_hex_dump_seq EXPORT_SYMBOL vmlinux 0x81bc6da1 pci_enable_msi -EXPORT_SYMBOL vmlinux 0x81bdf340 dev_get_port_parent_id EXPORT_SYMBOL vmlinux 0x81be7fe6 inode_set_bytes EXPORT_SYMBOL vmlinux 0x81c1a31b fb_class +EXPORT_SYMBOL vmlinux 0x81cde128 inet_csk_destroy_sock EXPORT_SYMBOL vmlinux 0x81ce9941 intel_scu_ipc_dev_writev -EXPORT_SYMBOL vmlinux 0x81d67fd7 security_inode_invalidate_secctx EXPORT_SYMBOL vmlinux 0x81db6ebb xz_dec_reset EXPORT_SYMBOL vmlinux 0x81e6b37f dmi_get_system_info +EXPORT_SYMBOL vmlinux 0x8206f5ba unregister_netdevice_notifier_net EXPORT_SYMBOL vmlinux 0x82119da9 d_obtain_root -EXPORT_SYMBOL vmlinux 0x8234ecb2 generic_parse_monolithic -EXPORT_SYMBOL vmlinux 0x8236e6ea skb_get_hash_perturb -EXPORT_SYMBOL vmlinux 0x82388eba skb_queue_head +EXPORT_SYMBOL vmlinux 0x8221839d inet_frag_reasm_finish +EXPORT_SYMBOL vmlinux 0x822f590d ppp_dev_name EXPORT_SYMBOL vmlinux 0x823c19ea iosf_mbi_unregister_pmic_bus_access_notifier_unlocked +EXPORT_SYMBOL vmlinux 0x824e417f netdev_notice +EXPORT_SYMBOL vmlinux 0x82612ff4 inet_csk_complete_hashdance EXPORT_SYMBOL vmlinux 0x8263a6d9 proc_douintvec +EXPORT_SYMBOL vmlinux 0x8272793e security_path_mkdir EXPORT_SYMBOL vmlinux 0x828062b1 __frontswap_init EXPORT_SYMBOL vmlinux 0x82955f0a nla_reserve_64bit EXPORT_SYMBOL vmlinux 0x82973ca3 key_payload_reserve EXPORT_SYMBOL vmlinux 0x82b088ea __blk_rq_map_sg EXPORT_SYMBOL vmlinux 0x82c50c4c mount_bdev EXPORT_SYMBOL vmlinux 0x82c87ad5 nr_online_nodes -EXPORT_SYMBOL vmlinux 0x82cd3fad device_get_mac_address EXPORT_SYMBOL vmlinux 0x82d3e583 __module_get -EXPORT_SYMBOL vmlinux 0x82e00bca udplite_prot -EXPORT_SYMBOL vmlinux 0x8304d143 ip6tun_encaps -EXPORT_SYMBOL vmlinux 0x83060668 unregister_fib_notifier -EXPORT_SYMBOL vmlinux 0x8317743b flow_block_cb_setup_simple +EXPORT_SYMBOL vmlinux 0x82e70b5d sock_no_connect EXPORT_SYMBOL vmlinux 0x831969e7 agp_generic_destroy_page +EXPORT_SYMBOL vmlinux 0x83327ec5 genphy_read_mmd_unsupported EXPORT_SYMBOL vmlinux 0x83370b11 devm_memremap -EXPORT_SYMBOL vmlinux 0x8347d4c3 dev_set_threaded EXPORT_SYMBOL vmlinux 0x83581089 gf128mul_init_4k_lle EXPORT_SYMBOL vmlinux 0x83597cc4 vmf_insert_mixed_mkwrite EXPORT_SYMBOL vmlinux 0x83691464 bio_chain +EXPORT_SYMBOL vmlinux 0x83698718 fs_context_for_submount EXPORT_SYMBOL vmlinux 0x837b7b09 __dynamic_pr_debug EXPORT_SYMBOL vmlinux 0x837f66da wait_on_page_private_2_killable EXPORT_SYMBOL vmlinux 0x838d2bc8 siphash_3u32 -EXPORT_SYMBOL vmlinux 0x83b35e5b sock_diag_put_filterinfo +EXPORT_SYMBOL vmlinux 0x839a6a27 mdiobus_register_device +EXPORT_SYMBOL vmlinux 0x83bd005c neigh_table_clear +EXPORT_SYMBOL vmlinux 0x83c3657f __dynamic_dev_dbg EXPORT_SYMBOL vmlinux 0x83c52fba xfrm4_protocol_init EXPORT_SYMBOL vmlinux 0x83c6a6bb md_check_no_bitmap -EXPORT_SYMBOL vmlinux 0x83f619e1 tcf_block_put +EXPORT_SYMBOL vmlinux 0x83c6c798 __dev_get_by_flags +EXPORT_SYMBOL vmlinux 0x83dc370b tc_setup_cb_add +EXPORT_SYMBOL vmlinux 0x84012df1 ipv4_dst_check EXPORT_SYMBOL vmlinux 0x840342c6 sgl_free -EXPORT_SYMBOL vmlinux 0x841f6853 genphy_update_link EXPORT_SYMBOL vmlinux 0x8427cc7b _raw_spin_lock_irq EXPORT_SYMBOL vmlinux 0x842c8e9d ioread16 +EXPORT_SYMBOL vmlinux 0x843bc162 skb_flow_dissect_tunnel_info EXPORT_SYMBOL vmlinux 0x8455e3a7 dma_fence_signal_timestamp_locked EXPORT_SYMBOL vmlinux 0x845b94e9 mark_buffer_async_write EXPORT_SYMBOL vmlinux 0x845c9ff8 blk_mq_tagset_busy_iter EXPORT_SYMBOL vmlinux 0x84609e30 md_integrity_register -EXPORT_SYMBOL vmlinux 0x846cea91 __sk_backlog_rcv +EXPORT_SYMBOL vmlinux 0x8474ec5d tcp_md5_hash_skb_data +EXPORT_SYMBOL vmlinux 0x847d725a tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0x847fb21e sock_common_setsockopt EXPORT_SYMBOL vmlinux 0x84823cf3 nla_strscpy EXPORT_SYMBOL vmlinux 0x848d372e iowrite8 -EXPORT_SYMBOL vmlinux 0x84ad87f3 xfrm_policy_destroy +EXPORT_SYMBOL vmlinux 0x84abff8b netdev_name_node_alt_create +EXPORT_SYMBOL vmlinux 0x84b461bf kernel_connect EXPORT_SYMBOL vmlinux 0x84c03e9a rtnl_nla_parse_ifla EXPORT_SYMBOL vmlinux 0x84c1c552 proc_dointvec_ms_jiffies -EXPORT_SYMBOL vmlinux 0x84cfb7cb __skb_get_hash -EXPORT_SYMBOL vmlinux 0x84d144f1 put_fs_context EXPORT_SYMBOL vmlinux 0x84d417b2 d_instantiate_anon EXPORT_SYMBOL vmlinux 0x84d600fc fs_lookup_param EXPORT_SYMBOL vmlinux 0x84ec428f dquot_destroy EXPORT_SYMBOL vmlinux 0x84f7a247 jbd2_journal_force_commit -EXPORT_SYMBOL vmlinux 0x8508128c inet_dgram_connect EXPORT_SYMBOL vmlinux 0x8509b18b simple_symlink_inode_operations EXPORT_SYMBOL vmlinux 0x8518a4a6 _raw_spin_trylock_bh -EXPORT_SYMBOL vmlinux 0x851d04ea skb_vlan_untag EXPORT_SYMBOL vmlinux 0x8522d6bc strncpy_from_user -EXPORT_SYMBOL vmlinux 0x852c9595 sk_page_frag_refill -EXPORT_SYMBOL vmlinux 0x854a710f inet_frag_destroy -EXPORT_SYMBOL vmlinux 0x854c72a8 tcp_sock_set_user_timeout +EXPORT_SYMBOL vmlinux 0x8539e508 sock_wmalloc +EXPORT_SYMBOL vmlinux 0x854490e5 devm_alloc_etherdev_mqs EXPORT_SYMBOL vmlinux 0x85670f1d rtnl_is_locked -EXPORT_SYMBOL vmlinux 0x8580378b security_sb_mnt_opts_compat +EXPORT_SYMBOL vmlinux 0x856ebfff ipv4_specific EXPORT_SYMBOL vmlinux 0x8592891f flush_signals -EXPORT_SYMBOL vmlinux 0x85a15cfb security_binder_set_context_mgr EXPORT_SYMBOL vmlinux 0x85a188c0 blk_mq_init_sq_queue +EXPORT_SYMBOL vmlinux 0x85a1c36f tcf_action_check_ctrlact +EXPORT_SYMBOL vmlinux 0x85a4c2f8 xfrm6_input_addr EXPORT_SYMBOL vmlinux 0x85b4cf2f utf8nlen EXPORT_SYMBOL vmlinux 0x85b5e625 rfkill_set_states EXPORT_SYMBOL vmlinux 0x85bd1608 __request_region EXPORT_SYMBOL vmlinux 0x85c2529e scsi_add_device +EXPORT_SYMBOL vmlinux 0x85c5a488 sk_wait_data EXPORT_SYMBOL vmlinux 0x85cb778c single_release EXPORT_SYMBOL vmlinux 0x85cdcf83 serio_reconnect EXPORT_SYMBOL vmlinux 0x85d4a030 agp_free_memory EXPORT_SYMBOL vmlinux 0x85df9b6c strsep EXPORT_SYMBOL vmlinux 0x85efc7e0 zero_pfn -EXPORT_SYMBOL vmlinux 0x85f45c5a inet_sk_set_state -EXPORT_SYMBOL vmlinux 0x85f62e92 __sk_dst_check EXPORT_SYMBOL vmlinux 0x85fbc931 slhc_uncompress EXPORT_SYMBOL vmlinux 0x85fc1d86 del_gendisk EXPORT_SYMBOL vmlinux 0x8614507f locks_lock_inode_wait -EXPORT_SYMBOL vmlinux 0x8623394b __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0x86185ec0 sock_create_lite +EXPORT_SYMBOL vmlinux 0x861f634a phy_get_internal_delay EXPORT_SYMBOL vmlinux 0x8631815a generic_fillattr EXPORT_SYMBOL vmlinux 0x863a276a color_table EXPORT_SYMBOL vmlinux 0x86476447 fb_show_logo +EXPORT_SYMBOL vmlinux 0x864a734f kernel_sendmsg_locked EXPORT_SYMBOL vmlinux 0x865029ac __hw_addr_sync EXPORT_SYMBOL vmlinux 0x865989ef finish_no_open EXPORT_SYMBOL vmlinux 0x86824ec9 __tracepoint_dma_fence_enable_signal EXPORT_SYMBOL vmlinux 0x868acba5 get_options -EXPORT_SYMBOL vmlinux 0x86af231c linkwatch_fire_event +EXPORT_SYMBOL vmlinux 0x868fe188 dev_vprintk_emit EXPORT_SYMBOL vmlinux 0x86b8a1ef dm_table_get_md EXPORT_SYMBOL vmlinux 0x86c7272b iosf_mbi_read EXPORT_SYMBOL vmlinux 0x86d52ba5 lookup_constant EXPORT_SYMBOL vmlinux 0x86f27420 iosf_mbi_block_punit_i2c_access EXPORT_SYMBOL vmlinux 0x86f6f42e devfreq_monitor_resume EXPORT_SYMBOL vmlinux 0x86f83bc6 __x86_indirect_alt_call_rsi -EXPORT_SYMBOL vmlinux 0x86f84275 inet6_csk_route_req EXPORT_SYMBOL vmlinux 0x86fb4536 cpumask_any_and_distribute EXPORT_SYMBOL vmlinux 0x86fb9b05 bitmap_parse_user EXPORT_SYMBOL vmlinux 0x86fc8cd4 agp_generic_remove_memory +EXPORT_SYMBOL vmlinux 0x86fe5278 tcf_get_next_chain EXPORT_SYMBOL vmlinux 0x8714563b csum_and_copy_from_user -EXPORT_SYMBOL vmlinux 0x8719e091 __skb_recv_datagram -EXPORT_SYMBOL vmlinux 0x873e6a61 inet_sock_destruct EXPORT_SYMBOL vmlinux 0x874a6b90 serio_unregister_port +EXPORT_SYMBOL vmlinux 0x874e7a7f __scm_destroy EXPORT_SYMBOL vmlinux 0x875e5333 fscrypt_encrypt_pagecache_blocks EXPORT_SYMBOL vmlinux 0x875e8f01 iommu_dma_get_resv_regions EXPORT_SYMBOL vmlinux 0x8761c87b rps_needed EXPORT_SYMBOL vmlinux 0x87655235 scsi_print_sense EXPORT_SYMBOL vmlinux 0x87706d4e __put_user_nocheck_8 +EXPORT_SYMBOL vmlinux 0x8772c488 netdev_update_features EXPORT_SYMBOL vmlinux 0x87761528 __traceiter_kmem_cache_alloc EXPORT_SYMBOL vmlinux 0x878469bd ZSTD_decompressStream -EXPORT_SYMBOL vmlinux 0x8791bfde genlmsg_multicast_allns EXPORT_SYMBOL vmlinux 0x87a3248d blk_queue_split EXPORT_SYMBOL vmlinux 0x87a34f10 dec_node_page_state -EXPORT_SYMBOL vmlinux 0x87a740ad ip4_datagram_connect EXPORT_SYMBOL vmlinux 0x87b8798d sg_next +EXPORT_SYMBOL vmlinux 0x87c84723 dev_get_phys_port_id EXPORT_SYMBOL vmlinux 0x87cb6ea8 pldmfw_flash_image -EXPORT_SYMBOL vmlinux 0x87db9649 xfrm_replay_seqhi -EXPORT_SYMBOL vmlinux 0x87dd996e tcp_v4_do_rcv -EXPORT_SYMBOL vmlinux 0x87e285f1 netdev_has_any_upper_dev -EXPORT_SYMBOL vmlinux 0x87f02f44 alloc_fddidev +EXPORT_SYMBOL vmlinux 0x87ce83a3 scm_detach_fds +EXPORT_SYMBOL vmlinux 0x87e1dc9f ip_route_me_harder +EXPORT_SYMBOL vmlinux 0x87e992aa inet6_register_protosw EXPORT_SYMBOL vmlinux 0x88058f6f pcix_get_mmrbc +EXPORT_SYMBOL vmlinux 0x88095d6d __netdev_notify_peers EXPORT_SYMBOL vmlinux 0x8810754a _find_first_bit +EXPORT_SYMBOL vmlinux 0x8814b104 security_path_mknod EXPORT_SYMBOL vmlinux 0x881b3ab3 simple_release_fs EXPORT_SYMBOL vmlinux 0x881c4413 gen_pool_first_fit -EXPORT_SYMBOL vmlinux 0x881d5c05 follow_down +EXPORT_SYMBOL vmlinux 0x881c81ba sock_bindtoindex +EXPORT_SYMBOL vmlinux 0x882b4fc9 dev_pick_tx_zero +EXPORT_SYMBOL vmlinux 0x88305942 mroute6_is_socket EXPORT_SYMBOL vmlinux 0x88309947 __cpuhp_remove_state_cpuslocked -EXPORT_SYMBOL vmlinux 0x884c482b rtnl_configure_link -EXPORT_SYMBOL vmlinux 0x8856821e xfrm_state_delete +EXPORT_SYMBOL vmlinux 0x887bcc35 dev_disable_lro EXPORT_SYMBOL vmlinux 0x88822d38 unregister_blocking_lsm_notifier EXPORT_SYMBOL vmlinux 0x8888f1fe xxh32 -EXPORT_SYMBOL vmlinux 0x888cf329 inet_twsk_deschedule_put EXPORT_SYMBOL vmlinux 0x888d4b0a __tracepoint_mmap_lock_start_locking EXPORT_SYMBOL vmlinux 0x889b1370 _raw_read_trylock EXPORT_SYMBOL vmlinux 0x889ff375 make_kuid EXPORT_SYMBOL vmlinux 0x88abb78b ZSTD_insertBlock +EXPORT_SYMBOL vmlinux 0x88ad041c tcf_em_tree_destroy EXPORT_SYMBOL vmlinux 0x88afcaae param_ops_bint -EXPORT_SYMBOL vmlinux 0x88c1c7e0 dev_mc_init EXPORT_SYMBOL vmlinux 0x88cd6978 pci_msi_vec_count -EXPORT_SYMBOL vmlinux 0x88d4ecb5 inetdev_by_index EXPORT_SYMBOL vmlinux 0x88db9f48 __check_object_size -EXPORT_SYMBOL vmlinux 0x88dca8e3 nexthop_bucket_set_hw_flags EXPORT_SYMBOL vmlinux 0x88e1d0f0 page_frag_free -EXPORT_SYMBOL vmlinux 0x88f81b38 xfrm_state_insert +EXPORT_SYMBOL vmlinux 0x88e3c379 ipv6_chk_addr_and_flags +EXPORT_SYMBOL vmlinux 0x890f01f7 genl_register_family +EXPORT_SYMBOL vmlinux 0x89124a54 cookie_timestamp_decode EXPORT_SYMBOL vmlinux 0x89434b4b radix_tree_tag_clear +EXPORT_SYMBOL vmlinux 0x89487735 kernel_sock_ip_overhead EXPORT_SYMBOL vmlinux 0x8953ce23 lease_modify EXPORT_SYMBOL vmlinux 0x89585f1b pci_find_parent_resource +EXPORT_SYMBOL vmlinux 0x895969ea inet_csk_reqsk_queue_add +EXPORT_SYMBOL vmlinux 0x895a8706 dev_uc_del +EXPORT_SYMBOL vmlinux 0x897732d2 ___pskb_trim EXPORT_SYMBOL vmlinux 0x897bb6c1 input_get_keycode EXPORT_SYMBOL vmlinux 0x898542ee vme_init_bridge -EXPORT_SYMBOL vmlinux 0x898bf52a genphy_c37_config_aneg EXPORT_SYMBOL vmlinux 0x8990fd4d migrate_vma_pages -EXPORT_SYMBOL vmlinux 0x8995b705 flow_indr_dev_unregister EXPORT_SYMBOL vmlinux 0x89a281d3 blk_mq_delay_run_hw_queue -EXPORT_SYMBOL vmlinux 0x89ad6766 vfs_parse_fs_param -EXPORT_SYMBOL vmlinux 0x89c0e2b0 __pskb_pull_tail +EXPORT_SYMBOL vmlinux 0x89b04958 __pskb_copy_fclone EXPORT_SYMBOL vmlinux 0x89e26ead bdi_set_max_ratio EXPORT_SYMBOL vmlinux 0x89e51b12 devm_devfreq_register_notifier -EXPORT_SYMBOL vmlinux 0x89fca47b default_qdisc_ops -EXPORT_SYMBOL vmlinux 0x8a05d861 rt6_lookup -EXPORT_SYMBOL vmlinux 0x8a0aa011 pid_task +EXPORT_SYMBOL vmlinux 0x89f1410e fib_notifier_ops_unregister +EXPORT_SYMBOL vmlinux 0x8a197083 phy_reset_after_clk_enable +EXPORT_SYMBOL vmlinux 0x8a259944 ip6tun_encaps EXPORT_SYMBOL vmlinux 0x8a35b432 sme_me_mask EXPORT_SYMBOL vmlinux 0x8a47043d LZ4_decompress_safe_continue EXPORT_SYMBOL vmlinux 0x8a490c90 rfkill_set_sw_state -EXPORT_SYMBOL vmlinux 0x8a4d5176 tcp_v4_connect EXPORT_SYMBOL vmlinux 0x8a626b12 iommu_get_dma_cookie EXPORT_SYMBOL vmlinux 0x8a6c7139 acpi_mask_gpe EXPORT_SYMBOL vmlinux 0x8a6f4d1b pci_choose_state EXPORT_SYMBOL vmlinux 0x8a7094ba vm_brk_flags EXPORT_SYMBOL vmlinux 0x8a72ad33 ptp_clock_register EXPORT_SYMBOL vmlinux 0x8a7d1c31 high_memory -EXPORT_SYMBOL vmlinux 0x8a8387aa xsk_clear_rx_need_wakeup +EXPORT_SYMBOL vmlinux 0x8a7f35dc netdev_lower_get_next_private EXPORT_SYMBOL vmlinux 0x8a99a016 mempool_free_slab +EXPORT_SYMBOL vmlinux 0x8aa2eb32 xfrm6_rcv_spi EXPORT_SYMBOL vmlinux 0x8ac3334b net_dim_get_def_rx_moderation EXPORT_SYMBOL vmlinux 0x8ac743de sg_copy_buffer EXPORT_SYMBOL vmlinux 0x8af0c736 pci_read_config_byte EXPORT_SYMBOL vmlinux 0x8af8ff56 dget_parent EXPORT_SYMBOL vmlinux 0x8b0088d1 LZ4_decompress_safe_usingDict EXPORT_SYMBOL vmlinux 0x8b07b51d flow_block_cb_is_busy -EXPORT_SYMBOL vmlinux 0x8b0dc5ec vlan_vids_del_by_dev -EXPORT_SYMBOL vmlinux 0x8b163f97 dst_destroy EXPORT_SYMBOL vmlinux 0x8b260377 __fs_parse EXPORT_SYMBOL vmlinux 0x8b4494c4 __tracepoint_mmap_lock_acquire_returned EXPORT_SYMBOL vmlinux 0x8b618d08 overflowuid -EXPORT_SYMBOL vmlinux 0x8b7865b1 neigh_parms_alloc +EXPORT_SYMBOL vmlinux 0x8b77ea17 neigh_sysctl_register EXPORT_SYMBOL vmlinux 0x8b7db75c vme_dma_list_free EXPORT_SYMBOL vmlinux 0x8b8059bd in_group_p EXPORT_SYMBOL vmlinux 0x8b910be2 errseq_sample +EXPORT_SYMBOL vmlinux 0x8b92c59b dev_add_pack +EXPORT_SYMBOL vmlinux 0x8b94358b napi_complete_done EXPORT_SYMBOL vmlinux 0x8b989cf9 acpi_bus_can_wakeup EXPORT_SYMBOL vmlinux 0x8b9ea582 ZSTD_copyDCtx -EXPORT_SYMBOL vmlinux 0x8bcc6c06 tc_cleanup_flow_action +EXPORT_SYMBOL vmlinux 0x8bbb0908 ipv6_mc_check_mld +EXPORT_SYMBOL vmlinux 0x8bc7f18b prepare_to_swait_event EXPORT_SYMBOL vmlinux 0x8bd5c12e acpi_device_hid -EXPORT_SYMBOL vmlinux 0x8bd90176 phy_ethtool_get_strings -EXPORT_SYMBOL vmlinux 0x8bf46ca3 vfs_mknod +EXPORT_SYMBOL vmlinux 0x8bf05578 unix_detach_fds EXPORT_SYMBOL vmlinux 0x8bf798a5 pci_scan_slot -EXPORT_SYMBOL vmlinux 0x8bf8c08c sock_rfree EXPORT_SYMBOL vmlinux 0x8bfb9702 simple_rmdir -EXPORT_SYMBOL vmlinux 0x8c07d376 skb_add_rx_frag -EXPORT_SYMBOL vmlinux 0x8c1c8f6f genphy_c37_read_status EXPORT_SYMBOL vmlinux 0x8c26d495 prepare_to_wait_event -EXPORT_SYMBOL vmlinux 0x8c3222e6 xfrm4_protocol_deregister +EXPORT_SYMBOL vmlinux 0x8c2e80ca __netif_schedule EXPORT_SYMBOL vmlinux 0x8c49149b filemap_flush EXPORT_SYMBOL vmlinux 0x8c49cf6f blk_mq_requeue_request -EXPORT_SYMBOL vmlinux 0x8c5db3e5 xfrm6_input_addr -EXPORT_SYMBOL vmlinux 0x8c729ae8 flow_rule_match_control +EXPORT_SYMBOL vmlinux 0x8c566753 alloc_skb_with_frags EXPORT_SYMBOL vmlinux 0x8c7a19c7 drop_nlink -EXPORT_SYMBOL vmlinux 0x8c7d01a0 skb_append EXPORT_SYMBOL vmlinux 0x8c8569cb kstrtoint +EXPORT_SYMBOL vmlinux 0x8c9dd1df inet6_ioctl EXPORT_SYMBOL vmlinux 0x8c9e338f acpi_bios_error +EXPORT_SYMBOL vmlinux 0x8ca8e841 udp_disconnect EXPORT_SYMBOL vmlinux 0x8caf9305 uuid_is_valid +EXPORT_SYMBOL vmlinux 0x8cb4c925 __netlink_ns_capable EXPORT_SYMBOL vmlinux 0x8cb5e05d pci_disable_msi -EXPORT_SYMBOL vmlinux 0x8cb73d9c genphy_setup_forced -EXPORT_SYMBOL vmlinux 0x8cc2be97 phy_start_cable_test_tdr EXPORT_SYMBOL vmlinux 0x8cc79cab iowrite16_rep EXPORT_SYMBOL vmlinux 0x8cc7df01 __dquot_alloc_space EXPORT_SYMBOL vmlinux 0x8ce163a3 input_mt_report_slot_state EXPORT_SYMBOL vmlinux 0x8ce1ecd4 __test_set_page_writeback EXPORT_SYMBOL vmlinux 0x8cf05e8e rdmacg_uncharge -EXPORT_SYMBOL vmlinux 0x8cfdcc77 netlink_rcv_skb EXPORT_SYMBOL vmlinux 0x8d028728 __d_drop EXPORT_SYMBOL vmlinux 0x8d11e711 would_dump EXPORT_SYMBOL vmlinux 0x8d1304ea adjust_managed_page_count -EXPORT_SYMBOL vmlinux 0x8d1e7313 sock_wmalloc -EXPORT_SYMBOL vmlinux 0x8d2202bf mr_vif_seq_next -EXPORT_SYMBOL vmlinux 0x8d303673 register_nexthop_notifier EXPORT_SYMBOL vmlinux 0x8d372ab3 generic_setlease EXPORT_SYMBOL vmlinux 0x8d380be5 input_mt_report_pointer_emulation EXPORT_SYMBOL vmlinux 0x8d55bb8a qid_eq -EXPORT_SYMBOL vmlinux 0x8d56e6ef vlan_for_each EXPORT_SYMBOL vmlinux 0x8d60652c __SCT__tp_func_mmap_lock_released EXPORT_SYMBOL vmlinux 0x8d644a5a vga_get EXPORT_SYMBOL vmlinux 0x8d6aff89 __put_user_nocheck_4 +EXPORT_SYMBOL vmlinux 0x8d6d244d tcp_check_req EXPORT_SYMBOL vmlinux 0x8d73278e hex_asc_upper EXPORT_SYMBOL vmlinux 0x8d8f3528 dquot_load_quota_inode -EXPORT_SYMBOL vmlinux 0x8d961ad3 nf_ip_checksum EXPORT_SYMBOL vmlinux 0x8d9ca0e6 dma_fence_enable_sw_signaling -EXPORT_SYMBOL vmlinux 0x8dad77fa ip_getsockopt +EXPORT_SYMBOL vmlinux 0x8da69130 neigh_resolve_output EXPORT_SYMBOL vmlinux 0x8db22efe acpi_setup_gpe_for_wake +EXPORT_SYMBOL vmlinux 0x8db97694 skb_queue_purge EXPORT_SYMBOL vmlinux 0x8dd6f506 fs_bio_set +EXPORT_SYMBOL vmlinux 0x8dd9a5de __skb_get_hash EXPORT_SYMBOL vmlinux 0x8ddd8aad schedule_timeout EXPORT_SYMBOL vmlinux 0x8ded9120 dquot_transfer EXPORT_SYMBOL vmlinux 0x8dee722d _raw_read_lock_bh -EXPORT_SYMBOL vmlinux 0x8def6ed4 kern_path EXPORT_SYMBOL vmlinux 0x8df92f66 memchr_inv EXPORT_SYMBOL vmlinux 0x8df9dd10 guid_null EXPORT_SYMBOL vmlinux 0x8dfe7717 fc_host_fpin_rcv +EXPORT_SYMBOL vmlinux 0x8e12d3c4 phy_register_fixup_for_id EXPORT_SYMBOL vmlinux 0x8e17b3ae idr_destroy EXPORT_SYMBOL vmlinux 0x8e1acf87 sync_inode_metadata -EXPORT_SYMBOL vmlinux 0x8e1bddc1 neigh_app_ns +EXPORT_SYMBOL vmlinux 0x8e1f4224 __skb_wait_for_more_packets EXPORT_SYMBOL vmlinux 0x8e21c9a1 dma_fence_add_callback -EXPORT_SYMBOL vmlinux 0x8e24a307 phy_attach EXPORT_SYMBOL vmlinux 0x8e2d1236 ex_handler_wrmsr_unsafe +EXPORT_SYMBOL vmlinux 0x8e507bf8 xp_dma_unmap +EXPORT_SYMBOL vmlinux 0x8e5b2a1a skb_ensure_writable EXPORT_SYMBOL vmlinux 0x8e5c515b unregister_filesystem EXPORT_SYMBOL vmlinux 0x8e663d0f zalloc_cpumask_var_node -EXPORT_SYMBOL vmlinux 0x8e814a9d pfifo_qdisc_ops +EXPORT_SYMBOL vmlinux 0x8e6cb6d7 unregister_fib_notifier +EXPORT_SYMBOL vmlinux 0x8e846a26 put_cmsg_scm_timestamping EXPORT_SYMBOL vmlinux 0x8e8a63d4 pci_iomap_range EXPORT_SYMBOL vmlinux 0x8eae91bc __SCK__tp_func_kmalloc_node EXPORT_SYMBOL vmlinux 0x8eaf2a5f vga_switcheroo_unregister_handler @@ -6504,10 +6510,11 @@ EXPORT_SYMBOL vmlinux 0x8ee35d3c deactivate_locked_super EXPORT_SYMBOL vmlinux 0x8f228833 pci_enable_device_io EXPORT_SYMBOL vmlinux 0x8f2703b7 wbinvd_on_all_cpus -EXPORT_SYMBOL vmlinux 0x8f281a26 dev_load EXPORT_SYMBOL vmlinux 0x8f2c9884 thaw_super EXPORT_SYMBOL vmlinux 0x8f348689 dm_kcopyd_zero EXPORT_SYMBOL vmlinux 0x8f38d383 ex_handler_default +EXPORT_SYMBOL vmlinux 0x8f51afc6 tcp_get_cookie_sock +EXPORT_SYMBOL vmlinux 0x8f54d9d1 fget EXPORT_SYMBOL vmlinux 0x8f794cd8 pci_release_regions EXPORT_SYMBOL vmlinux 0x8f80bf11 acpi_install_gpe_raw_handler EXPORT_SYMBOL vmlinux 0x8f996a30 ethtool_convert_legacy_u32_to_link_mode @@ -6515,123 +6522,123 @@ EXPORT_SYMBOL vmlinux 0x8fa25c24 xa_find EXPORT_SYMBOL vmlinux 0x8fa74c79 ilookup EXPORT_SYMBOL vmlinux 0x8fb5b4b4 del_random_ready_callback +EXPORT_SYMBOL vmlinux 0x8fb5f448 tcp_sock_set_syncnt EXPORT_SYMBOL vmlinux 0x8fba0740 config_group_find_item EXPORT_SYMBOL vmlinux 0x8fc78053 agp_generic_create_gatt_table -EXPORT_SYMBOL vmlinux 0x8ff4ed94 xfrm_state_free EXPORT_SYMBOL vmlinux 0x8ff58ffd pci_bus_write_config_byte +EXPORT_SYMBOL vmlinux 0x8ff86057 blackhole_netdev EXPORT_SYMBOL vmlinux 0x8ff89ed0 seg6_hmac_exit EXPORT_SYMBOL vmlinux 0x9000f064 dump_skip_to -EXPORT_SYMBOL vmlinux 0x900bdeda ethtool_rx_flow_rule_create -EXPORT_SYMBOL vmlinux 0x901a32a3 sk_send_sigurg -EXPORT_SYMBOL vmlinux 0x90281353 xfrm_state_check_expire +EXPORT_SYMBOL vmlinux 0x90093538 dev_deactivate +EXPORT_SYMBOL vmlinux 0x90118550 ip6_frag_next EXPORT_SYMBOL vmlinux 0x902d8722 vme_slave_get EXPORT_SYMBOL vmlinux 0x9034a696 mempool_destroy EXPORT_SYMBOL vmlinux 0x9042c621 __SCK__tp_func_rdpmc EXPORT_SYMBOL vmlinux 0x90483191 fc_attach_transport +EXPORT_SYMBOL vmlinux 0x904c34f3 __skb_warn_lro_forwarding EXPORT_SYMBOL vmlinux 0x905695ab sg_copy_from_buffer EXPORT_SYMBOL vmlinux 0x90576ec4 vmemdup_user EXPORT_SYMBOL vmlinux 0x905b6dcd vme_dma_list_add +EXPORT_SYMBOL vmlinux 0x905c254a __dynamic_netdev_dbg +EXPORT_SYMBOL vmlinux 0x906466b8 sock_pfree EXPORT_SYMBOL vmlinux 0x90667dcc nobh_write_begin -EXPORT_SYMBOL vmlinux 0x9078867e xsk_tx_peek_desc -EXPORT_SYMBOL vmlinux 0x9088c4c0 flow_rule_match_enc_ipv6_addrs +EXPORT_SYMBOL vmlinux 0x908e82e5 xfrm_policy_alloc EXPORT_SYMBOL vmlinux 0x90923448 tty_port_close EXPORT_SYMBOL vmlinux 0x90961ae4 unregister_key_type -EXPORT_SYMBOL vmlinux 0x90b13bc9 __ethtool_get_link_ksettings EXPORT_SYMBOL vmlinux 0x90b59b03 jbd2_fc_begin_commit EXPORT_SYMBOL vmlinux 0x90be1ef5 stream_open EXPORT_SYMBOL vmlinux 0x90c15da8 dquot_quota_on_mount -EXPORT_SYMBOL vmlinux 0x90cb4ea1 security_skb_classify_flow -EXPORT_SYMBOL vmlinux 0x90cd645e phy_ethtool_ksettings_set -EXPORT_SYMBOL vmlinux 0x90d70bea ipv4_mtu -EXPORT_SYMBOL vmlinux 0x90df026d phy_start -EXPORT_SYMBOL vmlinux 0x90e87bdd tcp_sendmsg -EXPORT_SYMBOL vmlinux 0x90eb6e68 sock_no_linger -EXPORT_SYMBOL vmlinux 0x90ed9967 key_link -EXPORT_SYMBOL vmlinux 0x90f13f51 dev_mc_unsync +EXPORT_SYMBOL vmlinux 0x90c57a8a inet_getname +EXPORT_SYMBOL vmlinux 0x90e5d426 neigh_parms_release +EXPORT_SYMBOL vmlinux 0x90ec4877 xfrm_state_unregister_afinfo EXPORT_SYMBOL vmlinux 0x910024be __x86_indirect_alt_call_rdx -EXPORT_SYMBOL vmlinux 0x91039ef7 skb_copy_bits EXPORT_SYMBOL vmlinux 0x91065034 ps2_sliced_command -EXPORT_SYMBOL vmlinux 0x910b6959 flow_rule_match_enc_ipv4_addrs +EXPORT_SYMBOL vmlinux 0x9113494e xp_free EXPORT_SYMBOL vmlinux 0x9114b616 __xa_alloc EXPORT_SYMBOL vmlinux 0x9126cdcf pci_get_class +EXPORT_SYMBOL vmlinux 0x91492a33 ether_setup EXPORT_SYMBOL vmlinux 0x915c410e rtc_add_group EXPORT_SYMBOL vmlinux 0x91607d95 set_memory_wb -EXPORT_SYMBOL vmlinux 0x9162a282 register_tcf_proto_ops EXPORT_SYMBOL vmlinux 0x9166fada strncpy +EXPORT_SYMBOL vmlinux 0x916e02ec consume_skb EXPORT_SYMBOL vmlinux 0x9176145b acpi_install_global_event_handler +EXPORT_SYMBOL vmlinux 0x9183c57f sock_no_sendpage_locked EXPORT_SYMBOL vmlinux 0x919c58f3 __clzsi2 EXPORT_SYMBOL vmlinux 0x91a10c61 intel_scu_ipc_dev_simple_command EXPORT_SYMBOL vmlinux 0x91a488ac __netdev_alloc_frag_align EXPORT_SYMBOL vmlinux 0x91a7b1da qdisc_class_hash_remove EXPORT_SYMBOL vmlinux 0x91b9a306 kmem_cache_alloc -EXPORT_SYMBOL vmlinux 0x91d75623 xfrm_dev_state_flush +EXPORT_SYMBOL vmlinux 0x91bfffc9 netpoll_poll_dev +EXPORT_SYMBOL vmlinux 0x91c2a3a7 tcf_exts_destroy +EXPORT_SYMBOL vmlinux 0x91d4acd7 memory_cgrp_subsys EXPORT_SYMBOL vmlinux 0x91d99dce pnp_device_attach EXPORT_SYMBOL vmlinux 0x91de255a devm_backlight_device_register EXPORT_SYMBOL vmlinux 0x91ef6d78 pagecache_write_end EXPORT_SYMBOL vmlinux 0x91f44510 idr_alloc_cyclic EXPORT_SYMBOL vmlinux 0x91fe2d1f md_done_sync EXPORT_SYMBOL vmlinux 0x9202bb9f dput -EXPORT_SYMBOL vmlinux 0x9220e787 mdiobus_alloc_size EXPORT_SYMBOL vmlinux 0x922f45a6 __bitmap_clear -EXPORT_SYMBOL vmlinux 0x92371cdb mr_table_dump +EXPORT_SYMBOL vmlinux 0x923123aa tc_setup_flow_action +EXPORT_SYMBOL vmlinux 0x92329ec1 phy_aneg_done EXPORT_SYMBOL vmlinux 0x923b1276 dmaengine_get +EXPORT_SYMBOL vmlinux 0x924e3f77 init_task EXPORT_SYMBOL vmlinux 0x92540fbf finish_wait EXPORT_SYMBOL vmlinux 0x9258c776 hdmi_vendor_infoframe_pack_only EXPORT_SYMBOL vmlinux 0x925c00e7 edac_mc_find -EXPORT_SYMBOL vmlinux 0x9287e376 dev_open -EXPORT_SYMBOL vmlinux 0x928820ec inet_addr_type EXPORT_SYMBOL vmlinux 0x92897e3d default_idle EXPORT_SYMBOL vmlinux 0x9291cd3b memdup_user EXPORT_SYMBOL vmlinux 0x92952b6d cgroup_bpf_enabled_key EXPORT_SYMBOL vmlinux 0x92a30e2f import_single_range -EXPORT_SYMBOL vmlinux 0x92b8110c brioctl_set +EXPORT_SYMBOL vmlinux 0x92a5388e vlan_vids_del_by_dev +EXPORT_SYMBOL vmlinux 0x92b7ade4 gnet_stats_copy_queue EXPORT_SYMBOL vmlinux 0x92b99a33 acpi_put_table EXPORT_SYMBOL vmlinux 0x92b9b180 slash_name -EXPORT_SYMBOL vmlinux 0x92c5ae9d skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x92cbba3b skb_free_datagram EXPORT_SYMBOL vmlinux 0x92d5838e request_threaded_irq EXPORT_SYMBOL vmlinux 0x92e674ff crypto_sha512_finup EXPORT_SYMBOL vmlinux 0x92e683f5 down_timeout +EXPORT_SYMBOL vmlinux 0x92ea872d tcp_sendmsg EXPORT_SYMBOL vmlinux 0x92ec510d jiffies64_to_msecs +EXPORT_SYMBOL vmlinux 0x92f39eca fget_raw EXPORT_SYMBOL vmlinux 0x92fa5abb vme_lm_detach EXPORT_SYMBOL vmlinux 0x9301f415 scsi_compat_ioctl EXPORT_SYMBOL vmlinux 0x93022ba6 __scsi_format_command EXPORT_SYMBOL vmlinux 0x9305f8e6 cpufreq_get -EXPORT_SYMBOL vmlinux 0x931acb3a tc_setup_cb_destroy +EXPORT_SYMBOL vmlinux 0x93110674 skb_vlan_pop +EXPORT_SYMBOL vmlinux 0x9333e6f8 phy_attached_info_irq +EXPORT_SYMBOL vmlinux 0x93449344 get_mem_cgroup_from_mm EXPORT_SYMBOL vmlinux 0x93470956 dquot_set_dqblk +EXPORT_SYMBOL vmlinux 0x934cc383 gnet_stats_copy_app EXPORT_SYMBOL vmlinux 0x9353a898 dma_mmap_attrs -EXPORT_SYMBOL vmlinux 0x93640a63 phy_set_sym_pause -EXPORT_SYMBOL vmlinux 0x936ceddd netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0x93546479 phy_ethtool_get_strings +EXPORT_SYMBOL vmlinux 0x935b147a vlan_filter_drop_vids +EXPORT_SYMBOL vmlinux 0x9364960b ip_sock_set_pktinfo EXPORT_SYMBOL vmlinux 0x93763d17 discard_new_inode EXPORT_SYMBOL vmlinux 0x937733e3 qid_valid -EXPORT_SYMBOL vmlinux 0x939529ef security_inode_listsecurity EXPORT_SYMBOL vmlinux 0x939ae237 simple_setattr EXPORT_SYMBOL vmlinux 0x93a237c0 dcache_readdir EXPORT_SYMBOL vmlinux 0x93a6e0b2 io_schedule -EXPORT_SYMBOL vmlinux 0x93ab3974 phy_get_eee_err -EXPORT_SYMBOL vmlinux 0x93b17c1d nf_log_unregister EXPORT_SYMBOL vmlinux 0x93b3fc74 register_dcbevent_notifier +EXPORT_SYMBOL vmlinux 0x93b73d01 __skb_vlan_pop EXPORT_SYMBOL vmlinux 0x93ba1732 amd_iommu_device_info +EXPORT_SYMBOL vmlinux 0x93be78c5 udp_lib_getsockopt EXPORT_SYMBOL vmlinux 0x93bea155 migrate_page_copy EXPORT_SYMBOL vmlinux 0x93d6dd8c complete_all -EXPORT_SYMBOL vmlinux 0x93e5554c tcp_rcv_state_process +EXPORT_SYMBOL vmlinux 0x93dcb5b6 tcp_time_wait EXPORT_SYMBOL vmlinux 0x93f18c8f locks_free_lock +EXPORT_SYMBOL vmlinux 0x93f30d92 dcb_ieee_getapp_default_prio_mask EXPORT_SYMBOL vmlinux 0x94048f75 submit_bh EXPORT_SYMBOL vmlinux 0x940ae673 cdrom_release -EXPORT_SYMBOL vmlinux 0x94110c02 netdev_get_xmit_slave +EXPORT_SYMBOL vmlinux 0x940ff72d inet_add_protocol EXPORT_SYMBOL vmlinux 0x94128f87 dm_table_event EXPORT_SYMBOL vmlinux 0x9428f816 dim_turn -EXPORT_SYMBOL vmlinux 0x9429f6e4 __fib6_flush_trees -EXPORT_SYMBOL vmlinux 0x94362a11 eth_gro_complete EXPORT_SYMBOL vmlinux 0x943ca63e __dquot_free_space EXPORT_SYMBOL vmlinux 0x944375db _totalram_pages EXPORT_SYMBOL vmlinux 0x944a564d is_console_locked -EXPORT_SYMBOL vmlinux 0x9454466d udp_sock_create4 EXPORT_SYMBOL vmlinux 0x945c8928 md_reload_sb EXPORT_SYMBOL vmlinux 0x946167cc agp_generic_alloc_by_type EXPORT_SYMBOL vmlinux 0x946a78b6 request_key_tag EXPORT_SYMBOL vmlinux 0x9470f618 devm_pci_remap_iospace -EXPORT_SYMBOL vmlinux 0x947841b7 user_path_at_empty -EXPORT_SYMBOL vmlinux 0x9480c0ff phy_ethtool_nway_reset EXPORT_SYMBOL vmlinux 0x9493fc86 node_states EXPORT_SYMBOL vmlinux 0x94961283 vunmap EXPORT_SYMBOL vmlinux 0x94bb7ec3 gen_pool_dma_zalloc_algo @@ -6639,31 +6646,23 @@ EXPORT_SYMBOL vmlinux 0x94c3c709 get_user_pages_unlocked EXPORT_SYMBOL vmlinux 0x94cf5bdf __SCK__tp_func_read_msr EXPORT_SYMBOL vmlinux 0x94d022ad param_get_uint -EXPORT_SYMBOL vmlinux 0x94d36753 xfrm_state_delete_tunnel -EXPORT_SYMBOL vmlinux 0x94da1260 inet_unregister_protosw -EXPORT_SYMBOL vmlinux 0x94e2b609 xfrm_policy_hash_rebuild EXPORT_SYMBOL vmlinux 0x94e50ad4 call_fib_notifier -EXPORT_SYMBOL vmlinux 0x94eb6ff2 tcf_exts_dump_stats EXPORT_SYMBOL vmlinux 0x9507c90f copy_fsxattr_to_user -EXPORT_SYMBOL vmlinux 0x951a36da neigh_resolve_output EXPORT_SYMBOL vmlinux 0x951f0558 send_sig_mceerr -EXPORT_SYMBOL vmlinux 0x9526bb83 skb_unlink -EXPORT_SYMBOL vmlinux 0x95315742 tcf_exts_change EXPORT_SYMBOL vmlinux 0x953889ec from_kuid_munged -EXPORT_SYMBOL vmlinux 0x953e8fed udp_prot EXPORT_SYMBOL vmlinux 0x9542b14b filemap_fdatawrite EXPORT_SYMBOL vmlinux 0x9544accb jbd2_journal_clear_features EXPORT_SYMBOL vmlinux 0x954cef6f init_on_alloc EXPORT_SYMBOL vmlinux 0x954f099c idr_preload EXPORT_SYMBOL vmlinux 0x955410bc param_set_bint -EXPORT_SYMBOL vmlinux 0x9587e209 netdev_err -EXPORT_SYMBOL vmlinux 0x95a43441 _dev_alert +EXPORT_SYMBOL vmlinux 0x957b2a9b netif_napi_add EXPORT_SYMBOL vmlinux 0x95a67b07 udp_table +EXPORT_SYMBOL vmlinux 0x95ac0e2b inet_csk_reset_keepalive_timer EXPORT_SYMBOL vmlinux 0x95acfcad d_instantiate_new EXPORT_SYMBOL vmlinux 0x95b0c565 pci_dev_put -EXPORT_SYMBOL vmlinux 0x95b74c11 skb_headers_offset_update +EXPORT_SYMBOL vmlinux 0x95b97e35 sock_alloc +EXPORT_SYMBOL vmlinux 0x95c7de97 ip6_route_me_harder EXPORT_SYMBOL vmlinux 0x95cc9a5e blkdev_issue_write_same -EXPORT_SYMBOL vmlinux 0x95ef8312 _dev_notice EXPORT_SYMBOL vmlinux 0x95f32025 pci_request_regions EXPORT_SYMBOL vmlinux 0x9608243c get_agp_version EXPORT_SYMBOL vmlinux 0x96204602 nd_device_notify @@ -6672,84 +6671,82 @@ EXPORT_SYMBOL vmlinux 0x963214e8 kobject_set_name EXPORT_SYMBOL vmlinux 0x963c08ae disk_end_io_acct EXPORT_SYMBOL vmlinux 0x964294b3 kill_pid -EXPORT_SYMBOL vmlinux 0x964a0b5e tcf_chain_get_by_act EXPORT_SYMBOL vmlinux 0x9668d8af pci_find_resource +EXPORT_SYMBOL vmlinux 0x96713e7c phy_config_aneg EXPORT_SYMBOL vmlinux 0x96758f02 finalize_exec -EXPORT_SYMBOL vmlinux 0x967e2640 dev_pre_changeaddr_notify +EXPORT_SYMBOL vmlinux 0x967f31eb xsk_clear_tx_need_wakeup EXPORT_SYMBOL vmlinux 0x96848186 scnprintf EXPORT_SYMBOL vmlinux 0x968d9f5d touchscreen_parse_properties +EXPORT_SYMBOL vmlinux 0x96a00e3a mem_cgroup_from_task EXPORT_SYMBOL vmlinux 0x96a60478 nd_region_acquire_lane EXPORT_SYMBOL vmlinux 0x96b29254 strncasecmp EXPORT_SYMBOL vmlinux 0x96b55036 get_cpu_entry_area +EXPORT_SYMBOL vmlinux 0x96babe3b mdiobus_read_nested +EXPORT_SYMBOL vmlinux 0x96bd1cb4 ppp_unregister_channel EXPORT_SYMBOL vmlinux 0x96c0bdfa dm_kobject_release EXPORT_SYMBOL vmlinux 0x96c17136 fb_var_to_videomode -EXPORT_SYMBOL vmlinux 0x96cb8e13 sk_free EXPORT_SYMBOL vmlinux 0x96cd2b04 scsi_sense_key_string +EXPORT_SYMBOL vmlinux 0x96d2e2b8 xfrm_spd_getinfo EXPORT_SYMBOL vmlinux 0x96df750e _copy_from_iter_full_nocache +EXPORT_SYMBOL vmlinux 0x96dfd19e netdev_alert EXPORT_SYMBOL vmlinux 0x96e5d30f gen_pool_set_algo EXPORT_SYMBOL vmlinux 0x96eab78b iosf_mbi_modify EXPORT_SYMBOL vmlinux 0x96fab350 dim_park_on_top EXPORT_SYMBOL vmlinux 0x97076fe7 page_cache_next_miss EXPORT_SYMBOL vmlinux 0x972980ac blk_queue_io_opt EXPORT_SYMBOL vmlinux 0x9738ffdb __SetPageMovable -EXPORT_SYMBOL vmlinux 0x973a06f1 nf_log_trace EXPORT_SYMBOL vmlinux 0x973fa82e register_acpi_notifier +EXPORT_SYMBOL vmlinux 0x97458973 netlink_broadcast EXPORT_SYMBOL vmlinux 0x9746eb89 ZSTD_decompressBegin_usingDict +EXPORT_SYMBOL vmlinux 0x975842ae nexthop_res_grp_activity_update EXPORT_SYMBOL vmlinux 0x97651e6c vmemmap_base EXPORT_SYMBOL vmlinux 0x976dac6e agp_generic_alloc_user EXPORT_SYMBOL vmlinux 0x977f511b __mutex_init EXPORT_SYMBOL vmlinux 0x97934ecf del_timer_sync EXPORT_SYMBOL vmlinux 0x979b32e9 vmf_insert_mixed_prot +EXPORT_SYMBOL vmlinux 0x979ee316 ip6_xmit EXPORT_SYMBOL vmlinux 0x97a57333 crc_t10dif_update EXPORT_SYMBOL vmlinux 0x97a90f96 agp_backend_acquire -EXPORT_SYMBOL vmlinux 0x97acfac8 __check_sticky EXPORT_SYMBOL vmlinux 0x97adb487 utf8s_to_utf16s -EXPORT_SYMBOL vmlinux 0x97b03a7a ip_mc_leave_group EXPORT_SYMBOL vmlinux 0x97bbba91 get_tz_trend EXPORT_SYMBOL vmlinux 0x97bdfa60 scsi_dev_info_remove_list +EXPORT_SYMBOL vmlinux 0x97c81959 napi_disable EXPORT_SYMBOL vmlinux 0x97e5ac20 proc_set_size +EXPORT_SYMBOL vmlinux 0x97fce1c2 __hw_addr_ref_unsync_dev EXPORT_SYMBOL vmlinux 0x9804636f vga_switcheroo_register_audio_client -EXPORT_SYMBOL vmlinux 0x980e5e2c xp_raw_get_dma EXPORT_SYMBOL vmlinux 0x9811e76e new_inode -EXPORT_SYMBOL vmlinux 0x9820f524 build_skb EXPORT_SYMBOL vmlinux 0x9829fc11 __kfifo_out_peek_r EXPORT_SYMBOL vmlinux 0x9833bf2a get_cached_acl_rcu -EXPORT_SYMBOL vmlinux 0x98634d36 xsk_set_tx_need_wakeup +EXPORT_SYMBOL vmlinux 0x988c0df9 xfrm_dev_state_flush EXPORT_SYMBOL vmlinux 0x989b7f91 serio_rescan EXPORT_SYMBOL vmlinux 0x98a7056e pci_scan_bridge EXPORT_SYMBOL vmlinux 0x98c039dc dma_fence_wait_timeout EXPORT_SYMBOL vmlinux 0x98c89ade security_xfrm_state_alloc EXPORT_SYMBOL vmlinux 0x98dd2ec8 __x86_indirect_alt_call_r11 -EXPORT_SYMBOL vmlinux 0x98e26d80 ppp_dev_name EXPORT_SYMBOL vmlinux 0x98e508ef ignore_console_lock_warning -EXPORT_SYMBOL vmlinux 0x98e975b2 tcf_block_netif_keep_dst -EXPORT_SYMBOL vmlinux 0x98f0418f nf_unregister_net_hooks EXPORT_SYMBOL vmlinux 0x98f3d2b6 mipi_dsi_dcs_write_buffer -EXPORT_SYMBOL vmlinux 0x98f46d41 phy_queue_state_machine -EXPORT_SYMBOL vmlinux 0x98f8ab27 phy_do_ioctl_running EXPORT_SYMBOL vmlinux 0x99078b39 trace_print_flags_seq EXPORT_SYMBOL vmlinux 0x991e1307 send_sig_info EXPORT_SYMBOL vmlinux 0x992ad780 lock_two_nondirectories -EXPORT_SYMBOL vmlinux 0x992cc209 phy_request_interrupt EXPORT_SYMBOL vmlinux 0x9933ff1b pcim_iomap_table EXPORT_SYMBOL vmlinux 0x99346110 scsi_cmd_ioctl EXPORT_SYMBOL vmlinux 0x9939eba0 backlight_unregister_notifier EXPORT_SYMBOL vmlinux 0x993c518e tty_port_tty_set EXPORT_SYMBOL vmlinux 0x99517682 udp_encap_enable -EXPORT_SYMBOL vmlinux 0x99717adc __skb_try_recv_datagram +EXPORT_SYMBOL vmlinux 0x99674a08 genphy_read_status EXPORT_SYMBOL vmlinux 0x9975dc22 acpi_get_handle EXPORT_SYMBOL vmlinux 0x9976d3e4 __x86_indirect_alt_jmp_rbp +EXPORT_SYMBOL vmlinux 0x9980f4e7 ipv6_chk_prefix EXPORT_SYMBOL vmlinux 0x9983f17b vme_master_mmap EXPORT_SYMBOL vmlinux 0x99876cbe deactivate_super -EXPORT_SYMBOL vmlinux 0x999472bf flow_rule_match_enc_ip +EXPORT_SYMBOL vmlinux 0x998c0102 inet_get_local_port_range +EXPORT_SYMBOL vmlinux 0x9990d329 ip_mc_join_group EXPORT_SYMBOL vmlinux 0x999d24f0 file_modified EXPORT_SYMBOL vmlinux 0x999e8297 vfree EXPORT_SYMBOL vmlinux 0x99aae942 pci_rebar_get_possible_sizes -EXPORT_SYMBOL vmlinux 0x99c34ce0 mr_table_alloc EXPORT_SYMBOL vmlinux 0x99cc1f0f param_get_hexint EXPORT_SYMBOL vmlinux 0x99d472b1 net_dim_get_rx_moderation EXPORT_SYMBOL vmlinux 0x99daa9bf try_offline_node -EXPORT_SYMBOL vmlinux 0x99dc46a5 inet_addr_type_table EXPORT_SYMBOL vmlinux 0x99ebbc8d mipi_dsi_dcs_get_display_brightness EXPORT_SYMBOL vmlinux 0x99f068d5 x86_cpu_to_node_map EXPORT_SYMBOL vmlinux 0x99f9638f __napi_alloc_frag_align @@ -6758,64 +6755,68 @@ EXPORT_SYMBOL vmlinux 0x9a19ec50 make_flow_keys_digest EXPORT_SYMBOL vmlinux 0x9a1dfd65 strpbrk EXPORT_SYMBOL vmlinux 0x9a22391e radix_tree_gang_lookup_tag_slot -EXPORT_SYMBOL vmlinux 0x9a2bf426 dev_getfirstbyhwtype +EXPORT_SYMBOL vmlinux 0x9a3246c6 netdev_sk_get_lowest_dev EXPORT_SYMBOL vmlinux 0x9a3664f9 blk_mq_rq_cpu EXPORT_SYMBOL vmlinux 0x9a3f1a42 submit_bio_wait EXPORT_SYMBOL vmlinux 0x9a55829f fc_host_post_vendor_event EXPORT_SYMBOL vmlinux 0x9a583306 netlbl_bitmap_walk -EXPORT_SYMBOL vmlinux 0x9a5e871a sock_sendmsg -EXPORT_SYMBOL vmlinux 0x9a7287a1 genphy_check_and_restart_aneg -EXPORT_SYMBOL vmlinux 0x9a72b28b __dev_get_by_index EXPORT_SYMBOL vmlinux 0x9a73b032 ZSTD_initDStream_usingDDict EXPORT_SYMBOL vmlinux 0x9a8bc344 textsearch_destroy EXPORT_SYMBOL vmlinux 0x9a981ba7 fb_find_mode EXPORT_SYMBOL vmlinux 0x9a9ac780 devm_release_resource +EXPORT_SYMBOL vmlinux 0x9a9ea06c genphy_read_status_fixed EXPORT_SYMBOL vmlinux 0x9aaeefce sysctl_nf_log_all_netns EXPORT_SYMBOL vmlinux 0x9ab4f8f7 devm_ioport_map EXPORT_SYMBOL vmlinux 0x9ac05749 blk_mq_init_queue EXPORT_SYMBOL vmlinux 0x9ac9b92b iterate_supers_type +EXPORT_SYMBOL vmlinux 0x9acfe554 tcp_v4_do_rcv EXPORT_SYMBOL vmlinux 0x9ad7a582 iosf_mbi_assert_punit_acquired EXPORT_SYMBOL vmlinux 0x9ade9887 param_ops_byte +EXPORT_SYMBOL vmlinux 0x9ae1ab84 register_netdevice_notifier_net EXPORT_SYMBOL vmlinux 0x9ae47436 _find_last_bit EXPORT_SYMBOL vmlinux 0x9aeff869 input_allocate_device -EXPORT_SYMBOL vmlinux 0x9af44a01 dev_get_by_index -EXPORT_SYMBOL vmlinux 0x9b25151d xfrm_unregister_km EXPORT_SYMBOL vmlinux 0x9b2560b9 gf128mul_init_4k_bbe EXPORT_SYMBOL vmlinux 0x9b33e0d7 unregister_dcbevent_notifier EXPORT_SYMBOL vmlinux 0x9b420478 utf8_strncasecmp EXPORT_SYMBOL vmlinux 0x9b496b21 posix_acl_alloc +EXPORT_SYMBOL vmlinux 0x9b58cf9a ip6_frag_init EXPORT_SYMBOL vmlinux 0x9b72478f acpi_unload_parent_table +EXPORT_SYMBOL vmlinux 0x9b752d76 ip_tunnel_get_iflink EXPORT_SYMBOL vmlinux 0x9b7da5f4 set_anon_super_fc EXPORT_SYMBOL vmlinux 0x9b83f836 dec_zone_page_state EXPORT_SYMBOL vmlinux 0x9b9bd5f8 fsync_bdev EXPORT_SYMBOL vmlinux 0x9ba35d81 md_handle_request EXPORT_SYMBOL vmlinux 0x9bb4e317 ioread32be -EXPORT_SYMBOL vmlinux 0x9bb54b32 sk_stop_timer_sync EXPORT_SYMBOL vmlinux 0x9bbfd39c block_invalidatepage EXPORT_SYMBOL vmlinux 0x9bedb73b md_bitmap_sync_with_cluster EXPORT_SYMBOL vmlinux 0x9bf0cce7 mpage_readpage EXPORT_SYMBOL vmlinux 0x9bffc206 jbd2_journal_abort -EXPORT_SYMBOL vmlinux 0x9c03db33 dev_change_flags EXPORT_SYMBOL vmlinux 0x9c09617f config_group_init_type_name EXPORT_SYMBOL vmlinux 0x9c122bcf mempool_create_node +EXPORT_SYMBOL vmlinux 0x9c15f6d8 tcp_peek_len EXPORT_SYMBOL vmlinux 0x9c2dac0e inode_nohighmem +EXPORT_SYMBOL vmlinux 0x9c2daf57 page_symlink_inode_operations EXPORT_SYMBOL vmlinux 0x9c3379b0 kernel_param_lock +EXPORT_SYMBOL vmlinux 0x9c3ac724 udp_lib_get_port EXPORT_SYMBOL vmlinux 0x9c5b597b from_kgid_munged EXPORT_SYMBOL vmlinux 0x9c65b78a csum_partial_copy_nocheck +EXPORT_SYMBOL vmlinux 0x9c664d5d init_net +EXPORT_SYMBOL vmlinux 0x9c6b9023 __skb_try_recv_datagram +EXPORT_SYMBOL vmlinux 0x9c7ef812 dev_mc_unsync EXPORT_SYMBOL vmlinux 0x9c86b9ab fileattr_fill_flags EXPORT_SYMBOL vmlinux 0x9c8caf67 md_write_inc +EXPORT_SYMBOL vmlinux 0x9c940f4e fddi_type_trans EXPORT_SYMBOL vmlinux 0x9ca05ff6 filemap_write_and_wait_range -EXPORT_SYMBOL vmlinux 0x9ca47b08 xfrm6_protocol_deregister EXPORT_SYMBOL vmlinux 0x9cab34a6 rfkill_set_led_trigger_name -EXPORT_SYMBOL vmlinux 0x9cab4a01 sock_common_setsockopt EXPORT_SYMBOL vmlinux 0x9cb986f2 vmalloc_base EXPORT_SYMBOL vmlinux 0x9ccf7171 vme_dma_pci_attribute +EXPORT_SYMBOL vmlinux 0x9cd48f33 skb_eth_pop EXPORT_SYMBOL vmlinux 0x9cd91791 register_sysctl +EXPORT_SYMBOL vmlinux 0x9cdf9323 xfrm6_protocol_register EXPORT_SYMBOL vmlinux 0x9cdfb3f7 sysctl_fb_tunnels_only_for_init_net +EXPORT_SYMBOL vmlinux 0x9ce6892e inet_frag_pull_head EXPORT_SYMBOL vmlinux 0x9ced41ad __SCT__tp_func_read_msr -EXPORT_SYMBOL vmlinux 0x9cf4a76b arp_create EXPORT_SYMBOL vmlinux 0x9cfb141b blkdev_fsync -EXPORT_SYMBOL vmlinux 0x9cfbe959 udp6_csum_init EXPORT_SYMBOL vmlinux 0x9d099a39 acpi_remove_gpe_handler EXPORT_SYMBOL vmlinux 0x9d0d6206 unregister_netdevice_notifier EXPORT_SYMBOL vmlinux 0x9d2ab8ac __tasklet_schedule @@ -6826,75 +6827,79 @@ EXPORT_SYMBOL vmlinux 0x9d6cb903 __mmap_lock_do_trace_start_locking EXPORT_SYMBOL vmlinux 0x9d70541a native_save_fl EXPORT_SYMBOL vmlinux 0x9d92f3ad __wait_on_bit_lock -EXPORT_SYMBOL vmlinux 0x9d97b73f ipv6_setsockopt -EXPORT_SYMBOL vmlinux 0x9d9a1354 get_phy_device -EXPORT_SYMBOL vmlinux 0x9d9fdef9 rtnl_create_link -EXPORT_SYMBOL vmlinux 0x9dc15ef0 __neigh_set_probe_once -EXPORT_SYMBOL vmlinux 0x9dc56213 flow_block_cb_decref -EXPORT_SYMBOL vmlinux 0x9def7a45 mroute6_is_socket +EXPORT_SYMBOL vmlinux 0x9db332fc skb_dequeue +EXPORT_SYMBOL vmlinux 0x9db54a09 dcb_getapp +EXPORT_SYMBOL vmlinux 0x9db670d9 mdiobus_write_nested +EXPORT_SYMBOL vmlinux 0x9db8a04a ipv6_dev_get_saddr +EXPORT_SYMBOL vmlinux 0x9db94615 xsk_set_tx_need_wakeup EXPORT_SYMBOL vmlinux 0x9df033c7 pci_enable_atomic_ops_to_root -EXPORT_SYMBOL vmlinux 0x9df74c3e follow_down_one EXPORT_SYMBOL vmlinux 0x9e08e63e devm_free_irq EXPORT_SYMBOL vmlinux 0x9e0c711d vzalloc_node EXPORT_SYMBOL vmlinux 0x9e0fa5ae hsiphash_3u32 EXPORT_SYMBOL vmlinux 0x9e13f6f6 gf128mul_lle -EXPORT_SYMBOL vmlinux 0x9e240529 sched_autogroup_detach EXPORT_SYMBOL vmlinux 0x9e2737f0 acpi_install_interface_handler +EXPORT_SYMBOL vmlinux 0x9e3c317e tcf_exts_terse_dump EXPORT_SYMBOL vmlinux 0x9e48e89e vme_bus_error_handler EXPORT_SYMBOL vmlinux 0x9e4faeef dm_io_client_destroy EXPORT_SYMBOL vmlinux 0x9e61bb05 set_freezable EXPORT_SYMBOL vmlinux 0x9e64fbfe rtc_cmos_read EXPORT_SYMBOL vmlinux 0x9e683f75 __cpu_possible_mask EXPORT_SYMBOL vmlinux 0x9e7349e9 pci_iounmap +EXPORT_SYMBOL vmlinux 0x9e7b83ff skb_coalesce_rx_frag EXPORT_SYMBOL vmlinux 0x9e7d6bd0 __udelay -EXPORT_SYMBOL vmlinux 0x9e991912 fddi_type_trans +EXPORT_SYMBOL vmlinux 0x9e955521 close_fd_get_file EXPORT_SYMBOL vmlinux 0x9e9eab95 devcgroup_check_permission EXPORT_SYMBOL vmlinux 0x9e9fdd9d memunmap +EXPORT_SYMBOL vmlinux 0x9ea406b3 sock_no_bind EXPORT_SYMBOL vmlinux 0x9ea53d7f vsnprintf EXPORT_SYMBOL vmlinux 0x9eacf8a5 kstrndup EXPORT_SYMBOL vmlinux 0x9eb46e3c param_ops_hexint EXPORT_SYMBOL vmlinux 0x9ebe0282 make_bad_inode EXPORT_SYMBOL vmlinux 0x9ebf92a8 path_has_submounts +EXPORT_SYMBOL vmlinux 0x9ec13204 security_sb_clone_mnt_opts +EXPORT_SYMBOL vmlinux 0x9ec577e8 ipmr_rule_default EXPORT_SYMBOL vmlinux 0x9ec6ca96 ktime_get_real_ts64 EXPORT_SYMBOL vmlinux 0x9eca42a1 d_prune_aliases +EXPORT_SYMBOL vmlinux 0x9ecd9513 dev_uc_sync EXPORT_SYMBOL vmlinux 0x9ed3a165 pnpacpi_protocol EXPORT_SYMBOL vmlinux 0x9ed978de vme_lm_set -EXPORT_SYMBOL vmlinux 0x9ee32cd9 tcp_create_openreq_child EXPORT_SYMBOL vmlinux 0x9eee1ca0 sdev_prefix_printk EXPORT_SYMBOL vmlinux 0x9ef0eee7 __SCT__tp_func_spi_transfer_stop -EXPORT_SYMBOL vmlinux 0x9f1b1e4d dev_get_stats +EXPORT_SYMBOL vmlinux 0x9f13e78e ip_frag_init EXPORT_SYMBOL vmlinux 0x9f21f0be md_write_end +EXPORT_SYMBOL vmlinux 0x9f37f159 xfrm_policy_byid EXPORT_SYMBOL vmlinux 0x9f46ced8 __sw_hweight64 EXPORT_SYMBOL vmlinux 0x9f498e56 PDE_DATA EXPORT_SYMBOL vmlinux 0x9f4f2aa3 acpi_gbl_FADT EXPORT_SYMBOL vmlinux 0x9f50b770 keyring_restrict EXPORT_SYMBOL vmlinux 0x9f54ead7 gro_cells_destroy -EXPORT_SYMBOL vmlinux 0x9f64dc2d inet6_unregister_protosw EXPORT_SYMBOL vmlinux 0x9f741622 pcie_set_mps -EXPORT_SYMBOL vmlinux 0x9f979cef qdisc_offload_graft_helper +EXPORT_SYMBOL vmlinux 0x9f76e8d4 dev_get_by_name_rcu +EXPORT_SYMBOL vmlinux 0x9f7741d2 phy_ethtool_ksettings_get +EXPORT_SYMBOL vmlinux 0x9f904333 ipv6_setsockopt EXPORT_SYMBOL vmlinux 0x9f984513 strrchr EXPORT_SYMBOL vmlinux 0x9fa7184a cancel_delayed_work_sync EXPORT_SYMBOL vmlinux 0x9fda214c set_groups EXPORT_SYMBOL vmlinux 0x9fdecc31 unregister_netdevice_many EXPORT_SYMBOL vmlinux 0x9fe1a2a8 nd_dax_probe +EXPORT_SYMBOL vmlinux 0x9fe5fb56 netdev_features_change +EXPORT_SYMBOL vmlinux 0x9fe848a5 eth_gro_receive EXPORT_SYMBOL vmlinux 0x9feed7ce timer_reduce EXPORT_SYMBOL vmlinux 0x9ffa3a75 netdev_max_backlog -EXPORT_SYMBOL vmlinux 0xa0026907 security_path_unlink EXPORT_SYMBOL vmlinux 0xa00aca2a dql_completed EXPORT_SYMBOL vmlinux 0xa016cb34 vfs_copy_file_range EXPORT_SYMBOL vmlinux 0xa01d3df6 font_vga_8x16 EXPORT_SYMBOL vmlinux 0xa020f9f0 audit_log_task_context EXPORT_SYMBOL vmlinux 0xa02aa74a __cond_resched_lock EXPORT_SYMBOL vmlinux 0xa02d6992 page_pool_put_page +EXPORT_SYMBOL vmlinux 0xa0322912 netif_device_attach EXPORT_SYMBOL vmlinux 0xa0333256 mount_single EXPORT_SYMBOL vmlinux 0xa033d747 next_arg EXPORT_SYMBOL vmlinux 0xa038f5b5 tty_port_block_til_ready -EXPORT_SYMBOL vmlinux 0xa03e4a4d dcb_ieee_delapp EXPORT_SYMBOL vmlinux 0xa0436e98 in6addr_linklocal_allnodes -EXPORT_SYMBOL vmlinux 0xa050c61e tcf_qevent_handle EXPORT_SYMBOL vmlinux 0xa0555170 pci_add_new_bus -EXPORT_SYMBOL vmlinux 0xa0559407 tcf_unregister_action EXPORT_SYMBOL vmlinux 0xa05b6be2 psched_ppscfg_precompute +EXPORT_SYMBOL vmlinux 0xa05bc910 tcp_initialize_rcv_mss EXPORT_SYMBOL vmlinux 0xa07632de splice_direct_to_actor EXPORT_SYMBOL vmlinux 0xa07a37f0 memchr EXPORT_SYMBOL vmlinux 0xa07d1b3c tasklet_setup @@ -6909,8 +6914,6 @@ EXPORT_SYMBOL vmlinux 0xa0ae1e73 siphash_3u64 EXPORT_SYMBOL vmlinux 0xa0b04675 vmalloc_32 EXPORT_SYMBOL vmlinux 0xa0baa3bf kthread_associate_blkcg -EXPORT_SYMBOL vmlinux 0xa0bb1694 xfrm_unregister_type -EXPORT_SYMBOL vmlinux 0xa0c0b42f kernel_getsockname EXPORT_SYMBOL vmlinux 0xa0c774a0 __cleancache_invalidate_page EXPORT_SYMBOL vmlinux 0xa0c92983 scsi_add_host_with_dma EXPORT_SYMBOL vmlinux 0xa0d24e87 tty_do_resize @@ -6924,106 +6927,116 @@ EXPORT_SYMBOL vmlinux 0xa0f1b784 jbd2_fc_release_bufs EXPORT_SYMBOL vmlinux 0xa0fbac79 wake_up_bit EXPORT_SYMBOL vmlinux 0xa108eb4d sysctl_optmem_max +EXPORT_SYMBOL vmlinux 0xa1120059 phy_ethtool_get_stats EXPORT_SYMBOL vmlinux 0xa120d33c tty_unregister_ldisc EXPORT_SYMBOL vmlinux 0xa12c36f5 scsi_scan_target EXPORT_SYMBOL vmlinux 0xa13c6212 user_revoke EXPORT_SYMBOL vmlinux 0xa13e780a gen_replace_estimator -EXPORT_SYMBOL vmlinux 0xa1416b8e mdiobus_unregister_device +EXPORT_SYMBOL vmlinux 0xa15118a5 phy_support_sym_pause +EXPORT_SYMBOL vmlinux 0xa164feed nf_log_set EXPORT_SYMBOL vmlinux 0xa1740d88 current_task -EXPORT_SYMBOL vmlinux 0xa180e30a flow_indr_dev_register EXPORT_SYMBOL vmlinux 0xa18cb4e3 ilookup5 +EXPORT_SYMBOL vmlinux 0xa19d4f0f xfrm_policy_delete +EXPORT_SYMBOL vmlinux 0xa19ecc6d register_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0xa1a0ab0d dev_set_mac_address +EXPORT_SYMBOL vmlinux 0xa1be3079 __ip_queue_xmit EXPORT_SYMBOL vmlinux 0xa1bedd72 amd_iommu_pc_get_max_counters -EXPORT_SYMBOL vmlinux 0xa1c18a4f iptun_encaps -EXPORT_SYMBOL vmlinux 0xa1cac2d0 mdio_driver_register -EXPORT_SYMBOL vmlinux 0xa1ebf30a nf_hook_slow_list +EXPORT_SYMBOL vmlinux 0xa1f3f2bc dev_trans_start EXPORT_SYMBOL vmlinux 0xa1f9a134 __x86_indirect_thunk_rsi EXPORT_SYMBOL vmlinux 0xa1fe7a9c mipi_dsi_turn_on_peripheral EXPORT_SYMBOL vmlinux 0xa2060911 inet_current_timestamp EXPORT_SYMBOL vmlinux 0xa21315f3 ata_port_printk EXPORT_SYMBOL vmlinux 0xa2326c49 acpi_remove_table_handler -EXPORT_SYMBOL vmlinux 0xa2340307 sock_set_sndtimeo EXPORT_SYMBOL vmlinux 0xa234ec37 fscrypt_zeroout_range -EXPORT_SYMBOL vmlinux 0xa23ba395 set_create_files_as EXPORT_SYMBOL vmlinux 0xa23ffc04 groups_sort -EXPORT_SYMBOL vmlinux 0xa243cbba phy_driver_unregister +EXPORT_SYMBOL vmlinux 0xa242a83a build_skb_around EXPORT_SYMBOL vmlinux 0xa2468c9e input_get_poll_interval -EXPORT_SYMBOL vmlinux 0xa24adc61 flow_rule_match_ip EXPORT_SYMBOL vmlinux 0xa24f23d8 __request_module -EXPORT_SYMBOL vmlinux 0xa2523a84 vlan_filter_push_vids +EXPORT_SYMBOL vmlinux 0xa251ed09 skb_get_hash_perturb EXPORT_SYMBOL vmlinux 0xa25b90ab utf8byte EXPORT_SYMBOL vmlinux 0xa263892b fscrypt_fname_free_buffer EXPORT_SYMBOL vmlinux 0xa2688e02 param_set_bool EXPORT_SYMBOL vmlinux 0xa26cb9df seq_escape -EXPORT_SYMBOL vmlinux 0xa2880e4b fib_default_rule_add +EXPORT_SYMBOL vmlinux 0xa27dbdc0 neigh_app_ns +EXPORT_SYMBOL vmlinux 0xa2854361 genl_unregister_family EXPORT_SYMBOL vmlinux 0xa28cfcc0 gen_estimator_active EXPORT_SYMBOL vmlinux 0xa29c6580 iov_iter_discard +EXPORT_SYMBOL vmlinux 0xa2a51a9d nf_ip_checksum EXPORT_SYMBOL vmlinux 0xa2ad83a2 inode_dio_wait -EXPORT_SYMBOL vmlinux 0xa2c10704 udp_sk_rx_dst_set +EXPORT_SYMBOL vmlinux 0xa2bae217 sock_no_listen +EXPORT_SYMBOL vmlinux 0xa2c0d72e ppp_unregister_compressor EXPORT_SYMBOL vmlinux 0xa2c2f2e3 dm_put_device -EXPORT_SYMBOL vmlinux 0xa2d264d3 inet_frag_reasm_prepare -EXPORT_SYMBOL vmlinux 0xa303e2ec security_binder_transfer_file +EXPORT_SYMBOL vmlinux 0xa30397fc ipv4_mtu EXPORT_SYMBOL vmlinux 0xa30dc4aa ps2_cmd_aborted -EXPORT_SYMBOL vmlinux 0xa31a7d98 ip_check_defrag EXPORT_SYMBOL vmlinux 0xa34ee147 devm_gen_pool_create EXPORT_SYMBOL vmlinux 0xa3527307 kthread_create_worker -EXPORT_SYMBOL vmlinux 0xa358fd2e _dev_crit +EXPORT_SYMBOL vmlinux 0xa36800dc nf_log_unregister +EXPORT_SYMBOL vmlinux 0xa379ed80 dev_set_mtu EXPORT_SYMBOL vmlinux 0xa38f21b9 amd_iommu_update_ga EXPORT_SYMBOL vmlinux 0xa3a085fa generic_file_llseek EXPORT_SYMBOL vmlinux 0xa3a338b5 dquot_writeback_dquots -EXPORT_SYMBOL vmlinux 0xa3b7ec07 __skb_wait_for_more_packets +EXPORT_SYMBOL vmlinux 0xa3b84290 skb_headers_offset_update +EXPORT_SYMBOL vmlinux 0xa3dcdd3d phy_print_status EXPORT_SYMBOL vmlinux 0xa3e81e86 scsi_target_resume EXPORT_SYMBOL vmlinux 0xa3f08c4a __x86_indirect_alt_jmp_rdi EXPORT_SYMBOL vmlinux 0xa3fb735a blk_set_default_limits EXPORT_SYMBOL vmlinux 0xa3fea172 sha224_final -EXPORT_SYMBOL vmlinux 0xa4053fab xfrm_policy_insert EXPORT_SYMBOL vmlinux 0xa40ff01b acpi_dbg_layer +EXPORT_SYMBOL vmlinux 0xa411615e netdev_adjacent_change_prepare EXPORT_SYMBOL vmlinux 0xa4191c0b memset_io EXPORT_SYMBOL vmlinux 0xa43d5051 pcie_get_readrq -EXPORT_SYMBOL vmlinux 0xa448a2b2 skb_dequeue_tail -EXPORT_SYMBOL vmlinux 0xa44a36d4 mdiobus_read -EXPORT_SYMBOL vmlinux 0xa44a4e9c napi_gro_flush +EXPORT_SYMBOL vmlinux 0xa4493daa __ip_mc_inc_group EXPORT_SYMBOL vmlinux 0xa44bbcf3 cdev_device_del +EXPORT_SYMBOL vmlinux 0xa44c2daa dev_queue_xmit_accel +EXPORT_SYMBOL vmlinux 0xa44d565d __hw_addr_unsync_dev +EXPORT_SYMBOL vmlinux 0xa4562e6a dcb_ieee_getapp_mask EXPORT_SYMBOL vmlinux 0xa46ed08b acpi_dev_hid_uid_match EXPORT_SYMBOL vmlinux 0xa4b37f32 copy_fpregs_to_fpstate EXPORT_SYMBOL vmlinux 0xa4b94fea iowrite8_rep EXPORT_SYMBOL vmlinux 0xa4d4f0e6 global_cache_flush -EXPORT_SYMBOL vmlinux 0xa4f5adb9 sock_set_mark +EXPORT_SYMBOL vmlinux 0xa4d7f194 inet6_getname +EXPORT_SYMBOL vmlinux 0xa4e1f283 flow_rule_match_ct EXPORT_SYMBOL vmlinux 0xa4faf62a acpi_disable_gpe +EXPORT_SYMBOL vmlinux 0xa500d3c1 register_tcf_proto_ops EXPORT_SYMBOL vmlinux 0xa5056338 __hsiphash_aligned EXPORT_SYMBOL vmlinux 0xa507125e acpi_clear_gpe EXPORT_SYMBOL vmlinux 0xa5077708 pci_bus_add_devices EXPORT_SYMBOL vmlinux 0xa50a3da7 _find_next_bit -EXPORT_SYMBOL vmlinux 0xa50aa354 sk_common_release EXPORT_SYMBOL vmlinux 0xa50ab1fd crypto_sha1_update EXPORT_SYMBOL vmlinux 0xa50bcff0 x86_cpu_to_apicid EXPORT_SYMBOL vmlinux 0xa50d3b11 agp_create_memory +EXPORT_SYMBOL vmlinux 0xa515ab10 nf_unregister_sockopt EXPORT_SYMBOL vmlinux 0xa51c81bd devfreq_update_interval -EXPORT_SYMBOL vmlinux 0xa546c7b5 ip_frag_next +EXPORT_SYMBOL vmlinux 0xa5212f5e mdiobus_get_phy +EXPORT_SYMBOL vmlinux 0xa537ba19 xfrm_replay_seqhi +EXPORT_SYMBOL vmlinux 0xa54b4c0c __ip_select_ident EXPORT_SYMBOL vmlinux 0xa5526619 rb_insert_color -EXPORT_SYMBOL vmlinux 0xa55b6042 security_task_getsecid_subj EXPORT_SYMBOL vmlinux 0xa563076c fb_validate_mode +EXPORT_SYMBOL vmlinux 0xa57e10c6 _dev_crit EXPORT_SYMBOL vmlinux 0xa57ea859 pci_write_config_word EXPORT_SYMBOL vmlinux 0xa57fbac7 hdmi_infoframe_log EXPORT_SYMBOL vmlinux 0xa5976e4f dev_base_lock +EXPORT_SYMBOL vmlinux 0xa59f5942 seg6_hmac_info_add EXPORT_SYMBOL vmlinux 0xa5ac3e33 ZSTD_DCtxWorkspaceBound -EXPORT_SYMBOL vmlinux 0xa5ae08a1 inet_csk_accept EXPORT_SYMBOL vmlinux 0xa5d917ce dma_async_device_register EXPORT_SYMBOL vmlinux 0xa5e55057 rdmsrl_safe_on_cpu -EXPORT_SYMBOL vmlinux 0xa615bdf0 security_inode_getsecctx EXPORT_SYMBOL vmlinux 0xa618e73f dma_unmap_resource EXPORT_SYMBOL vmlinux 0xa61bcd11 clk_add_alias EXPORT_SYMBOL vmlinux 0xa61ced89 qdisc_put_rtab -EXPORT_SYMBOL vmlinux 0xa62247d6 arp_xmit -EXPORT_SYMBOL vmlinux 0xa622e5b3 skb_pull EXPORT_SYMBOL vmlinux 0xa6257a2f complete EXPORT_SYMBOL vmlinux 0xa65c6a92 dm_register_target EXPORT_SYMBOL vmlinux 0xa681fe88 generate_random_uuid +EXPORT_SYMBOL vmlinux 0xa689e0ec tcf_idr_search +EXPORT_SYMBOL vmlinux 0xa69b8ceb xp_dma_sync_for_device_slow EXPORT_SYMBOL vmlinux 0xa69fc66c param_ops_int -EXPORT_SYMBOL vmlinux 0xa6b1c945 phy_device_create -EXPORT_SYMBOL vmlinux 0xa6c5dfc8 ethtool_virtdev_set_link_ksettings +EXPORT_SYMBOL vmlinux 0xa6ac0af6 ppp_register_channel +EXPORT_SYMBOL vmlinux 0xa6c15ef1 dev_open +EXPORT_SYMBOL vmlinux 0xa6ddbb2f dev_mc_sync_multiple EXPORT_SYMBOL vmlinux 0xa6dfad6d update_region EXPORT_SYMBOL vmlinux 0xa70fabbe release_evntsel_nmi EXPORT_SYMBOL vmlinux 0xa70fb761 flow_keys_basic_dissector +EXPORT_SYMBOL vmlinux 0xa717f1d6 xfrm_unregister_km +EXPORT_SYMBOL vmlinux 0xa71802db tcf_get_next_proto EXPORT_SYMBOL vmlinux 0xa71d2e2c ioread16be EXPORT_SYMBOL vmlinux 0xa71f97c7 devm_input_allocate_device EXPORT_SYMBOL vmlinux 0xa72035f9 xa_get_order @@ -7033,78 +7046,82 @@ EXPORT_SYMBOL vmlinux 0xa74c9877 refcount_dec_and_rtnl_lock EXPORT_SYMBOL vmlinux 0xa74f4436 config_item_init_type_name EXPORT_SYMBOL vmlinux 0xa77bfd29 register_inet6addr_validator_notifier -EXPORT_SYMBOL vmlinux 0xa785079e register_qdisc EXPORT_SYMBOL vmlinux 0xa787e347 input_set_capability EXPORT_SYMBOL vmlinux 0xa78af5f3 ioread32 -EXPORT_SYMBOL vmlinux 0xa78dcc4f skb_copy_datagram_from_iter EXPORT_SYMBOL vmlinux 0xa78f2123 blk_rq_map_integrity_sg EXPORT_SYMBOL vmlinux 0xa796679d __SCT__tp_func_dma_fence_emit EXPORT_SYMBOL vmlinux 0xa7a89200 devfreq_monitor_stop EXPORT_SYMBOL vmlinux 0xa7a968c7 get_tree_keyed EXPORT_SYMBOL vmlinux 0xa7aba579 __bread_gfp -EXPORT_SYMBOL vmlinux 0xa7c1754d sk_stream_wait_memory EXPORT_SYMBOL vmlinux 0xa7d382e3 iov_iter_for_each_range EXPORT_SYMBOL vmlinux 0xa7d5f92e ida_destroy EXPORT_SYMBOL vmlinux 0xa7dd074d bio_clone_fast EXPORT_SYMBOL vmlinux 0xa7df4c49 pci_scan_root_bus +EXPORT_SYMBOL vmlinux 0xa7e8ae20 ndo_dflt_fdb_dump EXPORT_SYMBOL vmlinux 0xa7eedcc4 call_usermodehelper EXPORT_SYMBOL vmlinux 0xa7f58f15 __devm_release_region -EXPORT_SYMBOL vmlinux 0xa7fa4eaa tcf_idr_search EXPORT_SYMBOL vmlinux 0xa805ecfc acpi_release_global_lock +EXPORT_SYMBOL vmlinux 0xa806896a sock_set_mark EXPORT_SYMBOL vmlinux 0xa8181adf proc_dointvec +EXPORT_SYMBOL vmlinux 0xa831cf25 tcp_v4_md5_hash_skb EXPORT_SYMBOL vmlinux 0xa836ba02 wrmsr_safe_regs EXPORT_SYMBOL vmlinux 0xa83fb334 mipi_dsi_compression_mode EXPORT_SYMBOL vmlinux 0xa843805a get_unused_fd_flags EXPORT_SYMBOL vmlinux 0xa84ce9e0 crypto_aes_inv_sbox EXPORT_SYMBOL vmlinux 0xa853396b xa_extract EXPORT_SYMBOL vmlinux 0xa85a3e6d xa_load -EXPORT_SYMBOL vmlinux 0xa86096e2 ipv6_chk_prefix -EXPORT_SYMBOL vmlinux 0xa861f105 ppp_unregister_channel +EXPORT_SYMBOL vmlinux 0xa868b351 inet_csk_init_xmit_timers EXPORT_SYMBOL vmlinux 0xa8694ecd kblockd_schedule_work EXPORT_SYMBOL vmlinux 0xa897e3e7 mempool_free EXPORT_SYMBOL vmlinux 0xa89a1cf1 ipmi_dmi_get_slave_addr EXPORT_SYMBOL vmlinux 0xa89ced28 param_get_int -EXPORT_SYMBOL vmlinux 0xa8a6a249 netif_carrier_off -EXPORT_SYMBOL vmlinux 0xa8ae1aaf phy_disconnect +EXPORT_SYMBOL vmlinux 0xa8a6179c inet_recvmsg EXPORT_SYMBOL vmlinux 0xa8b133be __set_page_dirty_buffers EXPORT_SYMBOL vmlinux 0xa8caa845 clk_bulk_put_all EXPORT_SYMBOL vmlinux 0xa8e6933a qdf2400_e44_present -EXPORT_SYMBOL vmlinux 0xa8ede9fd neigh_event_ns EXPORT_SYMBOL vmlinux 0xa8f6c843 ip_frag_ecn_table +EXPORT_SYMBOL vmlinux 0xa902416c __skb_free_datagram_locked +EXPORT_SYMBOL vmlinux 0xa902d206 prepare_to_swait_exclusive EXPORT_SYMBOL vmlinux 0xa90ca0de flush_rcu_work EXPORT_SYMBOL vmlinux 0xa916b694 strnlen EXPORT_SYMBOL vmlinux 0xa91d746d no_seek_end_llseek EXPORT_SYMBOL vmlinux 0xa924b4aa __traceiter_kmem_cache_alloc_node EXPORT_SYMBOL vmlinux 0xa931af8a asm_load_gs_index +EXPORT_SYMBOL vmlinux 0xa931b97c security_old_inode_init_security EXPORT_SYMBOL vmlinux 0xa934bc4b flow_get_u32_dst EXPORT_SYMBOL vmlinux 0xa94a09bb mem_section -EXPORT_SYMBOL vmlinux 0xa9567feb tcf_chain_put_by_act +EXPORT_SYMBOL vmlinux 0xa9652b00 __icmp_send EXPORT_SYMBOL vmlinux 0xa965ca81 reciprocal_value EXPORT_SYMBOL vmlinux 0xa97463c9 __siphash_aligned EXPORT_SYMBOL vmlinux 0xa9785b49 cpu_core_map -EXPORT_SYMBOL vmlinux 0xa999f33f __xfrm_state_destroy EXPORT_SYMBOL vmlinux 0xa99b39c2 prandom_bytes -EXPORT_SYMBOL vmlinux 0xa9af325c flow_rule_match_cvlan +EXPORT_SYMBOL vmlinux 0xa9a70831 security_sk_clone +EXPORT_SYMBOL vmlinux 0xa9ae94cc genlmsg_put EXPORT_SYMBOL vmlinux 0xa9be484c get_mm_exe_file EXPORT_SYMBOL vmlinux 0xa9c72303 amd_iommu_pc_get_max_banks +EXPORT_SYMBOL vmlinux 0xa9c87a30 vfs_rmdir +EXPORT_SYMBOL vmlinux 0xa9c9078d neigh_xmit +EXPORT_SYMBOL vmlinux 0xa9cb40d6 genphy_c37_config_aneg EXPORT_SYMBOL vmlinux 0xa9cdebf6 iunique EXPORT_SYMBOL vmlinux 0xa9e10440 block_write_full_page EXPORT_SYMBOL vmlinux 0xa9e1cba4 vmf_insert_mixed +EXPORT_SYMBOL vmlinux 0xa9e2bfc5 netif_receive_skb EXPORT_SYMBOL vmlinux 0xa9e6a153 mfd_remove_devices EXPORT_SYMBOL vmlinux 0xa9e90b0a redraw_screen EXPORT_SYMBOL vmlinux 0xaa00fdc0 ec_transaction EXPORT_SYMBOL vmlinux 0xaa1342c2 md_bitmap_endwrite EXPORT_SYMBOL vmlinux 0xaa19e4aa _kstrtol -EXPORT_SYMBOL vmlinux 0xaa1a40c5 udp6_seq_ops EXPORT_SYMBOL vmlinux 0xaa341905 acpi_bios_exception EXPORT_SYMBOL vmlinux 0xaa3a38b8 __frontswap_store EXPORT_SYMBOL vmlinux 0xaa44a707 cpumask_next EXPORT_SYMBOL vmlinux 0xaa4dff06 blk_mq_start_stopped_hw_queues -EXPORT_SYMBOL vmlinux 0xaa4f3270 flow_rule_match_ipv6_addrs -EXPORT_SYMBOL vmlinux 0xaa6a8066 tcp_mtup_init +EXPORT_SYMBOL vmlinux 0xaa538327 security_inode_listsecurity EXPORT_SYMBOL vmlinux 0xaa6f23ad rfkill_get_led_trigger_name EXPORT_SYMBOL vmlinux 0xaa91af54 md_error +EXPORT_SYMBOL vmlinux 0xaa98d433 flow_rule_match_enc_ip +EXPORT_SYMBOL vmlinux 0xaa9ca277 netdev_lower_state_changed EXPORT_SYMBOL vmlinux 0xaaa4b9bc hchacha_block_generic +EXPORT_SYMBOL vmlinux 0xaac45cea __ip4_datagram_connect EXPORT_SYMBOL vmlinux 0xaac60f4f agp_generic_enable EXPORT_SYMBOL vmlinux 0xaad0ae78 __bitmap_shift_right EXPORT_SYMBOL vmlinux 0xaad6d92f rfkill_init_sw_state @@ -7113,8 +7130,9 @@ EXPORT_SYMBOL vmlinux 0xaaf07c6a bio_uninit EXPORT_SYMBOL vmlinux 0xaafdc258 strcasecmp EXPORT_SYMBOL vmlinux 0xab0582c9 nobh_writepage -EXPORT_SYMBOL vmlinux 0xab1a7b05 tcp_peek_len +EXPORT_SYMBOL vmlinux 0xab183f56 inet6_add_protocol EXPORT_SYMBOL vmlinux 0xab26f5f3 mfd_cell_disable +EXPORT_SYMBOL vmlinux 0xab342544 kern_path EXPORT_SYMBOL vmlinux 0xab3697e4 irq_poll_init EXPORT_SYMBOL vmlinux 0xab3b75ea vme_dma_pattern_attribute EXPORT_SYMBOL vmlinux 0xab5c67ea dquot_commit_info @@ -7124,103 +7142,96 @@ EXPORT_SYMBOL vmlinux 0xab67a0ac dql_init EXPORT_SYMBOL vmlinux 0xab6c9017 dma_sync_single_for_device EXPORT_SYMBOL vmlinux 0xab781570 fb_get_options -EXPORT_SYMBOL vmlinux 0xab7aebd5 passthru_features_check EXPORT_SYMBOL vmlinux 0xaba00ba8 agp_bind_memory -EXPORT_SYMBOL vmlinux 0xaba6645b ip_route_me_harder +EXPORT_SYMBOL vmlinux 0xabaaa9d3 inet_register_protosw EXPORT_SYMBOL vmlinux 0xabb6ec68 padata_free -EXPORT_SYMBOL vmlinux 0xabbb5e3c tcf_exts_terse_dump EXPORT_SYMBOL vmlinux 0xabdda2ee agp_generic_destroy_pages EXPORT_SYMBOL vmlinux 0xabeb9438 skb_flow_dissector_init +EXPORT_SYMBOL vmlinux 0xabf2caf4 __inet6_lookup_established EXPORT_SYMBOL vmlinux 0xabf32f29 utf16s_to_utf8s -EXPORT_SYMBOL vmlinux 0xac0b2d17 phy_ethtool_set_link_ksettings +EXPORT_SYMBOL vmlinux 0xac1136e7 netpoll_parse_options +EXPORT_SYMBOL vmlinux 0xac11b4e2 netdev_master_upper_dev_get_rcu EXPORT_SYMBOL vmlinux 0xac143f5a simple_fill_super EXPORT_SYMBOL vmlinux 0xac1a55be unregister_reboot_notifier EXPORT_SYMBOL vmlinux 0xac29748e __SCK__tp_func_spi_transfer_stop +EXPORT_SYMBOL vmlinux 0xac2c4d8e inet_frag_reasm_prepare EXPORT_SYMBOL vmlinux 0xac3201b0 udp_flow_hashrnd -EXPORT_SYMBOL vmlinux 0xac3904e6 security_binder_transfer_binder +EXPORT_SYMBOL vmlinux 0xac3e5c81 tcp_conn_request EXPORT_SYMBOL vmlinux 0xac537ac2 percpu_counter_destroy EXPORT_SYMBOL vmlinux 0xac5fcec0 in4_pton EXPORT_SYMBOL vmlinux 0xac6fa2e2 serio_close -EXPORT_SYMBOL vmlinux 0xac75ba17 netdev_adjacent_change_commit +EXPORT_SYMBOL vmlinux 0xac7a519f sock_i_ino EXPORT_SYMBOL vmlinux 0xac8597d5 mb_cache_entry_get EXPORT_SYMBOL vmlinux 0xac94e86b vsprintf EXPORT_SYMBOL vmlinux 0xacaa4c72 dma_fence_match_context EXPORT_SYMBOL vmlinux 0xacab29b7 seq_hlist_start_percpu -EXPORT_SYMBOL vmlinux 0xacb873a8 ip_options_compile -EXPORT_SYMBOL vmlinux 0xaccfe030 udp_seq_stop EXPORT_SYMBOL vmlinux 0xacd81eb3 jbd2_inode_cache EXPORT_SYMBOL vmlinux 0xacdd1411 __f_setown +EXPORT_SYMBOL vmlinux 0xacea1c2b neigh_seq_next EXPORT_SYMBOL vmlinux 0xacf4d843 match_strdup EXPORT_SYMBOL vmlinux 0xacf649bf audit_log_task_info EXPORT_SYMBOL vmlinux 0xacff30e9 jbd2_journal_set_features EXPORT_SYMBOL vmlinux 0xad0413d4 match_hex EXPORT_SYMBOL vmlinux 0xad1036a2 amd_iommu_activate_guest_mode -EXPORT_SYMBOL vmlinux 0xad11b52c register_fib_notifier +EXPORT_SYMBOL vmlinux 0xad27d2d1 neigh_lookup_nodev EXPORT_SYMBOL vmlinux 0xad2951a9 ex_handler_rdmsr_unsafe EXPORT_SYMBOL vmlinux 0xad357133 __traceiter_kmalloc_node +EXPORT_SYMBOL vmlinux 0xad3be034 __sock_create EXPORT_SYMBOL vmlinux 0xad536c91 x86_cpu_to_acpiid -EXPORT_SYMBOL vmlinux 0xad6b7042 phy_ethtool_get_wol +EXPORT_SYMBOL vmlinux 0xad561706 flow_rule_alloc EXPORT_SYMBOL vmlinux 0xad6ba40e radix_tree_tag_get -EXPORT_SYMBOL vmlinux 0xad6bc59c dev_printk +EXPORT_SYMBOL vmlinux 0xad6cb561 _dev_err EXPORT_SYMBOL vmlinux 0xad715d8d is_nd_btt EXPORT_SYMBOL vmlinux 0xad73041f autoremove_wake_function EXPORT_SYMBOL vmlinux 0xad759a54 blk_mq_delay_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xad801551 fwnode_graph_parse_endpoint EXPORT_SYMBOL vmlinux 0xad8db067 scsi_report_bus_reset -EXPORT_SYMBOL vmlinux 0xad977b8d inet_offloads EXPORT_SYMBOL vmlinux 0xad9901ae bit_waitqueue EXPORT_SYMBOL vmlinux 0xad995dac netdev_stats_to_stats64 -EXPORT_SYMBOL vmlinux 0xad9e187a lock_rename EXPORT_SYMBOL vmlinux 0xada31e57 gen_pool_dma_alloc_align +EXPORT_SYMBOL vmlinux 0xada8571f sock_sendmsg EXPORT_SYMBOL vmlinux 0xadbeed61 mipi_dsi_packet_format_is_long EXPORT_SYMBOL vmlinux 0xadc044b7 vfio_set_irqs_validate_and_prepare EXPORT_SYMBOL vmlinux 0xadc638bf fscrypt_free_bounce_page EXPORT_SYMBOL vmlinux 0xadc9241e scsi_test_unit_ready EXPORT_SYMBOL vmlinux 0xadcba50b ZSTD_findFrameCompressedSize EXPORT_SYMBOL vmlinux 0xadd139d4 rfs_needed +EXPORT_SYMBOL vmlinux 0xade5ba57 ethtool_notify EXPORT_SYMBOL vmlinux 0xadf2d2d0 super_setup_bdi_name EXPORT_SYMBOL vmlinux 0xadfdfcef __bitmap_andnot +EXPORT_SYMBOL vmlinux 0xae00b8a0 inet_frag_find EXPORT_SYMBOL vmlinux 0xae04012c __vmalloc -EXPORT_SYMBOL vmlinux 0xae067a48 dcbnl_ieee_notify EXPORT_SYMBOL vmlinux 0xae0bf5e4 kern_unmount_array EXPORT_SYMBOL vmlinux 0xae316c11 icmpv6_err_convert -EXPORT_SYMBOL vmlinux 0xae52b176 mdiobus_read_nested EXPORT_SYMBOL vmlinux 0xae5a04bb acpi_evaluate_dsm -EXPORT_SYMBOL vmlinux 0xae623d08 __dev_direct_xmit +EXPORT_SYMBOL vmlinux 0xae675446 dst_discard_out EXPORT_SYMBOL vmlinux 0xae80741a load_nls -EXPORT_SYMBOL vmlinux 0xae9c0806 skb_flow_dissect_tunnel_info EXPORT_SYMBOL vmlinux 0xaeac049a generate_random_guid EXPORT_SYMBOL vmlinux 0xaeb082ad _raw_read_unlock_bh -EXPORT_SYMBOL vmlinux 0xaeb6fc1a sock_set_priority -EXPORT_SYMBOL vmlinux 0xaebbff39 netdev_adjacent_change_prepare EXPORT_SYMBOL vmlinux 0xaebd12f0 acpi_get_name -EXPORT_SYMBOL vmlinux 0xaec9f92f napi_enable +EXPORT_SYMBOL vmlinux 0xaec0f428 phy_start_aneg EXPORT_SYMBOL vmlinux 0xaef83cc2 file_check_and_advance_wb_err EXPORT_SYMBOL vmlinux 0xaef92009 bioset_init EXPORT_SYMBOL vmlinux 0xaefe0e8d locks_init_lock -EXPORT_SYMBOL vmlinux 0xaf08c22a security_inode_init_security -EXPORT_SYMBOL vmlinux 0xaf32221b inet_csk_clear_xmit_timers EXPORT_SYMBOL vmlinux 0xaf354bbe cpu_tss_rw EXPORT_SYMBOL vmlinux 0xaf3dd7dc scsi_logging_level -EXPORT_SYMBOL vmlinux 0xaf3ea62f dev_uc_flush +EXPORT_SYMBOL vmlinux 0xaf42ee03 flow_rule_match_mpls +EXPORT_SYMBOL vmlinux 0xaf4bb5a6 security_sctp_sk_clone EXPORT_SYMBOL vmlinux 0xaf4c21b6 is_nvdimm_bus_locked EXPORT_SYMBOL vmlinux 0xaf527a0f noop_fsync -EXPORT_SYMBOL vmlinux 0xaf6ed3d3 netdev_master_upper_dev_get_rcu -EXPORT_SYMBOL vmlinux 0xaf6f9566 flow_rule_alloc EXPORT_SYMBOL vmlinux 0xaf746715 register_quota_format -EXPORT_SYMBOL vmlinux 0xaf7d58b3 udp_skb_destructor EXPORT_SYMBOL vmlinux 0xaf8b9f62 sync_inodes_sb EXPORT_SYMBOL vmlinux 0xafa26576 simple_empty EXPORT_SYMBOL vmlinux 0xafadd2be pcie_port_service_unregister -EXPORT_SYMBOL vmlinux 0xafb24c34 ethtool_op_get_link EXPORT_SYMBOL vmlinux 0xafb864c1 refcount_dec_and_lock_irqsave EXPORT_SYMBOL vmlinux 0xafc08054 dotdot_name EXPORT_SYMBOL vmlinux 0xafd5ff2c amd_iommu_v2_supported +EXPORT_SYMBOL vmlinux 0xafdb456a netdev_upper_dev_unlink EXPORT_SYMBOL vmlinux 0xafe8ec9b clkdev_hw_alloc EXPORT_SYMBOL vmlinux 0xaffb7f3d kthread_destroy_worker -EXPORT_SYMBOL vmlinux 0xb00d5a3c tcf_action_update_stats +EXPORT_SYMBOL vmlinux 0xb00b50b7 inet_sendmsg EXPORT_SYMBOL vmlinux 0xb01bebf9 xfrm_get_acqseq EXPORT_SYMBOL vmlinux 0xb0279883 mpage_writepage -EXPORT_SYMBOL vmlinux 0xb0287ff3 __skb_flow_dissect EXPORT_SYMBOL vmlinux 0xb02df2d6 __traceiter_rdpmc EXPORT_SYMBOL vmlinux 0xb0356f95 t10_pi_type1_crc EXPORT_SYMBOL vmlinux 0xb04a43ad __xa_alloc_cyclic @@ -7230,52 +7241,54 @@ EXPORT_SYMBOL vmlinux 0xb0934535 rtc_add_groups EXPORT_SYMBOL vmlinux 0xb0a0da0c rational_best_approximation EXPORT_SYMBOL vmlinux 0xb0a3b35f acpi_get_hp_hw_control_from_firmware -EXPORT_SYMBOL vmlinux 0xb0ab0e8f tcp_shutdown +EXPORT_SYMBOL vmlinux 0xb0ac2c51 seg6_hmac_net_exit EXPORT_SYMBOL vmlinux 0xb0c5e247 lockref_put_return -EXPORT_SYMBOL vmlinux 0xb0d2c6a4 inet_csk_reqsk_queue_drop_and_put +EXPORT_SYMBOL vmlinux 0xb0ccded0 ip6mr_rule_default +EXPORT_SYMBOL vmlinux 0xb0d5b10b tcp_read_sock +EXPORT_SYMBOL vmlinux 0xb0d62cbf xfrm_policy_unregister_afinfo EXPORT_SYMBOL vmlinux 0xb0e10781 get_option EXPORT_SYMBOL vmlinux 0xb0e602eb memmove -EXPORT_SYMBOL vmlinux 0xb0e8fc6c in6_dev_finish_destroy +EXPORT_SYMBOL vmlinux 0xb0eaa482 phy_support_asym_pause EXPORT_SYMBOL vmlinux 0xb0f389ee utf8_normalize -EXPORT_SYMBOL vmlinux 0xb102e88d inet_frag_kill +EXPORT_SYMBOL vmlinux 0xb1083230 skb_seq_read EXPORT_SYMBOL vmlinux 0xb10e7df4 __kfifo_dma_in_prepare -EXPORT_SYMBOL vmlinux 0xb10eccf4 xfrm_spd_getinfo EXPORT_SYMBOL vmlinux 0xb11dec07 vfs_iter_read EXPORT_SYMBOL vmlinux 0xb121390a probe_irq_on EXPORT_SYMBOL vmlinux 0xb12cbacb fb_unregister_client EXPORT_SYMBOL vmlinux 0xb1342cdb _raw_read_lock_irqsave -EXPORT_SYMBOL vmlinux 0xb14827d7 xfrm_state_lookup EXPORT_SYMBOL vmlinux 0xb14ab1ef hdmi_audio_infoframe_init EXPORT_SYMBOL vmlinux 0xb14fc46a find_next_clump8 +EXPORT_SYMBOL vmlinux 0xb158264f nf_reinject EXPORT_SYMBOL vmlinux 0xb1670ccc blk_pre_runtime_resume EXPORT_SYMBOL vmlinux 0xb16900ad cmdline_parts_parse -EXPORT_SYMBOL vmlinux 0xb17da55d gnet_stats_copy_app +EXPORT_SYMBOL vmlinux 0xb17550bf register_nexthop_notifier EXPORT_SYMBOL vmlinux 0xb17e6c21 dm_table_get_mode +EXPORT_SYMBOL vmlinux 0xb187828d eth_prepare_mac_addr_change EXPORT_SYMBOL vmlinux 0xb19a3adc vga_switcheroo_lock_ddc EXPORT_SYMBOL vmlinux 0xb19a5453 __per_cpu_offset -EXPORT_SYMBOL vmlinux 0xb1bcd1bb __xfrm_dst_lookup +EXPORT_SYMBOL vmlinux 0xb19e5d0f __neigh_create +EXPORT_SYMBOL vmlinux 0xb1bf6bb8 __netdev_alloc_skb EXPORT_SYMBOL vmlinux 0xb1c3a01a oops_in_progress EXPORT_SYMBOL vmlinux 0xb1c5f449 proc_create -EXPORT_SYMBOL vmlinux 0xb1cab9f2 flow_block_cb_free EXPORT_SYMBOL vmlinux 0xb1d3a15c blk_finish_plug -EXPORT_SYMBOL vmlinux 0xb1da1ba2 sock_kmalloc EXPORT_SYMBOL vmlinux 0xb1ddf995 jiffies_64_to_clock_t EXPORT_SYMBOL vmlinux 0xb1de4b5c blk_queue_update_dma_pad EXPORT_SYMBOL vmlinux 0xb1e92854 param_ops_invbool EXPORT_SYMBOL vmlinux 0xb2081794 __cleancache_init_shared_fs -EXPORT_SYMBOL vmlinux 0xb2140348 dev_activate EXPORT_SYMBOL vmlinux 0xb219d56c wbinvd_on_cpu -EXPORT_SYMBOL vmlinux 0xb21a0a73 ip_local_deliver EXPORT_SYMBOL vmlinux 0xb229138d cdc_parse_cdc_header EXPORT_SYMBOL vmlinux 0xb22e16d5 radix_tree_maybe_preload EXPORT_SYMBOL vmlinux 0xb23027c1 kstrtos16_from_user +EXPORT_SYMBOL vmlinux 0xb23a56bd phy_validate_pause EXPORT_SYMBOL vmlinux 0xb244cd42 copy_string_kernel EXPORT_SYMBOL vmlinux 0xb249d383 jbd2__journal_start +EXPORT_SYMBOL vmlinux 0xb2548183 flow_rule_match_vlan EXPORT_SYMBOL vmlinux 0xb2601486 __SCT__tp_func_dma_fence_enable_signal EXPORT_SYMBOL vmlinux 0xb278b1f2 blk_mq_tag_to_rq -EXPORT_SYMBOL vmlinux 0xb2b93c6d tcp_v4_mtu_reduced +EXPORT_SYMBOL vmlinux 0xb29f9206 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xb2a30017 xfrm_input +EXPORT_SYMBOL vmlinux 0xb2a9ab69 xfrm_policy_walk EXPORT_SYMBOL vmlinux 0xb2bcb088 acpi_current_gpe_count -EXPORT_SYMBOL vmlinux 0xb2f25143 qdisc_watchdog_cancel EXPORT_SYMBOL vmlinux 0xb2f35c6a xxh64 EXPORT_SYMBOL vmlinux 0xb2f74fb6 intel_gmch_remove EXPORT_SYMBOL vmlinux 0xb2fabf63 efi @@ -7289,77 +7302,84 @@ EXPORT_SYMBOL vmlinux 0xb316f0fe blk_queue_max_segments EXPORT_SYMBOL vmlinux 0xb320cc0e sg_init_one EXPORT_SYMBOL vmlinux 0xb321ee1a input_register_device +EXPORT_SYMBOL vmlinux 0xb3292d23 tcp_mtu_to_mss EXPORT_SYMBOL vmlinux 0xb332ac73 blkdev_compat_ptr_ioctl EXPORT_SYMBOL vmlinux 0xb33e28f5 pcie_get_width_cap -EXPORT_SYMBOL vmlinux 0xb34255ad xfrm_policy_bysel_ctx EXPORT_SYMBOL vmlinux 0xb361abb2 dm_mq_kick_requeue_list +EXPORT_SYMBOL vmlinux 0xb36271c3 netdev_pick_tx EXPORT_SYMBOL vmlinux 0xb3687850 out_of_line_wait_on_bit_lock -EXPORT_SYMBOL vmlinux 0xb36a6edc inet_pton_with_scope EXPORT_SYMBOL vmlinux 0xb36db11e pci_bus_set_ops EXPORT_SYMBOL vmlinux 0xb3711cf6 bio_add_pc_page -EXPORT_SYMBOL vmlinux 0xb38242e0 softnet_data +EXPORT_SYMBOL vmlinux 0xb37b8ee7 tcp_close EXPORT_SYMBOL vmlinux 0xb3863a67 acpi_set_gpe_wake_mask -EXPORT_SYMBOL vmlinux 0xb3888b16 udp_lib_get_port EXPORT_SYMBOL vmlinux 0xb3896a54 amd_iommu_complete_ppr -EXPORT_SYMBOL vmlinux 0xb3903625 devm_alloc_etherdev_mqs EXPORT_SYMBOL vmlinux 0xb3a2dfdf nmi_panic EXPORT_SYMBOL vmlinux 0xb3d2c76d scsi_hostbyte_string EXPORT_SYMBOL vmlinux 0xb3f49446 kstrtos8_from_user EXPORT_SYMBOL vmlinux 0xb3f548ad kmemdup_nul -EXPORT_SYMBOL vmlinux 0xb3f6b569 skb_clone_sk EXPORT_SYMBOL vmlinux 0xb3f7646e kthread_should_stop -EXPORT_SYMBOL vmlinux 0xb3f8649e netpoll_poll_dev EXPORT_SYMBOL vmlinux 0xb40048cb uart_write_wakeup EXPORT_SYMBOL vmlinux 0xb4023175 __x86_indirect_alt_jmp_r14 EXPORT_SYMBOL vmlinux 0xb4043948 acpi_execute_simple_method +EXPORT_SYMBOL vmlinux 0xb40fc9fb xfrm_parse_spi EXPORT_SYMBOL vmlinux 0xb423dba1 console_blanked EXPORT_SYMBOL vmlinux 0xb4242ad7 remap_vmalloc_range EXPORT_SYMBOL vmlinux 0xb425b740 intel_gmch_probe +EXPORT_SYMBOL vmlinux 0xb43d999a fs_context_for_mount EXPORT_SYMBOL vmlinux 0xb4577003 acpi_dev_present +EXPORT_SYMBOL vmlinux 0xb459b130 flow_rule_match_enc_ports EXPORT_SYMBOL vmlinux 0xb46f7134 __nla_put_nohdr +EXPORT_SYMBOL vmlinux 0xb46f7928 xfrm_user_policy EXPORT_SYMBOL vmlinux 0xb47cca30 csum_ipv6_magic +EXPORT_SYMBOL vmlinux 0xb47d4fc6 dev_get_flags +EXPORT_SYMBOL vmlinux 0xb489f821 sock_no_getname EXPORT_SYMBOL vmlinux 0xb48d4d22 security_sb_eat_lsm_opts -EXPORT_SYMBOL vmlinux 0xb4ab9245 netdev_notice -EXPORT_SYMBOL vmlinux 0xb4bbd250 xfrm_policy_unregister_afinfo -EXPORT_SYMBOL vmlinux 0xb4d84027 xfrm6_rcv +EXPORT_SYMBOL vmlinux 0xb4be9206 arp_xmit +EXPORT_SYMBOL vmlinux 0xb4d28bd3 ip6_mtu +EXPORT_SYMBOL vmlinux 0xb4d36298 inet_proto_csum_replace_by_diff EXPORT_SYMBOL vmlinux 0xb4dfa2f2 __inc_zone_page_state EXPORT_SYMBOL vmlinux 0xb4e2f2b6 simple_transaction_set +EXPORT_SYMBOL vmlinux 0xb4f00bba vfs_unlink EXPORT_SYMBOL vmlinux 0xb4f13d2a abort EXPORT_SYMBOL vmlinux 0xb5105694 param_array_ops EXPORT_SYMBOL vmlinux 0xb5136dc7 mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xb5279204 sk_stream_wait_close EXPORT_SYMBOL vmlinux 0xb52ee8be intel_gtt_clear_range +EXPORT_SYMBOL vmlinux 0xb53ce422 dev_remove_offload EXPORT_SYMBOL vmlinux 0xb53f2810 tcp_sockets_allocated +EXPORT_SYMBOL vmlinux 0xb54b0d8f xfrm_policy_bysel_ctx EXPORT_SYMBOL vmlinux 0xb55e27ac param_get_byte EXPORT_SYMBOL vmlinux 0xb55e4984 devm_devfreq_unregister_notifier +EXPORT_SYMBOL vmlinux 0xb56083c7 eth_validate_addr +EXPORT_SYMBOL vmlinux 0xb572c763 __sk_queue_drop_skb EXPORT_SYMBOL vmlinux 0xb57343c2 frontswap_shrink EXPORT_SYMBOL vmlinux 0xb58aeaab kernel_cpustat -EXPORT_SYMBOL vmlinux 0xb5a2f0e0 proto_unregister EXPORT_SYMBOL vmlinux 0xb5a459dc unregister_blkdev EXPORT_SYMBOL vmlinux 0xb5aa7165 dma_pool_destroy EXPORT_SYMBOL vmlinux 0xb5ab31e3 simple_readpage EXPORT_SYMBOL vmlinux 0xb5b63711 fileattr_fill_xflags EXPORT_SYMBOL vmlinux 0xb5bbba55 __blkdev_issue_discard EXPORT_SYMBOL vmlinux 0xb5d9cb92 inode_init_once +EXPORT_SYMBOL vmlinux 0xb5da06c1 dev_set_promiscuity EXPORT_SYMBOL vmlinux 0xb5e73116 flush_delayed_work EXPORT_SYMBOL vmlinux 0xb5f1e25d filemap_fdatawait_range EXPORT_SYMBOL vmlinux 0xb5f348de mipi_dsi_dcs_get_pixel_format EXPORT_SYMBOL vmlinux 0xb601be4c __x86_indirect_thunk_rdx -EXPORT_SYMBOL vmlinux 0xb60b5b57 inet_del_protocol EXPORT_SYMBOL vmlinux 0xb61679f7 phy_set_max_speed EXPORT_SYMBOL vmlinux 0xb61d6fc2 down_read_interruptible EXPORT_SYMBOL vmlinux 0xb62fa03c _copy_from_iter_nocache EXPORT_SYMBOL vmlinux 0xb6303e89 pci_bus_assign_resources -EXPORT_SYMBOL vmlinux 0xb633db19 tcf_block_get_ext +EXPORT_SYMBOL vmlinux 0xb6306f8c kernel_sock_shutdown EXPORT_SYMBOL vmlinux 0xb633f115 irq_poll_enable -EXPORT_SYMBOL vmlinux 0xb647d89f peernet2id EXPORT_SYMBOL vmlinux 0xb654ef65 acpi_os_read_port EXPORT_SYMBOL vmlinux 0xb6551646 pps_lookup_dev +EXPORT_SYMBOL vmlinux 0xb662aefc __netif_napi_del +EXPORT_SYMBOL vmlinux 0xb66fb6a1 ip_route_input_noref EXPORT_SYMBOL vmlinux 0xb671783b agp_generic_mask_memory +EXPORT_SYMBOL vmlinux 0xb6747f83 sock_no_sendpage EXPORT_SYMBOL vmlinux 0xb674a534 acpi_unmap_cpu EXPORT_SYMBOL vmlinux 0xb678366f int_sqrt EXPORT_SYMBOL vmlinux 0xb67c9280 utf8cursor -EXPORT_SYMBOL vmlinux 0xb67cc35b ppp_input -EXPORT_SYMBOL vmlinux 0xb67e246a skb_store_bits EXPORT_SYMBOL vmlinux 0xb67efa28 blk_set_runtime_active EXPORT_SYMBOL vmlinux 0xb67fec0e uuid_parse EXPORT_SYMBOL vmlinux 0xb684716b __tracepoint_mmap_lock_released @@ -7368,19 +7388,18 @@ EXPORT_SYMBOL vmlinux 0xb693dece agp_bridge EXPORT_SYMBOL vmlinux 0xb69ca926 __brelse EXPORT_SYMBOL vmlinux 0xb6acaa13 phy_sfp_detach +EXPORT_SYMBOL vmlinux 0xb6c7a3b1 tcp_sync_mss EXPORT_SYMBOL vmlinux 0xb6f61365 __put_cred -EXPORT_SYMBOL vmlinux 0xb6fb1ffb ip6_fraglist_init EXPORT_SYMBOL vmlinux 0xb6fde909 close_fd EXPORT_SYMBOL vmlinux 0xb71589f0 skip_spaces EXPORT_SYMBOL vmlinux 0xb72e2b60 scsi_print_sense_hdr EXPORT_SYMBOL vmlinux 0xb737b185 gen_pool_best_fit -EXPORT_SYMBOL vmlinux 0xb73be04f ip6_mtu EXPORT_SYMBOL vmlinux 0xb7409acc input_set_keycode -EXPORT_SYMBOL vmlinux 0xb749e063 tc_setup_flow_action -EXPORT_SYMBOL vmlinux 0xb754435a inet_getname +EXPORT_SYMBOL vmlinux 0xb7494660 netdev_printk EXPORT_SYMBOL vmlinux 0xb7593ddc iosf_mbi_unregister_pmic_bus_access_notifier EXPORT_SYMBOL vmlinux 0xb765c0f2 sync_filesystem EXPORT_SYMBOL vmlinux 0xb76a7b54 pci_map_rom +EXPORT_SYMBOL vmlinux 0xb76d09be inet_protos EXPORT_SYMBOL vmlinux 0xb7773d8c tty_port_init EXPORT_SYMBOL vmlinux 0xb77eca79 wait_on_page_bit_killable EXPORT_SYMBOL vmlinux 0xb784154f utf8_casefold_hash @@ -7388,6 +7407,8 @@ EXPORT_SYMBOL vmlinux 0xb78debe3 LZ4_decompress_fast_usingDict EXPORT_SYMBOL vmlinux 0xb78e84f6 pnp_is_active EXPORT_SYMBOL vmlinux 0xb793193f textsearch_prepare +EXPORT_SYMBOL vmlinux 0xb794dff5 tcf_em_tree_validate +EXPORT_SYMBOL vmlinux 0xb7ac1a1e netif_set_real_num_rx_queues EXPORT_SYMBOL vmlinux 0xb7b23340 __generic_file_write_iter EXPORT_SYMBOL vmlinux 0xb7b7c80a blk_put_request EXPORT_SYMBOL vmlinux 0xb7be6d23 dma_unmap_page_attrs @@ -7395,191 +7416,200 @@ EXPORT_SYMBOL vmlinux 0xb7c6db70 sysctl_max_skb_frags EXPORT_SYMBOL vmlinux 0xb7c83b37 truncate_pagecache_range EXPORT_SYMBOL vmlinux 0xb7cc56d3 jbd2_journal_finish_inode_data_buffers -EXPORT_SYMBOL vmlinux 0xb7cef21f skb_try_coalesce -EXPORT_SYMBOL vmlinux 0xb7e34e9d tcp_splice_read EXPORT_SYMBOL vmlinux 0xb7e985af pldmfw_op_pci_match_record -EXPORT_SYMBOL vmlinux 0xb7eb53e8 __vlan_find_dev_deep_rcu EXPORT_SYMBOL vmlinux 0xb7f1034f ptp_schedule_worker -EXPORT_SYMBOL vmlinux 0xb7f91492 gro_cells_receive -EXPORT_SYMBOL vmlinux 0xb800c78d dev_disable_lro +EXPORT_SYMBOL vmlinux 0xb800afd7 tcf_action_dump_1 EXPORT_SYMBOL vmlinux 0xb808d3b4 block_commit_write EXPORT_SYMBOL vmlinux 0xb8107ece __x86_indirect_alt_jmp_rcx -EXPORT_SYMBOL vmlinux 0xb817ed55 xfrm_register_km +EXPORT_SYMBOL vmlinux 0xb815a58c __scm_send EXPORT_SYMBOL vmlinux 0xb81fbf32 default_llseek EXPORT_SYMBOL vmlinux 0xb82dc6a7 blk_mq_kick_requeue_list EXPORT_SYMBOL vmlinux 0xb83129db ZSTD_decompressContinue EXPORT_SYMBOL vmlinux 0xb835d582 vfs_statfs EXPORT_SYMBOL vmlinux 0xb8386d12 blk_post_runtime_suspend +EXPORT_SYMBOL vmlinux 0xb83a0ecf genphy_handle_interrupt_no_ack EXPORT_SYMBOL vmlinux 0xb843faff pci_bus_type -EXPORT_SYMBOL vmlinux 0xb851a711 sock_no_shutdown +EXPORT_SYMBOL vmlinux 0xb8529143 __xfrm_decode_session EXPORT_SYMBOL vmlinux 0xb85b2cf9 blk_mq_alloc_request -EXPORT_SYMBOL vmlinux 0xb863880a tcp_seq_next EXPORT_SYMBOL vmlinux 0xb867104d scsi_device_lookup EXPORT_SYMBOL vmlinux 0xb868ac5c register_sysrq_key EXPORT_SYMBOL vmlinux 0xb86f74c5 free_cpumask_var -EXPORT_SYMBOL vmlinux 0xb87991a1 eth_header_parse_protocol -EXPORT_SYMBOL vmlinux 0xb8913dbc mr_mfc_seq_idx -EXPORT_SYMBOL vmlinux 0xb8966e4a user_path_create EXPORT_SYMBOL vmlinux 0xb89b6e6b guid_parse EXPORT_SYMBOL vmlinux 0xb89d458e register_console -EXPORT_SYMBOL vmlinux 0xb8a53ad9 fib_notifier_ops_register +EXPORT_SYMBOL vmlinux 0xb8a1d487 netdev_bonding_info_change EXPORT_SYMBOL vmlinux 0xb8b043f2 kfree_link EXPORT_SYMBOL vmlinux 0xb8b9f817 kmalloc_order_trace EXPORT_SYMBOL vmlinux 0xb8c22b16 put_tty_driver +EXPORT_SYMBOL vmlinux 0xb8d3b794 inet6_del_protocol EXPORT_SYMBOL vmlinux 0xb8d8c3d4 jbd2_wait_inode_data EXPORT_SYMBOL vmlinux 0xb8dccc13 pci_alloc_irq_vectors_affinity +EXPORT_SYMBOL vmlinux 0xb8e2c724 tcp_v4_syn_recv_sock EXPORT_SYMBOL vmlinux 0xb8e7ce2c __put_user_8 EXPORT_SYMBOL vmlinux 0xb8f9c137 mipi_dsi_dcs_read +EXPORT_SYMBOL vmlinux 0xb903818b ip_generic_getfrag EXPORT_SYMBOL vmlinux 0xb9056bb6 remove_conflicting_framebuffers -EXPORT_SYMBOL vmlinux 0xb905e802 xfrm_sad_getinfo EXPORT_SYMBOL vmlinux 0xb907513f unpoison_memory +EXPORT_SYMBOL vmlinux 0xb90bffd0 skb_udp_tunnel_segment +EXPORT_SYMBOL vmlinux 0xb90e2f82 security_sb_mnt_opts_compat EXPORT_SYMBOL vmlinux 0xb911bb58 minmax_running_max EXPORT_SYMBOL vmlinux 0xb91a8ba3 nobh_write_end -EXPORT_SYMBOL vmlinux 0xb92684ff put_cmsg_scm_timestamping64 -EXPORT_SYMBOL vmlinux 0xb92f1040 genphy_handle_interrupt_no_ack +EXPORT_SYMBOL vmlinux 0xb92e876c sock_bind_add EXPORT_SYMBOL vmlinux 0xb93fbf0f blk_post_runtime_resume EXPORT_SYMBOL vmlinux 0xb94339c4 qdisc_put_stab EXPORT_SYMBOL vmlinux 0xb9478d90 hdmi_drm_infoframe_unpack_only EXPORT_SYMBOL vmlinux 0xb95474ba devm_devfreq_remove_device -EXPORT_SYMBOL vmlinux 0xb95ac5f1 tcf_get_next_proto -EXPORT_SYMBOL vmlinux 0xb968fb2a prepare_kernel_cred -EXPORT_SYMBOL vmlinux 0xb96ae9d3 xp_raw_get_data +EXPORT_SYMBOL vmlinux 0xb95a1e84 nf_log_unbind_pf EXPORT_SYMBOL vmlinux 0xb97220ff bitmap_parse +EXPORT_SYMBOL vmlinux 0xb97ccc04 phy_ethtool_set_eee EXPORT_SYMBOL vmlinux 0xb97f7045 acpi_install_gpe_handler +EXPORT_SYMBOL vmlinux 0xb994f692 qdisc_watchdog_init_clockid EXPORT_SYMBOL vmlinux 0xb9a5d78c blk_mq_queue_stopped EXPORT_SYMBOL vmlinux 0xb9af1d0d __xa_clear_mark EXPORT_SYMBOL vmlinux 0xb9b40008 show_init_ipc_ns +EXPORT_SYMBOL vmlinux 0xb9d08cd8 napi_build_skb EXPORT_SYMBOL vmlinux 0xb9dee775 mfd_remove_devices_late EXPORT_SYMBOL vmlinux 0xb9e276cf wrmsr_safe_regs_on_cpu EXPORT_SYMBOL vmlinux 0xb9e7429c memcpy_toio EXPORT_SYMBOL vmlinux 0xb9e8e2cc in6addr_sitelocal_allrouters +EXPORT_SYMBOL vmlinux 0xb9ec8587 __dst_destroy_metrics_generic EXPORT_SYMBOL vmlinux 0xb9ed193a zpool_register_driver -EXPORT_SYMBOL vmlinux 0xb9f1c6cb mdiobus_scan EXPORT_SYMBOL vmlinux 0xba0676e2 vm_zone_stat EXPORT_SYMBOL vmlinux 0xba1008c8 __crc32c_le EXPORT_SYMBOL vmlinux 0xba283791 set_cached_acl EXPORT_SYMBOL vmlinux 0xba336f54 put_ipc_ns EXPORT_SYMBOL vmlinux 0xba337196 unregister_md_personality +EXPORT_SYMBOL vmlinux 0xba385972 security_inet_conn_established +EXPORT_SYMBOL vmlinux 0xba46f51f flow_rule_match_ip EXPORT_SYMBOL vmlinux 0xba479c73 seq_putc EXPORT_SYMBOL vmlinux 0xba497f13 loops_per_jiffy -EXPORT_SYMBOL vmlinux 0xba49c71d sk_mc_loop EXPORT_SYMBOL vmlinux 0xba5278de unlock_new_inode EXPORT_SYMBOL vmlinux 0xba53adab nla_policy_len EXPORT_SYMBOL vmlinux 0xba6dd1bc vga_client_register EXPORT_SYMBOL vmlinux 0xba73bf22 nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xba769ac6 inet_csk_clear_xmit_timers EXPORT_SYMBOL vmlinux 0xba8fbd64 _raw_spin_lock -EXPORT_SYMBOL vmlinux 0xba9adc2f eth_header +EXPORT_SYMBOL vmlinux 0xba96053a tcp_timewait_state_process +EXPORT_SYMBOL vmlinux 0xba9957c7 nf_setsockopt EXPORT_SYMBOL vmlinux 0xbab0a590 eisa_bus_type +EXPORT_SYMBOL vmlinux 0xbadc5d5d ip_tunnel_encap_add_ops EXPORT_SYMBOL vmlinux 0xbaffd13a fput EXPORT_SYMBOL vmlinux 0xbb0540aa zlib_inflateReset EXPORT_SYMBOL vmlinux 0xbb13595e smp_call_function_many +EXPORT_SYMBOL vmlinux 0xbb179eb9 phy_trigger_machine EXPORT_SYMBOL vmlinux 0xbb24f607 init_cdrom_command EXPORT_SYMBOL vmlinux 0xbb2f848a vme_irq_generate EXPORT_SYMBOL vmlinux 0xbb35675b __bitmap_intersects EXPORT_SYMBOL vmlinux 0xbb39e41d __tracepoint_kfree +EXPORT_SYMBOL vmlinux 0xbb40a220 skb_flow_dissect_ct EXPORT_SYMBOL vmlinux 0xbb4f4766 simple_write_to_buffer -EXPORT_SYMBOL vmlinux 0xbb69d0cf udp_set_csum -EXPORT_SYMBOL vmlinux 0xbb870698 neigh_for_each +EXPORT_SYMBOL vmlinux 0xbb5a08d1 netif_rx_any_context +EXPORT_SYMBOL vmlinux 0xbb61e9d6 put_cmsg +EXPORT_SYMBOL vmlinux 0xbb8df524 phy_attached_print EXPORT_SYMBOL vmlinux 0xbb8e169a vga_switcheroo_handler_flags -EXPORT_SYMBOL vmlinux 0xbb9c8930 ip_defrag EXPORT_SYMBOL vmlinux 0xbb9f3f70 iov_iter_kvec EXPORT_SYMBOL vmlinux 0xbbad1dab devfreq_unregister_notifier EXPORT_SYMBOL vmlinux 0xbbcb6d67 __frontswap_load -EXPORT_SYMBOL vmlinux 0xbbd260ef unix_detach_fds EXPORT_SYMBOL vmlinux 0xbbd4d9b8 dm_table_run_md_queue_async EXPORT_SYMBOL vmlinux 0xbbe80fdb kmalloc_order EXPORT_SYMBOL vmlinux 0xbbf0e878 __cleancache_invalidate_fs +EXPORT_SYMBOL vmlinux 0xbc05bd40 udp_push_pending_frames EXPORT_SYMBOL vmlinux 0xbc063bc2 mipi_dsi_detach +EXPORT_SYMBOL vmlinux 0xbc0a3719 netlink_capable EXPORT_SYMBOL vmlinux 0xbc2031de acpi_processor_get_bios_limit EXPORT_SYMBOL vmlinux 0xbc2a4171 scsi_target_quiesce -EXPORT_SYMBOL vmlinux 0xbc643508 __page_symlink EXPORT_SYMBOL vmlinux 0xbc6925f0 dma_map_page_attrs EXPORT_SYMBOL vmlinux 0xbc6f36b1 pci_bus_read_config_word -EXPORT_SYMBOL vmlinux 0xbc83663e vfs_create +EXPORT_SYMBOL vmlinux 0xbc796dcc tcp_recvmsg +EXPORT_SYMBOL vmlinux 0xbc8c4fd0 netdev_next_lower_dev_rcu +EXPORT_SYMBOL vmlinux 0xbc95c8da ipv6_dev_mc_dec EXPORT_SYMBOL vmlinux 0xbc96895a backlight_device_get_by_type EXPORT_SYMBOL vmlinux 0xbcab6ee6 sscanf EXPORT_SYMBOL vmlinux 0xbcada0cd ps2_init EXPORT_SYMBOL vmlinux 0xbcb19e1b input_reset_device -EXPORT_SYMBOL vmlinux 0xbccb5c1f ipv6_chk_addr_and_flags -EXPORT_SYMBOL vmlinux 0xbcf95e04 pskb_trim_rcsum_slow +EXPORT_SYMBOL vmlinux 0xbcedef27 sk_page_frag_refill EXPORT_SYMBOL vmlinux 0xbd03e4ef release_pages -EXPORT_SYMBOL vmlinux 0xbd16c3eb key_unlink EXPORT_SYMBOL vmlinux 0xbd2a25c3 vfs_setpos EXPORT_SYMBOL vmlinux 0xbd393ca3 ioread64be_lo_hi EXPORT_SYMBOL vmlinux 0xbd462b55 __kfifo_init -EXPORT_SYMBOL vmlinux 0xbd4df55d __mdiobus_read EXPORT_SYMBOL vmlinux 0xbd6841d4 crc16 -EXPORT_SYMBOL vmlinux 0xbd8285c2 dev_set_group EXPORT_SYMBOL vmlinux 0xbd899545 d_splice_alias +EXPORT_SYMBOL vmlinux 0xbd977a0c flow_rule_match_basic +EXPORT_SYMBOL vmlinux 0xbd9f2a73 __ethtool_get_link_ksettings +EXPORT_SYMBOL vmlinux 0xbdadda70 mr_table_dump EXPORT_SYMBOL vmlinux 0xbdb21bc0 __bio_clone_fast EXPORT_SYMBOL vmlinux 0xbdc5308f migrate_vma_setup +EXPORT_SYMBOL vmlinux 0xbdce76be skb_flow_dissect_hash EXPORT_SYMBOL vmlinux 0xbde621c1 simple_transaction_get -EXPORT_SYMBOL vmlinux 0xbdf417e9 mini_qdisc_pair_swap -EXPORT_SYMBOL vmlinux 0xbdfb2651 xfrm_register_type +EXPORT_SYMBOL vmlinux 0xbdf4e0cd __cgroup_bpf_run_filter_sk EXPORT_SYMBOL vmlinux 0xbdfb6dbb __fentry__ EXPORT_SYMBOL vmlinux 0xbdff3e7d mutex_lock_killable EXPORT_SYMBOL vmlinux 0xbe0110e7 acpi_set_gpe -EXPORT_SYMBOL vmlinux 0xbe1c5926 ip6_dst_hoplimit +EXPORT_SYMBOL vmlinux 0xbe024c4e flow_rule_match_enc_ipv4_addrs +EXPORT_SYMBOL vmlinux 0xbe20569c __dev_remove_pack EXPORT_SYMBOL vmlinux 0xbe2a9c70 amd_iommu_domain_clear_gcr3 +EXPORT_SYMBOL vmlinux 0xbe34820a fib6_info_hw_flags_set EXPORT_SYMBOL vmlinux 0xbe3801f0 mod_zone_page_state EXPORT_SYMBOL vmlinux 0xbe417390 md_check_recovery EXPORT_SYMBOL vmlinux 0xbe49252c acpi_os_write_port +EXPORT_SYMBOL vmlinux 0xbe49d585 skb_clone_sk EXPORT_SYMBOL vmlinux 0xbe4eb6ed secure_dccpv6_sequence_number -EXPORT_SYMBOL vmlinux 0xbe563e21 device_match_acpi_dev +EXPORT_SYMBOL vmlinux 0xbe5155b8 phy_start_cable_test +EXPORT_SYMBOL vmlinux 0xbe58a2b5 dev_driver_string EXPORT_SYMBOL vmlinux 0xbe5a24e9 xxh32_copy_state EXPORT_SYMBOL vmlinux 0xbe617a89 hmm_range_fault EXPORT_SYMBOL vmlinux 0xbe6a866f __wait_on_bit -EXPORT_SYMBOL vmlinux 0xbe72770b sock_set_reuseport +EXPORT_SYMBOL vmlinux 0xbe7d59c9 netdev_adjacent_change_abort EXPORT_SYMBOL vmlinux 0xbe7e05a8 acpi_tb_install_and_load_table EXPORT_SYMBOL vmlinux 0xbe7fa303 handle_edge_irq +EXPORT_SYMBOL vmlinux 0xbe8afec1 tcf_qevent_destroy EXPORT_SYMBOL vmlinux 0xbe9616c6 vm_insert_pages -EXPORT_SYMBOL vmlinux 0xbe9d5267 netif_device_detach +EXPORT_SYMBOL vmlinux 0xbea7aaea security_skb_classify_flow EXPORT_SYMBOL vmlinux 0xbeab912b vme_register_driver EXPORT_SYMBOL vmlinux 0xbebab877 agp_copy_info EXPORT_SYMBOL vmlinux 0xbec1b0ce dquot_mark_dquot_dirty EXPORT_SYMBOL vmlinux 0xbec31a1b touch_buffer -EXPORT_SYMBOL vmlinux 0xbedb1f6f build_skb_around EXPORT_SYMBOL vmlinux 0xbef43296 console_conditional_schedule EXPORT_SYMBOL vmlinux 0xbef4507e inode_add_bytes EXPORT_SYMBOL vmlinux 0xbefa32a7 con_set_default_unimap EXPORT_SYMBOL vmlinux 0xbefa51a3 gen_pool_add_owner -EXPORT_SYMBOL vmlinux 0xbefb2e67 sock_efree EXPORT_SYMBOL vmlinux 0xbefd2bb9 input_mt_destroy_slots -EXPORT_SYMBOL vmlinux 0xbeff71bc phy_device_register -EXPORT_SYMBOL vmlinux 0xbf06cce2 inet_sendpage -EXPORT_SYMBOL vmlinux 0xbf0b53fb inet_csk_destroy_sock +EXPORT_SYMBOL vmlinux 0xbf0b82b3 security_binder_set_context_mgr EXPORT_SYMBOL vmlinux 0xbf168a3e file_open_root EXPORT_SYMBOL vmlinux 0xbf1b3641 set_page_dirty -EXPORT_SYMBOL vmlinux 0xbf1ca8ee xfrm_lookup_route +EXPORT_SYMBOL vmlinux 0xbf1caadf fd_install EXPORT_SYMBOL vmlinux 0xbf1f474d tty_port_free_xmit_buf EXPORT_SYMBOL vmlinux 0xbf20b277 ata_print_version -EXPORT_SYMBOL vmlinux 0xbf2a79b8 ipv6_select_ident EXPORT_SYMBOL vmlinux 0xbf3193ec acpi_unregister_ioapic -EXPORT_SYMBOL vmlinux 0xbf33f927 inode_permission EXPORT_SYMBOL vmlinux 0xbf43bfca dma_resv_init EXPORT_SYMBOL vmlinux 0xbf59c419 posix_acl_init -EXPORT_SYMBOL vmlinux 0xbf815b78 xfrm_state_update -EXPORT_SYMBOL vmlinux 0xbf91f88d netdev_change_features +EXPORT_SYMBOL vmlinux 0xbf620df4 qdisc_watchdog_schedule_range_ns EXPORT_SYMBOL vmlinux 0xbf95bf28 pci_find_bus EXPORT_SYMBOL vmlinux 0xbf9bcc8d __cap_empty_set +EXPORT_SYMBOL vmlinux 0xbfa1f015 page_readlink EXPORT_SYMBOL vmlinux 0xbfb7ada1 vmap +EXPORT_SYMBOL vmlinux 0xbfb88e5b dev_pick_tx_cpu_id EXPORT_SYMBOL vmlinux 0xbfc177bc iowrite32_rep +EXPORT_SYMBOL vmlinux 0xbfc3279f dev_addr_del +EXPORT_SYMBOL vmlinux 0xbfd3d3ae nf_unregister_queue_handler +EXPORT_SYMBOL vmlinux 0xbfd941f8 nf_register_net_hooks EXPORT_SYMBOL vmlinux 0xbfdcb43a __x86_indirect_thunk_r11 +EXPORT_SYMBOL vmlinux 0xbfdcf98d sk_filter_trim_cap EXPORT_SYMBOL vmlinux 0xbfee3ad5 loop_unregister_transfer +EXPORT_SYMBOL vmlinux 0xc006d9fb netif_schedule_queue +EXPORT_SYMBOL vmlinux 0xc00e5189 datagram_poll EXPORT_SYMBOL vmlinux 0xc0429ff5 get_unmapped_area EXPORT_SYMBOL vmlinux 0xc055aee3 csum_and_copy_to_iter -EXPORT_SYMBOL vmlinux 0xc05620a1 xfrm_state_unregister_afinfo +EXPORT_SYMBOL vmlinux 0xc05c1053 phy_device_create EXPORT_SYMBOL vmlinux 0xc0606c30 dev_pm_opp_register_notifier +EXPORT_SYMBOL vmlinux 0xc075f037 security_inode_getsecctx EXPORT_SYMBOL vmlinux 0xc0763484 rfkill_blocked EXPORT_SYMBOL vmlinux 0xc07b0863 fb_destroy_modedb -EXPORT_SYMBOL vmlinux 0xc09e7df9 sk_ns_capable EXPORT_SYMBOL vmlinux 0xc0b19709 __x86_indirect_alt_call_r13 EXPORT_SYMBOL vmlinux 0xc0b2664d devlink_dpipe_header_ipv4 -EXPORT_SYMBOL vmlinux 0xc0b4c875 __dev_kfree_skb_irq EXPORT_SYMBOL vmlinux 0xc0b55c2f __starget_for_each_device EXPORT_SYMBOL vmlinux 0xc0bca0f1 ZSTD_nextSrcSizeToDecompress -EXPORT_SYMBOL vmlinux 0xc0e4d4f7 xfrm_policy_walk EXPORT_SYMBOL vmlinux 0xc0f01787 path_is_under +EXPORT_SYMBOL vmlinux 0xc0f83c04 reuseport_select_sock EXPORT_SYMBOL vmlinux 0xc0ff12fb nla_strdup EXPORT_SYMBOL vmlinux 0xc0ff21c1 input_get_new_minor EXPORT_SYMBOL vmlinux 0xc1031d86 __register_binfmt @@ -7590,83 +7620,82 @@ EXPORT_SYMBOL vmlinux 0xc1514a3b free_irq EXPORT_SYMBOL vmlinux 0xc1573e04 jbd2_submit_inode_data EXPORT_SYMBOL vmlinux 0xc16410b9 ZSTD_getDictID_fromDDict -EXPORT_SYMBOL vmlinux 0xc16487b6 skb_copy_and_hash_datagram_iter EXPORT_SYMBOL vmlinux 0xc16679de serial8250_register_8250_port EXPORT_SYMBOL vmlinux 0xc16be39d iter_div_u64_rem -EXPORT_SYMBOL vmlinux 0xc1a1e173 security_path_rename +EXPORT_SYMBOL vmlinux 0xc17bbaee vfs_get_link EXPORT_SYMBOL vmlinux 0xc1af466e __nd_driver_register -EXPORT_SYMBOL vmlinux 0xc1b36440 netdev_warn EXPORT_SYMBOL vmlinux 0xc1b4df22 jbd2_journal_init_jbd_inode EXPORT_SYMBOL vmlinux 0xc1d8cfaf __fdget -EXPORT_SYMBOL vmlinux 0xc226c7d4 __dev_remove_pack +EXPORT_SYMBOL vmlinux 0xc2025c61 skb_dequeue_tail +EXPORT_SYMBOL vmlinux 0xc2217f9a peernet2id EXPORT_SYMBOL vmlinux 0xc22aea7e backlight_device_unregister EXPORT_SYMBOL vmlinux 0xc22ed245 pnp_register_card_driver EXPORT_SYMBOL vmlinux 0xc2424641 agp3_generic_cleanup +EXPORT_SYMBOL vmlinux 0xc2572419 __sock_cmsg_send EXPORT_SYMBOL vmlinux 0xc267960e utf8_validate EXPORT_SYMBOL vmlinux 0xc278c965 cpu_all_bits -EXPORT_SYMBOL vmlinux 0xc284151a __napi_alloc_skb EXPORT_SYMBOL vmlinux 0xc287758b bio_endio EXPORT_SYMBOL vmlinux 0xc29957c3 __x86_indirect_thunk_rcx EXPORT_SYMBOL vmlinux 0xc29bf967 strspn EXPORT_SYMBOL vmlinux 0xc2a17ebe seqno_fence_ops -EXPORT_SYMBOL vmlinux 0xc2a58af1 fifo_set_limit -EXPORT_SYMBOL vmlinux 0xc2b3c674 xfrm_lookup_with_ifid EXPORT_SYMBOL vmlinux 0xc2ba6da1 tty_vhangup EXPORT_SYMBOL vmlinux 0xc2ba7ec5 jbd2_journal_start_commit -EXPORT_SYMBOL vmlinux 0xc2c2d0e4 xfrm4_rcv +EXPORT_SYMBOL vmlinux 0xc2c24761 xfrm_lookup_with_ifid EXPORT_SYMBOL vmlinux 0xc2c85425 dentry_open +EXPORT_SYMBOL vmlinux 0xc2d565db vlan_dev_vlan_proto EXPORT_SYMBOL vmlinux 0xc2d6fd69 vme_irq_request EXPORT_SYMBOL vmlinux 0xc2d81bf2 nd_integrity_init +EXPORT_SYMBOL vmlinux 0xc2d950e3 netdev_change_features EXPORT_SYMBOL vmlinux 0xc2e587d1 reset_devices EXPORT_SYMBOL vmlinux 0xc2e73ba4 blk_queue_max_hw_sectors EXPORT_SYMBOL vmlinux 0xc2ebccda cdrom_mode_sense EXPORT_SYMBOL vmlinux 0xc2f20286 pcie_relaxed_ordering_enabled EXPORT_SYMBOL vmlinux 0xc2f6346b __phy_read_mmd EXPORT_SYMBOL vmlinux 0xc310b981 strnstr -EXPORT_SYMBOL vmlinux 0xc310e496 ip6_frag_next +EXPORT_SYMBOL vmlinux 0xc3120d24 inet_offloads EXPORT_SYMBOL vmlinux 0xc31db0ce is_vmalloc_addr EXPORT_SYMBOL vmlinux 0xc32c71af register_inetaddr_validator_notifier +EXPORT_SYMBOL vmlinux 0xc345ce40 qdisc_watchdog_cancel EXPORT_SYMBOL vmlinux 0xc35167d6 configfs_depend_item_unlocked EXPORT_SYMBOL vmlinux 0xc35c08be cpufreq_generic_suspend -EXPORT_SYMBOL vmlinux 0xc369f125 tso_build_data EXPORT_SYMBOL vmlinux 0xc36a3bd4 __acpi_handle_debug EXPORT_SYMBOL vmlinux 0xc36d6a08 __nla_reserve_64bit EXPORT_SYMBOL vmlinux 0xc3762aec mempool_alloc EXPORT_SYMBOL vmlinux 0xc37f9c6e cpufreq_update_policy EXPORT_SYMBOL vmlinux 0xc38c83b8 mod_timer -EXPORT_SYMBOL vmlinux 0xc3922870 nexthop_res_grp_activity_update -EXPORT_SYMBOL vmlinux 0xc3982808 tcp_sock_set_keepidle -EXPORT_SYMBOL vmlinux 0xc39b6db0 inet6_release -EXPORT_SYMBOL vmlinux 0xc3a2f3aa tcp_v4_md5_hash_skb EXPORT_SYMBOL vmlinux 0xc3aaf0a9 __put_user_1 EXPORT_SYMBOL vmlinux 0xc3ad8b2a pci_bus_read_dev_vendor_id EXPORT_SYMBOL vmlinux 0xc3b28b7f input_free_device EXPORT_SYMBOL vmlinux 0xc3bc72ad trace_print_array_seq EXPORT_SYMBOL vmlinux 0xc3ca93d0 devm_pci_remap_cfg_resource -EXPORT_SYMBOL vmlinux 0xc3cba770 xfrm_dst_ifdown -EXPORT_SYMBOL vmlinux 0xc3cf75fa ipv6_find_hdr +EXPORT_SYMBOL vmlinux 0xc3cd7a1b dev_get_by_napi_id EXPORT_SYMBOL vmlinux 0xc3d405be dma_resv_reserve_shared EXPORT_SYMBOL vmlinux 0xc3da7e2c of_find_mipi_dsi_device_by_node EXPORT_SYMBOL vmlinux 0xc3f75cfe mdio_device_free -EXPORT_SYMBOL vmlinux 0xc3fcb1a4 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xc3f944d7 tcf_idr_cleanup EXPORT_SYMBOL vmlinux 0xc3ff38c2 down_read_trylock EXPORT_SYMBOL vmlinux 0xc4001f64 drop_super +EXPORT_SYMBOL vmlinux 0xc41086e9 eth_gro_complete +EXPORT_SYMBOL vmlinux 0xc41a00fa phy_drivers_unregister EXPORT_SYMBOL vmlinux 0xc41bc980 iwe_stream_add_value EXPORT_SYMBOL vmlinux 0xc41dccab request_firmware_into_buf EXPORT_SYMBOL vmlinux 0xc4212ab9 qdisc_class_hash_insert -EXPORT_SYMBOL vmlinux 0xc421939c dev_set_allmulti EXPORT_SYMBOL vmlinux 0xc4252998 generic_update_time EXPORT_SYMBOL vmlinux 0xc42dcb99 acpi_evaluate_ost -EXPORT_SYMBOL vmlinux 0xc46573ec inet6_add_protocol +EXPORT_SYMBOL vmlinux 0xc437f53a tc_setup_cb_call +EXPORT_SYMBOL vmlinux 0xc46cc5eb qdisc_hash_add EXPORT_SYMBOL vmlinux 0xc4777aa9 __ctzsi2 +EXPORT_SYMBOL vmlinux 0xc47a399a phy_detach EXPORT_SYMBOL vmlinux 0xc487a0a7 commit_creds EXPORT_SYMBOL vmlinux 0xc4ae915e arch_touch_nmi_watchdog -EXPORT_SYMBOL vmlinux 0xc4c26096 genphy_soft_reset EXPORT_SYMBOL vmlinux 0xc4ca46bd agp_put_bridge +EXPORT_SYMBOL vmlinux 0xc4d543b1 sock_kzfree_s EXPORT_SYMBOL vmlinux 0xc4e11373 dquot_release EXPORT_SYMBOL vmlinux 0xc4ec33ed drop_super_exclusive EXPORT_SYMBOL vmlinux 0xc4fe601b __x86_indirect_alt_call_rbp +EXPORT_SYMBOL vmlinux 0xc5069bc3 km_report EXPORT_SYMBOL vmlinux 0xc528a49a queued_write_lock_slowpath +EXPORT_SYMBOL vmlinux 0xc536f688 ipv6_sock_mc_join EXPORT_SYMBOL vmlinux 0xc5556d19 tty_port_tty_get EXPORT_SYMBOL vmlinux 0xc5559d37 __x86_indirect_alt_jmp_r11 EXPORT_SYMBOL vmlinux 0xc558530d profile_pc @@ -7674,19 +7703,17 @@ EXPORT_SYMBOL vmlinux 0xc57f2035 d_alloc_anon EXPORT_SYMBOL vmlinux 0xc5850110 printk EXPORT_SYMBOL vmlinux 0xc58d5a90 kstrtoll_from_user -EXPORT_SYMBOL vmlinux 0xc595b705 netdev_bonding_info_change EXPORT_SYMBOL vmlinux 0xc599a772 security_xfrm_state_delete EXPORT_SYMBOL vmlinux 0xc59cc6c6 blk_mq_tagset_wait_completed_request EXPORT_SYMBOL vmlinux 0xc5aa5306 nd_pfn_validate -EXPORT_SYMBOL vmlinux 0xc5b27083 flow_block_cb_priv EXPORT_SYMBOL vmlinux 0xc5b6f236 queue_work_on EXPORT_SYMBOL vmlinux 0xc5b7446d pci_get_slot EXPORT_SYMBOL vmlinux 0xc5cad296 acpi_dev_get_first_match_dev EXPORT_SYMBOL vmlinux 0xc5d9c46c agp_try_unsupported_boot -EXPORT_SYMBOL vmlinux 0xc5e1e9f6 page_symlink_inode_operations +EXPORT_SYMBOL vmlinux 0xc5e608ff __xfrm_init_state EXPORT_SYMBOL vmlinux 0xc5e74216 release_resource EXPORT_SYMBOL vmlinux 0xc5f7e801 sg_last -EXPORT_SYMBOL vmlinux 0xc5fefd41 kernel_sendpage +EXPORT_SYMBOL vmlinux 0xc5f80279 xfrm6_find_1stfragopt EXPORT_SYMBOL vmlinux 0xc6055c9e kvasprintf_const EXPORT_SYMBOL vmlinux 0xc60d0620 __num_online_cpus EXPORT_SYMBOL vmlinux 0xc60f0d30 dma_fence_chain_init @@ -7695,67 +7722,69 @@ EXPORT_SYMBOL vmlinux 0xc6289f45 iommu_put_dma_cookie EXPORT_SYMBOL vmlinux 0xc631580a console_unlock EXPORT_SYMBOL vmlinux 0xc633d82d phy_unregister_fixup +EXPORT_SYMBOL vmlinux 0xc638a5a0 iptun_encaps EXPORT_SYMBOL vmlinux 0xc6396a1d mntput +EXPORT_SYMBOL vmlinux 0xc646ccd3 dev_get_iflink EXPORT_SYMBOL vmlinux 0xc64a36ad find_inode_rcu EXPORT_SYMBOL vmlinux 0xc65e4e97 secure_dccp_sequence_number +EXPORT_SYMBOL vmlinux 0xc66275c5 security_dentry_init_security EXPORT_SYMBOL vmlinux 0xc666a132 crc_t10dif EXPORT_SYMBOL vmlinux 0xc66a8304 cpu_rmap_add EXPORT_SYMBOL vmlinux 0xc66cf39f scsi_device_lookup_by_target EXPORT_SYMBOL vmlinux 0xc6910aa0 do_trace_rdpmc +EXPORT_SYMBOL vmlinux 0xc6aa2632 gro_cells_receive +EXPORT_SYMBOL vmlinux 0xc6abb304 dev_mc_add EXPORT_SYMBOL vmlinux 0xc6b7c4ac md_unregister_thread EXPORT_SYMBOL vmlinux 0xc6cb465a __kfifo_max_r EXPORT_SYMBOL vmlinux 0xc6cbbc89 capable EXPORT_SYMBOL vmlinux 0xc6d09aa9 release_firmware +EXPORT_SYMBOL vmlinux 0xc6d747c7 tcp_select_initial_window +EXPORT_SYMBOL vmlinux 0xc6e46f05 nf_ip6_checksum EXPORT_SYMBOL vmlinux 0xc6f3b3fc refcount_dec_if_one EXPORT_SYMBOL vmlinux 0xc6f46339 init_timer_key -EXPORT_SYMBOL vmlinux 0xc6f4a799 xfrm6_rcv_spi -EXPORT_SYMBOL vmlinux 0xc6f790c1 skb_orphan_partial EXPORT_SYMBOL vmlinux 0xc708f1fe ec_write -EXPORT_SYMBOL vmlinux 0xc71ea511 ip_sock_set_recverr -EXPORT_SYMBOL vmlinux 0xc71fe6a9 dcb_ieee_getapp_default_prio_mask +EXPORT_SYMBOL vmlinux 0xc71bc73c skb_tunnel_check_pmtu EXPORT_SYMBOL vmlinux 0xc7208c3a serial8250_resume_port EXPORT_SYMBOL vmlinux 0xc73a31e7 bio_advance EXPORT_SYMBOL vmlinux 0xc73c5b17 blk_queue_flag_clear -EXPORT_SYMBOL vmlinux 0xc74350e1 dev_addr_add +EXPORT_SYMBOL vmlinux 0xc7449c57 flow_rule_match_ports EXPORT_SYMBOL vmlinux 0xc74d5542 blk_queue_chunk_sectors -EXPORT_SYMBOL vmlinux 0xc75ea58f page_readlink -EXPORT_SYMBOL vmlinux 0xc7756dcb skb_kill_datagram +EXPORT_SYMBOL vmlinux 0xc750bbb6 __dev_kfree_skb_any EXPORT_SYMBOL vmlinux 0xc77fb14d ilookup5_nowait EXPORT_SYMBOL vmlinux 0xc781bd9f rfkill_resume_polling EXPORT_SYMBOL vmlinux 0xc7856a3d inet6addr_notifier_call_chain +EXPORT_SYMBOL vmlinux 0xc7881e50 __skb_flow_dissect EXPORT_SYMBOL vmlinux 0xc78bcb15 pci_get_device EXPORT_SYMBOL vmlinux 0xc7915264 generic_file_readonly_mmap EXPORT_SYMBOL vmlinux 0xc7a4fbed rtnl_lock +EXPORT_SYMBOL vmlinux 0xc7b34453 icmpv6_ndo_send +EXPORT_SYMBOL vmlinux 0xc7b3bc42 alloc_netdev_mqs EXPORT_SYMBOL vmlinux 0xc7c1107a LZ4_decompress_safe EXPORT_SYMBOL vmlinux 0xc7c492d7 cdrom_get_last_written EXPORT_SYMBOL vmlinux 0xc7d094b5 dm_read_arg_group EXPORT_SYMBOL vmlinux 0xc7ded63c devm_register_reboot_notifier -EXPORT_SYMBOL vmlinux 0xc808e9a2 proto_register +EXPORT_SYMBOL vmlinux 0xc7e6784f dev_printk_emit +EXPORT_SYMBOL vmlinux 0xc7f9917d flow_rule_match_control EXPORT_SYMBOL vmlinux 0xc80ab559 swake_up_one -EXPORT_SYMBOL vmlinux 0xc812bd2f security_d_instantiate EXPORT_SYMBOL vmlinux 0xc8264646 fc_block_scsi_eh EXPORT_SYMBOL vmlinux 0xc847753b find_inode_nowait EXPORT_SYMBOL vmlinux 0xc84a0a7e seq_hlist_start_rcu -EXPORT_SYMBOL vmlinux 0xc84ad6b3 inet6_ioctl -EXPORT_SYMBOL vmlinux 0xc8537f50 skb_queue_tail EXPORT_SYMBOL vmlinux 0xc85dd83c filemap_check_errors EXPORT_SYMBOL vmlinux 0xc872fd85 in6addr_interfacelocal_allnodes -EXPORT_SYMBOL vmlinux 0xc87f698a netdev_bind_sb_channel_queue EXPORT_SYMBOL vmlinux 0xc8827b75 sysctl_vals -EXPORT_SYMBOL vmlinux 0xc8831ce4 netdev_upper_dev_link EXPORT_SYMBOL vmlinux 0xc885efea ps2_begin_command EXPORT_SYMBOL vmlinux 0xc88eae67 clk_get EXPORT_SYMBOL vmlinux 0xc890c008 zlib_deflateEnd EXPORT_SYMBOL vmlinux 0xc89f0e2b kmem_cache_create_usercopy EXPORT_SYMBOL vmlinux 0xc8a91f5b cpumask_local_spread -EXPORT_SYMBOL vmlinux 0xc8c0f417 tcp_time_wait +EXPORT_SYMBOL vmlinux 0xc8cd5342 tcp_rtx_synack EXPORT_SYMBOL vmlinux 0xc8cd5a33 d_move -EXPORT_SYMBOL vmlinux 0xc8da94cf napi_get_frags EXPORT_SYMBOL vmlinux 0xc8dcc62a krealloc EXPORT_SYMBOL vmlinux 0xc8e325c5 param_ops_charp +EXPORT_SYMBOL vmlinux 0xc8e8a5c7 qdisc_warn_nonwc +EXPORT_SYMBOL vmlinux 0xc90d5fad nf_register_sockopt EXPORT_SYMBOL vmlinux 0xc9216a82 recalibrate_cpu_khz EXPORT_SYMBOL vmlinux 0xc93e8461 acpi_get_event_resources -EXPORT_SYMBOL vmlinux 0xc9577646 vlan_vids_add_by_dev EXPORT_SYMBOL vmlinux 0xc959a0bf set_bdi_congested EXPORT_SYMBOL vmlinux 0xc959d152 __stack_chk_fail EXPORT_SYMBOL vmlinux 0xc9634df9 in6addr_linklocal_allrouters @@ -7764,20 +7793,19 @@ EXPORT_SYMBOL vmlinux 0xc9822234 clk_register_clkdev EXPORT_SYMBOL vmlinux 0xc9831ad7 flow_keys_dissector EXPORT_SYMBOL vmlinux 0xc9888a39 fb_blank +EXPORT_SYMBOL vmlinux 0xc99ad65b _dev_warn EXPORT_SYMBOL vmlinux 0xc9b33111 cpumask_any_distribute EXPORT_SYMBOL vmlinux 0xc9b7a4f5 mount_nodev +EXPORT_SYMBOL vmlinux 0xc9bfcea3 __skb_gro_checksum_complete EXPORT_SYMBOL vmlinux 0xc9d90f23 bioset_init_from_src -EXPORT_SYMBOL vmlinux 0xc9da8757 skb_dump EXPORT_SYMBOL vmlinux 0xc9df055a xfrm_policy_walk_init EXPORT_SYMBOL vmlinux 0xc9f2ec49 d_lookup EXPORT_SYMBOL vmlinux 0xc9f34c1d acpi_acquire_global_lock -EXPORT_SYMBOL vmlinux 0xca0c436f cookie_ecn_ok +EXPORT_SYMBOL vmlinux 0xc9ffa5eb genlmsg_multicast_allns EXPORT_SYMBOL vmlinux 0xca15413f ZSTD_resetDStream EXPORT_SYMBOL vmlinux 0xca21ebd3 bitmap_free -EXPORT_SYMBOL vmlinux 0xca24dc96 security_sctp_assoc_request EXPORT_SYMBOL vmlinux 0xca431c05 wake_bit_function EXPORT_SYMBOL vmlinux 0xca532458 nd_region_release_lane -EXPORT_SYMBOL vmlinux 0xca54200d neigh_seq_stop EXPORT_SYMBOL vmlinux 0xca6ac172 cdev_alloc EXPORT_SYMBOL vmlinux 0xca707d8e simple_transaction_release EXPORT_SYMBOL vmlinux 0xca726bad tty_register_driver @@ -7785,9 +7813,7 @@ EXPORT_SYMBOL vmlinux 0xca8447b9 __post_watch_notification EXPORT_SYMBOL vmlinux 0xca877f74 fscrypt_ioctl_set_policy EXPORT_SYMBOL vmlinux 0xca9360b5 rb_next -EXPORT_SYMBOL vmlinux 0xca946e38 inet_csk_init_xmit_timers EXPORT_SYMBOL vmlinux 0xca9beaa4 __xa_store -EXPORT_SYMBOL vmlinux 0xcac7f96f tcf_qevent_dump EXPORT_SYMBOL vmlinux 0xcacf6638 pps_event EXPORT_SYMBOL vmlinux 0xcad1aca8 acpi_exception EXPORT_SYMBOL vmlinux 0xcad7b00e jbd2_journal_check_available_features @@ -7795,293 +7821,290 @@ EXPORT_SYMBOL vmlinux 0xcb075f14 convert_art_ns_to_tsc EXPORT_SYMBOL vmlinux 0xcb1e2f1b vga_switcheroo_init_domain_pm_ops EXPORT_SYMBOL vmlinux 0xcb3ae215 call_blocking_lsm_notifier -EXPORT_SYMBOL vmlinux 0xcb3b0bf7 xp_dma_sync_for_cpu_slow +EXPORT_SYMBOL vmlinux 0xcb4cb630 dev_set_group EXPORT_SYMBOL vmlinux 0xcb57a82b pci_reenable_device -EXPORT_SYMBOL vmlinux 0xcb723923 xfrm_state_register_afinfo EXPORT_SYMBOL vmlinux 0xcb733bf2 acpi_bus_set_power EXPORT_SYMBOL vmlinux 0xcb797e94 input_get_timestamp -EXPORT_SYMBOL vmlinux 0xcb7c128c netpoll_cleanup EXPORT_SYMBOL vmlinux 0xcb84fbab agp_alloc_bridge EXPORT_SYMBOL vmlinux 0xcbabfa78 ipmi_platform_add EXPORT_SYMBOL vmlinux 0xcbc88a23 ZSTD_isFrame -EXPORT_SYMBOL vmlinux 0xcbd0a492 skb_checksum_setup EXPORT_SYMBOL vmlinux 0xcbd4898c fortify_panic +EXPORT_SYMBOL vmlinux 0xcbd9ba6f vfs_mknod EXPORT_SYMBOL vmlinux 0xcbe59006 pci_release_resource -EXPORT_SYMBOL vmlinux 0xcbf5c2ea phy_trigger_machine +EXPORT_SYMBOL vmlinux 0xcbf4ed53 eth_header_parse EXPORT_SYMBOL vmlinux 0xcbfb33e4 init_opal_dev +EXPORT_SYMBOL vmlinux 0xcbfcc10a alloc_etherdev_mqs EXPORT_SYMBOL vmlinux 0xcc03a57e page_pool_update_nid -EXPORT_SYMBOL vmlinux 0xcc0a9a82 fwnode_get_mac_address +EXPORT_SYMBOL vmlinux 0xcc043cea dev_getbyhwaddr_rcu EXPORT_SYMBOL vmlinux 0xcc0f5349 proc_create_data EXPORT_SYMBOL vmlinux 0xcc1b882a idr_get_next_ul EXPORT_SYMBOL vmlinux 0xcc23002a hdmi_infoframe_pack_only -EXPORT_SYMBOL vmlinux 0xcc23a406 xp_dma_map EXPORT_SYMBOL vmlinux 0xcc248d26 serial8250_suspend_port EXPORT_SYMBOL vmlinux 0xcc2954b1 filemap_map_pages EXPORT_SYMBOL vmlinux 0xcc328a5c reservation_ww_class EXPORT_SYMBOL vmlinux 0xcc37e7d3 md_register_thread EXPORT_SYMBOL vmlinux 0xcc445ceb __sg_page_iter_dma_next +EXPORT_SYMBOL vmlinux 0xcc4c434a unix_get_socket EXPORT_SYMBOL vmlinux 0xcc5005fe msleep_interruptible EXPORT_SYMBOL vmlinux 0xcc54fd91 page_pool_alloc_pages EXPORT_SYMBOL vmlinux 0xcc5c2df4 trace_print_symbols_seq EXPORT_SYMBOL vmlinux 0xcc5d22d9 can_do_mlock -EXPORT_SYMBOL vmlinux 0xcc6cb6ea __inet_hash -EXPORT_SYMBOL vmlinux 0xcc78e9c1 dev_addr_flush -EXPORT_SYMBOL vmlinux 0xcc7b1725 tcp_init_sock EXPORT_SYMBOL vmlinux 0xcc7da007 get_fs_type EXPORT_SYMBOL vmlinux 0xcc81f875 console_start EXPORT_SYMBOL vmlinux 0xcc889741 __x86_indirect_alt_jmp_rdx EXPORT_SYMBOL vmlinux 0xcc96c7aa d_alloc_parallel +EXPORT_SYMBOL vmlinux 0xcca01e04 sock_dequeue_err_skb EXPORT_SYMBOL vmlinux 0xcca56c78 generic_write_checks +EXPORT_SYMBOL vmlinux 0xcca83583 tcf_block_get EXPORT_SYMBOL vmlinux 0xcca98d37 unregister_binfmt EXPORT_SYMBOL vmlinux 0xccab54da ps2_handle_response -EXPORT_SYMBOL vmlinux 0xccad9821 udp_lib_rehash -EXPORT_SYMBOL vmlinux 0xccbff6fd genphy_read_abilities +EXPORT_SYMBOL vmlinux 0xccb7e73c __netlink_dump_start EXPORT_SYMBOL vmlinux 0xcccb70ae agp_alloc_page_array -EXPORT_SYMBOL vmlinux 0xcccc90f1 dev_getbyhwaddr_rcu +EXPORT_SYMBOL vmlinux 0xccce6aeb neigh_table_init EXPORT_SYMBOL vmlinux 0xccd4c999 __sg_page_iter_start EXPORT_SYMBOL vmlinux 0xccef37e4 ZSTD_DStreamOutSize EXPORT_SYMBOL vmlinux 0xccfb9e07 dst_default_metrics EXPORT_SYMBOL vmlinux 0xccfd2ebc scsi_dev_info_list_del_keyed +EXPORT_SYMBOL vmlinux 0xcd011329 netdev_set_sb_channel EXPORT_SYMBOL vmlinux 0xcd01b8e6 acpi_attach_data +EXPORT_SYMBOL vmlinux 0xcd095854 tcp_stream_memory_free EXPORT_SYMBOL vmlinux 0xcd0db88f __scsi_device_lookup_by_target +EXPORT_SYMBOL vmlinux 0xcd180a06 device_match_acpi_dev +EXPORT_SYMBOL vmlinux 0xcd1d9c02 flow_rule_match_enc_keyid EXPORT_SYMBOL vmlinux 0xcd23248f __devm_request_region EXPORT_SYMBOL vmlinux 0xcd256667 tcp_md5_needed EXPORT_SYMBOL vmlinux 0xcd279169 nla_find EXPORT_SYMBOL vmlinux 0xcd2a666c dma_resv_add_shared_fence -EXPORT_SYMBOL vmlinux 0xcd5e2100 __scm_destroy -EXPORT_SYMBOL vmlinux 0xcd86dd7c mr_mfc_find_any +EXPORT_SYMBOL vmlinux 0xcd3a399b __napi_schedule EXPORT_SYMBOL vmlinux 0xcd8ce890 acpi_format_exception -EXPORT_SYMBOL vmlinux 0xcd97420f __xfrm_decode_session EXPORT_SYMBOL vmlinux 0xcd9a07e2 cdrom_mode_select -EXPORT_SYMBOL vmlinux 0xcda33cbf phy_attach_direct EXPORT_SYMBOL vmlinux 0xcda8ec87 pci_alloc_host_bridge EXPORT_SYMBOL vmlinux 0xcdc39c9e security_ismaclabel +EXPORT_SYMBOL vmlinux 0xcdc42e00 mdio_bus_type EXPORT_SYMBOL vmlinux 0xcdc72a44 framebuffer_alloc -EXPORT_SYMBOL vmlinux 0xcde132f6 ipv6_dev_find EXPORT_SYMBOL vmlinux 0xcde77bcc free_opal_dev -EXPORT_SYMBOL vmlinux 0xcdfd53f1 nf_ip6_checksum +EXPORT_SYMBOL vmlinux 0xcdfe727a tcp_make_synack EXPORT_SYMBOL vmlinux 0xce099a2b bh_uptodate_or_lock EXPORT_SYMBOL vmlinux 0xce1b2531 pcibios_bus_to_resource EXPORT_SYMBOL vmlinux 0xce1ed0af devm_request_any_context_irq +EXPORT_SYMBOL vmlinux 0xce23acac tc_setup_cb_reoffload +EXPORT_SYMBOL vmlinux 0xce276fe4 __sk_backlog_rcv EXPORT_SYMBOL vmlinux 0xce2840e7 irq_set_irq_wake EXPORT_SYMBOL vmlinux 0xce383b30 ww_mutex_lock_interruptible +EXPORT_SYMBOL vmlinux 0xce42ae77 ip_mc_leave_group EXPORT_SYMBOL vmlinux 0xce4cdb8e fb_find_best_mode EXPORT_SYMBOL vmlinux 0xce4e47b6 __kfifo_skip_r -EXPORT_SYMBOL vmlinux 0xce500648 __sock_queue_rcv_skb EXPORT_SYMBOL vmlinux 0xce5ac24f zlib_inflate_workspacesize EXPORT_SYMBOL vmlinux 0xce7479ed dcache_dir_lseek EXPORT_SYMBOL vmlinux 0xce76c257 acpi_get_irq_routing_table EXPORT_SYMBOL vmlinux 0xce807a25 up_write EXPORT_SYMBOL vmlinux 0xce8b1878 __x86_indirect_thunk_r14 -EXPORT_SYMBOL vmlinux 0xce970386 skb_copy_header EXPORT_SYMBOL vmlinux 0xce9adba8 param_set_hexint EXPORT_SYMBOL vmlinux 0xcea381dd x86_match_cpu EXPORT_SYMBOL vmlinux 0xcea486ec clkdev_alloc -EXPORT_SYMBOL vmlinux 0xcea75264 flow_rule_match_ipv4_addrs EXPORT_SYMBOL vmlinux 0xceab0311 strchrnul +EXPORT_SYMBOL vmlinux 0xceacec1c can_nice EXPORT_SYMBOL vmlinux 0xcebc5965 dma_resv_copy_fences EXPORT_SYMBOL vmlinux 0xcec14e51 pin_user_pages EXPORT_SYMBOL vmlinux 0xced0f4d4 gen_pool_create EXPORT_SYMBOL vmlinux 0xcee1c047 pmem_sector_size EXPORT_SYMBOL vmlinux 0xcee56d79 fscrypt_decrypt_block_inplace -EXPORT_SYMBOL vmlinux 0xcee5bc86 __udp_disconnect EXPORT_SYMBOL vmlinux 0xcee8415c d_set_d_op EXPORT_SYMBOL vmlinux 0xceec8abd __mb_cache_entry_free EXPORT_SYMBOL vmlinux 0xcefcd99a serial8250_unregister_port EXPORT_SYMBOL vmlinux 0xcf1c6ca3 cmdline_parts_find EXPORT_SYMBOL vmlinux 0xcf2349af iput EXPORT_SYMBOL vmlinux 0xcf23ab15 rdmacg_try_charge -EXPORT_SYMBOL vmlinux 0xcf26511e __skb_gro_checksum_complete -EXPORT_SYMBOL vmlinux 0xcf26933f xfrm_policy_flush +EXPORT_SYMBOL vmlinux 0xcf241d77 __dev_direct_xmit EXPORT_SYMBOL vmlinux 0xcf2a6966 up -EXPORT_SYMBOL vmlinux 0xcf3d1787 inet_register_protosw +EXPORT_SYMBOL vmlinux 0xcf2eebc5 udp_seq_start +EXPORT_SYMBOL vmlinux 0xcf336a9c mdio_driver_register EXPORT_SYMBOL vmlinux 0xcf4fdd4d _atomic_dec_and_lock -EXPORT_SYMBOL vmlinux 0xcf5e5a53 netif_carrier_on EXPORT_SYMBOL vmlinux 0xcf69bc27 fasync_helper -EXPORT_SYMBOL vmlinux 0xcf7519c4 dev_uc_sync_multiple +EXPORT_SYMBOL vmlinux 0xcf6f9c30 genphy_resume EXPORT_SYMBOL vmlinux 0xcf752bee acpi_device_set_power EXPORT_SYMBOL vmlinux 0xcf8c1446 filemap_fdatawait_keep_errors EXPORT_SYMBOL vmlinux 0xcf8ec4e6 fscrypt_has_permitted_context EXPORT_SYMBOL vmlinux 0xcf98375e pci_wait_for_pending_transaction EXPORT_SYMBOL vmlinux 0xcf9b558d touchscreen_set_mt_pos -EXPORT_SYMBOL vmlinux 0xcf9eac0b xsk_tx_peek_release_desc_batch +EXPORT_SYMBOL vmlinux 0xcfa88e69 get_task_cred +EXPORT_SYMBOL vmlinux 0xcfb3273c __skb_checksum EXPORT_SYMBOL vmlinux 0xcfc86b82 blk_mq_complete_request -EXPORT_SYMBOL vmlinux 0xcfd0ad46 __alloc_skb -EXPORT_SYMBOL vmlinux 0xd006b67f security_sock_graft -EXPORT_SYMBOL vmlinux 0xd0367841 inet_add_offload +EXPORT_SYMBOL vmlinux 0xcfd236b4 xfrm_state_lookup_byspi +EXPORT_SYMBOL vmlinux 0xd01b4e3a tcp_prot EXPORT_SYMBOL vmlinux 0xd043059e __dec_node_page_state EXPORT_SYMBOL vmlinux 0xd04c1a64 sysctl_devconf_inherit_init_net EXPORT_SYMBOL vmlinux 0xd0654aba woken_wake_function EXPORT_SYMBOL vmlinux 0xd0760fc0 kfree_sensitive EXPORT_SYMBOL vmlinux 0xd07a6aeb dquot_get_next_id +EXPORT_SYMBOL vmlinux 0xd083cf68 napi_gro_flush EXPORT_SYMBOL vmlinux 0xd08adb2b trace_seq_hex_dump EXPORT_SYMBOL vmlinux 0xd09d7500 param_get_long EXPORT_SYMBOL vmlinux 0xd09df3a1 arch_debugfs_dir EXPORT_SYMBOL vmlinux 0xd0b74705 acpi_install_interface +EXPORT_SYMBOL vmlinux 0xd0bc9b26 xfrm_find_acq_byseq +EXPORT_SYMBOL vmlinux 0xd0cb3424 phy_ethtool_nway_reset EXPORT_SYMBOL vmlinux 0xd0f284b8 mmiotrace_printk +EXPORT_SYMBOL vmlinux 0xd0fd3897 netlink_broadcast_filtered EXPORT_SYMBOL vmlinux 0xd0fe4a0c vm_event_states EXPORT_SYMBOL vmlinux 0xd0fe8d51 sg_pcopy_from_buffer EXPORT_SYMBOL vmlinux 0xd0fef3b2 agp_free_key -EXPORT_SYMBOL vmlinux 0xd101eea3 dev_get_by_name_rcu EXPORT_SYMBOL vmlinux 0xd1217b65 pcim_pin_device +EXPORT_SYMBOL vmlinux 0xd1252149 napi_schedule_prep +EXPORT_SYMBOL vmlinux 0xd12d973d genphy_read_abilities EXPORT_SYMBOL vmlinux 0xd1363cc1 ucs2_strsize EXPORT_SYMBOL vmlinux 0xd13da273 jbd2_journal_get_undo_access EXPORT_SYMBOL vmlinux 0xd1442842 regset_get_alloc -EXPORT_SYMBOL vmlinux 0xd14cf21c reuseport_add_sock +EXPORT_SYMBOL vmlinux 0xd1462120 gro_find_complete_by_type +EXPORT_SYMBOL vmlinux 0xd16cb7d2 __sk_mem_reclaim EXPORT_SYMBOL vmlinux 0xd1816f32 frontswap_writethrough -EXPORT_SYMBOL vmlinux 0xd1838494 tcf_exts_dump -EXPORT_SYMBOL vmlinux 0xd185d79e udp_seq_ops +EXPORT_SYMBOL vmlinux 0xd18d95fd sock_no_linger EXPORT_SYMBOL vmlinux 0xd194ddf9 acpi_gpe_count -EXPORT_SYMBOL vmlinux 0xd19bf8cd mr_mfc_find_parent EXPORT_SYMBOL vmlinux 0xd19df395 pci_scan_bus -EXPORT_SYMBOL vmlinux 0xd1a1922b xfrm_input +EXPORT_SYMBOL vmlinux 0xd1ae6898 __traceiter_spi_transfer_start EXPORT_SYMBOL vmlinux 0xd1bcc249 __SCK__tp_func_mmap_lock_released -EXPORT_SYMBOL vmlinux 0xd1cd1ecd security_sock_rcv_skb EXPORT_SYMBOL vmlinux 0xd1d87e92 scsi_mlreturn_string -EXPORT_SYMBOL vmlinux 0xd1dedc59 udp_disconnect EXPORT_SYMBOL vmlinux 0xd1dfded9 pnp_register_driver EXPORT_SYMBOL vmlinux 0xd1f60a89 arch_io_free_memtype_wc EXPORT_SYMBOL vmlinux 0xd1f6c5f3 smp_num_siblings -EXPORT_SYMBOL vmlinux 0xd20e8f8f ppp_channel_index +EXPORT_SYMBOL vmlinux 0xd1fea6e7 flow_indr_dev_unregister +EXPORT_SYMBOL vmlinux 0xd20d27a4 qdisc_put_unlocked +EXPORT_SYMBOL vmlinux 0xd210b000 set_create_files_as EXPORT_SYMBOL vmlinux 0xd212ab71 truncate_inode_pages_range EXPORT_SYMBOL vmlinux 0xd21c5139 iowrite64_lo_hi EXPORT_SYMBOL vmlinux 0xd2237016 radix_tree_delete_item EXPORT_SYMBOL vmlinux 0xd2363861 register_md_cluster_operations EXPORT_SYMBOL vmlinux 0xd23e284f scsi_is_fc_rport EXPORT_SYMBOL vmlinux 0xd23f3961 tty_port_carrier_raised -EXPORT_SYMBOL vmlinux 0xd2410f9d skb_copy_and_csum_bits -EXPORT_SYMBOL vmlinux 0xd2519326 udp_sendmsg EXPORT_SYMBOL vmlinux 0xd2599372 seq_open_private EXPORT_SYMBOL vmlinux 0xd25d4f74 console_blank_hook EXPORT_SYMBOL vmlinux 0xd25df5d0 seq_hex_dump -EXPORT_SYMBOL vmlinux 0xd25fd496 __ip_mc_inc_group EXPORT_SYMBOL vmlinux 0xd262dfcb vscnprintf EXPORT_SYMBOL vmlinux 0xd269e5a0 mmput_async EXPORT_SYMBOL vmlinux 0xd2779731 blk_limits_io_min EXPORT_SYMBOL vmlinux 0xd27b25dd blk_check_plugged EXPORT_SYMBOL vmlinux 0xd2871d00 module_layout -EXPORT_SYMBOL vmlinux 0xd28a081a key_type_keyring -EXPORT_SYMBOL vmlinux 0xd28c7866 __inet6_lookup_established -EXPORT_SYMBOL vmlinux 0xd29497fa kernel_accept +EXPORT_SYMBOL vmlinux 0xd29e114b vlan_for_each +EXPORT_SYMBOL vmlinux 0xd2a77055 phy_device_free EXPORT_SYMBOL vmlinux 0xd2bc5c46 __get_user_nocheck_2 EXPORT_SYMBOL vmlinux 0xd2c99738 __kmalloc_track_caller EXPORT_SYMBOL vmlinux 0xd2da1048 register_netdevice_notifier EXPORT_SYMBOL vmlinux 0xd2ddb434 pci_set_power_state EXPORT_SYMBOL vmlinux 0xd2e2a9d0 hdmi_spd_infoframe_pack_only +EXPORT_SYMBOL vmlinux 0xd2e8bb0e __skb_ext_del EXPORT_SYMBOL vmlinux 0xd2ea49b8 acpi_leave_sleep_state_prep -EXPORT_SYMBOL vmlinux 0xd2ee1089 qdisc_offload_dump_helper -EXPORT_SYMBOL vmlinux 0xd2ff548f eth_gro_receive +EXPORT_SYMBOL vmlinux 0xd2ed8cfb neigh_sysctl_unregister EXPORT_SYMBOL vmlinux 0xd304cfde boot_cpu_data -EXPORT_SYMBOL vmlinux 0xd3059b0b __mod_lruvec_page_state EXPORT_SYMBOL vmlinux 0xd327ec46 vme_register_bridge +EXPORT_SYMBOL vmlinux 0xd33080cc neigh_ifdown EXPORT_SYMBOL vmlinux 0xd332d181 acpi_processor_notify_smm EXPORT_SYMBOL vmlinux 0xd337f7ac devfreq_register_notifier EXPORT_SYMBOL vmlinux 0xd338ea7e __SCT__tp_func_kmem_cache_alloc EXPORT_SYMBOL vmlinux 0xd3543063 memcg_kmem_enabled_key EXPORT_SYMBOL vmlinux 0xd35a6d31 mempool_kmalloc -EXPORT_SYMBOL vmlinux 0xd35b6c6a genphy_aneg_done +EXPORT_SYMBOL vmlinux 0xd35b6653 tcp_ioctl EXPORT_SYMBOL vmlinux 0xd35cce70 _raw_spin_unlock_irqrestore EXPORT_SYMBOL vmlinux 0xd36dc10c get_random_u32 EXPORT_SYMBOL vmlinux 0xd36e3d59 prandom_bytes_state EXPORT_SYMBOL vmlinux 0xd37029e4 con_is_bound EXPORT_SYMBOL vmlinux 0xd38cd261 __default_kernel_pte_mask EXPORT_SYMBOL vmlinux 0xd391ddc7 inode_newsize_ok +EXPORT_SYMBOL vmlinux 0xd3d97d12 neigh_seq_stop EXPORT_SYMBOL vmlinux 0xd3e31478 pci_enable_device_mem EXPORT_SYMBOL vmlinux 0xd3eaf1ed devlink_dpipe_entry_clear -EXPORT_SYMBOL vmlinux 0xd4051ee8 tcf_action_set_ctrlact EXPORT_SYMBOL vmlinux 0xd406d266 fb_mode_is_equal -EXPORT_SYMBOL vmlinux 0xd423e847 netpoll_print_options +EXPORT_SYMBOL vmlinux 0xd40d75c5 gnet_stats_start_copy +EXPORT_SYMBOL vmlinux 0xd41bc9d9 inet_sendpage EXPORT_SYMBOL vmlinux 0xd4494d03 kthread_create_worker_on_cpu -EXPORT_SYMBOL vmlinux 0xd44b9901 gnet_stats_copy_basic_hw EXPORT_SYMBOL vmlinux 0xd45cc6ca bin2hex EXPORT_SYMBOL vmlinux 0xd45fdf8d __block_write_begin -EXPORT_SYMBOL vmlinux 0xd479d7a6 sock_no_recvmsg -EXPORT_SYMBOL vmlinux 0xd47dcab2 vfs_tmpfile EXPORT_SYMBOL vmlinux 0xd4835ef8 dmi_check_system -EXPORT_SYMBOL vmlinux 0xd48c840b xfrm_if_register_cb +EXPORT_SYMBOL vmlinux 0xd48ac117 gro_find_receive_by_type EXPORT_SYMBOL vmlinux 0xd4968bea sg_miter_start EXPORT_SYMBOL vmlinux 0xd4bb4a82 inet6addr_validator_notifier_call_chain EXPORT_SYMBOL vmlinux 0xd4c75cd4 simple_transaction_read EXPORT_SYMBOL vmlinux 0xd4d1983c udplite_table -EXPORT_SYMBOL vmlinux 0xd4e3f98e sock_no_ioctl EXPORT_SYMBOL vmlinux 0xd4fa5a87 __kfifo_dma_out_prepare -EXPORT_SYMBOL vmlinux 0xd4ff1dda ip_tunnel_encap_add_ops +EXPORT_SYMBOL vmlinux 0xd5016b36 rawv6_mh_filter_unregister EXPORT_SYMBOL vmlinux 0xd50b816a agp_generic_free_gatt_table -EXPORT_SYMBOL vmlinux 0xd51a5e15 __netlink_ns_capable EXPORT_SYMBOL vmlinux 0xd51d7587 has_capability EXPORT_SYMBOL vmlinux 0xd5263820 mb_cache_destroy EXPORT_SYMBOL vmlinux 0xd52ced6b mdio_device_remove EXPORT_SYMBOL vmlinux 0xd532a559 d_obtain_alias EXPORT_SYMBOL vmlinux 0xd5346bfc acpi_get_possible_resources +EXPORT_SYMBOL vmlinux 0xd54e764c __napi_schedule_irqoff +EXPORT_SYMBOL vmlinux 0xd584da52 netdev_has_upper_dev +EXPORT_SYMBOL vmlinux 0xd58afa4b udp_skb_destructor EXPORT_SYMBOL vmlinux 0xd58e70dd net_rand_noise EXPORT_SYMBOL vmlinux 0xd5b3d0d5 xxh64_copy_state EXPORT_SYMBOL vmlinux 0xd5bfb230 fs_param_is_bool -EXPORT_SYMBOL vmlinux 0xd5cbe231 wireless_send_event -EXPORT_SYMBOL vmlinux 0xd5f44004 eth_platform_get_mac_address EXPORT_SYMBOL vmlinux 0xd5fd90f1 prepare_to_wait EXPORT_SYMBOL vmlinux 0xd60736ec gf128mul_free_64k EXPORT_SYMBOL vmlinux 0xd62ecd49 rps_sock_flow_table +EXPORT_SYMBOL vmlinux 0xd635de7e __pskb_pull_tail EXPORT_SYMBOL vmlinux 0xd63fd8d1 utf8nagemax EXPORT_SYMBOL vmlinux 0xd643239a acpi_leave_sleep_state -EXPORT_SYMBOL vmlinux 0xd65f6c98 flow_rule_match_eth_addrs -EXPORT_SYMBOL vmlinux 0xd66131a4 qdisc_warn_nonwc EXPORT_SYMBOL vmlinux 0xd688716b dm_kcopyd_client_create EXPORT_SYMBOL vmlinux 0xd68c5a1f adjust_resource EXPORT_SYMBOL vmlinux 0xd690b42c sg_miter_next EXPORT_SYMBOL vmlinux 0xd691c6a9 unregister_sysctl_table +EXPORT_SYMBOL vmlinux 0xd69ebfb7 page_get_link +EXPORT_SYMBOL vmlinux 0xd6a8a119 flow_indr_dev_register EXPORT_SYMBOL vmlinux 0xd6b2ed5f generate_pm_trace EXPORT_SYMBOL vmlinux 0xd6b33026 cpu_khz -EXPORT_SYMBOL vmlinux 0xd6b48f13 ether_setup EXPORT_SYMBOL vmlinux 0xd6c77e2e scsi_dma_unmap -EXPORT_SYMBOL vmlinux 0xd6dac2cb phy_register_fixup_for_id +EXPORT_SYMBOL vmlinux 0xd6d9cd75 xfrm_state_free +EXPORT_SYMBOL vmlinux 0xd6dfd6a7 ip_frag_next EXPORT_SYMBOL vmlinux 0xd6eaaea1 full_name_hash EXPORT_SYMBOL vmlinux 0xd6ee688f vmalloc -EXPORT_SYMBOL vmlinux 0xd6efe032 security_socket_socketpair EXPORT_SYMBOL vmlinux 0xd6fde043 is_module_sig_enforced EXPORT_SYMBOL vmlinux 0xd70d35a1 gf128mul_4k_bbe EXPORT_SYMBOL vmlinux 0xd70f62b6 acpi_os_execute -EXPORT_SYMBOL vmlinux 0xd724995b inet_csk_prepare_forced_close +EXPORT_SYMBOL vmlinux 0xd7157e8d mr_vif_seq_idx +EXPORT_SYMBOL vmlinux 0xd71b0ade skb_split +EXPORT_SYMBOL vmlinux 0xd71f6d5d _dev_alert EXPORT_SYMBOL vmlinux 0xd7309852 fs_param_is_string EXPORT_SYMBOL vmlinux 0xd731ba29 generic_file_fsync EXPORT_SYMBOL vmlinux 0xd738ca1b phy_unregister_fixup_for_uid -EXPORT_SYMBOL vmlinux 0xd75a3dfc skb_flow_get_icmp_tci -EXPORT_SYMBOL vmlinux 0xd7629913 __ip4_datagram_connect -EXPORT_SYMBOL vmlinux 0xd7677cb0 __dev_set_mtu -EXPORT_SYMBOL vmlinux 0xd7736940 skb_coalesce_rx_frag +EXPORT_SYMBOL vmlinux 0xd76f9118 tcp_simple_retransmit EXPORT_SYMBOL vmlinux 0xd779bd26 set_trace_device EXPORT_SYMBOL vmlinux 0xd77c0920 d_mark_dontcache +EXPORT_SYMBOL vmlinux 0xd77fdb37 sock_set_keepalive EXPORT_SYMBOL vmlinux 0xd7864f07 ww_mutex_unlock EXPORT_SYMBOL vmlinux 0xd7891ea2 fs_param_is_enum -EXPORT_SYMBOL vmlinux 0xd7aff8be vfs_link EXPORT_SYMBOL vmlinux 0xd7b70966 md_bitmap_start_sync EXPORT_SYMBOL vmlinux 0xd7ca5c7c inode_init_always EXPORT_SYMBOL vmlinux 0xd7d280ad irq_poll_complete EXPORT_SYMBOL vmlinux 0xd7dd777b reserve_perfctr_nmi EXPORT_SYMBOL vmlinux 0xd7e56a4e simple_strtoll +EXPORT_SYMBOL vmlinux 0xd7e93755 ipv6_dev_find +EXPORT_SYMBOL vmlinux 0xd7f0df1d ip_local_deliver EXPORT_SYMBOL vmlinux 0xd8121aa7 agp_generic_alloc_page EXPORT_SYMBOL vmlinux 0xd8167917 __set_page_dirty_nobuffers -EXPORT_SYMBOL vmlinux 0xd817e4d7 skb_tx_error EXPORT_SYMBOL vmlinux 0xd81d0d65 clear_nlink EXPORT_SYMBOL vmlinux 0xd8234070 pci_iomap +EXPORT_SYMBOL vmlinux 0xd8276680 tcp_connect EXPORT_SYMBOL vmlinux 0xd846c315 acpi_write_bit_register EXPORT_SYMBOL vmlinux 0xd8544f11 register_shrinker +EXPORT_SYMBOL vmlinux 0xd855aad5 put_fs_context EXPORT_SYMBOL vmlinux 0xd85a621a grab_cache_page_write_begin -EXPORT_SYMBOL vmlinux 0xd87d948d nf_log_set +EXPORT_SYMBOL vmlinux 0xd86b29cc security_task_getsecid_subj EXPORT_SYMBOL vmlinux 0xd8812d1a make_kgid EXPORT_SYMBOL vmlinux 0xd88e59dc freezing_slow_path +EXPORT_SYMBOL vmlinux 0xd891263e tcf_em_unregister EXPORT_SYMBOL vmlinux 0xd89274db mark_page_accessed EXPORT_SYMBOL vmlinux 0xd89da37f movable_zone EXPORT_SYMBOL vmlinux 0xd8a994eb scsi_extd_sense_format EXPORT_SYMBOL vmlinux 0xd8b61304 get_default_font EXPORT_SYMBOL vmlinux 0xd8cef6e1 clear_user EXPORT_SYMBOL vmlinux 0xd8cfcc5b from_kuid +EXPORT_SYMBOL vmlinux 0xd8d2354f ip_tunnel_header_ops EXPORT_SYMBOL vmlinux 0xd8df08ac acpi_handle_printk EXPORT_SYMBOL vmlinux 0xd8e373f5 __nla_put_64bit -EXPORT_SYMBOL vmlinux 0xd8fbba98 ip_tunnel_get_link_net EXPORT_SYMBOL vmlinux 0xd908591a security_locked_down -EXPORT_SYMBOL vmlinux 0xd911bd57 register_netdev EXPORT_SYMBOL vmlinux 0xd91f6ab6 strnlen_user EXPORT_SYMBOL vmlinux 0xd92deb6b acpi_evaluate_object +EXPORT_SYMBOL vmlinux 0xd92fbe54 ip_sock_set_recverr EXPORT_SYMBOL vmlinux 0xd9323608 register_key_type EXPORT_SYMBOL vmlinux 0xd933f209 __SCT__tp_func_rdpmc EXPORT_SYMBOL vmlinux 0xd9393d5b phy_read_mmd @@ -8089,185 +8112,179 @@ EXPORT_SYMBOL vmlinux 0xd93c7a87 scsi_is_sdev_device EXPORT_SYMBOL vmlinux 0xd9491c14 xa_destroy EXPORT_SYMBOL vmlinux 0xd950b4a2 d_genocide -EXPORT_SYMBOL vmlinux 0xd959b8b2 netdev_lower_dev_get_private EXPORT_SYMBOL vmlinux 0xd95e3bfd get_tree_single_reconf +EXPORT_SYMBOL vmlinux 0xd973aa8e sock_create_kern EXPORT_SYMBOL vmlinux 0xd979a547 __x86_indirect_thunk_rdi -EXPORT_SYMBOL vmlinux 0xd979fe88 ip_sock_set_mtu_discover EXPORT_SYMBOL vmlinux 0xd985dc99 mempool_free_pages EXPORT_SYMBOL vmlinux 0xd999a5d1 end_buffer_async_write -EXPORT_SYMBOL vmlinux 0xd99a749a security_sk_classify_flow EXPORT_SYMBOL vmlinux 0xd9a2f850 clk_bulk_get_all EXPORT_SYMBOL vmlinux 0xd9a5ea54 __init_waitqueue_head +EXPORT_SYMBOL vmlinux 0xd9af3978 nexthop_bucket_set_hw_flags EXPORT_SYMBOL vmlinux 0xd9b85ef6 lockref_get +EXPORT_SYMBOL vmlinux 0xd9bd54fd tcp_seq_next EXPORT_SYMBOL vmlinux 0xd9cda73d tty_throttle -EXPORT_SYMBOL vmlinux 0xd9cee6c0 ip_ct_attach +EXPORT_SYMBOL vmlinux 0xd9cf78e3 pskb_expand_head EXPORT_SYMBOL vmlinux 0xd9d8fd16 register_restart_handler EXPORT_SYMBOL vmlinux 0xd9d952d1 crypto_aes_sbox -EXPORT_SYMBOL vmlinux 0xd9da5b65 skb_checksum_trimmed -EXPORT_SYMBOL vmlinux 0xd9ebeeec netdev_state_change EXPORT_SYMBOL vmlinux 0xd9fc82cd is_acpi_device_node +EXPORT_SYMBOL vmlinux 0xda0fb25f skb_queue_head EXPORT_SYMBOL vmlinux 0xda102b02 iov_iter_copy_from_user_atomic -EXPORT_SYMBOL vmlinux 0xda104486 napi_consume_skb EXPORT_SYMBOL vmlinux 0xda1ddef1 acpi_mark_gpe_for_wake EXPORT_SYMBOL vmlinux 0xda24263e blk_mq_end_request EXPORT_SYMBOL vmlinux 0xda26b8ea __irq_regs -EXPORT_SYMBOL vmlinux 0xda2916b2 rawv6_mh_filter_register EXPORT_SYMBOL vmlinux 0xda3d10a8 security_tun_dev_open -EXPORT_SYMBOL vmlinux 0xda42ff59 sk_dst_check -EXPORT_SYMBOL vmlinux 0xda4794b6 ppp_output_wakeup -EXPORT_SYMBOL vmlinux 0xda6a1543 tcf_idr_create EXPORT_SYMBOL vmlinux 0xda72a7ec ZSTD_nextInputType EXPORT_SYMBOL vmlinux 0xda7c42cb pcim_iounmap_regions -EXPORT_SYMBOL vmlinux 0xda7db634 netdev_master_upper_dev_link EXPORT_SYMBOL vmlinux 0xda89ea3b ip_idents_reserve EXPORT_SYMBOL vmlinux 0xda9bd8d4 padata_set_cpumask -EXPORT_SYMBOL vmlinux 0xdaa4decf nf_register_net_hook EXPORT_SYMBOL vmlinux 0xdab6bfa6 pci_unmap_rom EXPORT_SYMBOL vmlinux 0xdac4913a bitmap_allocate_region EXPORT_SYMBOL vmlinux 0xdad13544 ptrs_per_p4d -EXPORT_SYMBOL vmlinux 0xdad16145 mr_fill_mroute EXPORT_SYMBOL vmlinux 0xdad1cc3c follow_pfn -EXPORT_SYMBOL vmlinux 0xdaee1cde ndisc_mc_map EXPORT_SYMBOL vmlinux 0xdaf1527e mipi_dsi_dcs_set_tear_on EXPORT_SYMBOL vmlinux 0xdaf8ec9b generic_shutdown_super -EXPORT_SYMBOL vmlinux 0xdafade97 phy_detach EXPORT_SYMBOL vmlinux 0xdafbb1ff freeze_super EXPORT_SYMBOL vmlinux 0xdb021584 page_pool_destroy -EXPORT_SYMBOL vmlinux 0xdb08ab77 phy_advertise_supported EXPORT_SYMBOL vmlinux 0xdb16b170 topology_phys_to_logical_pkg EXPORT_SYMBOL vmlinux 0xdb2026e7 nd_namespace_blk_validate EXPORT_SYMBOL vmlinux 0xdb3382ec generic_error_remove_page EXPORT_SYMBOL vmlinux 0xdb34874c ptp_find_pin -EXPORT_SYMBOL vmlinux 0xdb3754ed xfrm_parse_spi EXPORT_SYMBOL vmlinux 0xdb3a6431 set_bh_page EXPORT_SYMBOL vmlinux 0xdb4b40c5 jbd2_journal_try_to_free_buffers -EXPORT_SYMBOL vmlinux 0xdb4f7f55 __skb_vlan_pop -EXPORT_SYMBOL vmlinux 0xdb61b42d sock_release EXPORT_SYMBOL vmlinux 0xdb68bbad rfkill_destroy EXPORT_SYMBOL vmlinux 0xdb708839 __x86_indirect_alt_jmp_rsi EXPORT_SYMBOL vmlinux 0xdb760f52 __kfifo_free -EXPORT_SYMBOL vmlinux 0xdb834b3d inet6_del_offload -EXPORT_SYMBOL vmlinux 0xdb93c0ac logfc +EXPORT_SYMBOL vmlinux 0xdb7abb97 xfrm4_protocol_register EXPORT_SYMBOL vmlinux 0xdb95e185 intel_scu_ipc_dev_command_with_size -EXPORT_SYMBOL vmlinux 0xdba07fcf inet_rtx_syn_ack EXPORT_SYMBOL vmlinux 0xdbafe249 mnt_drop_write_file +EXPORT_SYMBOL vmlinux 0xdbb51935 dev_get_by_name EXPORT_SYMBOL vmlinux 0xdbcf041a acpi_install_address_space_handler EXPORT_SYMBOL vmlinux 0xdbd21db8 acpi_bus_unregister_driver EXPORT_SYMBOL vmlinux 0xdbd6cdc3 devm_nvmem_cell_put EXPORT_SYMBOL vmlinux 0xdbda68ce lease_get_mtime EXPORT_SYMBOL vmlinux 0xdbdf6c92 ioport_resource -EXPORT_SYMBOL vmlinux 0xdbf4672a tcp_sock_set_keepintvl +EXPORT_SYMBOL vmlinux 0xdbfeaa24 __sk_receive_skb EXPORT_SYMBOL vmlinux 0xdc14eda7 pci_pci_problems EXPORT_SYMBOL vmlinux 0xdc1e61ef elv_rb_latter_request EXPORT_SYMBOL vmlinux 0xdc49c198 reciprocal_value_adv EXPORT_SYMBOL vmlinux 0xdc512134 backlight_register_notifier EXPORT_SYMBOL vmlinux 0xdc5736d5 acpi_register_ioapic +EXPORT_SYMBOL vmlinux 0xdc710187 tcp_v4_mtu_reduced EXPORT_SYMBOL vmlinux 0xdc811d42 tty_port_alloc_xmit_buf -EXPORT_SYMBOL vmlinux 0xdc8b9386 unregister_tcf_proto_ops +EXPORT_SYMBOL vmlinux 0xdc86204c ip6_fraglist_prepare EXPORT_SYMBOL vmlinux 0xdc8d3228 __x86_indirect_alt_call_r9 +EXPORT_SYMBOL vmlinux 0xdc906909 netdev_name_node_alt_destroy EXPORT_SYMBOL vmlinux 0xdca4388f pagecache_write_begin -EXPORT_SYMBOL vmlinux 0xdcaed633 __icmp_send EXPORT_SYMBOL vmlinux 0xdcb6fcfe __break_lease +EXPORT_SYMBOL vmlinux 0xdce129bc pfifo_fast_ops EXPORT_SYMBOL vmlinux 0xdd00447a acpi_resource_to_address64 +EXPORT_SYMBOL vmlinux 0xdd046660 security_inode_init_security +EXPORT_SYMBOL vmlinux 0xdd11b566 tcp_fastopen_defer_connect EXPORT_SYMBOL vmlinux 0xdd18a993 acpi_check_dsm EXPORT_SYMBOL vmlinux 0xdd1af714 pcie_capability_write_dword EXPORT_SYMBOL vmlinux 0xdd2c169b mb_cache_create EXPORT_SYMBOL vmlinux 0xdd319b77 fb_pan_display EXPORT_SYMBOL vmlinux 0xdd33f299 pci_irq_vector -EXPORT_SYMBOL vmlinux 0xdd391892 sock_no_sendpage -EXPORT_SYMBOL vmlinux 0xdd641439 security_task_getsecid_obj +EXPORT_SYMBOL vmlinux 0xdd5667a9 vlan_vids_add_by_dev EXPORT_SYMBOL vmlinux 0xdd64e639 strscpy EXPORT_SYMBOL vmlinux 0xdd742d72 __sg_free_table EXPORT_SYMBOL vmlinux 0xdd76c07f pcie_get_speed_cap -EXPORT_SYMBOL vmlinux 0xdd7ce195 call_fib_notifiers EXPORT_SYMBOL vmlinux 0xdd8076d1 param_set_charp EXPORT_SYMBOL vmlinux 0xdd8166a1 dma_fence_free EXPORT_SYMBOL vmlinux 0xdd849d51 scsi_get_sense_info_fld +EXPORT_SYMBOL vmlinux 0xdd98f44d dev_uc_unsync EXPORT_SYMBOL vmlinux 0xddad7952 acpi_dbg_level EXPORT_SYMBOL vmlinux 0xddafdd31 vm_node_stat EXPORT_SYMBOL vmlinux 0xddb86dbc bio_kmalloc EXPORT_SYMBOL vmlinux 0xddc24463 pci_fixup_cardbus -EXPORT_SYMBOL vmlinux 0xddc27252 audit_log EXPORT_SYMBOL vmlinux 0xdde1e201 page_mapped EXPORT_SYMBOL vmlinux 0xddf6ad7a completion_done -EXPORT_SYMBOL vmlinux 0xddf6b824 ip_sock_set_tos -EXPORT_SYMBOL vmlinux 0xde04806f ndo_dflt_fdb_add -EXPORT_SYMBOL vmlinux 0xde089258 fqdir_exit EXPORT_SYMBOL vmlinux 0xde099f29 remove_arg_zero EXPORT_SYMBOL vmlinux 0xde100398 super_setup_bdi EXPORT_SYMBOL vmlinux 0xde293f9e add_wait_queue_exclusive EXPORT_SYMBOL vmlinux 0xde2a0a32 mdio_device_create EXPORT_SYMBOL vmlinux 0xde345209 blk_mq_alloc_tag_set -EXPORT_SYMBOL vmlinux 0xde4b9391 tcf_register_action +EXPORT_SYMBOL vmlinux 0xde46fe7d tcf_block_get_ext EXPORT_SYMBOL vmlinux 0xde4c731b __SCK__tp_func_spi_transfer_start EXPORT_SYMBOL vmlinux 0xde4d4ace dim_calc_stats EXPORT_SYMBOL vmlinux 0xde4eea13 devm_backlight_device_unregister EXPORT_SYMBOL vmlinux 0xde4eeab5 __register_nmi_handler EXPORT_SYMBOL vmlinux 0xde80cd09 ioremap -EXPORT_SYMBOL vmlinux 0xde93ec4f done_path_create +EXPORT_SYMBOL vmlinux 0xde98cf54 security_path_rename EXPORT_SYMBOL vmlinux 0xde9b17ed agp3_generic_fetch_size EXPORT_SYMBOL vmlinux 0xdea2f83e scsi_change_queue_depth +EXPORT_SYMBOL vmlinux 0xdeb9b803 security_binder_transfer_binder EXPORT_SYMBOL vmlinux 0xdecd1eee get_watch_queue EXPORT_SYMBOL vmlinux 0xded39a6b gen_kill_estimator EXPORT_SYMBOL vmlinux 0xded54946 bdput +EXPORT_SYMBOL vmlinux 0xdeddff05 dev_change_flags +EXPORT_SYMBOL vmlinux 0xdeece3be __sk_mem_reduce_allocated EXPORT_SYMBOL vmlinux 0xdef607c1 pnp_device_detach EXPORT_SYMBOL vmlinux 0xdef7c893 fb_match_mode EXPORT_SYMBOL vmlinux 0xdef8d0ae __SCT__tp_func_kfree +EXPORT_SYMBOL vmlinux 0xdefd1953 dev_get_by_index EXPORT_SYMBOL vmlinux 0xdf045725 __lock_buffer EXPORT_SYMBOL vmlinux 0xdf091cb4 get_cached_acl EXPORT_SYMBOL vmlinux 0xdf0cbdc1 input_flush_device EXPORT_SYMBOL vmlinux 0xdf112701 jbd2_journal_start +EXPORT_SYMBOL vmlinux 0xdf159a7b napi_enable EXPORT_SYMBOL vmlinux 0xdf1e1af7 tty_insert_flip_string_flags -EXPORT_SYMBOL vmlinux 0xdf239ad6 sk_alloc EXPORT_SYMBOL vmlinux 0xdf256037 kstrtou8_from_user EXPORT_SYMBOL vmlinux 0xdf2c2742 rb_last EXPORT_SYMBOL vmlinux 0xdf2ebb87 _raw_read_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xdf322276 netdev_lower_get_next EXPORT_SYMBOL vmlinux 0xdf36914b xa_find_after EXPORT_SYMBOL vmlinux 0xdf40905b vga_switcheroo_register_client +EXPORT_SYMBOL vmlinux 0xdf436533 sock_common_getsockopt EXPORT_SYMBOL vmlinux 0xdf54a8f7 netlink_unregister_notifier EXPORT_SYMBOL vmlinux 0xdf566a59 __x86_indirect_thunk_r9 EXPORT_SYMBOL vmlinux 0xdf6b082f proc_dointvec_jiffies +EXPORT_SYMBOL vmlinux 0xdf7ced25 xfrm_state_flush EXPORT_SYMBOL vmlinux 0xdf8c695a __ndelay EXPORT_SYMBOL vmlinux 0xdf8d781f acpi_update_all_gpes -EXPORT_SYMBOL vmlinux 0xdf8e3395 xp_alloc EXPORT_SYMBOL vmlinux 0xdf929370 fs_overflowgid EXPORT_SYMBOL vmlinux 0xdf93b9d8 timespec64_to_jiffies -EXPORT_SYMBOL vmlinux 0xdfa326ef __cgroup_bpf_run_filter_sock_addr +EXPORT_SYMBOL vmlinux 0xdfa159a8 __inet_stream_connect +EXPORT_SYMBOL vmlinux 0xdfb31151 netdev_adjacent_change_commit EXPORT_SYMBOL vmlinux 0xdfb86a60 pcim_set_mwi EXPORT_SYMBOL vmlinux 0xdfcc992c current_work -EXPORT_SYMBOL vmlinux 0xdfd93da3 xfrm_state_walk_done EXPORT_SYMBOL vmlinux 0xdfdfa9e7 utf8nfdi EXPORT_SYMBOL vmlinux 0xdff4422b nvdimm_namespace_detach_btt EXPORT_SYMBOL vmlinux 0xdff905e5 vme_slave_free +EXPORT_SYMBOL vmlinux 0xdffa53d9 dev_mc_add_excl EXPORT_SYMBOL vmlinux 0xdffc80fc vesa_modes -EXPORT_SYMBOL vmlinux 0xdffe6c64 xsk_tx_release -EXPORT_SYMBOL vmlinux 0xe001aec0 phy_device_remove EXPORT_SYMBOL vmlinux 0xe005dfa5 seq_puts EXPORT_SYMBOL vmlinux 0xe0279a51 jbd2_journal_get_create_access EXPORT_SYMBOL vmlinux 0xe02ba436 trace_print_hex_seq EXPORT_SYMBOL vmlinux 0xe02c9c92 __xa_erase +EXPORT_SYMBOL vmlinux 0xe03234f1 inet_frag_kill EXPORT_SYMBOL vmlinux 0xe033cb29 native_queued_spin_lock_slowpath +EXPORT_SYMBOL vmlinux 0xe03596fd inet_sk_rx_dst_set EXPORT_SYMBOL vmlinux 0xe03a689d dma_fence_array_ops +EXPORT_SYMBOL vmlinux 0xe03fc725 tcp_rcv_state_process EXPORT_SYMBOL vmlinux 0xe0419ac4 kstrtos16 -EXPORT_SYMBOL vmlinux 0xe063d3c5 sock_setsockopt -EXPORT_SYMBOL vmlinux 0xe07b8538 sock_enable_timestamps +EXPORT_SYMBOL vmlinux 0xe04b38c6 sk_send_sigurg +EXPORT_SYMBOL vmlinux 0xe04be776 inet_bind +EXPORT_SYMBOL vmlinux 0xe04c529e dcbnl_cee_notify +EXPORT_SYMBOL vmlinux 0xe06b734a sock_no_ioctl +EXPORT_SYMBOL vmlinux 0xe073875a tcp_seq_stop EXPORT_SYMBOL vmlinux 0xe07e5f44 acpi_reconfig_notifier_unregister EXPORT_SYMBOL vmlinux 0xe080e8f0 set_current_groups EXPORT_SYMBOL vmlinux 0xe082e88d acpi_check_address_range EXPORT_SYMBOL vmlinux 0xe08b9366 seq_file_path +EXPORT_SYMBOL vmlinux 0xe08d0045 ip6_fraglist_init EXPORT_SYMBOL vmlinux 0xe091c977 list_sort EXPORT_SYMBOL vmlinux 0xe0955f76 utf8_casefold -EXPORT_SYMBOL vmlinux 0xe0a0bb7e icmpv6_ndo_send +EXPORT_SYMBOL vmlinux 0xe09dc91a __dev_get_by_index EXPORT_SYMBOL vmlinux 0xe0ab83ba pm_vt_switch_unregister EXPORT_SYMBOL vmlinux 0xe0b13336 argv_free -EXPORT_SYMBOL vmlinux 0xe0c05d94 __napi_schedule EXPORT_SYMBOL vmlinux 0xe0c45334 pci_get_subsys EXPORT_SYMBOL vmlinux 0xe0c722ce scsi_mode_sense +EXPORT_SYMBOL vmlinux 0xe0cab8c2 dev_activate EXPORT_SYMBOL vmlinux 0xe0f222d3 misc_register EXPORT_SYMBOL vmlinux 0xe0f738de __tracepoint_kmalloc EXPORT_SYMBOL vmlinux 0xe10122a7 mod_node_page_state EXPORT_SYMBOL vmlinux 0xe1108f97 ptp_clock_event -EXPORT_SYMBOL vmlinux 0xe113322a ip_mc_join_group EXPORT_SYMBOL vmlinux 0xe113bbbc csum_partial EXPORT_SYMBOL vmlinux 0xe11ca997 ZSTD_getDictID_fromDict EXPORT_SYMBOL vmlinux 0xe1222ec1 iov_iter_get_pages_alloc @@ -8277,242 +8294,241 @@ EXPORT_SYMBOL vmlinux 0xe13cd8a7 dmi_name_in_vendors EXPORT_SYMBOL vmlinux 0xe1414657 blk_alloc_queue EXPORT_SYMBOL vmlinux 0xe144ee79 blk_queue_max_write_zeroes_sectors -EXPORT_SYMBOL vmlinux 0xe149c6b5 kernel_sock_ip_overhead -EXPORT_SYMBOL vmlinux 0xe156af8b tcf_qevent_destroy +EXPORT_SYMBOL vmlinux 0xe165da50 xfrm4_rcv_encap EXPORT_SYMBOL vmlinux 0xe182ae21 md_bitmap_end_sync -EXPORT_SYMBOL vmlinux 0xe189e944 qdisc_watchdog_init -EXPORT_SYMBOL vmlinux 0xe18a5858 page_symlink EXPORT_SYMBOL vmlinux 0xe1a2484e generic_writepages EXPORT_SYMBOL vmlinux 0xe1a4f16a secure_ipv6_port_ephemeral +EXPORT_SYMBOL vmlinux 0xe1a8342d xp_alloc EXPORT_SYMBOL vmlinux 0xe1bee700 __traceiter_read_msr EXPORT_SYMBOL vmlinux 0xe1c2ba3b bmap +EXPORT_SYMBOL vmlinux 0xe1c33cc7 fifo_set_limit EXPORT_SYMBOL vmlinux 0xe1d2f52a tty_port_lower_dtr_rts EXPORT_SYMBOL vmlinux 0xe1dcf64a audit_log_format +EXPORT_SYMBOL vmlinux 0xe1ed6b79 sock_alloc_send_pskb EXPORT_SYMBOL vmlinux 0xe1f1ff90 block_page_mkwrite EXPORT_SYMBOL vmlinux 0xe1fce2ae jbd2_journal_invalidatepage +EXPORT_SYMBOL vmlinux 0xe205397d tcp_child_process +EXPORT_SYMBOL vmlinux 0xe21238e1 xfrm_policy_walk_done EXPORT_SYMBOL vmlinux 0xe21f18ac __genradix_iter_peek -EXPORT_SYMBOL vmlinux 0xe22c819a __ip_dev_find +EXPORT_SYMBOL vmlinux 0xe22c34fa user_path_create EXPORT_SYMBOL vmlinux 0xe2418453 __scsi_iterate_devices EXPORT_SYMBOL vmlinux 0xe273d75d alloc_cpu_rmap EXPORT_SYMBOL vmlinux 0xe2818c00 blkdev_issue_zeroout -EXPORT_SYMBOL vmlinux 0xe2829148 _dev_info EXPORT_SYMBOL vmlinux 0xe2857c59 iov_iter_npages EXPORT_SYMBOL vmlinux 0xe2941082 key_put EXPORT_SYMBOL vmlinux 0xe2992726 nd_device_unregister -EXPORT_SYMBOL vmlinux 0xe29ebb6f security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe2a33220 mr_mfc_find_any EXPORT_SYMBOL vmlinux 0xe2b18a4f __SCK__tp_func_mmap_lock_acquire_returned EXPORT_SYMBOL vmlinux 0xe2bd3bbe dm_kcopyd_copy -EXPORT_SYMBOL vmlinux 0xe2c57a9d call_netdevice_notifiers -EXPORT_SYMBOL vmlinux 0xe2d0d79e vlan_ioctl_set EXPORT_SYMBOL vmlinux 0xe2d5255a strcmp -EXPORT_SYMBOL vmlinux 0xe2d8c2d2 key_move -EXPORT_SYMBOL vmlinux 0xe2db85ac dev_mc_del_global EXPORT_SYMBOL vmlinux 0xe2e28fc0 __traceiter_write_msr -EXPORT_SYMBOL vmlinux 0xe2f3ba23 path_get +EXPORT_SYMBOL vmlinux 0xe2f3e3ab tcf_register_action +EXPORT_SYMBOL vmlinux 0xe2fb416f __xfrm_dst_lookup EXPORT_SYMBOL vmlinux 0xe2ffeef3 scsi_req_init EXPORT_SYMBOL vmlinux 0xe305077c end_buffer_write_sync EXPORT_SYMBOL vmlinux 0xe31752dd scsi_host_get EXPORT_SYMBOL vmlinux 0xe3295229 pnp_start_dev EXPORT_SYMBOL vmlinux 0xe32ab4d8 xxh64_digest EXPORT_SYMBOL vmlinux 0xe34642f0 kthread_create_on_node +EXPORT_SYMBOL vmlinux 0xe34e3745 xfrm_register_type +EXPORT_SYMBOL vmlinux 0xe3541731 netdev_set_tc_queue +EXPORT_SYMBOL vmlinux 0xe35f19b8 rtnl_set_sk_err EXPORT_SYMBOL vmlinux 0xe3693a25 mipi_dsi_dcs_set_page_address +EXPORT_SYMBOL vmlinux 0xe381ac5f netdev_boot_setup_check EXPORT_SYMBOL vmlinux 0xe39b2ea5 sha256 EXPORT_SYMBOL vmlinux 0xe3b26885 ihold EXPORT_SYMBOL vmlinux 0xe3ba8ba6 __nla_reserve_nohdr +EXPORT_SYMBOL vmlinux 0xe3d00092 sock_diag_put_filterinfo EXPORT_SYMBOL vmlinux 0xe3d857ea __cpu_active_mask EXPORT_SYMBOL vmlinux 0xe3ec2f2b alloc_chrdev_region EXPORT_SYMBOL vmlinux 0xe3f1253e scsi_get_host_dev EXPORT_SYMBOL vmlinux 0xe3f64128 single_open +EXPORT_SYMBOL vmlinux 0xe3fa77d3 xfrm_lookup EXPORT_SYMBOL vmlinux 0xe3feba56 tasklet_unlock_spin_wait EXPORT_SYMBOL vmlinux 0xe3ff2c41 get_random_u64 EXPORT_SYMBOL vmlinux 0xe3fffae9 __x86_indirect_thunk_rbp +EXPORT_SYMBOL vmlinux 0xe4017128 security_sock_rcv_skb EXPORT_SYMBOL vmlinux 0xe40976c0 pnp_range_reserved EXPORT_SYMBOL vmlinux 0xe40c37ea down_write_trylock EXPORT_SYMBOL vmlinux 0xe40c3e91 d_add EXPORT_SYMBOL vmlinux 0xe419bc99 iowrite32be EXPORT_SYMBOL vmlinux 0xe41d5115 blk_mq_start_hw_queue EXPORT_SYMBOL vmlinux 0xe421c56b kmem_cache_alloc_node_trace +EXPORT_SYMBOL vmlinux 0xe425c207 poll_initwait EXPORT_SYMBOL vmlinux 0xe4329092 __ctzdi2 EXPORT_SYMBOL vmlinux 0xe4529272 scsi_report_opcode EXPORT_SYMBOL vmlinux 0xe46021ca _raw_spin_unlock_bh EXPORT_SYMBOL vmlinux 0xe46a7b51 blk_sync_queue EXPORT_SYMBOL vmlinux 0xe47c852e migrate_page_states -EXPORT_SYMBOL vmlinux 0xe4977d83 eth_type_trans +EXPORT_SYMBOL vmlinux 0xe4ac36c7 dev_set_threaded EXPORT_SYMBOL vmlinux 0xe4bc2c2f hdmi_drm_infoframe_pack -EXPORT_SYMBOL vmlinux 0xe4c7e040 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xe4c602ee ethtool_op_get_ts_info EXPORT_SYMBOL vmlinux 0xe4c959a8 blk_rq_append_bio EXPORT_SYMBOL vmlinux 0xe4d80bf4 acpi_enable +EXPORT_SYMBOL vmlinux 0xe4e46192 neigh_changeaddr EXPORT_SYMBOL vmlinux 0xe4e6eb7e write_inode_now -EXPORT_SYMBOL vmlinux 0xe4f7288e xfrm_state_walk +EXPORT_SYMBOL vmlinux 0xe4ee6723 dev_uc_flush EXPORT_SYMBOL vmlinux 0xe4fc1b1e clocksource_change_rating EXPORT_SYMBOL vmlinux 0xe523ad75 synchronize_irq EXPORT_SYMBOL vmlinux 0xe531a444 d_alloc_name -EXPORT_SYMBOL vmlinux 0xe53c5d11 rtnl_unicast +EXPORT_SYMBOL vmlinux 0xe54f6fa3 security_inet_conn_request +EXPORT_SYMBOL vmlinux 0xe5644510 inet_stream_connect EXPORT_SYMBOL vmlinux 0xe5672cda unlock_page -EXPORT_SYMBOL vmlinux 0xe568061d security_sctp_sk_clone EXPORT_SYMBOL vmlinux 0xe58090ca security_ib_endport_manage_subnet -EXPORT_SYMBOL vmlinux 0xe583f31f tcp_conn_request +EXPORT_SYMBOL vmlinux 0xe586801f sock_efree EXPORT_SYMBOL vmlinux 0xe58d56a5 unpin_user_page_range_dirty_lock EXPORT_SYMBOL vmlinux 0xe590dea3 sk_busy_loop_end EXPORT_SYMBOL vmlinux 0xe598cd31 __x86_indirect_alt_call_rcx -EXPORT_SYMBOL vmlinux 0xe5a265a7 __nlmsg_put -EXPORT_SYMBOL vmlinux 0xe5accbe9 xfrm_policy_byid EXPORT_SYMBOL vmlinux 0xe5bc9a53 slhc_free EXPORT_SYMBOL vmlinux 0xe5c60bd2 percpu_counter_set EXPORT_SYMBOL vmlinux 0xe5c78a99 do_blank_screen -EXPORT_SYMBOL vmlinux 0xe5e2e999 netdev_sk_get_lowest_dev +EXPORT_SYMBOL vmlinux 0xe5f1174b xfrm_trans_queue_net EXPORT_SYMBOL vmlinux 0xe5f17be2 devm_ioremap_np EXPORT_SYMBOL vmlinux 0xe5fb5f32 mark_buffer_dirty +EXPORT_SYMBOL vmlinux 0xe605665a ip6_output EXPORT_SYMBOL vmlinux 0xe6125acd write_dirty_buffer EXPORT_SYMBOL vmlinux 0xe613a798 inet_addr_is_any -EXPORT_SYMBOL vmlinux 0xe61ab287 __xfrm_policy_check -EXPORT_SYMBOL vmlinux 0xe636b84a mdiobus_write EXPORT_SYMBOL vmlinux 0xe64a7a94 uart_add_one_port EXPORT_SYMBOL vmlinux 0xe6500248 agp_find_bridge +EXPORT_SYMBOL vmlinux 0xe65c0974 tso_start EXPORT_SYMBOL vmlinux 0xe65f3c89 dm_io +EXPORT_SYMBOL vmlinux 0xe661cb38 tcp_req_err EXPORT_SYMBOL vmlinux 0xe67525e9 fc_block_rport EXPORT_SYMBOL vmlinux 0xe67c94a4 tty_unregister_driver EXPORT_SYMBOL vmlinux 0xe682b4ea module_refcount +EXPORT_SYMBOL vmlinux 0xe68cc5f0 vfs_dup_fs_context +EXPORT_SYMBOL vmlinux 0xe68eb0c8 sock_set_sndtimeo EXPORT_SYMBOL vmlinux 0xe68efe41 _raw_write_lock EXPORT_SYMBOL vmlinux 0xe691ac7f ZSTD_decompressBegin -EXPORT_SYMBOL vmlinux 0xe69e416a netdev_has_upper_dev_all_rcu EXPORT_SYMBOL vmlinux 0xe6bc572e elv_rb_former_request -EXPORT_SYMBOL vmlinux 0xe6ca1524 alloc_skb_with_frags EXPORT_SYMBOL vmlinux 0xe6d2458e do_trace_netlink_extack -EXPORT_SYMBOL vmlinux 0xe6d42786 bpf_prog_get_type_path EXPORT_SYMBOL vmlinux 0xe6ebb0f5 filemap_page_mkwrite -EXPORT_SYMBOL vmlinux 0xe6f4bb7a qdisc_create_dflt +EXPORT_SYMBOL vmlinux 0xe6f62035 mr_vif_seq_next +EXPORT_SYMBOL vmlinux 0xe6f97eb6 mr_dump EXPORT_SYMBOL vmlinux 0xe6fa06a2 rename_lock -EXPORT_SYMBOL vmlinux 0xe70209f5 netif_rx EXPORT_SYMBOL vmlinux 0xe70877d4 acpi_remove_sci_handler EXPORT_SYMBOL vmlinux 0xe71a4e5f jbd2_journal_check_used_features -EXPORT_SYMBOL vmlinux 0xe71ccd66 tcp_openreq_init_rwin +EXPORT_SYMBOL vmlinux 0xe722f081 netdev_notify_peers EXPORT_SYMBOL vmlinux 0xe7257ab8 xa_store_range -EXPORT_SYMBOL vmlinux 0xe729ca29 sock_alloc_send_pskb EXPORT_SYMBOL vmlinux 0xe7324b9a utf8nfdicf EXPORT_SYMBOL vmlinux 0xe73db27f dquot_initialize_needed EXPORT_SYMBOL vmlinux 0xe7498ca8 cdrom_open -EXPORT_SYMBOL vmlinux 0xe74de5b9 skb_seq_read +EXPORT_SYMBOL vmlinux 0xe761cf1a dev_set_allmulti +EXPORT_SYMBOL vmlinux 0xe7721890 reuseport_alloc EXPORT_SYMBOL vmlinux 0xe787698f acpi_processor_register_performance EXPORT_SYMBOL vmlinux 0xe7a02573 ida_alloc_range -EXPORT_SYMBOL vmlinux 0xe7a15c11 qdisc_tree_reduce_backlog +EXPORT_SYMBOL vmlinux 0xe7a164ff flow_rule_match_tcp +EXPORT_SYMBOL vmlinux 0xe7a62d1b softnet_data +EXPORT_SYMBOL vmlinux 0xe7a79349 vfs_parse_fs_param EXPORT_SYMBOL vmlinux 0xe7ab1ecc _raw_write_unlock_bh -EXPORT_SYMBOL vmlinux 0xe7acddd6 sock_set_reuseaddr EXPORT_SYMBOL vmlinux 0xe7b00dfb __x86_indirect_thunk_r13 EXPORT_SYMBOL vmlinux 0xe7b08c38 configfs_unregister_default_group -EXPORT_SYMBOL vmlinux 0xe7b5c532 skb_flow_dissect_ct -EXPORT_SYMBOL vmlinux 0xe7bc86ff sock_create -EXPORT_SYMBOL vmlinux 0xe7cd7a5e __cgroup_bpf_run_filter_sk +EXPORT_SYMBOL vmlinux 0xe7b7d945 icmp_ndo_send +EXPORT_SYMBOL vmlinux 0xe7b8b4fa unix_attach_fds EXPORT_SYMBOL vmlinux 0xe7d4daac seq_list_next EXPORT_SYMBOL vmlinux 0xe7dc3f76 f_setown EXPORT_SYMBOL vmlinux 0xe7dcc662 bio_integrity_prep -EXPORT_SYMBOL vmlinux 0xe7f1580b phy_error -EXPORT_SYMBOL vmlinux 0xe8071765 netdev_adjacent_change_abort -EXPORT_SYMBOL vmlinux 0xe8107b57 devm_register_netdev -EXPORT_SYMBOL vmlinux 0xe81d630a in_dev_finish_destroy -EXPORT_SYMBOL vmlinux 0xe83ac0ea __cgroup_bpf_run_filter_sock_ops +EXPORT_SYMBOL vmlinux 0xe817de21 fqdir_init +EXPORT_SYMBOL vmlinux 0xe83178f4 sock_queue_err_skb EXPORT_SYMBOL vmlinux 0xe84231f1 nvdimm_namespace_locked -EXPORT_SYMBOL vmlinux 0xe84b6840 napi_complete_done EXPORT_SYMBOL vmlinux 0xe8561dfd input_grab_device EXPORT_SYMBOL vmlinux 0xe859f279 kill_fasync EXPORT_SYMBOL vmlinux 0xe85f2123 acpi_tb_unload_table -EXPORT_SYMBOL vmlinux 0xe866cd1c sock_kfree_s EXPORT_SYMBOL vmlinux 0xe8693ecb vme_lm_request EXPORT_SYMBOL vmlinux 0xe874d337 pci_bus_claim_resources EXPORT_SYMBOL vmlinux 0xe88cc126 console_stop EXPORT_SYMBOL vmlinux 0xe89ffcaa __tracepoint_dma_fence_emit -EXPORT_SYMBOL vmlinux 0xe8a44813 mr_mfc_seq_next EXPORT_SYMBOL vmlinux 0xe8bd6c1e vme_new_dma_list EXPORT_SYMBOL vmlinux 0xe8c3e74a param_set_invbool EXPORT_SYMBOL vmlinux 0xe8d14103 pcie_print_link_status -EXPORT_SYMBOL vmlinux 0xe8d1419a netdev_notify_peers -EXPORT_SYMBOL vmlinux 0xe8d5660c netdev_next_lower_dev_rcu EXPORT_SYMBOL vmlinux 0xe8e62975 unregister_shrinker EXPORT_SYMBOL vmlinux 0xe8f0e947 tty_chars_in_buffer -EXPORT_SYMBOL vmlinux 0xe8f24886 fs_context_for_submount EXPORT_SYMBOL vmlinux 0xe8f5545f dump_skip EXPORT_SYMBOL vmlinux 0xe8fbf4fa __alloc_bucket_spinlocks +EXPORT_SYMBOL vmlinux 0xe8fea9ca __ip_options_compile +EXPORT_SYMBOL vmlinux 0xe908d04e tcp_release_cb EXPORT_SYMBOL vmlinux 0xe914e41e strcpy -EXPORT_SYMBOL vmlinux 0xe91b548c __sock_cmsg_send EXPORT_SYMBOL vmlinux 0xe929594d simple_recursive_removal EXPORT_SYMBOL vmlinux 0xe93528ba PageMovable +EXPORT_SYMBOL vmlinux 0xe9378c96 sock_no_sendmsg_locked EXPORT_SYMBOL vmlinux 0xe953b21f get_next_ino EXPORT_SYMBOL vmlinux 0xe95817ab ex_handler_copy EXPORT_SYMBOL vmlinux 0xe95c32f4 pci_pme_active EXPORT_SYMBOL vmlinux 0xe9601853 alloc_pages_vma -EXPORT_SYMBOL vmlinux 0xe9702439 phy_find_first +EXPORT_SYMBOL vmlinux 0xe9764026 __xfrm_policy_check EXPORT_SYMBOL vmlinux 0xe9804e61 jbd2_journal_ack_err EXPORT_SYMBOL vmlinux 0xe9853f2e agp_generic_insert_memory EXPORT_SYMBOL vmlinux 0xe98a828a __x86_indirect_alt_call_r14 +EXPORT_SYMBOL vmlinux 0xe98cc22b flow_block_cb_decref EXPORT_SYMBOL vmlinux 0xe98e272d try_to_release_page -EXPORT_SYMBOL vmlinux 0xe98e4e07 lock_page_memcg -EXPORT_SYMBOL vmlinux 0xe99b13b5 __skb_gso_segment +EXPORT_SYMBOL vmlinux 0xe99a2989 ipv6_select_ident +EXPORT_SYMBOL vmlinux 0xe99d7bc8 cookie_ecn_ok EXPORT_SYMBOL vmlinux 0xe9a5e67f intel_graphics_stolen_res EXPORT_SYMBOL vmlinux 0xe9af7397 __xa_set_mark EXPORT_SYMBOL vmlinux 0xe9b553ea of_find_mipi_dsi_host_by_node EXPORT_SYMBOL vmlinux 0xe9c0abe3 devm_of_iomap +EXPORT_SYMBOL vmlinux 0xe9c4128c xsk_tx_peek_desc EXPORT_SYMBOL vmlinux 0xe9e6e534 blk_rq_init EXPORT_SYMBOL vmlinux 0xe9e8faeb efi_tpm_final_log_size -EXPORT_SYMBOL vmlinux 0xe9ea66f3 __tcf_em_tree_match EXPORT_SYMBOL vmlinux 0xe9f7149c zlib_deflate_workspacesize EXPORT_SYMBOL vmlinux 0xe9ffc063 down_trylock -EXPORT_SYMBOL vmlinux 0xea025bca security_sctp_bind_connect +EXPORT_SYMBOL vmlinux 0xea066e11 nf_ct_get_tuple_skb +EXPORT_SYMBOL vmlinux 0xea11d999 rtnetlink_put_metrics EXPORT_SYMBOL vmlinux 0xea331186 set_pages_wb EXPORT_SYMBOL vmlinux 0xea3c8e4e scsilun_to_int EXPORT_SYMBOL vmlinux 0xea3f3c3f pci_write_config_byte -EXPORT_SYMBOL vmlinux 0xea46e7fa dev_graft_qdisc +EXPORT_SYMBOL vmlinux 0xea66bf09 phy_do_ioctl +EXPORT_SYMBOL vmlinux 0xea675b47 skb_copy_and_csum_bits EXPORT_SYMBOL vmlinux 0xea68177f rio_query_mport -EXPORT_SYMBOL vmlinux 0xea6865ec udp_pre_connect EXPORT_SYMBOL vmlinux 0xea6f9a36 zlib_deflate_dfltcc_enabled EXPORT_SYMBOL vmlinux 0xea778fab sg_pcopy_to_buffer EXPORT_SYMBOL vmlinux 0xea823014 ps2_drain EXPORT_SYMBOL vmlinux 0xea8a17ec seq_vprintf +EXPORT_SYMBOL vmlinux 0xea8e3938 unix_destruct_scm EXPORT_SYMBOL vmlinux 0xeaac571d account_page_redirty EXPORT_SYMBOL vmlinux 0xeab6f4c4 acpi_check_resource_conflict -EXPORT_SYMBOL vmlinux 0xeabb4d84 netif_rx_ni EXPORT_SYMBOL vmlinux 0xeae3dfd6 __const_udelay -EXPORT_SYMBOL vmlinux 0xeaeb8172 pneigh_enqueue -EXPORT_SYMBOL vmlinux 0xeaee8784 neigh_sysctl_register +EXPORT_SYMBOL vmlinux 0xeaf5a35b inet_del_protocol +EXPORT_SYMBOL vmlinux 0xeaf9b481 path_get EXPORT_SYMBOL vmlinux 0xeafc141f __posix_acl_chmod -EXPORT_SYMBOL vmlinux 0xeb07871f sk_wait_data EXPORT_SYMBOL vmlinux 0xeb078aee _raw_write_unlock_irqrestore +EXPORT_SYMBOL vmlinux 0xeb0f1d9d genphy_soft_reset EXPORT_SYMBOL vmlinux 0xeb113de3 simple_dir_inode_operations EXPORT_SYMBOL vmlinux 0xeb13b3be pcix_set_mmrbc +EXPORT_SYMBOL vmlinux 0xeb229a59 tcp_filter EXPORT_SYMBOL vmlinux 0xeb233a45 __kmalloc EXPORT_SYMBOL vmlinux 0xeb2391c9 gen_new_estimator +EXPORT_SYMBOL vmlinux 0xeb331e7d rtnl_notify EXPORT_SYMBOL vmlinux 0xeb37101c audit_log_end -EXPORT_SYMBOL vmlinux 0xeb3d4e2f skb_trim EXPORT_SYMBOL vmlinux 0xeb44339a free_pages_exact +EXPORT_SYMBOL vmlinux 0xeb4dfb4d mini_qdisc_pair_swap EXPORT_SYMBOL vmlinux 0xeb50af3a pci_try_set_mwi EXPORT_SYMBOL vmlinux 0xeb608b97 __insert_inode_hash EXPORT_SYMBOL vmlinux 0xeb63fb25 tty_unlock -EXPORT_SYMBOL vmlinux 0xeb732410 ip6_route_me_harder -EXPORT_SYMBOL vmlinux 0xeb73ec63 inet6_offloads -EXPORT_SYMBOL vmlinux 0xeb79c7d8 tcp_connect EXPORT_SYMBOL vmlinux 0xeb7f6046 acpi_get_devices +EXPORT_SYMBOL vmlinux 0xeb817a26 netpoll_setup EXPORT_SYMBOL vmlinux 0xeb9e913d sgl_alloc_order EXPORT_SYMBOL vmlinux 0xeb9eef52 match_uint EXPORT_SYMBOL vmlinux 0xebc7a256 iov_iter_pipe -EXPORT_SYMBOL vmlinux 0xebe9b930 ping_prot -EXPORT_SYMBOL vmlinux 0xebf353b7 ip_options_rcv_srr -EXPORT_SYMBOL vmlinux 0xebf8b0bb ip_fraglist_prepare EXPORT_SYMBOL vmlinux 0xec043394 kmem_cache_free_bulk +EXPORT_SYMBOL vmlinux 0xec13ffd9 security_sb_set_mnt_opts EXPORT_SYMBOL vmlinux 0xec1e1506 compat_ptr_ioctl EXPORT_SYMBOL vmlinux 0xec28163a bio_free_pages -EXPORT_SYMBOL vmlinux 0xec2aa743 tcp_check_req EXPORT_SYMBOL vmlinux 0xec2b8a42 acpi_walk_namespace EXPORT_SYMBOL vmlinux 0xec2e1c8f proc_doulongvec_minmax -EXPORT_SYMBOL vmlinux 0xec44364c netdev_lower_get_next_private EXPORT_SYMBOL vmlinux 0xec4d9e3a clk_get_sys +EXPORT_SYMBOL vmlinux 0xec5b8475 dev_close +EXPORT_SYMBOL vmlinux 0xec6ebb44 sock_set_rcvbuf EXPORT_SYMBOL vmlinux 0xec7205b4 __generic_file_fsync -EXPORT_SYMBOL vmlinux 0xec7e0152 ___pskb_trim EXPORT_SYMBOL vmlinux 0xec84a2d6 serial8250_do_pm +EXPORT_SYMBOL vmlinux 0xec8802bf phy_register_fixup EXPORT_SYMBOL vmlinux 0xec8997f6 dm_table_get_size EXPORT_SYMBOL vmlinux 0xec90241c dquot_quota_on +EXPORT_SYMBOL vmlinux 0xec906e3f tcp_mmap EXPORT_SYMBOL vmlinux 0xeca99e24 fscrypt_decrypt_bio EXPORT_SYMBOL vmlinux 0xecac8407 __memcpy -EXPORT_SYMBOL vmlinux 0xecb60555 __kfree_skb EXPORT_SYMBOL vmlinux 0xecbe028e from_kgid +EXPORT_SYMBOL vmlinux 0xecd43f16 rawv6_mh_filter_register EXPORT_SYMBOL vmlinux 0xecdcabd2 copy_user_generic_unrolled EXPORT_SYMBOL vmlinux 0xece784c2 rb_first EXPORT_SYMBOL vmlinux 0xecec01e6 set_capacity @@ -8520,49 +8536,49 @@ EXPORT_SYMBOL vmlinux 0xecfd68ef acpi_get_node EXPORT_SYMBOL vmlinux 0xed00c4fb acpi_os_printf EXPORT_SYMBOL vmlinux 0xed0286de pci_scan_single_device -EXPORT_SYMBOL vmlinux 0xed27e682 vfs_path_lookup +EXPORT_SYMBOL vmlinux 0xed13990e flow_block_cb_priv EXPORT_SYMBOL vmlinux 0xed2b68f0 fc_vport_create EXPORT_SYMBOL vmlinux 0xed2f5e2d sget +EXPORT_SYMBOL vmlinux 0xed347536 dev_queue_xmit EXPORT_SYMBOL vmlinux 0xed34ebbc acpi_any_gpe_status_set +EXPORT_SYMBOL vmlinux 0xed3d8811 unlock_page_memcg +EXPORT_SYMBOL vmlinux 0xed4d6dec skb_eth_push EXPORT_SYMBOL vmlinux 0xed55f929 acpi_os_unmap_generic_address EXPORT_SYMBOL vmlinux 0xed5784ab find_get_pages_contig EXPORT_SYMBOL vmlinux 0xed6422c0 bio_integrity_add_page EXPORT_SYMBOL vmlinux 0xed656e30 udp_encap_disable -EXPORT_SYMBOL vmlinux 0xed6b51cc xfrm6_rcv_tnl EXPORT_SYMBOL vmlinux 0xed6d127b kernel_param_unlock -EXPORT_SYMBOL vmlinux 0xed6f65bb __mdiobus_register +EXPORT_SYMBOL vmlinux 0xed80a097 dcb_setapp EXPORT_SYMBOL vmlinux 0xed894ebe dma_supported +EXPORT_SYMBOL vmlinux 0xed955795 phy_get_pause +EXPORT_SYMBOL vmlinux 0xedab1f1b dst_dev_put EXPORT_SYMBOL vmlinux 0xedae1ac7 crypto_sha1_finup EXPORT_SYMBOL vmlinux 0xedbaee5e nla_strcmp EXPORT_SYMBOL vmlinux 0xedbe05d6 vfs_fileattr_get EXPORT_SYMBOL vmlinux 0xedc03953 iounmap -EXPORT_SYMBOL vmlinux 0xedcf00be security_dentry_init_security -EXPORT_SYMBOL vmlinux 0xedeb9811 vfs_symlink +EXPORT_SYMBOL vmlinux 0xedcb71f2 ip6_find_1stfragopt +EXPORT_SYMBOL vmlinux 0xede37dab tcf_chain_put_by_act +EXPORT_SYMBOL vmlinux 0xede7644c phy_ethtool_get_eee +EXPORT_SYMBOL vmlinux 0xedeede77 __udp_disconnect EXPORT_SYMBOL vmlinux 0xedefb1f1 cdev_init -EXPORT_SYMBOL vmlinux 0xedfc7816 rt_dst_clone -EXPORT_SYMBOL vmlinux 0xee0a208b nf_log_unbind_pf +EXPORT_SYMBOL vmlinux 0xee0089c2 security_socket_getpeersec_dgram +EXPORT_SYMBOL vmlinux 0xee11b07c ppp_register_net_channel EXPORT_SYMBOL vmlinux 0xee2d0fc7 _local_bh_enable +EXPORT_SYMBOL vmlinux 0xee4494a1 phy_set_sym_pause +EXPORT_SYMBOL vmlinux 0xee52e0d3 tcf_idr_create_from_flags EXPORT_SYMBOL vmlinux 0xee58e970 fb_add_videomode EXPORT_SYMBOL vmlinux 0xee6c4ca4 vfs_clone_file_range EXPORT_SYMBOL vmlinux 0xee7d7deb gen_pool_dma_zalloc EXPORT_SYMBOL vmlinux 0xee7eb9e1 pnp_platform_devices EXPORT_SYMBOL vmlinux 0xee8d74d6 jiffies64_to_nsecs EXPORT_SYMBOL vmlinux 0xee91879b rb_first_postorder -EXPORT_SYMBOL vmlinux 0xee977487 tcp_sock_set_syncnt +EXPORT_SYMBOL vmlinux 0xeea1ac18 flow_indr_dev_setup_offload EXPORT_SYMBOL vmlinux 0xeea4fa16 __SCK__tp_func_dma_fence_signaled EXPORT_SYMBOL vmlinux 0xeeca762b devfreq_add_device -EXPORT_SYMBOL vmlinux 0xeeca84f4 dev_add_offload -EXPORT_SYMBOL vmlinux 0xeed45118 unregister_netdevice_queue -EXPORT_SYMBOL vmlinux 0xeed88252 dev_mc_sync -EXPORT_SYMBOL vmlinux 0xeee4561e dev_remove_offload -EXPORT_SYMBOL vmlinux 0xeeeb798b tcf_idr_release -EXPORT_SYMBOL vmlinux 0xef065160 bfifo_qdisc_ops -EXPORT_SYMBOL vmlinux 0xef0b667b __skb_checksum_complete_head -EXPORT_SYMBOL vmlinux 0xef2857cd sock_init_data -EXPORT_SYMBOL vmlinux 0xef4ad452 skb_checksum_help -EXPORT_SYMBOL vmlinux 0xef5b4d12 eth_get_headlen -EXPORT_SYMBOL vmlinux 0xef5b531a km_policy_notify +EXPORT_SYMBOL vmlinux 0xef1e1e3d nf_log_unset +EXPORT_SYMBOL vmlinux 0xef5783ae ipv6_skip_exthdr EXPORT_SYMBOL vmlinux 0xef924849 config_item_get_unless_zero +EXPORT_SYMBOL vmlinux 0xef97ba99 user_path_at_empty EXPORT_SYMBOL vmlinux 0xef9aedfc boot_option_idle_override EXPORT_SYMBOL vmlinux 0xefaa4450 scsi_vpd_lun_id EXPORT_SYMBOL vmlinux 0xefac9dc4 fixed_size_llseek @@ -8571,74 +8587,68 @@ EXPORT_SYMBOL vmlinux 0xefee932c acpi_get_data_full EXPORT_SYMBOL vmlinux 0xefefb956 sdev_disable_disk_events EXPORT_SYMBOL vmlinux 0xeff1856f _copy_from_iter_full -EXPORT_SYMBOL vmlinux 0xeff45077 __xfrm_init_state EXPORT_SYMBOL vmlinux 0xefff4c9c scsi_block_when_processing_errors EXPORT_SYMBOL vmlinux 0xf0009fee put_pages_list EXPORT_SYMBOL vmlinux 0xf008a885 seg6_hmac_init -EXPORT_SYMBOL vmlinux 0xf009e1d7 flow_block_cb_lookup +EXPORT_SYMBOL vmlinux 0xf00f572f dev_mc_flush EXPORT_SYMBOL vmlinux 0xf015f1fc input_mt_assign_slots -EXPORT_SYMBOL vmlinux 0xf01b0176 tcp_add_backlog EXPORT_SYMBOL vmlinux 0xf01d05d1 jbd2_journal_forget EXPORT_SYMBOL vmlinux 0xf02aa937 wait_for_completion_interruptible_timeout +EXPORT_SYMBOL vmlinux 0xf0307aa5 xfrm_alloc_spi +EXPORT_SYMBOL vmlinux 0xf0378797 tcp_disconnect EXPORT_SYMBOL vmlinux 0xf03dfe30 vga_remove_vgacon +EXPORT_SYMBOL vmlinux 0xf04dcce6 dev_addr_init +EXPORT_SYMBOL vmlinux 0xf04eb1d4 sk_alloc EXPORT_SYMBOL vmlinux 0xf05c32ad rdmsr_on_cpus -EXPORT_SYMBOL vmlinux 0xf06cb5ca inet_get_local_port_range -EXPORT_SYMBOL vmlinux 0xf07838e8 tcp_release_cb -EXPORT_SYMBOL vmlinux 0xf07cf07f neigh_parms_release -EXPORT_SYMBOL vmlinux 0xf08d06ed nf_getsockopt +EXPORT_SYMBOL vmlinux 0xf079abfb kernel_recvmsg EXPORT_SYMBOL vmlinux 0xf09b5d9a get_zeroed_page +EXPORT_SYMBOL vmlinux 0xf09db673 __neigh_set_probe_once EXPORT_SYMBOL vmlinux 0xf0a3ed86 bdev_check_media_change -EXPORT_SYMBOL vmlinux 0xf0a4c56c acpi_notifier_call_chain EXPORT_SYMBOL vmlinux 0xf0da77e8 do_SAK EXPORT_SYMBOL vmlinux 0xf0e9e464 block_write_begin -EXPORT_SYMBOL vmlinux 0xf0f3fe28 tcp_v4_syn_recv_sock EXPORT_SYMBOL vmlinux 0xf102033e slhc_remember EXPORT_SYMBOL vmlinux 0xf103fa18 pci_setup_cardbus EXPORT_SYMBOL vmlinux 0xf10ac99e alloc_file_pseudo EXPORT_SYMBOL vmlinux 0xf10becff scsi_free_host_dev -EXPORT_SYMBOL vmlinux 0xf10e367f ip_tunnel_encap_del_ops EXPORT_SYMBOL vmlinux 0xf11dd46e _page_poisoning_enabled_early +EXPORT_SYMBOL vmlinux 0xf12a6fa8 sk_mc_loop +EXPORT_SYMBOL vmlinux 0xf13502f8 __mod_lruvec_page_state EXPORT_SYMBOL vmlinux 0xf141ecef __page_cache_alloc -EXPORT_SYMBOL vmlinux 0xf142ed8e __sk_mem_reduce_allocated EXPORT_SYMBOL vmlinux 0xf149b6f4 zero_fill_bio EXPORT_SYMBOL vmlinux 0xf15e9b54 filp_close EXPORT_SYMBOL vmlinux 0xf16d9449 fscrypt_ioctl_get_policy -EXPORT_SYMBOL vmlinux 0xf1722668 ip_generic_getfrag EXPORT_SYMBOL vmlinux 0xf1816d86 scsi_dma_map EXPORT_SYMBOL vmlinux 0xf1848ee2 acpi_install_sci_handler EXPORT_SYMBOL vmlinux 0xf18f5350 buffer_check_dirty_writeback EXPORT_SYMBOL vmlinux 0xf195c682 fb_invert_cmaps EXPORT_SYMBOL vmlinux 0xf1969a8e __usecs_to_jiffies -EXPORT_SYMBOL vmlinux 0xf19d95e7 sock_cmsg_send EXPORT_SYMBOL vmlinux 0xf1a68107 acpi_processor_preregister_performance EXPORT_SYMBOL vmlinux 0xf1b32988 generic_block_fiemap EXPORT_SYMBOL vmlinux 0xf1c6c243 vme_dma_list_exec EXPORT_SYMBOL vmlinux 0xf1c79b81 __tracepoint_spi_transfer_start EXPORT_SYMBOL vmlinux 0xf1cdf650 fc_mount -EXPORT_SYMBOL vmlinux 0xf1d5949d phy_start_cable_test EXPORT_SYMBOL vmlinux 0xf1db1704 nla_memcpy EXPORT_SYMBOL vmlinux 0xf1e046cc panic EXPORT_SYMBOL vmlinux 0xf1e98c74 avenrun EXPORT_SYMBOL vmlinux 0xf21017d9 mutex_trylock -EXPORT_SYMBOL vmlinux 0xf21664eb xfrm6_rcv_encap +EXPORT_SYMBOL vmlinux 0xf217004a qdisc_class_hash_grow EXPORT_SYMBOL vmlinux 0xf21bed6e blk_mq_start_request EXPORT_SYMBOL vmlinux 0xf21e6f75 scsi_device_quiesce +EXPORT_SYMBOL vmlinux 0xf2317fd2 phy_stop EXPORT_SYMBOL vmlinux 0xf236e0a7 param_set_short EXPORT_SYMBOL vmlinux 0xf23fcb99 __kfifo_in -EXPORT_SYMBOL vmlinux 0xf243b617 netif_stacked_transfer_operstate +EXPORT_SYMBOL vmlinux 0xf240f8f3 skb_clone EXPORT_SYMBOL vmlinux 0xf24950df configfs_undepend_item -EXPORT_SYMBOL vmlinux 0xf26991ff tcp_simple_retransmit +EXPORT_SYMBOL vmlinux 0xf2552b41 rt_dst_alloc EXPORT_SYMBOL vmlinux 0xf26a73fa file_ns_capable EXPORT_SYMBOL vmlinux 0xf26e5b54 kill_litter_super -EXPORT_SYMBOL vmlinux 0xf2772a95 mdiobus_write_nested EXPORT_SYMBOL vmlinux 0xf28404cf devlink_dpipe_header_ipv6 EXPORT_SYMBOL vmlinux 0xf2874f3c mark_info_dirty EXPORT_SYMBOL vmlinux 0xf29403e5 acpi_install_table_handler EXPORT_SYMBOL vmlinux 0xf29c3a69 vfs_iter_write +EXPORT_SYMBOL vmlinux 0xf29ec335 tcf_block_netif_keep_dst EXPORT_SYMBOL vmlinux 0xf29f8515 __kfifo_dma_out_prepare_r -EXPORT_SYMBOL vmlinux 0xf2a9369d tso_build_hdr -EXPORT_SYMBOL vmlinux 0xf2b576db __sk_receive_skb -EXPORT_SYMBOL vmlinux 0xf2b68874 neigh_xmit +EXPORT_SYMBOL vmlinux 0xf2ab1ac2 seg6_push_hmac EXPORT_SYMBOL vmlinux 0xf2b81b64 arch_io_reserve_memtype_wc EXPORT_SYMBOL vmlinux 0xf2bb8a9c vme_irq_free EXPORT_SYMBOL vmlinux 0xf2c43f3f zlib_deflate @@ -8646,31 +8656,33 @@ EXPORT_SYMBOL vmlinux 0xf2dbea4d pci_restore_state EXPORT_SYMBOL vmlinux 0xf2e315b7 __quota_error EXPORT_SYMBOL vmlinux 0xf2e5bd87 security_free_mnt_opts -EXPORT_SYMBOL vmlinux 0xf2ea5e75 nf_setsockopt EXPORT_SYMBOL vmlinux 0xf2f53617 memregion_free +EXPORT_SYMBOL vmlinux 0xf3007804 neigh_parms_alloc EXPORT_SYMBOL vmlinux 0xf30965ac iosf_mbi_register_pmic_bus_access_notifier EXPORT_SYMBOL vmlinux 0xf30b9ad1 serial8250_do_set_termios EXPORT_SYMBOL vmlinux 0xf30cbef6 blk_queue_max_discard_sectors EXPORT_SYMBOL vmlinux 0xf3107926 sha224_update -EXPORT_SYMBOL vmlinux 0xf3348c65 dev_printk_emit +EXPORT_SYMBOL vmlinux 0xf32e34ef phy_disconnect +EXPORT_SYMBOL vmlinux 0xf33698d6 phy_ethtool_set_link_ksettings EXPORT_SYMBOL vmlinux 0xf3397da8 mdiobus_setup_mdiodev_from_board_info EXPORT_SYMBOL vmlinux 0xf346231f seq_list_start_head -EXPORT_SYMBOL vmlinux 0xf34c0ecd netdev_unbind_sb_channel +EXPORT_SYMBOL vmlinux 0xf34d5e10 netdev_lower_dev_get_private +EXPORT_SYMBOL vmlinux 0xf350f6a4 register_fib_notifier EXPORT_SYMBOL vmlinux 0xf353a698 register_module_notifier -EXPORT_SYMBOL vmlinux 0xf354f7bf vfs_parse_fs_string +EXPORT_SYMBOL vmlinux 0xf3585924 netdev_info +EXPORT_SYMBOL vmlinux 0xf35ed0d1 phy_mac_interrupt EXPORT_SYMBOL vmlinux 0xf373317c pci_claim_resource +EXPORT_SYMBOL vmlinux 0xf389e822 inet_frags_init EXPORT_SYMBOL vmlinux 0xf389fe60 __hw_addr_init EXPORT_SYMBOL vmlinux 0xf3916987 global_cursor_default -EXPORT_SYMBOL vmlinux 0xf3969cc6 reuseport_alloc +EXPORT_SYMBOL vmlinux 0xf397dde4 netif_receive_skb_core EXPORT_SYMBOL vmlinux 0xf3992821 pci_get_domain_bus_and_slot EXPORT_SYMBOL vmlinux 0xf3a5202c seq_release EXPORT_SYMBOL vmlinux 0xf3a57892 release_dentry_name_snapshot EXPORT_SYMBOL vmlinux 0xf3b30a06 utf8version_latest EXPORT_SYMBOL vmlinux 0xf3e0e1df allocate_resource EXPORT_SYMBOL vmlinux 0xf3e6402e __bitmap_equal -EXPORT_SYMBOL vmlinux 0xf3e8949e __neigh_for_each_release -EXPORT_SYMBOL vmlinux 0xf3f5bf74 __mdiobus_write -EXPORT_SYMBOL vmlinux 0xf401c88c dev_mc_flush +EXPORT_SYMBOL vmlinux 0xf3eb8993 seg6_hmac_info_lookup EXPORT_SYMBOL vmlinux 0xf413a414 phy_write_paged EXPORT_SYMBOL vmlinux 0xf4141f97 fb_prepare_logo EXPORT_SYMBOL vmlinux 0xf430ee4e unpin_user_page @@ -8684,126 +8696,117 @@ EXPORT_SYMBOL vmlinux 0xf474c21c bitmap_print_to_pagebuf EXPORT_SYMBOL vmlinux 0xf474fdcb kfree_const EXPORT_SYMBOL vmlinux 0xf4871caa pci_ep_cfs_remove_epc_group -EXPORT_SYMBOL vmlinux 0xf495aa02 dev_pick_tx_zero +EXPORT_SYMBOL vmlinux 0xf4a2c85d nf_register_net_hook EXPORT_SYMBOL vmlinux 0xf4a565fd wrmsr_on_cpus +EXPORT_SYMBOL vmlinux 0xf4afd358 inet_accept EXPORT_SYMBOL vmlinux 0xf4b754fd acpi_resources_are_enforced EXPORT_SYMBOL vmlinux 0xf4bdbeb9 __frontswap_invalidate_area +EXPORT_SYMBOL vmlinux 0xf4c0c09f netpoll_poll_enable +EXPORT_SYMBOL vmlinux 0xf4d7c832 security_d_instantiate EXPORT_SYMBOL vmlinux 0xf4db35bc stpcpy +EXPORT_SYMBOL vmlinux 0xf4e0787f dcbnl_ieee_notify EXPORT_SYMBOL vmlinux 0xf4f14de6 rtnl_trylock EXPORT_SYMBOL vmlinux 0xf504ef8f i8042_install_filter EXPORT_SYMBOL vmlinux 0xf50996b0 pci_pme_capable +EXPORT_SYMBOL vmlinux 0xf50b3383 tcf_exts_num_actions EXPORT_SYMBOL vmlinux 0xf50d386b d_instantiate EXPORT_SYMBOL vmlinux 0xf533eb9f try_to_writeback_inodes_sb -EXPORT_SYMBOL vmlinux 0xf5341439 keyring_clear -EXPORT_SYMBOL vmlinux 0xf53c288d inet6_bind EXPORT_SYMBOL vmlinux 0xf53d4c26 qdisc_class_hash_destroy -EXPORT_SYMBOL vmlinux 0xf55cda15 __sk_queue_drop_skb -EXPORT_SYMBOL vmlinux 0xf581457d dev_pick_tx_cpu_id EXPORT_SYMBOL vmlinux 0xf58474e3 proc_mkdir_mode EXPORT_SYMBOL vmlinux 0xf58eae3b dquot_alloc_inode EXPORT_SYMBOL vmlinux 0xf591753d nf_hooks_needed +EXPORT_SYMBOL vmlinux 0xf59a8f09 tcf_classify EXPORT_SYMBOL vmlinux 0xf5a20ed2 __genradix_prealloc EXPORT_SYMBOL vmlinux 0xf5a5c84c msrs_alloc EXPORT_SYMBOL vmlinux 0xf5c09636 pci_read_config_dword -EXPORT_SYMBOL vmlinux 0xf5cb3c5a xfrm_policy_walk_done EXPORT_SYMBOL vmlinux 0xf5e79d7c pagecache_isize_extended EXPORT_SYMBOL vmlinux 0xf5e7ea40 ktime_get_coarse_ts64 -EXPORT_SYMBOL vmlinux 0xf5f45047 sk_net_capable +EXPORT_SYMBOL vmlinux 0xf5ef1868 udp_flush_pending_frames +EXPORT_SYMBOL vmlinux 0xf5efd7f1 phy_connect EXPORT_SYMBOL vmlinux 0xf60ab926 acpi_get_event_status -EXPORT_SYMBOL vmlinux 0xf6118af3 inet_sk_rebuild_header -EXPORT_SYMBOL vmlinux 0xf61ed7ac __sk_mem_raise_allocated -EXPORT_SYMBOL vmlinux 0xf6374cec phy_ethtool_ksettings_get EXPORT_SYMBOL vmlinux 0xf63c2d2a blk_queue_dma_alignment EXPORT_SYMBOL vmlinux 0xf643d104 hsiphash_4u32 EXPORT_SYMBOL vmlinux 0xf650ec62 bioset_integrity_create EXPORT_SYMBOL vmlinux 0xf651f00b fbcon_update_vcs EXPORT_SYMBOL vmlinux 0xf661c376 open_with_fake_path +EXPORT_SYMBOL vmlinux 0xf664f521 ip_tunnel_parse_protocol EXPORT_SYMBOL vmlinux 0xf665f74f sock_load_diag_module -EXPORT_SYMBOL vmlinux 0xf679da5d unregister_netdevice_notifier_dev_net +EXPORT_SYMBOL vmlinux 0xf67b0a28 inet_csk_delete_keepalive_timer EXPORT_SYMBOL vmlinux 0xf67b994a uart_register_driver -EXPORT_SYMBOL vmlinux 0xf6817840 tcf_idrinfo_destroy EXPORT_SYMBOL vmlinux 0xf68285c0 register_inetaddr_notifier +EXPORT_SYMBOL vmlinux 0xf68c7cbc poll_freewait EXPORT_SYMBOL vmlinux 0xf690ef47 register_framebuffer EXPORT_SYMBOL vmlinux 0xf69102a4 __scsi_add_device -EXPORT_SYMBOL vmlinux 0xf6d1b217 dcb_getapp +EXPORT_SYMBOL vmlinux 0xf6a341e4 gnet_stats_copy_basic EXPORT_SYMBOL vmlinux 0xf6d88038 get_ipc_ns_exported EXPORT_SYMBOL vmlinux 0xf6ebc03b net_ratelimit +EXPORT_SYMBOL vmlinux 0xf6f4a4c5 pskb_extract +EXPORT_SYMBOL vmlinux 0xf6f8e6c0 thread_group_exited EXPORT_SYMBOL vmlinux 0xf6f9d58d init_on_free EXPORT_SYMBOL vmlinux 0xf6fc8791 __bitmap_xor EXPORT_SYMBOL vmlinux 0xf7007420 inode_insert5 -EXPORT_SYMBOL vmlinux 0xf71089d1 tcp_get_md5sig_pool EXPORT_SYMBOL vmlinux 0xf71edcb8 pci_ep_cfs_remove_epf_group EXPORT_SYMBOL vmlinux 0xf71ef7db agp_backend_release EXPORT_SYMBOL vmlinux 0xf72b14ca scsi_is_target_device -EXPORT_SYMBOL vmlinux 0xf73528e3 skb_copy_and_csum_datagram_msg EXPORT_SYMBOL vmlinux 0xf7378a6f scsi_device_set_state EXPORT_SYMBOL vmlinux 0xf738d1be register_blocking_lsm_notifier EXPORT_SYMBOL vmlinux 0xf73ff4a7 sync_dirty_buffer -EXPORT_SYMBOL vmlinux 0xf7487888 neigh_connected_output EXPORT_SYMBOL vmlinux 0xf7682964 fc_remote_port_add EXPORT_SYMBOL vmlinux 0xf77337a1 hdmi_audio_infoframe_check -EXPORT_SYMBOL vmlinux 0xf79bb587 nf_reinject EXPORT_SYMBOL vmlinux 0xf79ca3bb acpi_remove_gpe_block +EXPORT_SYMBOL vmlinux 0xf7a817e3 xfrm4_protocol_deregister EXPORT_SYMBOL vmlinux 0xf7c5f8e6 kern_unmount EXPORT_SYMBOL vmlinux 0xf7d31de9 kstrtoul_from_user EXPORT_SYMBOL vmlinux 0xf7da6e6f acpi_unload_table -EXPORT_SYMBOL vmlinux 0xf7dd1418 security_unix_may_send EXPORT_SYMBOL vmlinux 0xf7ef97ec iov_iter_zero EXPORT_SYMBOL vmlinux 0xf7ef9a79 iosf_mbi_punit_release EXPORT_SYMBOL vmlinux 0xf80be44e rdmsr_safe_on_cpu EXPORT_SYMBOL vmlinux 0xf811e69d scsi_eh_flush_done_q EXPORT_SYMBOL vmlinux 0xf812cff6 memscan +EXPORT_SYMBOL vmlinux 0xf813703f __fib6_flush_trees EXPORT_SYMBOL vmlinux 0xf82abc1d isa_dma_bridge_buggy EXPORT_SYMBOL vmlinux 0xf82ec573 rb_prev EXPORT_SYMBOL vmlinux 0xf82fa203 dma_set_coherent_mask -EXPORT_SYMBOL vmlinux 0xf83ced82 tcf_idr_create_from_flags EXPORT_SYMBOL vmlinux 0xf83dc715 d_invalidate EXPORT_SYMBOL vmlinux 0xf84bd6ee bpf_stats_enabled_key EXPORT_SYMBOL vmlinux 0xf854e66a module_put -EXPORT_SYMBOL vmlinux 0xf85628bd xfrm_input_resume EXPORT_SYMBOL vmlinux 0xf8719e22 agp_generic_type_to_mask_type -EXPORT_SYMBOL vmlinux 0xf878fdab audit_log_start EXPORT_SYMBOL vmlinux 0xf8843d69 __tracepoint_kmalloc_node EXPORT_SYMBOL vmlinux 0xf888ca21 sg_init_table -EXPORT_SYMBOL vmlinux 0xf8925e62 tcp_disconnect -EXPORT_SYMBOL vmlinux 0xf8b5ea61 pfifo_fast_ops -EXPORT_SYMBOL vmlinux 0xf8bcad93 xfrm_state_add +EXPORT_SYMBOL vmlinux 0xf894effd skb_copy_header +EXPORT_SYMBOL vmlinux 0xf89723a2 udp_seq_next +EXPORT_SYMBOL vmlinux 0xf8b4aa81 netif_rx EXPORT_SYMBOL vmlinux 0xf8bf8e22 ZSTD_DDictWorkspaceBound -EXPORT_SYMBOL vmlinux 0xf8c155ba tcp_timewait_state_process EXPORT_SYMBOL vmlinux 0xf8c1687b jbd2_fc_end_commit_fallback EXPORT_SYMBOL vmlinux 0xf8d07858 bitmap_from_arr32 -EXPORT_SYMBOL vmlinux 0xf8df901f rtnl_notify +EXPORT_SYMBOL vmlinux 0xf8ef0b18 tcp_v4_conn_request EXPORT_SYMBOL vmlinux 0xf8f61ebc wake_up_var -EXPORT_SYMBOL vmlinux 0xf8fafe0a dev_set_alias EXPORT_SYMBOL vmlinux 0xf9054771 jbd2_journal_wipe -EXPORT_SYMBOL vmlinux 0xf9167978 inet_frags_fini -EXPORT_SYMBOL vmlinux 0xf91e8530 eth_mac_addr -EXPORT_SYMBOL vmlinux 0xf9225138 skb_split EXPORT_SYMBOL vmlinux 0xf927d208 take_dentry_name_snapshot EXPORT_SYMBOL vmlinux 0xf93b1f90 get_tree_nodev EXPORT_SYMBOL vmlinux 0xf93fd09c fb_find_mode_cvt EXPORT_SYMBOL vmlinux 0xf971cea8 utf8len EXPORT_SYMBOL vmlinux 0xf9756d66 tty_wait_until_sent -EXPORT_SYMBOL vmlinux 0xf97df971 skb_free_datagram EXPORT_SYMBOL vmlinux 0xf9923328 param_get_ullong -EXPORT_SYMBOL vmlinux 0xf995d108 nlmsg_notify EXPORT_SYMBOL vmlinux 0xf99e5b23 dma_free_attrs EXPORT_SYMBOL vmlinux 0xf99e6ca2 blk_set_queue_depth -EXPORT_SYMBOL vmlinux 0xf9a2e3b1 __phy_resume EXPORT_SYMBOL vmlinux 0xf9a482f9 msleep -EXPORT_SYMBOL vmlinux 0xf9bd07e8 flow_rule_match_mpls +EXPORT_SYMBOL vmlinux 0xf9a5697d kernel_getpeername EXPORT_SYMBOL vmlinux 0xf9c0b663 strlcat EXPORT_SYMBOL vmlinux 0xf9ca2eb4 kstrtoint_from_user -EXPORT_SYMBOL vmlinux 0xf9cf00eb neigh_changeaddr EXPORT_SYMBOL vmlinux 0xf9f44027 bio_add_page -EXPORT_SYMBOL vmlinux 0xfa008e74 __netlink_dump_start +EXPORT_SYMBOL vmlinux 0xfa0e7d4a phy_drivers_register EXPORT_SYMBOL vmlinux 0xfa297415 acpi_map_pxm_to_node +EXPORT_SYMBOL vmlinux 0xfa2cdb77 gnet_stats_finish_copy +EXPORT_SYMBOL vmlinux 0xfa34606d inet_addr_type_table EXPORT_SYMBOL vmlinux 0xfa36e22d serio_open EXPORT_SYMBOL vmlinux 0xfa41701b blk_queue_alignment_offset +EXPORT_SYMBOL vmlinux 0xfa4b7f2e tso_count_descs +EXPORT_SYMBOL vmlinux 0xfa4bb261 udp_sk_rx_dst_set EXPORT_SYMBOL vmlinux 0xfa4d778e device_add_disk EXPORT_SYMBOL vmlinux 0xfa599bb2 netlink_register_notifier EXPORT_SYMBOL vmlinux 0xfa634a79 __page_frag_cache_drain -EXPORT_SYMBOL vmlinux 0xfa65bc42 kernel_recvmsg +EXPORT_SYMBOL vmlinux 0xfa65590a security_socket_socketpair EXPORT_SYMBOL vmlinux 0xfa873ad0 prandom_seed EXPORT_SYMBOL vmlinux 0xfa8e66b7 pci_free_host_bridge EXPORT_SYMBOL vmlinux 0xfa96769e stop_tty @@ -8813,29 +8816,25 @@ EXPORT_SYMBOL vmlinux 0xfab1fd92 may_umount EXPORT_SYMBOL vmlinux 0xfac19588 __clear_user EXPORT_SYMBOL vmlinux 0xfac389e5 dma_map_sg_attrs -EXPORT_SYMBOL vmlinux 0xfac45e1e netdev_boot_setup_check -EXPORT_SYMBOL vmlinux 0xfac6fa90 neigh_lookup_nodev EXPORT_SYMBOL vmlinux 0xfac8865f sysctl_wmem_max EXPORT_SYMBOL vmlinux 0xfac9ac11 simple_lookup +EXPORT_SYMBOL vmlinux 0xfad85a29 linkwatch_fire_event EXPORT_SYMBOL vmlinux 0xfad92432 mipi_dsi_driver_register_full EXPORT_SYMBOL vmlinux 0xfae3854f pci_request_regions_exclusive EXPORT_SYMBOL vmlinux 0xfaf4de35 scsi_get_device_flags_keyed -EXPORT_SYMBOL vmlinux 0xfb0d7de9 sock_no_listen -EXPORT_SYMBOL vmlinux 0xfb2d2d8a alloc_etherdev_mqs +EXPORT_SYMBOL vmlinux 0xfb1e05ee xfrm_state_walk_done EXPORT_SYMBOL vmlinux 0xfb2f574b regset_get -EXPORT_SYMBOL vmlinux 0xfb336417 dev_mc_add_global EXPORT_SYMBOL vmlinux 0xfb33646f pcim_iomap_regions -EXPORT_SYMBOL vmlinux 0xfb3368c8 tcp_sendpage -EXPORT_SYMBOL vmlinux 0xfb35c2fe dev_get_mac_address EXPORT_SYMBOL vmlinux 0xfb384d37 kasprintf EXPORT_SYMBOL vmlinux 0xfb481954 vprintk EXPORT_SYMBOL vmlinux 0xfb499a36 vga_switcheroo_unlock_ddc EXPORT_SYMBOL vmlinux 0xfb578fc5 memset +EXPORT_SYMBOL vmlinux 0xfb57ce3f inet_csk_accept +EXPORT_SYMBOL vmlinux 0xfb667297 sock_gettstamp EXPORT_SYMBOL vmlinux 0xfb6af58d recalc_sigpending EXPORT_SYMBOL vmlinux 0xfb6e42a8 __sg_alloc_table_from_pages EXPORT_SYMBOL vmlinux 0xfb714d40 bdi_put EXPORT_SYMBOL vmlinux 0xfb738ae9 fscrypt_put_encryption_info -EXPORT_SYMBOL vmlinux 0xfb7f6e92 sockfd_lookup EXPORT_SYMBOL vmlinux 0xfb82540f __traceiter_mmap_lock_released EXPORT_SYMBOL vmlinux 0xfb95ab78 __serio_register_driver EXPORT_SYMBOL vmlinux 0xfba7ddd2 match_u64 @@ -8843,16 +8842,18 @@ EXPORT_SYMBOL vmlinux 0xfbab1bb1 ioread8_rep EXPORT_SYMBOL vmlinux 0xfbad3cf0 scsi_normalize_sense EXPORT_SYMBOL vmlinux 0xfbb8a761 strscpy_pad +EXPORT_SYMBOL vmlinux 0xfbc3572e lock_page_memcg EXPORT_SYMBOL vmlinux 0xfbc40919 import_iovec EXPORT_SYMBOL vmlinux 0xfbc4f89e io_schedule_timeout +EXPORT_SYMBOL vmlinux 0xfbc4f933 xfrm_state_lookup_byaddr +EXPORT_SYMBOL vmlinux 0xfbc6d760 skb_queue_tail +EXPORT_SYMBOL vmlinux 0xfbdae678 security_tun_dev_attach EXPORT_SYMBOL vmlinux 0xfbe8ee28 acpi_get_table_by_index -EXPORT_SYMBOL vmlinux 0xfbeccff8 dev_get_by_index_rcu +EXPORT_SYMBOL vmlinux 0xfbe92a9c eth_platform_get_mac_address EXPORT_SYMBOL vmlinux 0xfbed18cc seq_path -EXPORT_SYMBOL vmlinux 0xfbf61a21 tcp_sock_set_cork -EXPORT_SYMBOL vmlinux 0xfc195aa0 xfrm_user_policy -EXPORT_SYMBOL vmlinux 0xfc2b73e1 sock_common_recvmsg +EXPORT_SYMBOL vmlinux 0xfbfc160c sk_stop_timer_sync +EXPORT_SYMBOL vmlinux 0xfc20f41c ppp_input EXPORT_SYMBOL vmlinux 0xfc2bab8c iov_iter_fault_in_readable -EXPORT_SYMBOL vmlinux 0xfc2c3c0f fget_raw EXPORT_SYMBOL vmlinux 0xfc336d2e __wake_up_bit EXPORT_SYMBOL vmlinux 0xfc36001b devm_ioremap_wc EXPORT_SYMBOL vmlinux 0xfc37292a pnp_possible_config @@ -8861,24 +8862,30 @@ EXPORT_SYMBOL vmlinux 0xfc3d53cb __put_user_nocheck_1 EXPORT_SYMBOL vmlinux 0xfc4152fc ec_read EXPORT_SYMBOL vmlinux 0xfc5c4c0b vma_set_file -EXPORT_SYMBOL vmlinux 0xfc7a61e9 tcf_block_get +EXPORT_SYMBOL vmlinux 0xfc67f780 skb_set_owner_w +EXPORT_SYMBOL vmlinux 0xfc7406d1 sock_alloc_send_skb +EXPORT_SYMBOL vmlinux 0xfc8a5377 skb_flow_get_icmp_tci EXPORT_SYMBOL vmlinux 0xfc910799 vfio_register_notifier EXPORT_SYMBOL vmlinux 0xfc9927e2 security_lock_kernel_down -EXPORT_SYMBOL vmlinux 0xfca6341c ppp_register_channel EXPORT_SYMBOL vmlinux 0xfcae182d iov_iter_revert EXPORT_SYMBOL vmlinux 0xfcb06ec1 do_splice_direct EXPORT_SYMBOL vmlinux 0xfcc54769 alloc_buffer_head -EXPORT_SYMBOL vmlinux 0xfcc593ee __skb_free_datagram_locked EXPORT_SYMBOL vmlinux 0xfcd1819a hdmi_spd_infoframe_check -EXPORT_SYMBOL vmlinux 0xfcd9247b netdev_update_features +EXPORT_SYMBOL vmlinux 0xfcd33517 genphy_update_link +EXPORT_SYMBOL vmlinux 0xfce00298 netdev_txq_to_tc EXPORT_SYMBOL vmlinux 0xfce7ca95 configfs_register_subsystem EXPORT_SYMBOL vmlinux 0xfcec0987 enable_irq EXPORT_SYMBOL vmlinux 0xfcee4465 pci_dev_get +EXPORT_SYMBOL vmlinux 0xfcf01c6e phy_ethtool_get_sset_count EXPORT_SYMBOL vmlinux 0xfcf95514 __traceiter_mmap_lock_acquire_returned EXPORT_SYMBOL vmlinux 0xfd02819b shmem_aops EXPORT_SYMBOL vmlinux 0xfd03b766 inode_sub_bytes +EXPORT_SYMBOL vmlinux 0xfd0f8d20 tc_setup_cb_destroy EXPORT_SYMBOL vmlinux 0xfd1517b8 key_task_permission +EXPORT_SYMBOL vmlinux 0xfd198e04 dev_mc_init EXPORT_SYMBOL vmlinux 0xfd23b77b iterate_dir +EXPORT_SYMBOL vmlinux 0xfd3aafb3 inet_select_addr +EXPORT_SYMBOL vmlinux 0xfd422ceb nvmem_get_mac_address EXPORT_SYMBOL vmlinux 0xfd4c2b1c cont_write_begin EXPORT_SYMBOL vmlinux 0xfd5efd72 pcim_iomap_regions_request_all EXPORT_SYMBOL vmlinux 0xfd635b23 devm_clk_put @@ -8886,25 +8893,25 @@ EXPORT_SYMBOL vmlinux 0xfd6b7deb seq_bprintf EXPORT_SYMBOL vmlinux 0xfd6d452f devm_nvmem_unregister EXPORT_SYMBOL vmlinux 0xfd93ee35 ioremap_wc -EXPORT_SYMBOL vmlinux 0xfd945c9c __task_pid_nr_ns EXPORT_SYMBOL vmlinux 0xfda9581f prandom_u32 EXPORT_SYMBOL vmlinux 0xfdab100c fc_host_post_event EXPORT_SYMBOL vmlinux 0xfdab1012 __x86_indirect_alt_jmp_r8 EXPORT_SYMBOL vmlinux 0xfdcb4ed3 acpi_os_get_line EXPORT_SYMBOL vmlinux 0xfdcc8a0e fb_find_best_display -EXPORT_SYMBOL vmlinux 0xfdce2e30 ipv4_specific EXPORT_SYMBOL vmlinux 0xfdd4216d pcibios_align_resource EXPORT_SYMBOL vmlinux 0xfddd4052 __vfs_setxattr EXPORT_SYMBOL vmlinux 0xfdfb792f amd_iommu_pc_supported EXPORT_SYMBOL vmlinux 0xfdfdce9e t10_pi_type3_crc EXPORT_SYMBOL vmlinux 0xfe029963 unregister_inetaddr_notifier EXPORT_SYMBOL vmlinux 0xfe052363 ioread64_lo_hi +EXPORT_SYMBOL vmlinux 0xfe0d2cfc tcp_v4_md5_lookup EXPORT_SYMBOL vmlinux 0xfe1d2e94 key_create_or_update -EXPORT_SYMBOL vmlinux 0xfe2e1e25 inet_accept -EXPORT_SYMBOL vmlinux 0xfe339c78 xfrm_stateonly_find EXPORT_SYMBOL vmlinux 0xfe487975 init_wait_entry +EXPORT_SYMBOL vmlinux 0xfe4e10d1 ppp_channel_index EXPORT_SYMBOL vmlinux 0xfe4e7fc4 vga_con +EXPORT_SYMBOL vmlinux 0xfe570a5f netdev_port_same_parent_id EXPORT_SYMBOL vmlinux 0xfe5d4bb2 sys_tz +EXPORT_SYMBOL vmlinux 0xfe65deb0 km_state_expired EXPORT_SYMBOL vmlinux 0xfe68365d clk_bulk_get EXPORT_SYMBOL vmlinux 0xfe6a0843 blk_mq_run_hw_queues EXPORT_SYMBOL vmlinux 0xfe74a846 vfs_get_fsid @@ -8915,37 +8922,31 @@ EXPORT_SYMBOL vmlinux 0xfe9ebbbb acpi_osi_is_win8 EXPORT_SYMBOL vmlinux 0xfe9ec02f vfs_llseek EXPORT_SYMBOL vmlinux 0xfea150d9 iget_failed +EXPORT_SYMBOL vmlinux 0xfeac2ff9 sock_set_priority EXPORT_SYMBOL vmlinux 0xfeaf0606 to_ndd EXPORT_SYMBOL vmlinux 0xfeb5d0aa verify_spi_info EXPORT_SYMBOL vmlinux 0xfebdc80b simple_open -EXPORT_SYMBOL vmlinux 0xfec48278 skb_ensure_writable -EXPORT_SYMBOL vmlinux 0xfecd489c udp_lib_unhash -EXPORT_SYMBOL vmlinux 0xfedad691 tcp_mtu_to_mss EXPORT_SYMBOL vmlinux 0xfedcdb60 seq_hlist_next_percpu EXPORT_SYMBOL vmlinux 0xfeebc7c4 __kfifo_from_user_r -EXPORT_SYMBOL vmlinux 0xfef093b6 neigh_seq_start EXPORT_SYMBOL vmlinux 0xfef216eb _raw_spin_trylock EXPORT_SYMBOL vmlinux 0xfefcb98e vme_dma_vme_attribute -EXPORT_SYMBOL vmlinux 0xff0f143b km_state_expired -EXPORT_SYMBOL vmlinux 0xff1abff0 skb_mac_gso_segment +EXPORT_SYMBOL vmlinux 0xff008828 sock_set_reuseport +EXPORT_SYMBOL vmlinux 0xff0f3952 dev_lstats_read EXPORT_SYMBOL vmlinux 0xff1e9dd8 seq_list_start EXPORT_SYMBOL vmlinux 0xff282521 rfkill_register EXPORT_SYMBOL vmlinux 0xff2c9f0d mipi_dsi_dcs_set_tear_scanline EXPORT_SYMBOL vmlinux 0xff52848a __SCT__tp_func_kmem_cache_free EXPORT_SYMBOL vmlinux 0xff5618ac backlight_device_set_brightness -EXPORT_SYMBOL vmlinux 0xff5c0127 __traceiter_spi_transfer_start +EXPORT_SYMBOL vmlinux 0xff5e996d tcp_sendpage EXPORT_SYMBOL vmlinux 0xff6878cf fb_default_cmap -EXPORT_SYMBOL vmlinux 0xff75580c mr_vif_seq_idx EXPORT_SYMBOL vmlinux 0xff87cd18 lockref_get_not_dead -EXPORT_SYMBOL vmlinux 0xff90343a tc_setup_cb_replace EXPORT_SYMBOL vmlinux 0xff9f51b0 vfs_ioctl -EXPORT_SYMBOL vmlinux 0xffa385c8 rawv6_mh_filter_unregister EXPORT_SYMBOL vmlinux 0xffb7c514 ida_free EXPORT_SYMBOL vmlinux 0xffc30c3a acpi_processor_power_init_bm_check EXPORT_SYMBOL vmlinux 0xffcc4ec7 tcp_bpf_bypass_getsockopt EXPORT_SYMBOL vmlinux 0xffcd7f49 iosf_mbi_punit_acquire +EXPORT_SYMBOL vmlinux 0xffe825da skb_pull EXPORT_SYMBOL vmlinux 0xffeedf6a delayed_work_timer_fn -EXPORT_SYMBOL vmlinux 0xfff843a0 tcp_fastopen_defer_connect EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x2c8b5dbf camellia_ecb_enc_16way EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x339c33c5 camellia_cbc_dec_16way EXPORT_SYMBOL_GPL arch/x86/crypto/camellia-aesni-avx-x86_64 0x8b44ee75 camellia_ecb_dec_16way @@ -8964,384 +8965,384 @@ EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xb4e98a46 twofish_dec_blk_3way EXPORT_SYMBOL_GPL arch/x86/crypto/twofish-x86_64-3way 0xe4ae7508 __twofish_enc_blk_3way EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x00409106 __tracepoint_kvm_entry -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x01bff335 kvm_mmu_free_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x009ab80f kvm_vcpu_map +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0216ce1a kvm_queue_exception EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x050f7a3d kvm_configure_mmu EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x05257798 __SCK__tp_func_kvm_apicv_update_request EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x053614ec kvm_set_user_return_msr -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x065fc9b6 load_pdptrs -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0670877d kvm_mmu_gva_to_gpa_read -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x068c0ad1 kvm_scale_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x054834a9 kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x05dcad07 kvm_vcpu_is_reset_bsp EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0690bd4e __SCK__tp_func_kvm_avic_unaccelerated_access -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x06b94063 kvm_require_dr -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x07564b3f kvm_apic_update_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x07c25c7a kvm_skip_emulated_instruction EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0814dd11 __SCT__kvm_x86_tlb_flush_current -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x095ec05c kvm_apicv_activated -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0a8f1ef4 x86_decode_emulated_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x08c1d616 kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x093ec26e kvm_gfn_to_hva_cache_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x096e5172 kvm_lapic_find_highest_irr EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0b58a11d kvm_nr_uret_msrs -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0b64be12 __kvm_request_immediate_exit EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0b8a3365 __traceiter_kvm_invlpga -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0c9feab9 kvm_put_kvm_no_destroy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0c08b5f0 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0c7c372e kvm_vcpu_gfn_to_hva EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0ca8df68 __traceiter_kvm_vmgexit_msr_protocol_enter EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0cff45f4 __SCT__tp_func_kvm_vmgexit_msr_protocol_exit -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0d753256 kvm_io_bus_get_dev +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0d542407 kvm_vcpu_halt EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0d8f4740 kvm_mce_cap_supported -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0f00b74c kvm_free_guest_fpu -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0f069e9c kvm_emulate_ap_reset_hold -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0fc13b9f kvm_get_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0df9f567 kvm_put_kvm_no_destroy +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0e46b092 kvm_vcpu_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0eb3df04 kvm_post_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x0eca9593 __kvm_request_immediate_exit EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x102c31c1 __tracepoint_kvm_nested_vmexit EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x114eb824 __traceiter_kvm_nested_vmexit_inject -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1187e009 kvm_emulate_cpuid EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x11aba050 __SCK__tp_func_kvm_nested_intr_vmexit -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x11fd597d kvm_lapic_switch_to_hv_timer EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1235000a kvm_tsc_scaling_ratio_frac_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1243ef46 kvm_vcpu_wake_up EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x130fd155 supported_xss -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x137357fe kvm_request_apicv_update EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1412f042 __traceiter_kvm_ple_window_update EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x14829292 __tracepoint_kvm_skinit EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x149e87c0 __tracepoint_kvm_vmgexit_msr_protocol_enter -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x14dca105 kvm_lapic_reg_write -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x150518f2 kvm_lmsw -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x154431a7 kvm_vcpu_unmap +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x154efe05 gfn_to_pfn_prot EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x159b8d5e host_efer EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x15e26bc7 __SCK__kvm_x86_cache_reg -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x16268060 kvm_emulate_wrmsr -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x164dd58b kvm_write_guest -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x16f97e31 kvm_apic_clear_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x164b14ff vcpu_load EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1707fcb1 kvm_debugfs_dir +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1754afc6 kvm_sev_es_mmio_read EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x17f9cfe3 __traceiter_kvm_cr -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x18902b01 kvm_vcpu_destroy -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x19fc8d57 kvm_get_linear_rip EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1a6925ad __tracepoint_kvm_invlpga -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1be80c4e kvm_map_gfn -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1c32ca64 kvm_fast_pio -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1cb31304 kvm_vcpu_on_spin +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1c213c59 kvm_emulate_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1cef996c kvm_vcpu_write_guest EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1cf65ffc kvm_max_guest_tsc_khz EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1d013832 kvm_enable_efer_bits EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1d1b139a __SCT__tp_func_kvm_avic_ga_log EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1db1c372 enable_vmware_backdoor +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1db5f519 kvm_read_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1e953673 kvm_hv_get_assist_page EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x1f7014c3 __tracepoint_kvm_nested_vmrun -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2200a867 kvm_write_guest_virt_system -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x227809bc kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x205b4dc8 kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x20e695e1 kvm_mmu_reset_context +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x22d481cf kvm_get_kvm EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x23263c0a __traceiter_kvm_nested_vmenter_failed -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x23443e20 kvm_lapic_expired_hv_timer -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x23ac2de3 kvm_set_cr3 -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x24427e55 vcpu_put +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x247819af kvm_requeue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2483e635 kvm_is_valid_cr4 EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2510fc6d __SCT__tp_func_kvm_nested_vmexit -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x256c7fdd kvm_set_cr4 EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x25c07225 __traceiter_kvm_vmgexit_msr_protocol_exit EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x26d4bb26 kvm_cpu_caps EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x27046576 kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x273794ab kvm_mtrr_get_guest_memory_type EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2781d4b2 __tracepoint_kvm_vmgexit_msr_protocol_exit -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x278828d1 kvm_lapic_switch_to_sw_timer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2788990e __x86_set_memory_region EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x28411ed7 kvm_max_tsc_scaling_ratio -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x28e3e486 kvm_set_dr EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2976b749 __gfn_to_pfn_memslot EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x299bab6e __tracepoint_kvm_msr EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2a4dd265 __tracepoint_kvm_pi_irte_update +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2a810ea0 kvm_set_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2ae83c32 kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c78533e kvm_emulate_instruction EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2c91b018 __tracepoint_kvm_vmgexit_enter -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2cd2d297 kvm_emulate_invd EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2d124bc6 __SCK__kvm_x86_get_cs_db_l_bits EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2d82cc24 kvm_spec_ctrl_test_value -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2eb6c91a kvm_vcpu_yield_to -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x310fd5bf kvm_intr_is_single_vcpu -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x31411205 kvm_emulate_instruction_from_buffer -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x31b7e339 kvm_msr_allowed -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x31de1044 kvm_get_msr_common -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3263e742 kvm_vcpu_update_apicv +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x2f605f45 kvm_arch_has_assigned_device +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x318f52f1 kvm_load_host_xsave_state EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x332918dc __tracepoint_kvm_apicv_update_request -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x344eb04e kvm_find_cpuid_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x33ccf9e5 kvm_write_guest_page EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x34e03e19 __tracepoint_kvm_nested_intr_vmexit -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3558afbd kvm_wait_lapic_expire +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x35176888 kvm_mmu_new_pgd EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x36a9a35e file_is_kvm -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x37b1f8cc kvm_emulate_xsetbv -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x37e24062 kvm_get_rflags -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x383b65f6 kvm_inject_nmi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x36e62aee kvm_set_cr4 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3730a61a kvm_require_cpl +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x381752da kvm_find_cpuid_entry EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x388e0e10 __SCT__tp_func_kvm_pi_irte_update -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x39e8196f kvm_vcpu_gfn_to_hva EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x39fd83db halt_poll_ns_shrink -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3a4fb2c9 kvm_hv_get_assist_page EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ab2794c kvm_find_user_return_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ae18425 kvm_lapic_set_eoi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ae215da kvm_vcpu_kick +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3b286633 kvm_unmap_gfn EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ba6c794 gfn_to_pfn_memslot -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3cc1f12a kvm_inject_emulated_page_fault -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3d01c288 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3c49338b kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3d3b36d4 kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3f11ad3c kvm_get_apic_mode EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3f510ff5 kvm_has_noapic_vcpu -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4084840f kvm_x86_ops -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x420cdcec kvm_lapic_find_highest_irr -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x42d125b9 kvm_vcpu_read_guest -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x446b1f52 kvm_io_bus_write -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4499ca9d kvm_get_apic_mode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x3ff449a0 reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x40e87166 kvm_vcpu_mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x422e1cfb kvm_put_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x42ba5804 kvm_intr_is_single_vcpu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x452c6514 kvm_read_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x454d2dcf __traceiter_kvm_exit EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x45e80fdf __traceiter_kvm_pi_irte_update -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x46006663 kvm_post_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x46306b55 kvm_lmsw EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x46a38685 __SCK__tp_func_kvm_nested_vmrun -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x46e5aec2 kvm_valid_efer -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x47d4063b kvm_vcpu_mark_page_dirty -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x483828c3 kvm_emulate_rdpmc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4754d27f kvm_handle_memory_failure EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x485cd7f6 kvm_rebooting EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x48644036 __SCT__tp_func_kvm_vmgexit_exit EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x48a0cc83 __tracepoint_kvm_avic_unaccelerated_access EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4942be67 __SCT__tp_func_kvm_avic_incomplete_ipi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x49699098 kvm_emulate_wrmsr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4985cb83 kvm_vcpu_read_guest_atomic EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4a1c261b __SCT__tp_func_kvm_invlpga -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4b5b951a kvm_read_guest_offset_cached -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4d507d66 kvm_init_shadow_npt_mmu -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4d857d88 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4ae7532e kvm_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4cb800b0 kvm_emulate_cpuid EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4db239c4 __tracepoint_kvm_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4dc14357 kvm_lapic_switch_to_sw_timer EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4e3fd1b4 kvm_release_pfn_clean -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4ebe3f12 kvm_post_set_cr4 -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4ff5f238 kvm_handle_invpcid -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5139b708 kvm_get_cs_db_l_bits -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x51c2b4aa kvm_read_guest_cached -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x51e662f6 kvm_handle_invalid_op +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x4fc8b8a8 kvm_arch_end_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x50fb0348 kvm_mtrr_valid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5216c2c4 reset_shadow_zero_bits_mask EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x526d905b __SCK__tp_func_kvm_page_fault -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x529de67a kvm_mmu_invlpg -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53ab30c3 kvm_apic_update_ppr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53d13ab8 kvm_lapic_hv_timer_in_use +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53d96aba kvm_lapic_reg_read EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x53d9f927 __SCT__kvm_x86_get_cs_db_l_bits +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x54a44464 kvm_vcpu_block EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x54cd466b __traceiter_kvm_apicv_update_request -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x565b83f6 reset_shadow_zero_bits_mask -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x572390ff kvm_sev_es_mmio_read -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x592d8b01 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x54f2d283 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x55270628 kvm_arch_register_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5550d95e kvm_apicv_init +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x589eaff8 kvm_hv_assist_page_enabled EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x59387ba3 __SCT__kvm_x86_cache_reg -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x596d00bd kvm_arch_no_poll EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x59e640c0 halt_poll_ns -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5a81cdcf kvm_init_mmu -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5b2b99e5 kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5ae6c022 kvm_write_guest_cached EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5b5d8200 __SCK__tp_func_kvm_exit EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5bf7cde0 kvm_mmu_set_ept_masks EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5c11e105 __traceiter_kvm_write_tsc_offset +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5c40f4ad kvm_mmu_invlpg +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5c592d6e __traceiter_kvm_entry +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5d83b4ee kvm_write_guest_offset_cached EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5d996b31 kvm_set_cpu_caps -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5dd8aec3 kvm_gfn_to_hva_cache_init -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5eacc5a9 kvm_init_shadow_ept_mmu -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5ec351ae gfn_to_pfn_prot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5ec39cc4 kvm_emulate_as_nop +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5f2c682a load_pdptrs EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x5fb8848b halt_poll_ns_grow_start +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x60b31bd9 reprogram_fixed_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x61099f9b kvm_sev_es_mmio_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x615d4690 kvm_init_mmu EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x616e6c95 __SCT__tp_func_kvm_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x61b99b60 kvm_msr_allowed EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6243ac82 __kvm_apic_update_irr -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x62c6f713 kvm_inject_pending_timer_irqs EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x63270977 kvm_default_tsc_scaling_ratio -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x657c668e kvm_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x63ac9b84 kvm_lapic_switch_to_hv_timer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x64039c93 kvm_irq_has_notifier EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6756347e __traceiter_kvm_page_fault -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x68078c14 reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x679bbaaf kvm_inject_pending_timer_irqs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x683e17a1 kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x68483365 kvm_set_msr EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6892e3c3 kvm_set_pfn_accessed EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x69b1a57f __SCK__tp_func_kvm_vmgexit_msr_protocol_exit EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6a9a00b0 __tracepoint_kvm_exit EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6ada8f59 kvm_mmu_set_mmio_spte_mask EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6b195700 __SCK__tp_func_kvm_cr EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6becaded __SCT__tp_func_kvm_inj_virq -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6c2292dd kvm_mtrr_valid -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6c6b32ab handle_ud EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6c95726c host_xss -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6d23052e kvm_apic_match_dest -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6dfb61d2 reprogram_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x6e070aaa kvm_vcpu_read_guest EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x70288943 __SCT__tp_func_kvm_nested_vmrun -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x704f3a66 kvm_read_l1_tsc EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x709cd8cb kvm_spurious_fault -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7183ffa8 kvm_vcpu_is_visible_gfn -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x71a76b77 kvm_is_valid_cr4 -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x71ead4a7 kvm_load_host_xsave_state -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x724b8007 kvm_flush_remote_tlbs +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x71546279 kvm_arch_no_poll +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7194d759 kvm_get_apic_base +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x71b737b7 kvm_cpu_get_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x71e1aae5 kvm_fixup_and_inject_pf_error EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7263ae77 __traceiter_kvm_nested_vmrun -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x72da03d4 gfn_to_memslot -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x731793b4 __x86_set_memory_region -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x73a0c734 kvm_sev_es_string_io +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x73b72077 kvm_inject_emulated_page_fault EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x73cba7f1 __tracepoint_kvm_fast_mmio -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x744fcbde kvm_load_guest_xsave_state +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x742d0733 kvm_get_cr8 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x743ef451 kvm_flush_remote_tlbs EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x752c2b00 __traceiter_kvm_fast_mmio -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76510829 kvm_set_apic_base -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76c30dc8 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x761823f4 kvm_request_apicv_update +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7657feb8 kvm_free_guest_fpu EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x76e15622 __SCK__tp_func_kvm_fast_mmio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x770c223c kvm_apic_set_eoi_accelerated EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x778e30b9 __SCT__tp_func_kvm_cr -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x778e4073 kvm_cpu_get_interrupt -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x78e4047d kvm_emulate_monitor -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x79908062 kvm_set_msr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x78b03ae6 kvm_vcpu_gfn_to_pfn_atomic +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x79245a2c kvm_complete_insn_gp EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x79c147f5 __SCK__tp_func_kvm_write_tsc_offset -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x79ed7540 kvm_write_guest_offset_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x79db2cc4 kvm_get_running_vcpu EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7ad9cf33 __SCK__kvm_x86_tlb_flush_current EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7afe324e halt_poll_ns_grow EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7c94c99a kvm_release_pfn_dirty -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f03b784 kvm_vcpu_gfn_to_memslot -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f6db91f kvm_write_guest_cached -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7fca42e8 kvm_hv_assist_page_enabled +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7d7e3b0e kvm_valid_efer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7db3f3ca kvm_emulate_xsetbv +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7dc386a4 kvm_scale_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7e385199 current_vcpu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7eaa28a2 kvm_slot_page_track_add_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7f65ff98 kvm_emulate_halt EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7fe19488 kvm_add_user_return_msr EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x7ff2a104 __SCT__tp_func_kvm_page_fault EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8097f4c0 __SCK__tp_func_kvm_msr -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x810a0345 kvm_handle_memory_failure +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x80ab1860 kvm_arch_has_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x80da1dd2 kvm_emulate_rdmsr EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x818b5306 __tracepoint_kvm_write_tsc_offset -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x85ea1b5f kvm_vcpu_gfn_to_pfn -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x85fe88bf kvm_vcpu_is_reset_bsp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x819e48bc kvm_emulate_mwait +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x83db2db5 kvm_is_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8408a43f kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8451b39a kvm_map_gfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x85557a28 __traceiter_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x86b15127 mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x87d3de20 kvm_mmu_gva_to_gpa_read EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x88041c17 __tracepoint_kvm_nested_intercepts -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x88176692 kvm_skip_emulated_instruction -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8884d426 kvm_set_msi_irq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x88de3542 kvm_set_msr_common +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x88e32665 kvm_queue_exception_e +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8910dd2b mark_page_dirty_in_slot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a6c9edd kvm_get_rflags EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8a7fe54a __SCT__tp_func_kvm_vmgexit_enter -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ab0301f kvm_emulate_rdmsr -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ac239aa kvm_get_apic_base EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8ac6eb75 __tracepoint_kvm_avic_ga_log EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8b618aa6 __SCT__tp_func_kvm_nested_vmexit_inject +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8c7ed1e4 kvm_init_shadow_ept_mmu EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8cc07ada gfn_to_hva_memslot -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8da0f5f7 __traceiter_kvm_exit -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e52ed59 kvm_page_track_unregister_notifier -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8e99f045 kvm_deliver_exception_payload -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8f09c925 kvm_arch_start_assignment EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8fca06f6 __SCK__tp_func_kvm_nested_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x8fe33400 kvm_deliver_exception_payload EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x912a9286 __traceiter_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x917e6965 kvm_read_guest_offset_cached EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x926f915d __SCK__tp_func_kvm_pi_irte_update -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x92a974b9 kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x92b9c56b kvm_init_shadow_npt_mmu EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x93a3e40e __SCT__tp_func_kvm_ple_window_update EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x944882ed kvm_has_bus_lock_exit -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9504d774 kvm_get_dr -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x95f81793 mark_page_dirty +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x973ec35b kvm_cpu_has_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9813a371 kvm_requeue_exception EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x98453194 __SCK__tp_func_kvm_nested_vmenter_failed +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x98780fcc kvm_apic_has_interrupt EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x98b40401 gfn_to_pfn_memslot_atomic EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x98f9ad3b __SCT__tp_func_kvm_apicv_update_request -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x99d8df30 kvm_irq_has_notifier -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a74d334 kvm_update_dr7 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x993555ae kvm_get_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a03140b kvm_mmu_gva_to_gpa_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9a5d466c kvm_io_bus_get_dev +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9aa34a6e kvm_handle_invpcid EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9b78c9e4 __SCK__tp_func_kvm_inj_virq -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9bd293ac kvm_mmu_gva_to_gpa_write -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9bdb8236 kvm_cpu_has_injectable_intr EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9ca6f70d kvm_release_page_dirty EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9cf59e7a allow_smaller_maxphyaddr -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9dcf9555 kvm_emulate_mwait +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9d2e3601 kvm_mmu_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9e1b8433 kvm_get_msr_common EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9e20b2bc __traceiter_kvm_avic_incomplete_ipi +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9eb0bb83 kvm_vcpu_is_visible_gfn EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9f68faa3 __traceiter_kvm_avic_unaccelerated_access EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9f6d78fc kvm_get_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0x9fc7b952 kvm_handle_invalid_op EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa1c4231f kvm_set_pfn_dirty -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa2ce4636 kvm_read_guest -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa411aa9b kvm_complete_insn_gp +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa33b6ff0 kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa387686f kvm_apic_match_dest EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa588ef67 __SCT__tp_func_kvm_nested_intercepts -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa65dc8bb kvm_put_kvm EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa6a50230 __traceiter_kvm_nested_intercepts EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa7022320 __traceiter_kvm_avic_ga_log EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa80595a6 __traceiter_kvm_inj_virq EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa84a2e73 __SCT__tp_func_kvm_write_tsc_offset EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa9a75a56 __SCK__tp_func_kvm_vmgexit_exit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xa9b28661 kvm_emulate_ap_reset_hold EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa3a9734 gfn_to_page_many_atomic -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaad0729a kvm_require_cpl -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xab963b0f kvm_vcpu_kick -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaba25b84 kvm_emulate_wbinvd -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac0396fe kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaa6251f2 kvm_vcpu_unmap +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac4234fb kvm_set_dr EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac48f5a5 __SCK__tp_func_kvm_nested_intercepts -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xac5e9ce9 kvm_emulate_as_nop -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xae51ca88 kvm_task_switch -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xaf068210 kvm_mtrr_get_guest_memory_type -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb0c00e6f kvm_requeue_exception -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb0f63413 kvm_inject_realmode_interrupt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacac2f17 kvm_io_bus_write +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xacc1b12b kvm_vcpu_update_apicv +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb0ff928e kvm_queue_exception_p EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb1de0923 __tracepoint_kvm_inj_virq -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb2914d60 kvm_read_guest_page -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb2d46d4e kvm_slot_page_track_add_page -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb36e9e2e kvm_apic_write_nodecode +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb319c739 handle_fastpath_set_msr_irqoff EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb377872f __SCK__tp_func_kvm_vmgexit_enter -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb3ad0197 kvm_page_track_register_notifier -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb42dec19 kvm_emulate_instruction -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb4449fbd kvm_vcpu_map -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb4769c5f kvm_get_cr8 -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb6ab44f2 mark_page_dirty_in_slot +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb52dbfb6 kvm_vcpu_gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb54b4aff kvm_can_use_hv_timer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb559a9ba handle_ud +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb6399dc9 kvm_vcpu_destroy EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb6b6ccdc kvm_init EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb708a2e5 __tracepoint_kvm_avic_incomplete_ipi -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb797e5e8 reprogram_fixed_counter -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb7fd1cfd kvm_read_guest_page_mmu +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb80ce1b3 kvm_set_apic_base EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb82d104f __SCK__tp_func_kvm_avic_incomplete_ipi -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb8557bc9 kvm_get_kvm +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb8ea12b5 kvm_is_visible_gfn EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xb96e9aa1 __traceiter_kvm_skinit -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbafda85e kvm_fixup_and_inject_pf_error -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc5c079d kvm_lapic_set_eoi -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbcc9fe19 pdptrs_changed -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbdee4304 gfn_to_hva -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbee576ae kvm_make_all_cpus_request +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbae15192 __kvm_set_memory_region +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbb360293 kvm_write_guest_virt_system +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbc5cccf3 x86_decode_emulated_instruction +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbda5e46a kvm_x86_ops +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbda6baf0 kvm_cpuid +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xbfc92e00 kvm_lapic_expired_hv_timer EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc071e99f __SCT__tp_func_kvm_entry -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc1920a74 vcpu_load -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc36cc2db kvm_queue_exception -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc3815bcc kvm_can_use_hv_timer -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc4281ba0 kvm_requeue_exception_e -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc509ecd1 kvm_arch_register_noncoherent_dma -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc5ba7598 kvm_queue_exception_p +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc2e27e20 kvm_apic_clear_irr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc4f686ad kvm_vcpu_gfn_to_memslot EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc60d7d0c __traceiter_kvm_pml_full -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc67d4ead kvm_apic_set_eoi_accelerated -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc6dd1e9b kvm_vcpu_write_guest EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc724eead kvm_release_page_clean -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc77f30ac current_vcpu -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc806b4dd kvm_inject_page_fault -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc8365fc4 __traceiter_kvm_entry -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc8983147 kvm_arch_unregister_noncoherent_dma +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc781d4d2 kvm_wait_lapic_expire +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc785e6d3 reprogram_gp_counter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc8001bcf kvm_task_switch EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc96d35f4 report_ignored_msrs -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc9fab5d4 kvm_handle_page_fault +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xc9e1ec38 kvm_apic_update_irr EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb10e508 __SCK__tp_func_kvm_entry -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb66f243 kvm_unmap_gfn -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xccbdc506 kvm_update_cpuid_runtime -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xced0c987 gfn_to_pfn +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcb5ab325 kvm_apic_update_apicv +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcc6b6b1d kvm_inject_page_fault EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcf195213 __tracepoint_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xcffde7f6 pdptrs_changed EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd0459e67 kvm_has_tsc_control EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd07e6f6d __tracepoint_kvm_nested_vmexit_inject EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd09da48b __SCT__tp_func_kvm_nested_intr_vmexit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd13696db kvm_vcpu_deliver_sipi_vector +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd16ace28 kvm_read_guest_cached +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd1f6abe2 kvm_vcpu_on_spin EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd3827656 __SCK__tp_func_kvm_invlpga -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd3f5909c kvm_vcpu_deliver_sipi_vector -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd4728bd2 kvm_is_visible_gfn -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd5a9ecc6 kvm_clear_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd4aba62f kvm_emulate_monitor +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd4bcea60 kvm_read_l1_tsc +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd5317063 kvm_require_dr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd5aa19ed kvm_vcpu_write_guest_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd6293bff gfn_to_memslot EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd6e5a548 __SCK__tp_func_kvm_ple_window_update -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd931581a kvm_sev_es_mmio_write -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd9fb7a86 kvm_set_rflags +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd744b2cd kvm_write_guest +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xd79a7ce7 kvm_set_cr3 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xda58b179 kvm_emulate_invd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xda933866 vcpu_put +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdaa7d5a7 kvm_load_guest_xsave_state +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdb8082f5 kvm_lapic_reg_write EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdbe8aaec __tracepoint_kvm_cr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdc686de9 kvm_apic_update_ppr EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdc7369fe __traceiter_kvm_msr -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdd147707 kvm_arch_end_assignment EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xdf026a18 __traceiter_kvm_vmgexit_exit -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe03ff8b3 handle_fastpath_set_msr_irqoff -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe0ad5b0b kvm_get_running_vcpu EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe0e786a7 __SCT__tp_func_kvm_skinit -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe1ad8048 kvm_arch_has_noncoherent_dma -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe55c5428 kvm_set_cr8 -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe59c00d4 kvm_emulate_hypercall +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe1449baa kvm_cpu_has_injectable_intr +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe295e65f kvm_slot_page_track_remove_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe48faf16 kvm_fast_pio +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe51e7fce kvm_apic_write_nodecode EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe5bf92d4 __SCK__tp_func_kvm_pml_full +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe66b9a3b kvm_handle_page_fault EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe6720029 __SCK__tp_func_kvm_nested_vmexit_inject -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe7f8f14c __traceiter_kvm_nested_vmexit EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe93dfc8c __SCT__tp_func_kvm_nested_vmenter_failed EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9674a16 supported_xcr0 -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe97aa820 kvm_apicv_init EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xe9c2b872 __tracepoint_kvm_nested_vmenter_failed EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xea5cda33 __SCT__tp_func_kvm_fast_mmio EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xea69ba09 __SCK__tp_func_kvm_avic_ga_log -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeb7fbcd6 kvm_emulate_halt -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xebec3556 kvm_cpu_has_interrupt -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xec154081 kvm_lapic_reg_read -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xee0d57fa __kvm_set_memory_region -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef89114d kvm_read_guest_virt +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xeb55a48b kvm_sev_es_string_io +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xebcf3546 kvm_set_msi_irq +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xec2accb6 kvm_update_cpuid_runtime +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xed006bb8 kvm_emulate_instruction_from_buffer +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xee31917d kvm_emulate_wbinvd +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xef19777b kvm_page_track_unregister_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf065890b gfn_to_page EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf074c810 __tracepoint_kvm_vmgexit_exit EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf084b57d __SCT__tp_func_kvm_msr EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf10509bc __SCK__tp_func_kvm_vmgexit_msr_protocol_enter -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf13beb10 kvm_apic_update_apicv EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf2a94cfa __tracepoint_kvm_ple_window_update EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf2df48f3 __SCT__tp_func_kvm_pml_full EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf32dff97 __SCT__tp_func_kvm_avic_unaccelerated_access +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf3851f7e kvm_apicv_activated EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf3f1efe1 __SCK__tp_func_kvm_skinit +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf44a4916 kvm_update_dr7 EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf4668dfb __traceiter_kvm_vmgexit_enter +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf4d1b495 kvm_read_guest_virt EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf54e2886 __SCT__tp_func_kvm_vmgexit_msr_protocol_enter -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf617274b kvm_apic_has_interrupt -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf7edf303 kvm_lapic_hv_timer_in_use -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf9064f9a kvm_mmu_new_pgd -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf9274e85 kvm_vcpu_wake_up -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf9b942b6 kvm_vcpu_halt -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfa2aa5eb kvm_vcpu_read_guest_page -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfc9b6b9b kvm_write_guest_page -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd21ebf8 kvm_vcpu_read_guest_atomic -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd243056 kvm_vcpu_write_guest_page -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd63cf11 kvm_arch_has_assigned_device -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfdec9231 kvm_mmu_reset_context -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfe794a64 kvm_vcpu_block -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xff88cff9 kvm_slot_page_track_remove_page -EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xffd1f3cc gfn_to_page -EXPORT_SYMBOL_GPL crypto/af_alg 0x1471209c af_alg_free_resources -EXPORT_SYMBOL_GPL crypto/af_alg 0x1f41cf4c af_alg_release_parent -EXPORT_SYMBOL_GPL crypto/af_alg 0x38f1a3d5 af_alg_sendmsg -EXPORT_SYMBOL_GPL crypto/af_alg 0x41ed20fa af_alg_release -EXPORT_SYMBOL_GPL crypto/af_alg 0x44722d20 af_alg_register_type -EXPORT_SYMBOL_GPL crypto/af_alg 0x4e5da252 af_alg_make_sg -EXPORT_SYMBOL_GPL crypto/af_alg 0x53f7463e af_alg_unregister_type -EXPORT_SYMBOL_GPL crypto/af_alg 0x7359a941 af_alg_free_sg -EXPORT_SYMBOL_GPL crypto/af_alg 0x763472fa af_alg_async_cb -EXPORT_SYMBOL_GPL crypto/af_alg 0x8becb29c af_alg_poll -EXPORT_SYMBOL_GPL crypto/af_alg 0x90beae77 af_alg_count_tsgl -EXPORT_SYMBOL_GPL crypto/af_alg 0x94f7148d af_alg_wait_for_data -EXPORT_SYMBOL_GPL crypto/af_alg 0x99439abe af_alg_pull_tsgl -EXPORT_SYMBOL_GPL crypto/af_alg 0x9c718d04 af_alg_get_rsgl -EXPORT_SYMBOL_GPL crypto/af_alg 0xa594c0c2 af_alg_sendpage -EXPORT_SYMBOL_GPL crypto/af_alg 0xac61fca4 af_alg_alloc_areq -EXPORT_SYMBOL_GPL crypto/af_alg 0xb4a15c00 af_alg_wmem_wakeup -EXPORT_SYMBOL_GPL crypto/af_alg 0xd591df54 af_alg_accept +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf8318a3c kvm_mmu_free_roots +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf874cd27 kvm_make_all_cpus_request +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xf9496314 kvm_arch_start_assignment +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfd971e30 kvm_vcpu_yield_to +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfdac006e kvm_vcpu_gfn_to_page +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfe92e9b6 kvm_get_linear_rip +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfec4fde7 kvm_post_set_cr0 +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xfeeabd77 kvm_page_track_register_notifier +EXPORT_SYMBOL_GPL arch/x86/kvm/kvm 0xff0816b0 gfn_to_hva +EXPORT_SYMBOL_GPL crypto/af_alg 0x0a99cc6e af_alg_count_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0x15e07e29 af_alg_wait_for_data +EXPORT_SYMBOL_GPL crypto/af_alg 0x3ac07766 af_alg_wmem_wakeup +EXPORT_SYMBOL_GPL crypto/af_alg 0x3c6ab7df af_alg_free_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0x3ec360e4 af_alg_poll +EXPORT_SYMBOL_GPL crypto/af_alg 0x46fc6b26 af_alg_sendpage +EXPORT_SYMBOL_GPL crypto/af_alg 0x78e4c05d af_alg_release_parent +EXPORT_SYMBOL_GPL crypto/af_alg 0x7b680920 af_alg_register_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x80195a21 af_alg_alloc_areq +EXPORT_SYMBOL_GPL crypto/af_alg 0x84325e33 af_alg_async_cb +EXPORT_SYMBOL_GPL crypto/af_alg 0x86076a92 af_alg_accept +EXPORT_SYMBOL_GPL crypto/af_alg 0x884d0c24 af_alg_unregister_type +EXPORT_SYMBOL_GPL crypto/af_alg 0x8dd2d04e af_alg_sendmsg +EXPORT_SYMBOL_GPL crypto/af_alg 0xa3fcf67e af_alg_make_sg +EXPORT_SYMBOL_GPL crypto/af_alg 0xcae275a2 af_alg_pull_tsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xecd2a613 af_alg_get_rsgl +EXPORT_SYMBOL_GPL crypto/af_alg 0xeef9e7ab af_alg_release +EXPORT_SYMBOL_GPL crypto/af_alg 0xfc00a107 af_alg_free_resources EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0x7430f97c tpm_key_create EXPORT_SYMBOL_GPL crypto/asymmetric_keys/asym_tpm 0xc08d3935 asym_tpm_subtype EXPORT_SYMBOL_GPL crypto/async_tx/async_memcpy 0x5299fca9 async_memcpy @@ -9863,19 +9864,19 @@ EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xdd112c2a i3c_generic_ibi_recycle_slot EXPORT_SYMBOL_GPL drivers/i3c/i3c 0xff0d9afc i3c_device_free_ibi EXPORT_SYMBOL_GPL drivers/infiniband/core/ib_core 0xdbd019c4 ib_wq -EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x0a3a8379 rtrs_send_hb_ack -EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x0f2b1480 rtrs_iu_alloc -EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x14ef6847 rtrs_start_hb -EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x57a5e057 rtrs_init_hb -EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x57fd0887 rtrs_cq_qp_destroy -EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x5c2ca878 rtrs_post_recv_empty -EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x5e915586 rtrs_iu_post_recv -EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x64647489 rtrs_cq_qp_create -EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x75311a94 rtrs_post_rdma_write_imm_empty -EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x9a6ede13 rtrs_iu_post_send -EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xb8a3a9ec rtrs_iu_post_rdma_write_imm -EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xbaba838c rtrs_iu_free -EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xdbd8d710 rtrs_stop_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x015eeb57 rtrs_cq_qp_destroy +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x0bc9cc08 rtrs_send_hb_ack +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x0bc9eea0 rtrs_start_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x2d0f52d7 rtrs_cq_qp_create +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x5907eb12 rtrs_post_recv_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x6bf8e6e0 rtrs_iu_post_rdma_write_imm +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0x81053925 rtrs_stop_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xb5380f69 rtrs_init_hb +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xc666b909 rtrs_iu_post_send +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xe206c342 rtrs_iu_post_recv +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xe6f72b34 rtrs_post_rdma_write_imm_empty +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xf514cb2b rtrs_iu_free +EXPORT_SYMBOL_GPL drivers/infiniband/ulp/rtrs/rtrs-core 0xf86e8bdb rtrs_iu_alloc EXPORT_SYMBOL_GPL drivers/input/ff-memless 0x71a9426b input_ff_create_memless EXPORT_SYMBOL_GPL drivers/input/matrix-keymap 0x09aa28b2 matrix_keypad_parse_properties EXPORT_SYMBOL_GPL drivers/ipack/ipack 0x221085ee ipack_put_device @@ -10494,8 +10495,8 @@ EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x32531bab v4l2_fh_open EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x32e18175 v4l2_event_unsubscribe_all EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x35782189 v4l2_subdev_link_validate -EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3867f7c4 v4l2_spi_subdev_init EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x3e8ad736 v4l2_subdev_alloc_pad_config +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x421cea0f v4l2_spi_subdev_init EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x4fbad288 v4l2_device_unregister EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x52818648 v4l2_subdev_notify_event EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x58401b38 v4l2_async_notifier_cleanup @@ -10507,7 +10508,6 @@ EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x73a0e73e v4l2_mc_create_media_graph EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x778596f6 v4l2_subdev_link_validate_default EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x78cafb87 __SCK__tp_func_vb2_v4l2_qbuf -EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7988c9b2 v4l2_spi_new_subdev EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7a29687e __tracepoint_vb2_v4l2_buf_done EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7bc688b1 __traceiter_vb2_v4l2_qbuf EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0x7ddd005f v4l2_g_parm_cap @@ -10537,6 +10537,7 @@ EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc246b541 v4l2_i2c_new_subdev EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc2e76468 v4l2_create_fwnode_links_to_pad EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xc8dd867f __SCT__tp_func_vb2_v4l2_buf_queue +EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcadefcb8 v4l2_spi_new_subdev EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc35c58c v4l2_create_fwnode_links EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xcc501597 v4l2_fill_pixfmt EXPORT_SYMBOL_GPL drivers/media/v4l2-core/videodev 0xccf00ac9 v4l2_src_change_event_subdev_subscribe @@ -10755,334 +10756,331 @@ EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xdc96874f devm_mux_chip_register EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xe7617a3f devm_mux_chip_alloc EXPORT_SYMBOL_GPL drivers/mux/mux-core 0xf128cd74 mux_control_get -EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x1325d975 arcnet_led_event -EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x9be5836e devm_arcnet_led_init -EXPORT_SYMBOL_GPL drivers/net/bareudp 0x195834a1 bareudp_dev_create -EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x3834c434 free_c_can_dev -EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x594bd58c register_c_can_dev -EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb5110f9f unregister_c_can_dev -EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xbd4c727b c_can_power_up -EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xc4d8ba1e alloc_c_can_dev -EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xc98f3849 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0x86eb3487 devm_arcnet_led_init +EXPORT_SYMBOL_GPL drivers/net/arcnet/arcnet 0xacd8cdde arcnet_led_event +EXPORT_SYMBOL_GPL drivers/net/bareudp 0xf9c1c914 bareudp_dev_create +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x5993d364 c_can_power_down +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x88538293 free_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0x8db4385b unregister_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xb89acea4 c_can_power_up +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd418a689 alloc_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/c_can/c_can 0xd6f19529 register_c_can_dev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x07c278b5 can_rx_offload_enable +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x0b3e3686 close_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x0b8bcd5f alloc_can_skb EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x10d892eb can_get_state_str -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x2282da58 safe_candev_priv -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x34bed1e7 can_rx_offload_add_fifo -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x3607f594 can_rx_offload_del -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x360db77b can_rx_offload_irq_offload_timestamp -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x3d5c2ea1 can_skb_get_frame_len -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x47bd6e9e can_rx_offload_get_echo_skb -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x4aab6e3c can_rx_offload_queue_tail -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x55ca8e4f can_bus_off -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x5ce64791 can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x125d062b can_rx_offload_del +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x1456686a safe_candev_priv +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x171cc5b7 unregister_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x1c2c5409 alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x215db5ec can_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x24ba29d0 can_rx_offload_queue_tail EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x6047ede6 can_fd_len2dlc -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x6ba0b989 open_candev -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x6e5db2d6 register_candev -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x76e05bec can_rx_offload_queue_sorted -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x839f8d8c can_rx_offload_irq_offload_fifo -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x94c5c68b can_put_echo_skb -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x9a71f0e2 can_change_state -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xaf786b96 alloc_can_skb -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xb9310558 free_candev -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xc06ffe7a close_candev -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xda9be2aa can_rx_offload_enable -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xdaaacea0 can_rx_offload_add_timestamp -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe7abe8c8 can_free_echo_skb -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xe7e1f9fb alloc_canfd_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x6694902e can_rx_offload_add_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x74e21d9d can_rx_offload_get_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x7c169156 register_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x7e16bd80 can_rx_offload_queue_sorted +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x8228c4bd can_free_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x827defc8 can_skb_get_frame_len +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0x99cd883a can_change_state +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xa03d9dd7 can_rx_offload_irq_offload_timestamp +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xae3d6204 free_candev +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xb8ff2a26 can_bus_off +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xbcd9a931 can_change_mtu +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xbf8da812 can_put_echo_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xcf30db77 alloc_can_err_skb +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xd17886ff can_rx_offload_irq_offload_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xd1d47557 can_rx_offload_add_fifo +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xd28fe093 alloc_candev_mqs +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xebcd085f open_candev EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xf12d9387 can_fd_dlc2len -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xf3eb0b09 alloc_candev_mqs -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xf7aa8ea6 alloc_can_err_skb -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xf830bc0b can_change_mtu -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xffadb78e unregister_candev -EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xffbfe5f4 can_rx_offload_add_manual +EXPORT_SYMBOL_GPL drivers/net/can/dev/can-dev 0xfe7cd7dc can_rx_offload_add_manual +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x29072f7b alloc_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x3f28228a register_sja1000dev EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x49ebd0d2 sja1000_interrupt -EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x73749229 register_sja1000dev -EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x9a813b41 alloc_sja1000dev -EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xb13ba7ca unregister_sja1000dev -EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0xfd812721 free_sja1000dev -EXPORT_SYMBOL_GPL drivers/net/dsa/lan9303-core 0xc46116db lan9303_indirect_phy_ops -EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x08d55359 ksz_phy_write16 -EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x1493c322 ksz_port_bridge_leave -EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x246149b0 ksz_port_bridge_join -EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x54e7704e ksz_init_mib_timer -EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x7e6ec6c3 ksz_get_ethtool_stats -EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x9074a34c ksz_mac_link_down -EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xaf57e091 ksz_sset_count -EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xbbebd015 ksz_enable_port -EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xcf1b0e3e ksz_phy_read16 -EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xdb3df44a ksz_port_mdb_del -EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xddedf4ff ksz_port_fdb_dump -EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xe96410e4 ksz_port_mdb_add -EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xe9d87993 ksz_update_port_member -EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xff551b43 ksz_port_fast_age -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x13c545ba rtl8366_reset_vlan -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x177190c4 rtl8366_get_strings -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x1925a81c realtek_smi_write_reg_noack -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x1b9b0d7c rtl8366_init_vlan -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x2092a09c rtl8366_vlan_filtering -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x38906ea1 rtl8366_mc_is_used -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x447199cd rtl8366_get_sset_count -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x53b06458 rtl8366_enable_vlan -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x7025a104 rtl8366_vlan_del -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x7c59bc09 rtl8366_set_pvid -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xb28dd9e8 rtl8366_vlan_add -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xb6f92318 rtl8366_set_vlan -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xbe2698d3 rtl8366_get_ethtool_stats -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xdd9a9ccc rtl8366rb_variant -EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xe73cb114 rtl8366_enable_vlan4k -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0078cc24 mlx4_flow_steer_promisc_remove -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x00da398b mlx4_unbond -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x02e00767 mlx4_qp_reserve_range -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x042f81ca mlx4_db_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0498d5a6 mlx4_srq_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05cd6530 mlx4_mr_hw_change_pd -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x080af78e __mlx4_unregister_mac -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0884d188 mlx4_map_sw_to_hw_steering_mode -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x08d20d19 mlx4_alloc_cmd_mailbox -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0af85c59 mlx4_alloc_hwq_res -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0dd20981 mlx4_mr_rereg_mem_write -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0edab694 mlx4_xrcd_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f07823a mlx4_get_counter_stats -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x139d9774 mlx4_qp_query -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13d460d3 mlx4_mr_hw_put_mpt -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x176d0f1b mlx4_get_default_counter_index -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x17dc45ac mlx4_get_base_gid_ix -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19000303 mlx4_srq_query -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x193ee9be mlx4_find_cached_vlan -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1a5f9348 mlx4_update_qp -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1af72e68 mlx4_mr_hw_change_access -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x20739087 mlx4_multicast_promisc_add -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2995d108 mlx4_uar_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x29ce2491 mlx4_get_internal_clock_params -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c49581d mlx4_FLOW_STEERING_IB_UC_QP_RANGE -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c8afd50 mlx4_pd_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f0fc364 mlx4_get_devlink_port -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30d873d8 mlx4_pd_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x374e89c2 mlx4_buf_write_mtt -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x38addfae mlx4_mr_hw_write_mpt -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x38b11769 mlx4_qp_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3a0c67d1 mlx4_multicast_attach -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x41899deb mlx4_buf_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45f3c06a mlx4_unregister_vlan -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x45f476b4 mlx4_vf_set_enable_smi_admin -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x47058f42 mlx4_mr_enable -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4acb9270 mlx4_counter_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4c0e6538 mlx4_unicast_attach -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51f5a315 mlx4_register_mac -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x560c2c38 mlx4_write_mtt -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x570086ad mlx4_srq_lookup -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x57c6a232 mlx4_flow_steer_promisc_add -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5837e00a mlx4_unregister_mac -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5dc360d2 __mlx4_register_mac -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5e6b041a mlx4_phys_to_slave_port -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x60249f56 mlx4_mr_hw_get_mpt -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x610c17ff mlx4_mtt_init -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x62a01a00 mlx4_CLOSE_PORT -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x637df197 mlx4_config_dev_retrieval -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64acc15c mlx4_free_cmd_mailbox -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x64d1d852 mlx4_set_vf_rate -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x65dd743c mlx4_mw_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6649a03b mlx4_mtt_addr -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6765c15f mlx4_wol_write -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x687b46fd mlx4_register_vlan -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68cd44a1 mlx4_map_sw_to_hw_steering_id -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68fce427 mlx4_unicast_promisc_remove -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69b8d859 mlx4_cq_resize -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6b7136d8 mlx4_bond -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6bac4a51 mlx4_mw_enable -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6bf48db1 mlx4_set_admin_guid -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c49b628 mlx4_mw_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x755c1871 mlx4_qp_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77c17afb mlx4_ACCESS_PTYS_REG -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x79c49c20 mlx4_read_clock -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b42ca81 mlx4_get_vf_config -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b81ca71 mlx4_qp_to_ready -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x822c0a3d mlx4_set_vf_vlan -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a095911 mlx4_phys_to_slaves_pport_actv -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8a69965a mlx4_port_map_set -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8c334c04 mlx4_set_vf_link_state -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d1b5a30 mlx4_INIT_PORT -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8d8dbe26 mlx4_wol_read -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8e354121 mlx4_cq_modify -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x911b38c4 __mlx4_replace_mac -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x91590da4 mlx4_srq_arm -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x946bc906 mlx4_mr_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x979972c9 mlx4_db_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9e630569 mlx4_set_vf_mac -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9f143e2a mlx4_unicast_detach -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0626512 mlx4_qp_remove -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa1ab4cc8 mlx4_slave_convert_port -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa4e09b7a mlx4_get_admin_guid -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5b2335a mlx4_vf_smi_enabled -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa8268aff mlx4_SYNC_TPT -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xad5c1d9c mlx4_unregister_interface -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaea11d22 mlx4_get_base_qpn -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xaf731052 mlx4_flow_attach -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb059a9d1 mlx4_mr_rereg_mem_cleanup -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4fe7f35 mlx4_qp_release_range -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb5faf8bf mlx4_vf_get_enable_smi_admin -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb6a3b3f8 mlx4_bf_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb8a01c66 mlx4_find_cached_mac -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc76a847 mlx4_get_active_ports -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbdc82b25 mlx4_hw_rule_sz -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbf1c395c mlx4_multicast_detach -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc25618b7 mlx4_qp_modify -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5d6a58c mlx4_config_roce_v2_port -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc5fed5d8 mlx4_cq_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc8b73532 mlx4_free_hwq_res -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcd1bf8ff mlx4_unicast_promisc_add -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xcdcffdae mlx4_srq_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xce898fe0 mlx4_cq_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd3a01426 mlx4_get_protocol_dev -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd5ebbfa9 mlx4_uar_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd70eeadf mlx4_mtt_cleanup -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd8e67302 mlx4_bf_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdc53d5e7 mlx4_multicast_promisc_remove -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe279b7fa mlx4_mr_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3471394 mlx4_buf_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe6ac3dc1 mlx4_config_vxlan_port -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe7a98413 mlx4_xrcd_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8e2fdf1 mlx4_counter_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe8fac37f mlx4_register_interface -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf300c19c mlx4_replace_zero_macs -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf3b62d15 mlx4_set_vf_spoofchk -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf6672714 mlx4_get_vf_stats -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf809d8a9 __mlx4_cmd -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf80f922c mlx4_phys_to_slaves_pport -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfa1e3f8f mlx4_get_slave_default_vlan -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfdf5767c mlx4_flow_detach -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x07157cd6 mlx5_modify_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x6111d337 unregister_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/can/sja1000/sja1000 0x9ccc4060 free_sja1000dev +EXPORT_SYMBOL_GPL drivers/net/dsa/lan9303-core 0x2e878863 lan9303_indirect_phy_ops +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x0afc62cb ksz_port_bridge_join +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x2550482f ksz_update_port_member +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x4201d6b8 ksz_port_mdb_del +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x5bb4649a ksz_phy_write16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x5dd74bc2 ksz_mac_link_down +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0x70b51174 ksz_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xa05f9d9d ksz_init_mib_timer +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xabb76761 ksz_port_fast_age +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xc0a7ea31 ksz_port_fdb_dump +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xc79ed0d2 ksz_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xe68b2833 ksz_phy_read16 +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xec48761f ksz_enable_port +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xf0973332 ksz_port_mdb_add +EXPORT_SYMBOL_GPL drivers/net/dsa/microchip/ksz_common 0xf646ed14 ksz_port_bridge_leave +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x0303126e rtl8366_enable_vlan4k +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x10fdfcd5 rtl8366_reset_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x1b971d8b rtl8366_get_strings +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x2bf1170f rtl8366_get_ethtool_stats +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x480b96ff rtl8366_set_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x484b241f rtl8366_vlan_del +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x5c9d54ce rtl8366_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x65dc4a6e rtl8366_set_pvid +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0x84aa0d8b realtek_smi_write_reg_noack +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xade19205 rtl8366rb_variant +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xd1fb9d0a rtl8366_enable_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xe195af15 rtl8366_vlan_filtering +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xec8a2048 rtl8366_mc_is_used +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xed7133e7 rtl8366_init_vlan +EXPORT_SYMBOL_GPL drivers/net/dsa/realtek-smi 0xf5fb62ef rtl8366_vlan_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x001f7eb1 mlx4_srq_lookup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x003ccdbd mlx4_get_counter_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x04e9c8dd mlx4_phys_to_slaves_pport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x05aeb92c mlx4_counter_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x06eecaa3 mlx4_get_slave_default_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0be87f90 mlx4_map_sw_to_hw_steering_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x0f4a1cd8 mlx4_get_protocol_dev +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x105d7371 mlx4_config_vxlan_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x10d36206 mlx4_qp_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x13cff7c1 mlx4_register_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1415918f mlx4_set_vf_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x16832114 mlx4_cq_resize +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x1976e33d mlx4_mw_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x19b76ace mlx4_get_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x216d1ee4 mlx4_cq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x21708030 mlx4_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x25e2d0a6 mlx4_qp_release_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x27e6aa35 mlx4_vf_get_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x284ef966 mlx4_mr_hw_get_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ad8d716 mlx4_wol_read +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2c997bb2 mlx4_alloc_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2cad62e2 mlx4_unbond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2d3a95f9 mlx4_vf_smi_enabled +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2e9c8bf0 mlx4_mr_hw_change_access +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2ec3490a mlx4_mtt_init +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f154b56 mlx4_mr_rereg_mem_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x2f2b2bb7 mlx4_qp_reserve_range +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x30ffd838 __mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x37d44835 mlx4_mr_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3824bd88 mlx4_vf_set_enable_smi_admin +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x3f8539db mlx4_unicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x42fe68c2 mlx4_set_vf_spoofchk +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x43e1c74e mlx4_mw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x46c6f927 mlx4_free_cmd_mailbox +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4b6ee9a5 mlx4_set_admin_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x4bc31bcf mlx4_bf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x509447e8 mlx4_pd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x51018997 mlx4_get_vf_stats +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x531b6fb1 mlx4_multicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x55f6d43d mlx4_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x58f3a0de mlx4_db_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x59e12725 mlx4_map_sw_to_hw_steering_id +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a4374d5 mlx4_mtt_addr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5a97371d mlx4_xrcd_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5eb647c8 mlx4_mr_hw_put_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f48f91f mlx4_uar_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x5f929afa mlx4_get_active_ports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6520c7b2 __mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66c4fa6c mlx4_uar_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x66d04afc mlx4_free_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x68e64652 mlx4_srq_arm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x69ef3b63 mlx4_buf_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6af427e6 mlx4_CLOSE_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6c572e00 mlx4_alloc_hwq_res +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6cb7fc40 mlx4_bf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6ce4b70e mlx4_set_vf_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x6da40cfe mlx4_flow_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x726c5add mlx4_phys_to_slaves_pport_actv +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x77cb5689 mlx4_get_base_gid_ix +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7b5cd939 mlx4_srq_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7d474b1d mlx4_srq_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7e49319f mlx4_buf_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x7fc8855e mlx4_qp_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x81fda71c mlx4_register_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x84194fac mlx4_unregister_interface +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x84d2db10 mlx4_write_mtt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x8cd888ee mlx4_set_vf_rate +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x92b30b00 mlx4_unicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9366413a mlx4_bond +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x94420a39 mlx4_SYNC_TPT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9597b9d6 mlx4_port_map_set +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9761b19e mlx4_replace_zero_macs +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9a042969 mlx4_qp_query +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0x9dc56ae6 mlx4_FLOW_STEERING_IB_UC_QP_RANGE +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa0d23c17 mlx4_flow_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa5a77ede mlx4_flow_steer_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa650f35f mlx4_update_qp +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa830fd0d mlx4_INIT_PORT +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9809473 mlx4_mr_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xa9b6f0a9 mlx4_unicast_detach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb1383b9a mlx4_qp_to_ready +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb190687f mlx4_multicast_attach +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb4f867a1 mlx4_qp_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb551e21e mlx4_slave_convert_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb58bdc03 mlx4_set_vf_link_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xb99f7dee mlx4_find_cached_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xba599f8a mlx4_pd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbc77e340 mlx4_get_internal_clock_params +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbca4364f mlx4_read_clock +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbcf5d587 mlx4_config_roce_v2_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xbfb086b6 mlx4_wol_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc05ad9d2 mlx4_get_base_qpn +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc2038d5e mlx4_mr_hw_change_pd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc210d506 mlx4_xrcd_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xc4a1cc16 mlx4_srq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd37a6be3 mlx4_get_vf_config +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xd6187980 __mlx4_cmd +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xdfa980f5 mlx4_phys_to_slave_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe08e6194 mlx4_cq_modify +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe23923ed mlx4_find_cached_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe3471c17 mlx4_get_default_counter_index +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xe4ae2765 __mlx4_replace_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xea831513 mlx4_mtt_cleanup +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xebd3a068 mlx4_ACCESS_PTYS_REG +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed15d32d mlx4_qp_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed344d5e mlx4_multicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed3d1e27 mlx4_multicast_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xed835577 mlx4_unicast_promisc_remove +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf248439a mlx4_flow_steer_promisc_add +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf2ec6f2d mlx4_config_dev_retrieval +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf513ac6a mlx4_mw_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf5f4628e mlx4_hw_rule_sz +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf76f58b8 mlx4_register_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf7ecaefa mlx4_mr_hw_write_mpt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf86b443a mlx4_unregister_mac +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf8b36c16 mlx4_mr_rereg_mem_write +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9828695 mlx4_mr_enable +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xf9a4a189 mlx4_counter_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xfde60634 mlx4_cq_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xff2f5d84 mlx4_unregister_vlan +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx4/mlx4_core 0xffee48b1 mlx4_get_devlink_port +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0203e6e3 mlx5_db_free EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x072460c4 mlx5_fill_page_frag_array -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0769a11b mlx5_core_modify_hca_vport_context -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x08299f54 mlx5_query_hca_vport_system_image_guid -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0ddfafa9 mlx5_query_hca_vport_context -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0f0b7b85 mlx5_nic_vport_query_local_lb -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x10d069cb mlx5_eswitch_mode -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x13accb43 mlx5_query_module_eeprom_by_page -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x15cd1622 mlx5_query_port_vl_hw_cap -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x190d1104 mlx5_nic_vport_unaffiliate_multiport -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1b14ab70 mlx5_set_port_caps -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1d223b99 mlx5_query_port_admin_status -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1e3707fd mlx5_set_port_tc_group -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x21e657c8 mlx5_accel_ipsec_device_caps -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x28056dba mlx5_modify_nic_vport_mac_address -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2935ca35 mlx5_set_port_pfc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2c1ccdc0 mlx5_modify_nic_vport_vlans -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x316b4d98 mlx5_query_nic_vport_mac_list -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x324d1940 mlx5_set_port_wol -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x41713405 mlx5_query_nic_vport_promisc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4173f6fd mlx5_set_port_prio_tc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4199a99f mlx5_accel_esp_create_xfrm -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4253bbee mlx5_query_port_ptys -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x477152d0 mlx5_query_hca_vport_gid -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4905a326 mlx5_core_query_ib_ppcnt -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x52a066f1 mlx5_frag_buf_alloc_node -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5382fbae mlx5_query_port_tc_group -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x553b5122 mlx5_core_query_vport_counter -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x57241edd mlx5_nic_vport_enable_roce -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x582f27e7 mlx5_query_module_eeprom -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x616ecda5 mlx5_query_hca_vport_pkey -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x618b68e9 mlx5_set_port_admin_status -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6777d6af mlx5_db_alloc_node -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68b2ac81 mlx5_query_mac_address -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7b6e84b4 mlx5_buf_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7c584c56 mlx5_dm_sw_icm_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ee52e87 mlx5_toggle_port_link -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7fb1d3a8 mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x07ebc340 mlx5_core_modify_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x09a090b4 mlx5_core_query_ib_ppcnt +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0c3257c4 mlx5_query_hca_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x0c9f7f53 mlx5_set_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x11545bb1 mlx5_modify_nic_vport_vlans +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x115d925c mlx5_nic_vport_query_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x16d55387 mlx5_query_hca_vport_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1a7c26a5 mlx5_set_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1c883c1e mlx5_eswitch_get_total_vports +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1cbedf87 mlx5_query_port_vl_hw_cap +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x1f794a2a mlx5_set_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x20daac1f mlx5_query_port_ptys +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x259a8fc1 mlx5_set_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x2628d6cf mlx5_query_nic_system_image_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x27299934 mlx5_query_nic_vport_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x309fc552 mlx5_modify_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x408f55cb mlx5_query_port_admin_status +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x429542fb mlx5_accel_esp_destroy_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x42a8ab03 mlx5_set_port_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x42cfbe95 mlx5_query_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x438375cc mlx5_query_hca_vport_gid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x462d4df5 mlx5_query_nic_vport_node_guid +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x4b63173c mlx5_toggle_port_link +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x50b77245 mlx5_query_module_eeprom +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5b551eb9 mlx5_query_module_eeprom_by_page +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5c6e5f40 mlx5_query_port_pfc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x5d7efd85 mlx5_set_port_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x65cfca41 mlx5_query_min_inline +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x68bb7177 mlx5_query_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x695d2c13 mlx5_dm_sw_icm_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6bf18781 mlx5_nic_vport_unaffiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x6e7c6bb9 mlx5_query_hca_vport_context +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x72f3b493 mlx5_query_nic_vport_qkey_viol_cntr +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x75ff1785 mlx5_query_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x76ea5a9e mlx5_query_port_tc_group +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7a68b2fc mlx5_query_port_oper_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7ab10221 mlx5_modify_nic_vport_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x7cdf3342 mlx5_query_nic_vport_system_image_guid EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x81aadc6a mlx5_fill_page_frag_array_perm -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x87c77295 mlx5_db_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8c549a82 mlx5_set_port_pause -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x92aefdd6 mlx5_frag_buf_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9663aafc mlx5_query_port_tc_bw_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x98e6c783 mlx5_query_nic_vport_min_inline -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x99c2afe7 mlx5_query_nic_vport_mac_address -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9a6c57d4 mlx5_modify_nic_vport_mac_list -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9d2c0037 mlx5_modify_port_ets_rate_limit -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa0b92e63 mlx5_eswitch_get_total_vports -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa2bce763 mlx5_modify_nic_vport_promisc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa699905d mlx5_dm_sw_icm_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x83ba9f2c mlx5_nic_vport_update_local_lb +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x850d0c93 mlx5_query_port_max_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8916f4aa mlx5_query_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b8a363b mlx5_accel_ipsec_device_caps +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8b8d0afb mlx5_query_port_ets_rate_limit +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x8e3f3448 mlx5_db_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9217ba25 mlx5_modify_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x93ae24ba mlx5_set_port_prio_tc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9cd781a0 mlx5_eswitch_mode +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0x9ff1c8f3 mlx5_modify_nic_vport_mac_list +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa473230f mlx5_query_hca_vport_pkey +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa52e25bb mlx5_accel_esp_modify_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa5fee72c mlx5_frag_buf_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa6e4a558 mlx5_set_port_tc_group EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa75f49d6 mlx5_fill_page_array -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xa81bab9d mlx5_core_query_sq_state -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa5a897d mlx5_query_nic_vport_qkey_viol_cntr -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xabbf0f9b mlx5_core_reserved_gids_count -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb46cb4f4 mlx5_nic_vport_affiliate_multiport -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb86b8b55 mlx5_set_port_mtu -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbcdbd472 mlx5_query_hca_vport_node_guid -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbd2dd74f mlx5_query_nic_vport_system_image_guid -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbde323bf mlx5_query_port_pfc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcad2e71e mlx5_accel_esp_modify_xfrm -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcfcf5ad6 mlx5_query_port_ets_rate_limit -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd25c10fc mlx5_db_free -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd66bec4d mlx5_accel_esp_destroy_xfrm -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xda8dc116 mlx5_query_nic_system_image_guid -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe069eee9 mlx5_query_port_pause -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe266d76d mlx5_query_nic_vport_node_guid -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe790fc42 mlx5_query_nic_vport_mtu -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf0ffd82b mlx5_query_port_prio_tc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf15a039d mlx5_nic_vport_update_local_lb -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf1b26426 mlx5_query_port_wol -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf3045441 mlx5_set_port_tc_bw_alloc -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf4d1b970 mlx5_query_port_max_mtu -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf6183bfb mlx5_core_access_reg -EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfb77b15c mlx5_query_min_inline -EXPORT_SYMBOL_GPL drivers/net/geneve 0xd74cd98a geneve_dev_create_fb -EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x0ea29930 ipvlan_count_rx -EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x26c4e7f5 ipvlan_link_setup -EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x928a9615 ipvlan_link_new -EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x955aea53 ipvlan_link_delete -EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xa7e415e7 ipvlan_link_register -EXPORT_SYMBOL_GPL drivers/net/macsec 0x885c2c4f macsec_pn_wrapped -EXPORT_SYMBOL_GPL drivers/net/macvlan 0x30d71552 macvlan_common_setup -EXPORT_SYMBOL_GPL drivers/net/macvlan 0xb2d588ee macvlan_common_newlink -EXPORT_SYMBOL_GPL drivers/net/macvlan 0xe9c44ea2 macvlan_dellink -EXPORT_SYMBOL_GPL drivers/net/macvlan 0xff0e2380 macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xaa7e6182 mlx5_query_nic_vport_promisc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xafb1bbe3 mlx5_set_port_wol +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xb4bb152f mlx5_nic_vport_affiliate_multiport +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbb4746df mlx5_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbc5500bd mlx5_core_query_vport_counter +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xbca28a99 mlx5_frag_buf_free +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc33d413b mlx5_core_query_sq_state +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xc8f46263 mlx5_core_reserved_gids_count +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcd971944 mlx5_db_alloc_node +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf886bce mlx5_query_port_tc_bw_alloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf95b33e mlx5_query_mac_address +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xcf9f4bb8 mlx5_query_port_pause +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd3240cb2 mlx5_core_access_reg +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xd93bfa65 mlx5_accel_esp_create_xfrm +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xdff72881 mlx5_dm_sw_icm_dealloc +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xe9a1bfe5 mlx5_nic_vport_enable_roce +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xf294ef11 mlx5_modify_nic_vport_mtu +EXPORT_SYMBOL_GPL drivers/net/ethernet/mellanox/mlx5/core/mlx5_core 0xfadc3a41 mlx5_query_port_wol +EXPORT_SYMBOL_GPL drivers/net/geneve 0xbe4089da geneve_dev_create_fb +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x19539c03 ipvlan_link_new +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x34911291 ipvlan_link_delete +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x4c275bc8 ipvlan_count_rx +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0x7fb81a2d ipvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/ipvlan/ipvlan 0xefceb5c3 ipvlan_link_setup +EXPORT_SYMBOL_GPL drivers/net/macsec 0xbf9ce082 macsec_pn_wrapped +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x311dd364 macvlan_dellink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x7c86b321 macvlan_common_newlink +EXPORT_SYMBOL_GPL drivers/net/macvlan 0x91823ccb macvlan_link_register +EXPORT_SYMBOL_GPL drivers/net/macvlan 0xa32bbd00 macvlan_common_setup EXPORT_SYMBOL_GPL drivers/net/mdio/mdio-i2c 0x2632d9e8 mdio_i2c_alloc -EXPORT_SYMBOL_GPL drivers/net/net_failover 0x9b300906 net_failover_destroy -EXPORT_SYMBOL_GPL drivers/net/net_failover 0xf451ac60 net_failover_create -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x0e9e0a19 __bcm_phy_read_rdb -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x13da530a bcm54xx_auxctl_read -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x17c511c4 bcm_phy_downshift_get -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x19416495 bcm_phy_modify_exp -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x1b2aca91 bcm_phy_enable_jumbo -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x1e3cd52f bcm_phy_read_exp -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x2014403e bcm_phy_read_rdb -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x30b69f08 __bcm_phy_read_exp -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x3198ef6c bcm_phy_write_misc -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x4063242a bcm_phy_enable_apd -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x41062dfb bcm_phy_write_exp -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x493292b4 bcm_phy_ack_intr -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x4fb7dfb0 bcm_phy_cable_test_start -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5b4fd140 bcm_phy_set_eee -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5e6473dd __bcm_phy_write_exp -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x68206250 __bcm_phy_modify_exp -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x71093b0f bcm_phy_write_shadow -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x72804edc bcm_phy_downshift_set -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x738d99df bcm_phy_read_misc -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7a16afb8 bcm_phy_28nm_a0b0_afe_config_init -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x8345065d bcm_phy_cable_test_get_status -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x86ec3293 bcm_phy_get_strings -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x8ab79c60 bcm_phy_config_intr -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x96bc2ec4 bcm_phy_cable_test_get_status_rdb -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9cc5c074 bcm_phy_modify_rdb -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc02b75eb bcm_phy_cable_test_start_rdb -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xc47b45c8 __bcm_phy_write_rdb -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd3984408 bcm_phy_handle_interrupt -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xdb191bee bcm_phy_write_rdb -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xeb271001 bcm_phy_r_rc_cal_reset -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xeda4c6b1 __bcm_phy_modify_rdb -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf42ecfb5 bcm_phy_read_shadow -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf536f501 bcm_phy_get_sset_count -EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf836e0f1 bcm_phy_get_stats -EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x04dd36b3 phylink_mii_c22_pcs_an_restart +EXPORT_SYMBOL_GPL drivers/net/net_failover 0x27997e7b net_failover_destroy +EXPORT_SYMBOL_GPL drivers/net/net_failover 0x3b0cf60c net_failover_create +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x00dd6e8c __bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x01d4eea0 bcm_phy_write_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x134c0253 bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x14ca92d2 __bcm_phy_write_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x18b61dc5 bcm_phy_cable_test_start +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x1bda6824 bcm_phy_get_stats +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x22fe6ad3 bcm_phy_enable_jumbo +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x273e2e58 bcm_phy_downshift_get +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x28fd10e4 bcm_phy_downshift_set +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x370f5d06 bcm_phy_handle_interrupt +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x392fda5f bcm54xx_auxctl_read +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x4d2568e3 bcm_phy_ack_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5fbda1cf __bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x5fbe0318 bcm_phy_28nm_a0b0_afe_config_init +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x6027d30e bcm_phy_config_intr +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x68985c9f bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x73a9f23d bcm_phy_cable_test_get_status_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x7755413d bcm_phy_read_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0x9d3d533f bcm_phy_cable_test_start_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa08873f7 bcm_phy_enable_apd +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa3b37369 __bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xa6507840 bcm_phy_read_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xaa9998de bcm_phy_r_rc_cal_reset +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xac730c1e bcm_phy_cable_test_get_status +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xb6a3d103 bcm_phy_get_sset_count +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xbabc1f70 bcm_phy_write_misc +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xcaf428d9 __bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xcd72b858 bcm_phy_write_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xcfcb2b41 bcm_phy_modify_exp +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd43b5cd8 bcm_phy_read_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xd48ae2ec bcm_phy_read_shadow +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xde59d1b9 bcm_phy_get_strings +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xe4efabd0 bcm_phy_set_eee +EXPORT_SYMBOL_GPL drivers/net/phy/bcm-phy-lib 0xf8eed611 __bcm_phy_modify_rdb +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x021b035c phylink_mii_c22_pcs_get_state +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x080faac1 phylink_of_phy_connect EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x08213956 phylink_ethtool_get_wol EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x0a654639 phylink_helper_basex_speed EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x12135396 phylink_mac_change EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x15c4e3e2 phylink_ethtool_set_pauseparam EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x16ca1a8a phylink_suspend -EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x17508a78 phylink_mii_c45_pcs_get_state -EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x272cab6e phylink_create EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x2c8e28ee phylink_ethtool_get_eee -EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x33db5b64 phylink_mii_c22_pcs_set_advertisement -EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x380b4c51 phylink_mii_c22_pcs_config EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x573de485 phylink_set_pcs EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x57727285 phylink_ethtool_set_eee EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x59e0695d phylink_speed_down @@ -11094,26 +11092,29 @@ EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x825c7340 phylink_get_eee_err EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x911fcd6c phylink_start EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x983276da phylink_disconnect_phy -EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xa388390f phylink_connect_phy +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0x9bed82f2 phylink_connect_phy EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc0a8f4be phylink_resume EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc1d15a4c phylink_set_port_modes EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc3906c58 phylink_ethtool_ksettings_set -EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xd2318707 phylink_of_phy_connect +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xc50ff7ab phylink_create +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xcc1c441f phylink_mii_c45_pcs_get_state EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xdcb0a2c0 phylink_stop EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xde66f4a7 phylink_mii_ioctl +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xebca372f phylink_mii_c22_pcs_set_advertisement EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xec02ebe0 phylink_init_eee +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xec3f0b43 phylink_mii_c22_pcs_config +EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xee47e086 phylink_mii_c22_pcs_an_restart EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf3083a1d phylink_destroy -EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf466b10a phylink_mii_c22_pcs_get_state EXPORT_SYMBOL_GPL drivers/net/phy/phylink 0xf8fe5642 phylink_ethtool_get_pauseparam -EXPORT_SYMBOL_GPL drivers/net/tap 0x0b8f02e0 tap_get_minor -EXPORT_SYMBOL_GPL drivers/net/tap 0x311d8551 tap_get_socket -EXPORT_SYMBOL_GPL drivers/net/tap 0x4fe5f92a tap_free_minor -EXPORT_SYMBOL_GPL drivers/net/tap 0x533c52c8 tap_create_cdev -EXPORT_SYMBOL_GPL drivers/net/tap 0x957b554b tap_queue_resize -EXPORT_SYMBOL_GPL drivers/net/tap 0x9776ee00 tap_get_ptr_ring -EXPORT_SYMBOL_GPL drivers/net/tap 0xc14da694 tap_handle_frame -EXPORT_SYMBOL_GPL drivers/net/tap 0xf07a0c71 tap_del_queues -EXPORT_SYMBOL_GPL drivers/net/tap 0xf62fd43b tap_destroy_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0x1a34eb15 tap_queue_resize +EXPORT_SYMBOL_GPL drivers/net/tap 0x1e1ba0da tap_free_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0x4946072a tap_get_minor +EXPORT_SYMBOL_GPL drivers/net/tap 0x6a71f676 tap_destroy_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0x814825ab tap_get_ptr_ring +EXPORT_SYMBOL_GPL drivers/net/tap 0x97f81ca3 tap_get_socket +EXPORT_SYMBOL_GPL drivers/net/tap 0xb27ab5af tap_create_cdev +EXPORT_SYMBOL_GPL drivers/net/tap 0xd2ff694d tap_handle_frame +EXPORT_SYMBOL_GPL drivers/net/tap 0xf4da3b8d tap_del_queues EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x5fecf68b mei_phy_ops EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0x676258da nfc_mei_phy_alloc EXPORT_SYMBOL_GPL drivers/nfc/mei_phy 0xa0f53b42 nfc_mei_phy_free @@ -11149,8 +11150,8 @@ EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3884f8b8 nvme_fc_unregister_localport EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x3e33ac54 nvme_fc_rescan_remoteport EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0x8a9cf5a7 nvme_fc_set_remoteport_devloss -EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xa8c9435f nvme_fc_register_localport EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xbb0e18a6 nvme_fc_rcv_ls_req +EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xc5909e49 nvme_fc_register_localport EXPORT_SYMBOL_GPL drivers/nvme/host/nvme-fc 0xfca9dc99 nvme_fc_unregister_remoteport EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x04c30c84 nvmet_check_transfer_len EXPORT_SYMBOL_GPL drivers/nvme/target/nvmet 0x04e204c9 nvmet_req_uninit @@ -11238,71 +11239,71 @@ EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb4689831 iscsi_boot_create_acpitbl EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xb5ebf00b iscsi_boot_create_host_kset EXPORT_SYMBOL_GPL drivers/scsi/iscsi_boot_sysfs 0xf4c26db2 iscsi_boot_create_target -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x04afab57 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0224e673 iscsi_eh_device_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x0aed8023 iscsi_session_teardown EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x12b2ad06 iscsi_switch_str_param -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1b798f9c iscsi_host_add -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x1d7b26d1 iscsi_complete_scsi_task -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2b4afecf iscsi_conn_start -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3095c9ad iscsi_host_remove -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x37bcca9b iscsi_conn_unbind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2320b484 iscsi_target_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x292cc07a iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2b141eec iscsi_session_recovery_timedout +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2f040aeb iscsi_prep_data_out_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x2f9908c4 iscsi_itt_to_ctask +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x36dea1a5 iscsi_conn_start +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3827097d iscsi_suspend_queue EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3bef2f73 iscsi_pool_init -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3dc57060 iscsi_eh_session_reset -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x41da10cc iscsi_suspend_tx -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x44d51ac3 iscsi_host_get_max_scsi_cmds -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x450573d5 iscsi_session_failure -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x46c3c774 iscsi_host_set_param -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x49ea4ff3 iscsi_session_setup -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x60bbae75 iscsi_queuecommand -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x65a209ca iscsi_set_param -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x67851a51 iscsi_host_get_param -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x72a2dce8 iscsi_session_get_param -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x72d4c33d iscsi_session_recovery_timedout -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x75ab6ec2 iscsi_conn_stop -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7b0f9f64 iscsi_conn_queue_work -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7f56a498 iscsi_complete_pdu -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x7fe5e3d0 iscsi_conn_send_pdu -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x804c6fcb iscsi_host_free -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x80f71b75 iscsi_target_alloc -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8507ac1a iscsi_session_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x3d93587f iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x43062ef4 iscsi_conn_queue_work +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x488e23fb iscsi_host_get_max_scsi_cmds +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4bfbd6de iscsi_suspend_tx +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x4c812023 iscsi_conn_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x516f0d82 iscsi_itt_to_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x5a4fa0b4 iscsi_eh_session_reset +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x6cf964cd iscsi_complete_scsi_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x75da591c __iscsi_complete_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x778d4eac iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x82565e0f iscsi_verify_itt +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x82623059 iscsi_conn_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x83787ed8 __iscsi_get_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x84e40dd5 iscsi_session_setup EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d303b1b iscsi_pool_free -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x903b0f96 iscsi_conn_get_param -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x98b9bf29 iscsi_suspend_queue -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9c2aeb11 iscsi_prep_data_out_pdu -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9f3a81f1 iscsi_conn_teardown -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xacb1fcc6 __iscsi_complete_pdu -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb3b2d504 iscsi_conn_setup -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb68784f7 iscsi_eh_cmd_timed_out -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb6fdfb53 iscsi_eh_device_reset -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc28539af iscsi_eh_recover_target -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc54d2a40 __iscsi_get_task -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc9c6dbd6 iscsi_update_cmdsn -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd4350da0 iscsi_verify_itt -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd7f67e5b iscsi_conn_failure -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xd975ee39 iscsi_itt_to_ctask -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdb9919ad iscsi_host_alloc -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xdeb2348f __iscsi_put_task -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe5629420 iscsi_requeue_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8d9b7364 iscsi_update_cmdsn +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x8e6c9cae iscsi_host_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x900a7ee1 iscsi_host_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x96fa8b9f __iscsi_put_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0x9fe0b6ae iscsi_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xa23f3a44 iscsi_host_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb3ed83cf iscsi_conn_unbind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb7be056c iscsi_host_add +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xb7fd208e iscsi_host_alloc +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xbd5c2930 iscsi_queuecommand +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc42479c1 iscsi_conn_bind +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc4f6965a iscsi_set_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xc8801c2d iscsi_eh_recover_target +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xcdfd283a iscsi_eh_cmd_timed_out +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe0221f29 iscsi_session_failure +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe13af052 iscsi_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe85b2536 iscsi_conn_send_pdu +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xe9a0beaf iscsi_host_remove EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xeab9cbd5 iscsi_conn_get_addr_param -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf70177cb iscsi_conn_bind -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xfd16d8bc iscsi_eh_abort -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xff81608b iscsi_put_task -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x003528c2 iscsi_segment_seek_sg -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0873b4a0 iscsi_tcp_segment_unmap -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x08f12e34 iscsi_tcp_set_max_r2t -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x1c183c24 iscsi_tcp_recv_segment_is_hdr -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x28567eef iscsi_tcp_dgst_header -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x33c0636d iscsi_tcp_hdr_recv_prep -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x5dd3b4b7 iscsi_tcp_task_init -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x85870f44 iscsi_tcp_conn_get_stats -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x9520dbb3 iscsi_tcp_recv_skb -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa6f81e0a iscsi_tcp_conn_setup -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbbefb80b iscsi_tcp_r2tpool_alloc -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xbe6b394d iscsi_tcp_conn_teardown -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc3dff975 iscsi_tcp_r2tpool_free -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc52d2045 iscsi_tcp_cleanup_task -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc80f86d3 iscsi_tcp_segment_done -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc8f8048b iscsi_segment_init_linear -EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xe8fd7830 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf26d301b iscsi_eh_abort +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf7aa3369 iscsi_session_get_param +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi 0xf7cf0c4f iscsi_conn_stop +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x01807cee iscsi_tcp_cleanup_task +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x0ddb7059 iscsi_tcp_conn_teardown +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x16d50861 iscsi_tcp_segment_unmap +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x27e696eb iscsi_tcp_segment_done +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x6d5b8f71 iscsi_tcp_set_max_r2t +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7ab78892 iscsi_segment_init_linear +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x7b84f8c8 iscsi_tcp_conn_setup +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x835a819a iscsi_tcp_conn_get_stats +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x86a43c47 iscsi_segment_seek_sg +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0x8a3a4ad2 iscsi_tcp_task_init +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xa60cf93f iscsi_tcp_recv_skb +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc3111f33 iscsi_tcp_r2tpool_free +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xc9bcd02b iscsi_tcp_recv_segment_is_hdr +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xd5cfc240 iscsi_tcp_task_xmit +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xeed960aa iscsi_tcp_dgst_header +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xf8d6c392 iscsi_tcp_hdr_recv_prep +EXPORT_SYMBOL_GPL drivers/scsi/libiscsi_tcp 0xfe7fdd8f iscsi_tcp_r2tpool_alloc EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x0a86ec7d sas_request_addr EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x11e1f9eb sas_queuecommand EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0x20e4a9fe sas_domain_attach_transport @@ -11330,71 +11331,71 @@ EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xe6f303cf dev_attr_phy_event_threshold EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xeb27bb39 sas_ata_schedule_reset EXPORT_SYMBOL_GPL drivers/scsi/libsas/libsas 0xefad553b sas_register_ha -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x01859634 iscsi_flashnode_bus_match -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x072086a1 iscsi_host_for_each_session -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0fd007f8 iscsi_lookup_endpoint -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x10fcdf44 iscsi_add_session -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x12444e6e iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x0ac5e3dc __tracepoint_iscsi_dbg_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x10f3d012 __SCK__tp_func_iscsi_dbg_eh EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x15dc8bab __SCT__tp_func_iscsi_dbg_conn -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1b12d768 iscsi_conn_login_event -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x1dd25bc0 __tracepoint_iscsi_dbg_eh -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2739c259 iscsi_is_session_dev -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2c5e5de1 __tracepoint_iscsi_dbg_tcp -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x36916346 iscsi_dbg_trace -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3abfa303 iscsi_block_scsi_eh -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3c5ddcaf __SCK__tp_func_iscsi_dbg_conn -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x431545af iscsi_put_endpoint -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x45b9630b iscsi_create_session -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x47e9833e __traceiter_iscsi_dbg_sw_tcp -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x48ade69e iscsi_free_session -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4ad38ce6 iscsi_unblock_session -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4cb79e0f iscsi_get_conn -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4f861223 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x15f47df3 iscsi_create_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x177dab39 __SCK__tp_func_iscsi_dbg_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x186471b9 __tracepoint_iscsi_dbg_sw_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2531a423 iscsi_post_host_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x277f9c22 iscsi_create_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2cffba14 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x2dc8bee1 __SCK__tp_func_iscsi_dbg_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x355fadec iscsi_conn_login_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3970ec24 iscsi_create_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x3c43d240 __traceiter_iscsi_dbg_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x436aa20a __SCK__tp_func_iscsi_dbg_sw_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x448ecf92 __SCK__tp_func_iscsi_dbg_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x488bf45b __tracepoint_iscsi_dbg_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4adc2975 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4bd64e82 __tracepoint_iscsi_dbg_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x4f7023fc iscsi_add_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5185c1aa iscsi_host_for_each_session EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x52575134 __SCT__tp_func_iscsi_dbg_session -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x565f8106 iscsi_conn_error_event -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x59ccee9b __SCK__tp_func_iscsi_dbg_eh -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x62c71ef1 iscsi_destroy_endpoint -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x667c2ab2 iscsi_unregister_transport -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6884f178 __tracepoint_iscsi_dbg_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x59c7d635 iscsi_remove_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x5f96fa94 iscsi_block_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6845ebbc iscsi_get_port_state_name EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x699fe53e iscsi_get_discovery_parent_name -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x784fa2fd iscsi_put_conn -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7c51a5d1 iscsi_destroy_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x6d77ceed iscsi_destroy_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x744c21ad __traceiter_iscsi_dbg_sw_tcp +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x78e5f0d0 __traceiter_iscsi_dbg_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x79e50e82 iscsi_flashnode_bus_match +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x7ffb5204 __tracepoint_iscsi_dbg_session EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x84a005f1 iscsi_get_router_state_name -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8a1ba01b iscsi_ping_comp_event -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8f46b571 __SCK__tp_func_iscsi_dbg_session -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8fc8f6b6 iscsi_create_endpoint -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x93644371 iscsi_create_flashnode_sess -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x96615a64 iscsi_offload_mesg -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x96796cb9 iscsi_create_flashnode_conn -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa0eb0dda iscsi_session_chkready -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa75eeb35 iscsi_destroy_all_flashnode +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x85e65570 iscsi_block_scsi_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x86ae934c iscsi_offload_mesg +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8cf37205 iscsi_put_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x8e8b66fb iscsi_get_port_speed_name +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9325bedf iscsi_session_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x933ce7b1 __traceiter_iscsi_dbg_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x95ec8cbd iscsi_lookup_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9cbbb5ff __traceiter_iscsi_dbg_eh +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0x9faadc21 iscsi_get_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa1480820 iscsi_conn_error_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa3294d40 iscsi_unregister_transport EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa8c4b5e1 __SCT__tp_func_iscsi_dbg_tcp -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaa104029 __SCK__tp_func_iscsi_dbg_sw_tcp -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xab201610 iscsi_create_conn -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xae3b9cff iscsi_get_port_speed_name -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb2db7799 iscsi_destroy_iface -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xba4a6529 iscsi_destroy_flashnode_sess +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xa97ebbe9 iscsi_ping_comp_event +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xaa5e80ca iscsi_is_session_dev +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xabbc9d14 iscsi_put_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xae91433d iscsi_create_iface +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb09d260b iscsi_session_chkready +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xb43a06d6 iscsi_destroy_flashnode_sess EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc071179 iscsi_get_ipaddress_state_name -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbe08ecc7 iscsi_create_iface -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc3dae0fe iscsi_session_event -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc57fcad0 iscsi_scan_finished -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xcacb36b0 iscsi_alloc_session -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd0794e27 __tracepoint_iscsi_dbg_sw_tcp -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd080762f iscsi_get_port_state_name -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd0a3cb28 __SCK__tp_func_iscsi_dbg_tcp -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd18d0a37 __traceiter_iscsi_dbg_session -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd78ac494 iscsi_post_host_event -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xde195b2d __tracepoint_iscsi_dbg_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xbc25e604 iscsi_free_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc15bf5e6 iscsi_unblock_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc27606fc iscsi_is_session_online +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xc4e8a6fa iscsi_alloc_session +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xd401a4d7 iscsi_create_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xde72119a iscsi_create_session EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xdf515c49 __SCT__tp_func_iscsi_dbg_sw_tcp -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe842107f iscsi_is_session_online -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xea087a6c __traceiter_iscsi_dbg_eh -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeb1c3ee1 iscsi_find_flashnode_sess -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xeb36de8d iscsi_find_flashnode_conn -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xee2e8be9 __traceiter_iscsi_dbg_tcp -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf3d99563 iscsi_register_transport -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf5a3f98c __traceiter_iscsi_dbg_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe38ec6b3 iscsi_dbg_trace +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe7cbd1ba iscsi_find_flashnode_conn +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xe9a9ae0b iscsi_scan_finished +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf1c2b7a4 iscsi_register_transport +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf34fa789 iscsi_find_flashnode_sess EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xf7e749fb __SCT__tp_func_iscsi_dbg_eh -EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfb1fe123 iscsi_recv_pdu +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfbbf3171 iscsi_destroy_endpoint +EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_iscsi 0xfc877d0b iscsi_destroy_conn EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x1976ffe5 sas_tlr_supported EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x2c5f5a4a sas_enable_tlr EXPORT_SYMBOL_GPL drivers/scsi/scsi_transport_sas 0x949a1a29 sas_is_tlr_enabled @@ -11445,26 +11446,26 @@ EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0x6fa24b50 sdw_unregister_driver EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0xa274d2d2 sdw_bus_type EXPORT_SYMBOL_GPL drivers/soundwire/soundwire-bus 0xc08a1546 __sdw_register_driver -EXPORT_SYMBOL_GPL drivers/spi/spi-altera-core 0xb52c8333 altera_spi_init_master +EXPORT_SYMBOL_GPL drivers/spi/spi-altera-core 0x39ffff43 altera_spi_init_master EXPORT_SYMBOL_GPL drivers/spi/spi-altera-core 0xb9edd149 altera_spi_irq -EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x30b85ab0 spi_bitbang_setup -EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x76e96c6e spi_bitbang_start -EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x7a0f9df3 spi_bitbang_init -EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xe044c189 spi_bitbang_stop -EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xe8e0687a spi_bitbang_setup_transfer -EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xf8b9f880 spi_bitbang_cleanup -EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x03f97e48 dw_spi_dma_setup_mfld -EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x1ef3bcd2 dw_spi_remove_host -EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x2906a718 dw_spi_update_config -EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x5219fe65 dw_spi_add_host -EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x753ad945 dw_spi_suspend_host -EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x95f7a6c0 dw_spi_set_cs -EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd0cff02a dw_spi_dma_setup_generic -EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf5a6e330 dw_spi_resume_host -EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xf81b787b dw_spi_check_status -EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x01f73701 spi_test_run_tests -EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x65f16363 spi_test_execute_msg -EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0xbcf26e10 spi_test_run_test +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x2228ec66 spi_bitbang_stop +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x39a927fa spi_bitbang_setup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0x7836352f spi_bitbang_init +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa61552f2 spi_bitbang_setup_transfer +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xa87bf648 spi_bitbang_cleanup +EXPORT_SYMBOL_GPL drivers/spi/spi-bitbang 0xaeb69468 spi_bitbang_start +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x455147b2 dw_spi_suspend_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x4fd6329b dw_spi_update_config +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0x8013b1fd dw_spi_add_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xbfdaf60c dw_spi_dma_setup_mfld +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xcc966709 dw_spi_remove_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd334bacb dw_spi_set_cs +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xd5e0fe0e dw_spi_resume_host +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xed122ebb dw_spi_check_status +EXPORT_SYMBOL_GPL drivers/spi/spi-dw 0xfd3dffaf dw_spi_dma_setup_generic +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0x789d6981 spi_test_execute_msg +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0xad294428 spi_test_run_test +EXPORT_SYMBOL_GPL drivers/spi/spi-loopback-test 0xad771e36 spi_test_run_tests EXPORT_SYMBOL_GPL drivers/ssb/ssb 0xd31a49f4 ssb_pmu_spuravoid_pllupdate EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0xa44feba0 fieldbus_dev_area_updated EXPORT_SYMBOL_GPL drivers/staging/fieldbus/fieldbus_dev 0xabe10fa5 fieldbus_dev_register @@ -11482,10 +11483,10 @@ EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0xaa92cb23 gmin_get_var_int EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0xbae0e12f atomisp_get_default_camera_caps EXPORT_SYMBOL_GPL drivers/staging/media/atomisp/pci/atomisp_gmin_platform 0xf47c3561 atomisp_gmin_find_subdev -EXPORT_SYMBOL_GPL drivers/target/target_core_mod 0x0582a2e3 target_submit_prep -EXPORT_SYMBOL_GPL drivers/target/target_core_mod 0x258203eb target_queue_submission -EXPORT_SYMBOL_GPL drivers/target/target_core_mod 0xc2fc4c1b target_submit -EXPORT_SYMBOL_GPL drivers/target/target_core_mod 0xe2e07866 target_init_cmd +EXPORT_SYMBOL_GPL drivers/target/target_core_mod 0x7264e2b8 target_submit +EXPORT_SYMBOL_GPL drivers/target/target_core_mod 0x960a59bf target_submit_prep +EXPORT_SYMBOL_GPL drivers/target/target_core_mod 0x9f0ef060 target_queue_submission +EXPORT_SYMBOL_GPL drivers/target/target_core_mod 0xd856d1a7 target_init_cmd EXPORT_SYMBOL_GPL drivers/tee/tee 0x11b4b535 tee_shm_get_va EXPORT_SYMBOL_GPL drivers/tee/tee 0x1240aaa9 tee_client_open_session EXPORT_SYMBOL_GPL drivers/tee/tee 0x26a5bab3 tee_shm_alloc_kernel_buf @@ -11576,15 +11577,15 @@ EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xc9fd634a usb_role_switch_put EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xd5474690 usb_role_switch_set_role EXPORT_SYMBOL_GPL drivers/usb/roles/roles 0xff42c374 usb_role_switch_get_role -EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x03b28362 vdpa_unregister_device -EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x21bba7ee __vdpa_register_driver -EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x6a0b0988 _vdpa_unregister_device -EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x771e50ad vdpa_unregister_driver -EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x7c6ef1d2 __vdpa_alloc_device -EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x933ea680 _vdpa_register_device -EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xb69fd8a5 vdpa_mgmtdev_unregister -EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xb938de26 vdpa_mgmtdev_register -EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xc4c8418f vdpa_register_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x26df1170 __vdpa_alloc_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x637284f8 _vdpa_register_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x7723c53a vdpa_unregister_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0x938f36b6 _vdpa_unregister_device +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xa8743f79 __vdpa_register_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xac897da6 vdpa_mgmtdev_unregister +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xd6a69828 vdpa_mgmtdev_register +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xd9d03454 vdpa_unregister_driver +EXPORT_SYMBOL_GPL drivers/vdpa/vdpa 0xf451caa7 vdpa_register_device EXPORT_SYMBOL_GPL drivers/vfio/mdev/mdev 0xa9670311 mdev_bus_type EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x16a5eb1d vhost_vq_access_ok EXPORT_SYMBOL_GPL drivers/vhost/vhost 0x20189f2c vhost_poll_start @@ -11656,348 +11657,348 @@ EXPORT_SYMBOL_GPL fs/dlm/dlm 0xcf9f3328 dlm_release_lockspace EXPORT_SYMBOL_GPL fs/dlm/dlm 0xd44810b7 dlm_posix_get EXPORT_SYMBOL_GPL fs/fscache/fscache 0x092cf98e fscache_object_sleep_till_congested -EXPORT_SYMBOL_GPL fs/lockd/lockd 0x03ac72c1 lockd_down -EXPORT_SYMBOL_GPL fs/lockd/lockd 0x2c95d35e lockd_up -EXPORT_SYMBOL_GPL fs/lockd/lockd 0x52b866ec nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x3654d077 nlmclnt_done +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x6ee0c100 nlmclnt_proc EXPORT_SYMBOL_GPL fs/lockd/lockd 0x77e35ccc nlmsvc_unlock_all_by_ip -EXPORT_SYMBOL_GPL fs/lockd/lockd 0x7d280ad1 nlmclnt_init -EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe2a22402 nlmclnt_proc -EXPORT_SYMBOL_GPL fs/lockd/lockd 0xf7904fc1 nlmsvc_unlock_all_by_sb -EXPORT_SYMBOL_GPL fs/lockd/lockd 0xfa4c7670 nlmsvc_ops +EXPORT_SYMBOL_GPL fs/lockd/lockd 0x78992fde lockd_down +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xa1dcaad4 nlmclnt_init +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xab637414 nlmsvc_unlock_all_by_sb +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xcf1e3bad lockd_up +EXPORT_SYMBOL_GPL fs/lockd/lockd 0xe5e3522b nlmsvc_ops EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0294c6a2 nfs_callback_nr_threads -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x04043f44 nfs_access_get_cached -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0906b4d0 nfs_post_op_update_inode_force_wcc -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0df9de51 __SCK__tp_func_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x057010e7 nfs_wait_on_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x06aa6e54 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x077066f3 nfs_get_lock_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0825f3af nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0b6e673f nfs_revalidate_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x0fea76d7 nfs_show_path EXPORT_SYMBOL_GPL fs/nfs/nfs 0x10962bc2 nfs_auth_info_match -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x125f6a3e __tracepoint_nfs_fsync_enter -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x14c5ef20 nfs_show_options -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15c2e24f nfs_post_op_update_inode -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x15fe4975 nfs_file_release -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x194e544f nfs_open -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c144784 nfs_submount -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1d201252 nfs_file_set_open_context -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22806a55 nfs_commit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x180c5793 nfs_get_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1924962e nfs4_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b52d843 nfs_server_remove_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1b788892 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1c9a8599 nfs_put_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x1e36aa7d nfs_scan_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x202d2342 nfs_may_open EXPORT_SYMBOL_GPL fs/nfs/nfs 0x22d795a8 _nfs_display_fhandle_hash -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23866df7 nfs_pgio_current_mirror -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23ebbfa1 nfs_free_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x23f5107c nfs_free_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2487d028 __traceiter_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2566eb45 nfs_unlink EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26884ff7 nfs_alloc_fhandle -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27253c62 nfs_request_add_commit_list_locked -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x28ac190d nfs_lock -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2affde78 nfs_initiate_pgio -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2c5ba07a __traceiter_nfs_fsync_exit -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2cee3424 __SCK__tp_func_nfs_fsync_exit -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d9569a3 nfs_pageio_init_write -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2da6891d nfs_server_remove_lists -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2e200e4b nfs_wait_client_init_complete -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2f237086 nfs_init_commit -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x305087c0 nfs4_fs_type -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30b307e8 nfs_file_write -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31b030d6 __SCK__tp_func_nfs_xdr_status -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x320f9542 nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x26b029a5 nfs_file_llseek +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x27cf7405 nfs_mknod +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b19d8a9 nfs_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2b5eb94c nfs_wait_client_init_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2ca3a262 nfs_drop_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2d89b0b6 nfs_statfs +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2eb1aca8 nfs_fhget +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x2fc80c2f nfs_request_add_commit_list_locked +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x30517703 nfs_setattr +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x31d5b755 nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3360f126 nfs_post_op_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x341d850f nfs_pageio_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x34a797d9 __tracepoint_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x35692801 nfs_pageio_reset_read_mds EXPORT_SYMBOL_GPL fs/nfs/nfs 0x37239e6d __SCT__tp_func_nfs_xdr_bad_filehandle -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x379018ae nfs_wait_on_request -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x381894fa nfs_set_cache_invalid EXPORT_SYMBOL_GPL fs/nfs/nfs 0x39e05ac3 nfs_idmap_cache_timeout -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3ad33a17 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3a3aa9b1 nfs_filemap_write_and_wait_range +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3adf0f3c nfs_commitdata_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3c5fa0d7 nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3d2a6251 nfs_getattr EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f2690f2 nfs_check_flags +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x3f713429 __traceiter_nfs_fsync_enter EXPORT_SYMBOL_GPL fs/nfs/nfs 0x40739385 nfs_wait_bit_killable -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x41e856e6 nfs_file_fsync -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42b2411b __traceiter_nfs_xdr_bad_filehandle -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42de2108 nfs_commitdata_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x410df44a nfs_wb_all +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x416d7f51 nfs_create_server EXPORT_SYMBOL_GPL fs/nfs/nfs 0x42f2c81f nfs4_client_id_uniquifier -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44e97dc4 nfs_setattr_update_inode -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x453626b6 nfs_pageio_resend -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4659fb50 nfs_free_client -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47c008c7 nfs_writeback_update_inode -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x486b818c alloc_nfs_open_context -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x48f3964b nfs_pageio_reset_read_mds -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a5ee6a0 nfs_clear_verifier_delegated +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4468359f nfs_async_iocounter_wait +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x44887745 nfs_sb_active +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x46b9cbe1 nfs_setattr_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x47fab297 nfs_add_or_obtain +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4a64bd4a nfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4b3b6070 nfs_atomic_open EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4cb9e001 recover_lost_locks -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d02d2bc register_nfs_version -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d873105 __tracepoint_nfs_xdr_status -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4da4c7d9 nfs_get_client -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4db746b2 nfs_access_zap_cache -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x501eff6b nfs_client_init_is_complete -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x50d935f7 __tracepoint_nfs_fsync_exit -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5113678e nfs_try_get_tree +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x4d51426b nfs_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x503dd3cb nfs_file_fsync EXPORT_SYMBOL_GPL fs/nfs/nfs 0x51892d61 nfs_callback_set_tcpport -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5320ed62 nfs_file_llseek -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x538bad27 nfs_symlink -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53ce7540 nfs_sb_active -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x53fbdab3 nfs_file_mmap -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x554836ed nfs_request_add_commit_list -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x57469965 nfs_setattr -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x575524be nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x52a7bf80 nfs_initiate_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x535977e2 nfs_file_mmap +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x55b9735c __tracepoint_nfs_xdr_bad_filehandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x56a3bbb1 nfs_access_zap_cache EXPORT_SYMBOL_GPL fs/nfs/nfs 0x584b8482 nfs_inc_attr_generation_counter -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5abc9238 nfs_generic_pgio -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5ce0dd4a nfs_fhget -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x605058f5 nfs_put_lock_context -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x60e856ce get_nfs_open_context -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x63454028 nfs_dentry_operations -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66221098 nfs_revalidate_inode -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6777552a nfs_reconfigure -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68be2e09 nfs_free_server -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x68ec4b80 nfs_generic_pg_test -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ac60133 nfs_getattr -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6b8c32f7 nfs_mknod -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c0567ad nfs_file_read -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6cfda805 nfs_access_add_cache -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x72e71ea4 nfs_show_devname -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x73a93dc0 nfs_client_init_status -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x746e1fc5 nfs_mark_client_ready -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7491052f nfs_commitdata_release -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bcbe30e nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5862fc51 nfs_file_set_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5bed2064 nfs_mark_client_ready +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5c882b8e nfs_symlink +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5e218c7a nfs_alloc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f324ca0 nfs_free_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x5f756ce5 nfs_kill_super +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6160355f get_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x66c09973 nfs_write_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6c4a7a35 __tracepoint_nfs_xdr_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6ce91625 nfs_link +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d0b95b3 unregister_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d1c9d76 nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x6d1d34b2 nfs_show_devname +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x71147ec7 __tracepoint_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x758a5448 nfs_close_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x76144feb nfs_pgio_current_mirror +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7843ca01 nfs_zap_acl_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7a141527 nfs_setsecurity +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bbbd3b6 nfs_init_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7bf2d2c3 nfs_clone_server EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c9722ba nfs_dreq_bytes_left -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7c98edd6 nfs_invalidate_atime -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81123b45 nfs_clear_inode -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81cb0958 nfs_get_lock_context -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x82e7995e nfs4_dentry_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x7dc2e00f nfs_show_options +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x81be0a14 nfs_mkdir EXPORT_SYMBOL_GPL fs/nfs/nfs 0x832e8f0b nfs_alloc_fattr -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8380a05f nfs_async_iocounter_wait -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x853f3268 nfs_wb_all -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x85853483 nfs_rmdir -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x86bea52d nfs_put_client -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x877fd72f nfs_init_cinfo -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87e6318d nfs_kill_super -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8a562eb7 nfs_instantiate -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8faffb9d nfs_show_stats +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x84b12c93 nfs_force_lookup_revalidate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8558d172 nfs_permission +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x865f7516 nfs_instantiate +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x87d5d758 nfs_rename +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x88ecce64 nfs_sops +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8c043d59 put_nfs_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8cd58eed nfs_reconfigure +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8e406640 __traceiter_nfs_xdr_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x8f39b72e nfs_pageio_resend EXPORT_SYMBOL_GPL fs/nfs/nfs 0x90a5530f nfsiod_workqueue -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9187d6ae nfs_fs_type +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x919b282d alloc_nfs_open_context EXPORT_SYMBOL_GPL fs/nfs/nfs 0x91d1fe52 max_session_slots -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x929cd1d4 nfs_initiate_commit -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96d5192e nfs4_label_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x93d4e881 nfs_create +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96c4266b nfs_file_operations +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x96cf9ffb nfs_server_copy_userdata +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9762186d nfs_invalidate_atime EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98b0ece8 nfs_init_timeout_values +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x98bf9b8c nfs_inode_attach_open_context +EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9ad75e64 nfs_init_cinfo EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9d919c44 __SCT__tp_func_nfs_fsync_exit -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e25bc93 nfs_alloc_server -EXPORT_SYMBOL_GPL fs/nfs/nfs 0x9e2f4764 nfs_refresh_inode EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa05ca625 nfs_fattr_init -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa06f8d1a nfs_may_open -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa1f72d20 nfs_probe_fsinfo -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa38d5f50 nfs_fscache_open_file -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa48321e8 nfs_file_operations -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa4b8ed19 nfs_alloc_client -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa56f53f4 nfs_init_client -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7949671 nfs_client_for_each_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa17795bb nfs_rmdir +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2161c28 nfs_request_remove_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa26ea10f __traceiter_nfs_xdr_bad_filehandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa2e55db7 nfs_server_insert_lists +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa338f191 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa7489d57 nfs_sync_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa778ac4e nfs_client_for_each_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa81ba3b1 nfs_file_release +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa89cf992 nfs_path EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa8e9e1ae send_implementation_id EXPORT_SYMBOL_GPL fs/nfs/nfs 0xa9173ea6 nfs_access_set_mask -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaaee8959 nfs_umount_begin +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaa9ba664 nfs_put_lock_context EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaafd4acc max_session_cb_slots -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xaca52726 nfs_filemap_write_and_wait_range -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xafff1dfc nfs_clone_server -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb45e6ca0 nfs_inode_attach_open_context -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb5711696 nfs_do_submount -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb787b07d nfs_lookup -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb7a39f52 nfs_pgheader_init -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb785a06 nfs_rename -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbbe35971 nfs_path -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc234f7f4 nfs_close_context -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2e31bab nfs_create_server -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc2e48376 nfs_pgio_header_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xabe6178d nfs_free_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xadc97447 nfs_request_add_commit_list +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xadfdaf25 nfs_access_add_cache +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb09f44ca register_nfs_version +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb398a966 nfs_client_init_is_complete +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb3cf36ae nfs_commit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb474bf5e __SCK__tp_func_nfs_fsync_enter +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb4b93766 nfs_initiate_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xb9405270 nfs_create_rpc_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbb6edff6 nfs_pgheader_init +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbc610a3b nfs_lock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbd799780 nfs_post_op_update_inode_force_wcc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xbec6f3e7 nfs_set_cache_invalid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc05dccff nfs_set_verifier +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc1498ae9 nfs_fscache_open_file +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc33ee2c2 nfs_init_server_rpcclient EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc3a2be67 nfs_net_id -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc482b3e4 nfs_scan_commit_list -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc7af0a7c __tracepoint_nfs_xdr_bad_filehandle -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc812a3ad nfs_statfs -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcaf974d0 nfs_mkdir -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcb8149d8 nfs_zap_acl_cache -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc174aec __SCK__tp_func_nfs_xdr_bad_filehandle -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcd8aa4f2 nfs_sb_deactive -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcec5c87a nfs_init_server_rpcclient -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd0e788d0 nfs_release_request -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5869ded nfs_add_or_obtain -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd72b811f __traceiter_nfs_fsync_enter -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd77be51a nfs_write_inode -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd7aa8672 unregister_nfs_version -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd8b7b5d0 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc67eb942 nfs_pageio_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc75b3252 __SCK__tp_func_nfs_fsync_exit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc8e110d7 nfs_probe_fsinfo +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xc93572f2 nfs_lookup +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcc4a21fa nfs_refresh_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xcf512623 nfs_file_read +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd0fb93c9 __SCK__tp_func_nfs_xdr_bad_filehandle +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5adbba4 nfs_init_client +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd5cd6d01 nfs_open +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xd96eaa02 nfs_do_submount +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xda0536a0 __SCK__tp_func_nfs_xdr_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdabde7e7 nfs_clear_verifier_delegated EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdae9b5d7 nfs4_disable_idmapping -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdbec05b0 nfs_sync_inode -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdc92071d nfs_unlink -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xde6dfeba nfs_setsecurity -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdf5ec3a4 nfs_permission -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe18043f9 nfs_set_verifier -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe2205023 nfs_link -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe6dbfee0 nfs_retry_commit -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe737e207 nfs_commit_free -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe8a53f72 nfs_request_remove_commit_list -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xedc5a420 nfs_create_rpc_client -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee8539f8 nfs_check_cache_invalid -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf02ea3d4 nfs_force_lookup_revalidate -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf09371c1 nfs_atomic_open -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf0acc80c nfs_pageio_init_read -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf51c5d47 nfs_pgio_header_alloc -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf54f731c nfs_server_insert_lists -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf71ff4bd nfs_pageio_reset_write_mds -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf7efd406 nfs_show_path -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfadf4a8f nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdb1e8ca7 nfs_check_cache_invalid +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xdbad9854 nfs_pageio_reset_write_mds +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe23873c7 nfs_alloc_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe3984fc0 nfs_pgio_header_alloc +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe57e1854 nfs_file_write +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xe5f78576 nfs_client_init_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea313c54 nfs_release_request +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xea318f62 nfs_access_get_cached +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xee268218 nfs_retry_commit +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xefbc69fb nfs_flock +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf127fab5 nfs_writeback_update_inode +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf4e9b33d nfs_generic_pgio +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xf8ff011f nfs_sb_deactive EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfc619abd _nfs_display_fhandle -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfcdd8faf nfs_drop_inode EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfd3c0de6 __SCT__tp_func_nfs_fsync_enter -EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe605faa __traceiter_nfs_xdr_status +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfd4525f0 nfs_commit_free +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfdefbe17 nfs_alloc_server +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe09ed5c nfs_try_get_tree +EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfe5723be nfs_clear_inode EXPORT_SYMBOL_GPL fs/nfs/nfs 0xfeb42418 __SCT__tp_func_nfs_xdr_status -EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x83eb1798 nfs3_set_ds_client -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x000b3d98 __traceiter_ff_layout_write_error -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x007208f2 __SCK__tp_func_pnfs_mds_fallback_pg_init_write -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x009ce353 __traceiter_pnfs_mds_fallback_pg_init_write -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x049b583e __tracepoint_ff_layout_write_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv3 0x3b425643 nfs3_set_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0184f09f __traceiter_ff_layout_commit_error EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x054bef45 layoutstats_timer -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0935020e pnfs_generic_layout_insert_lseg -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0a507cfe pnfs_generic_pg_cleanup -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0b1be9c6 nfs4_init_deviceid_node -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0d2865dd nfs_remove_bad_delegation -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0dadd5c9 nfs4_proc_getdeviceinfo -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0e841c58 __SCK__tp_func_nfs4_pnfs_write -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11296d7d pnfs_alloc_commit_array -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x11c0867e __traceiter_pnfs_mds_fallback_read_pagelist -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x17b70cae __SCK__tp_func_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x080e84af pnfs_generic_pg_check_range +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x09882091 __SCK__tp_func_pnfs_mds_fallback_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0cc47ebd __tracepoint_pnfs_mds_fallback_read_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x0da9e495 nfs4_schedule_lease_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1700882e pnfs_unregister_layoutdriver EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x18e75751 __SCT__tp_func_pnfs_mds_fallback_write_pagelist -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1cb42c2f pnfs_write_done_resend_to_mds -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1cda8a4f __traceiter_pnfs_mds_fallback_read_done -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ce24e4d nfs4_schedule_lease_recovery -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1e416b28 nfs4_decode_mp_ds_addr -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1e88251d nfs4_mark_deviceid_unavailable -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1ea4ee03 pnfs_generic_ds_cinfo_destroy -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1eae7311 nfs4_schedule_session_recovery -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1eff5d59 pnfs_read_done_resend_to_mds -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x20675639 __tracepoint_pnfs_mds_fallback_pg_get_mirror_count -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x22b42374 __tracepoint_pnfs_mds_fallback_pg_init_read -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x247b366b nfs4_mark_deviceid_available -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x25be85f5 nfs4_find_or_create_ds_client -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2788103f nfs4_delete_deviceid -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x28ce2aeb pnfs_error_mark_layout_for_return -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x299707c2 __tracepoint_ff_layout_read_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1aeab6b4 __SCK__tp_func_pnfs_mds_fallback_read_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1cb0f92c pnfs_generic_search_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1e68cdcd __SCK__tp_func_pnfs_mds_fallback_pg_get_mirror_count +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x1f4aaa14 __traceiter_ff_layout_write_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x22134961 pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x24b3bba9 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x24d9aefb pnfs_generic_write_commit_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x24e780e7 pnfs_generic_commit_pagelist EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2b16e909 __SCT__tp_func_nfs4_pnfs_commit_ds -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d0d013b __traceiter_ff_layout_read_error -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2ef05f1d __traceiter_pnfs_mds_fallback_write_done -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2fcbfcb5 __SCK__tp_func_ff_layout_commit_error -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3022ffc2 __tracepoint_pnfs_mds_fallback_write_done -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x30d48bf6 __tracepoint_pnfs_mds_fallback_read_pagelist -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x325094ec nfs4_test_session_trunk -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3348f045 pnfs_generic_ds_cinfo_release_lseg -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x38778040 __tracepoint_nfs4_pnfs_write -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3a2b94a6 __SCK__tp_func_pnfs_mds_fallback_pg_init_read -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3af9a728 pnfs_ld_read_done -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3cc0078a pnfs_generic_pg_check_layout -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3d016283 __SCK__tp_func_pnfs_mds_fallback_read_done -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3d3e889c nfs4_sequence_done -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3ebb7c23 nfs4_test_deviceid_unavailable -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3f99bee2 pnfs_read_resend_pnfs -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4156c1c3 pnfs_generic_pg_writepages -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x424814d0 __tracepoint_pnfs_mds_fallback_read_done -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4326692c pnfs_set_layoutcommit -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x49344ff8 pnfs_generic_recover_commit_reqs -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4bdd32b2 __SCK__tp_func_ff_layout_write_error -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4e6ab89e __tracepoint_pnfs_mds_fallback_write_pagelist -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4f4247d8 __tracepoint_nfs4_pnfs_commit_ds -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x51849372 pnfs_generic_pg_init_write -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x566b6a67 pnfs_put_lseg -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5811a7b9 __SCK__tp_func_pnfs_mds_fallback_read_pagelist -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5889aff7 __traceiter_nfs4_pnfs_read -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5afd334c nfs42_proc_layouterror -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5b026625 pnfs_generic_search_commit_reqs -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5c3a2b24 __traceiter_pnfs_mds_fallback_write_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x2d1ee1a6 pnfs_layoutcommit_inode +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x30498712 pnfs_generic_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x31a5b950 __tracepoint_pnfs_mds_fallback_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x31b24ef0 __SCK__tp_func_pnfs_mds_fallback_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3248ca2c pnfs_read_resend_pnfs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x35ce564d __tracepoint_pnfs_mds_fallback_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x37742bda pnfs_generic_ds_cinfo_destroy +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x39be129a __traceiter_pnfs_mds_fallback_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x3c4daad6 pnfs_generic_pg_writepages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x428919ff __SCK__tp_func_pnfs_mds_fallback_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x43e30788 pnfs_generic_pg_check_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4aa73e13 pnfs_put_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x4e218acb __tracepoint_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x518e822f __SCK__tp_func_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x53487b4a __SCK__tp_func_ff_layout_write_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x539e38cf nfs4_schedule_migration_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x54a7d1f6 __tracepoint_pnfs_mds_fallback_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x54bff622 pnfs_write_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x54e1726c nfs4_delete_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x59839bf2 __tracepoint_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5cd53e3f pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5cf4a20c nfs4_init_ds_session +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5f210dae nfs4_sequence_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x5f4024b5 __traceiter_pnfs_mds_fallback_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x600278f8 pnfs_generic_pg_test +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x60063d21 nfs4_pnfs_ds_add EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6085edbd nfs_map_string_to_numeric +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x61d40bcf nfs4_test_session_trunk EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x63826d35 __SCT__tp_func_nfs4_pnfs_read -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x65d2bf37 pnfs_set_lo_fail -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x68b724bd __tracepoint_pnfs_mds_fallback_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x65cef653 pnfs_generic_clear_request_commit EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x69d3558d pnfs_generic_rw_release EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6a5eb444 __SCT__tp_func_pnfs_mds_fallback_pg_init_read EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6a925097 __SCT__tp_func_pnfs_mds_fallback_read_pagelist -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6f874663 pnfs_generic_pg_test -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x73d0378c __traceiter_nfs4_pnfs_write -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7daea272 nfs4_init_ds_session -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7df0937e pnfs_generic_pg_check_range +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6ba060b7 pnfs_read_done_resend_to_mds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6c173510 __tracepoint_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6d2a8b6c pnfs_generic_prepare_to_resend_writes +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x6e457fcc nfs4_test_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x73129923 nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x73a2f58f __SCK__tp_func_pnfs_mds_fallback_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x75d31e2c nfs4_schedule_stateid_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7601c544 pnfs_generic_recover_commit_reqs +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x76514d19 nfs4_mark_deviceid_unavailable +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x777f2e92 pnfs_generic_pg_cleanup +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7d014cec pnfs_nfs_generic_sync EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7e42bd3f __SCT__tp_func_ff_layout_read_error -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7f77ee03 pnfs_generic_write_commit_done -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8d431dee pnfs_add_commit_array -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8ecbfd60 nfs41_sequence_done -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9022de48 pnfs_layoutcommit_inode -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x91664ab5 pnfs_register_layoutdriver +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x7f05f11d __tracepoint_ff_layout_commit_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x80a1a6c2 __tracepoint_ff_layout_write_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x832bffcb __traceiter_ff_layout_read_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x835d9e0c nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x83f2408e pnfs_alloc_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8642ced3 nfs4_put_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8645bb3a pnfs_generic_ds_cinfo_release_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8a25c228 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x8ae17774 nfs4_proc_getdeviceinfo +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x90434375 pnfs_ld_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x917d2aa6 nfs4_set_rw_stateid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x920156b6 __SCK__tp_func_ff_layout_read_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x922c78dd nfs42_proc_layouterror EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x930a94fd __SCT__tp_func_pnfs_mds_fallback_write_done -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x944ce655 pnfs_generic_commit_pagelist -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x94c6c551 pnfs_update_layout -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x960591fa nfs4_pnfs_ds_add -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x96a72ddb nfs4_pnfs_ds_connect +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x947d9660 __SCK__tp_func_nfs4_pnfs_write EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x96c4643f __SCT__tp_func_pnfs_mds_fallback_pg_get_mirror_count -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9cf9123e pnfs_generic_scan_commit_lists -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9eb5d142 pnfs_nfs_generic_sync -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9edd46e9 __traceiter_pnfs_mds_fallback_pg_get_mirror_count -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa1e9e016 __traceiter_nfs4_pnfs_commit_ds -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa20ab432 nfs4_set_rw_stateid -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa86121b3 __SCK__tp_func_pnfs_mds_fallback_write_pagelist -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xad426edf nfs4_schedule_lease_moved_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9cb513d2 __SCK__tp_func_ff_layout_commit_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9d2e1ef7 pnfs_set_lo_fail +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0x9f236d9f pnfs_ld_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xa01a6955 nfs4_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xad2825d1 __tracepoint_ff_layout_read_error EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xadeca730 __SCT__tp_func_nfs4_pnfs_write -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb00fd961 __SCK__tp_func_ff_layout_read_error -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbaa335fc pnfs_ld_write_done -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc23fb6fa __SCK__tp_func_pnfs_mds_fallback_write_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaeb68817 __tracepoint_pnfs_mds_fallback_read_done +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xaf583073 __tracepoint_pnfs_mds_fallback_write_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb4274428 pnfs_free_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb652cc61 nfs_remove_bad_delegation +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb84438d0 __tracepoint_pnfs_mds_fallback_pg_get_mirror_count +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xb9ffcd5f __traceiter_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xbcf617f4 pnfs_generic_pg_init_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc15097d1 pnfs_generic_scan_commit_lists EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc361c3c5 __SCT__tp_func_pnfs_mds_fallback_read_done -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc86f2356 pnfs_generic_pg_init_read -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcb77b16c pnfs_destroy_layout -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcb8a75d4 __tracepoint_ff_layout_commit_error +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc3638dd9 __traceiter_pnfs_mds_fallback_read_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc401c257 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc4bfe91d nfs4_find_get_deviceid +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc724b330 __traceiter_pnfs_mds_fallback_pg_get_mirror_count +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xc8f544eb pnfs_set_layoutcommit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcb0ee14e nfs4_set_ds_client EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcc21ce5c __SCT__tp_func_ff_layout_commit_error -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcd68e427 pnfs_generic_clear_request_commit -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcdc1b6a7 nfs4_find_get_deviceid -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcf29b923 pnfs_free_commit_array -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xcf3c5c59 nfs4_set_ds_client -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd46d329d __traceiter_ff_layout_commit_error -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd63d6de0 nfs4_put_deviceid_node -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd8301e0b pnfs_generic_prepare_to_resend_writes -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdd0fa829 __SCK__tp_func_pnfs_mds_fallback_pg_get_mirror_count +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd194a9a2 __traceiter_nfs4_pnfs_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd254306d __SCK__tp_func_nfs4_pnfs_commit_ds +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd3e50e93 nfs4_schedule_session_recovery +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd530004d pnfs_update_layout +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xd692a61f __SCK__tp_func_pnfs_mds_fallback_write_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdb1f8bc6 pnfs_add_commit_array +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xddcce57c pnfs_destroy_layout EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdeb5edce __SCT__tp_func_pnfs_mds_fallback_pg_init_write -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xdecd5edb __SCK__tp_func_nfs4_pnfs_commit_ds -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe05a1182 nfs4_schedule_migration_recovery -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe761e204 __tracepoint_nfs4_pnfs_read -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeadbaac2 nfs4_setup_sequence +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe218bf50 nfs4_find_or_create_ds_client +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe6caa5e7 pnfs_error_mark_layout_for_return +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xe94a5fc8 nfs4_init_deviceid_node +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xeb5c0347 __traceiter_pnfs_mds_fallback_write_done EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xed15fb41 nfs4_print_deviceid -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xef6d0857 pnfs_unregister_layoutdriver -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf04ac266 pnfs_report_layoutstat -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf2f4aa16 nfs4_pnfs_ds_put +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf2feef5e nfs4_decode_mp_ds_addr EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf32fa2b7 __SCT__tp_func_ff_layout_write_error -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf35b064b pnfs_layout_mark_request_commit +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf4dd3e70 __traceiter_pnfs_mds_fallback_pg_init_read +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf63a5f50 pnfs_generic_layout_insert_lseg +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf6ed32ec nfs41_sequence_done EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf7801360 nfs41_maxgetdevinfo_overhead -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf81a29ed pnfs_generic_pg_readpages +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf8752958 __traceiter_pnfs_mds_fallback_write_pagelist +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf8df4aa5 pnfs_report_layoutstat EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xf999267e pnfs_generic_commit_release -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfa648c12 __traceiter_pnfs_mds_fallback_pg_init_read -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfcb20700 nfs4_schedule_stateid_recovery -EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xffe83ce9 pnfs_generic_sync +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfdd41be4 __traceiter_nfs4_pnfs_write +EXPORT_SYMBOL_GPL fs/nfs/nfsv4 0xfe3973bc nfs4_mark_deviceid_available +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x0864ad8a opens_in_grace EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x1fe1e1ad locks_end_grace -EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x61b2fb5e opens_in_grace -EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xa281e81e locks_start_grace -EXPORT_SYMBOL_GPL fs/nfs_common/grace 0xd0fe827b locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x6afca275 locks_in_grace +EXPORT_SYMBOL_GPL fs/nfs_common/grace 0x7fb146a7 locks_start_grace EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x17e2a59d nfsacl_decode EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x4e66d13d nfs_stream_encode_acl EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0x4fe458e9 nfsacl_encode EXPORT_SYMBOL_GPL fs/nfs_common/nfs_acl 0xb0895ed3 nfs_stream_decode_acl -EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x18aebcff o2nm_get_node_by_num +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x0693788a o2nm_get_node_by_num EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x1b89c6ee o2hb_fill_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x23723f8f o2hb_unregister_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4541ff17 o2nm_node_put EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4900035b o2hb_stop_all_regions -EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x4f443a88 o2nm_get_node_by_ip EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x58c88ff2 o2hb_get_all_regions EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x5e95a4b2 o2net_send_message_vec -EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x611a00ce o2nm_node_put EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x6a0c3847 __mlog_printk EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x81a17396 mlog_and_bits +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0x84bae5d6 o2hb_setup_callback EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xa87bc9e7 o2nm_configured_node_map +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xad1978ff o2nm_node_get EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xb6ebf62a o2nm_this_node -EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xba276015 o2nm_node_get -EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbaedd4d2 o2hb_setup_callback EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xbd13ee5d o2hb_check_node_heartbeating_no_sem EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xc4d99852 o2hb_check_node_heartbeating_from_callback EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xd859ac8c o2net_fill_node_map -EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe3a8ef26 o2hb_unregister_callback -EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xe8e1bdf2 o2hb_register_callback +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xea80ce76 o2nm_get_node_by_ip EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf1a5611d o2net_unregister_handler_list EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf56c2017 mlog_not_bits EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xf982e6db o2net_send_message +EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfb10eddb o2hb_register_callback EXPORT_SYMBOL_GPL fs/ocfs2/cluster/ocfs2_nodemanager 0xfe1298f3 o2net_register_handler -EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x25b4c994 dlmunlock -EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x79cbb9c1 dlmlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x13d1a43b dlmunlock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x16f6e040 dlm_register_domain EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x7a1211f8 dlm_setup_eviction_cb -EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x86960fc9 dlm_print_one_lock -EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x9f2a763f dlm_register_eviction_cb -EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xc0314d49 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x8a2dd0a7 dlm_unregister_domain +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0x8cb34f9b dlm_register_eviction_cb EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd7ba575e dlm_errmsg EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xd8fa57a6 dlm_unregister_eviction_cb +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xe42b92ac dlm_print_one_lock +EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xe9fe8451 dlmlock EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfb86b96f dlm_errname -EXPORT_SYMBOL_GPL fs/ocfs2/dlm/ocfs2_dlm 0xfd7026a6 dlm_register_domain EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0a726931 ocfs2_cluster_this_node EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0bffc4e3 ocfs2_stack_glue_unregister EXPORT_SYMBOL_GPL fs/ocfs2/ocfs2_stackglue 0x0cfd3fc5 ocfs2_cluster_connect_agnostic @@ -12066,1008 +12067,1008 @@ EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0x63adbf92 encode_rs8 EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xeb2f825c init_rs_gfp EXPORT_SYMBOL_GPL lib/reed_solomon/reed_solomon 0xfd581da1 free_rs -EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x2f4174ba lowpan_header_decompress -EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x71ad9087 lowpan_header_compress -EXPORT_SYMBOL_GPL net/802/garp 0x4abcc511 garp_init_applicant -EXPORT_SYMBOL_GPL net/802/garp 0x52fbf9e8 garp_request_leave -EXPORT_SYMBOL_GPL net/802/garp 0x7eeb0f96 garp_register_application -EXPORT_SYMBOL_GPL net/802/garp 0xbbd503aa garp_uninit_applicant -EXPORT_SYMBOL_GPL net/802/garp 0xeed69d55 garp_unregister_application -EXPORT_SYMBOL_GPL net/802/garp 0xf38203ae garp_request_join -EXPORT_SYMBOL_GPL net/802/mrp 0x0003eb31 mrp_uninit_applicant -EXPORT_SYMBOL_GPL net/802/mrp 0x04ab6bb8 mrp_unregister_application -EXPORT_SYMBOL_GPL net/802/mrp 0x472121be mrp_request_leave -EXPORT_SYMBOL_GPL net/802/mrp 0x885ecf50 mrp_register_application -EXPORT_SYMBOL_GPL net/802/mrp 0x8dfd116d mrp_init_applicant -EXPORT_SYMBOL_GPL net/802/mrp 0xa4715d57 mrp_request_join -EXPORT_SYMBOL_GPL net/802/stp 0x0d38931b stp_proto_unregister -EXPORT_SYMBOL_GPL net/802/stp 0x1fbdb58d stp_proto_register +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0x69c1c65f lowpan_header_decompress +EXPORT_SYMBOL_GPL net/6lowpan/6lowpan 0xd3279468 lowpan_header_compress +EXPORT_SYMBOL_GPL net/802/garp 0x26d10416 garp_unregister_application +EXPORT_SYMBOL_GPL net/802/garp 0x3753c4e2 garp_register_application +EXPORT_SYMBOL_GPL net/802/garp 0x3c355a9a garp_request_leave +EXPORT_SYMBOL_GPL net/802/garp 0x51f8a336 garp_init_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x89a26e8a garp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/garp 0x9ed3ecd3 garp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0x0007a90c mrp_unregister_application +EXPORT_SYMBOL_GPL net/802/mrp 0x05f0fe72 mrp_uninit_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x07e04053 mrp_init_applicant +EXPORT_SYMBOL_GPL net/802/mrp 0x9600ca4d mrp_register_application +EXPORT_SYMBOL_GPL net/802/mrp 0x99cf914e mrp_request_join +EXPORT_SYMBOL_GPL net/802/mrp 0xac5fc1e7 mrp_request_leave +EXPORT_SYMBOL_GPL net/802/stp 0x344dc952 stp_proto_unregister +EXPORT_SYMBOL_GPL net/802/stp 0x7103670b stp_proto_register EXPORT_SYMBOL_GPL net/9p/9pnet 0x0d008d5b p9_client_xattrcreate EXPORT_SYMBOL_GPL net/9p/9pnet 0x2b2a8842 p9_client_xattrwalk EXPORT_SYMBOL_GPL net/atm/atm 0xb09faf79 register_atmdevice_notifier EXPORT_SYMBOL_GPL net/atm/atm 0xcfb6a3da unregister_atmdevice_notifier -EXPORT_SYMBOL_GPL net/ax25/ax25 0x09915b57 ax25_register_pid +EXPORT_SYMBOL_GPL net/ax25/ax25 0x47eb43fe ax25_register_pid EXPORT_SYMBOL_GPL net/ax25/ax25 0xac93ae05 ax25_bcast EXPORT_SYMBOL_GPL net/ax25/ax25 0xaeb7451e ax25_defaddr -EXPORT_SYMBOL_GPL net/bridge/bridge 0x0ae98290 br_vlan_get_pvid_rcu -EXPORT_SYMBOL_GPL net/bridge/bridge 0x144be880 br_dev_queue_push_xmit -EXPORT_SYMBOL_GPL net/bridge/bridge 0x15f4434c br_fdb_replay -EXPORT_SYMBOL_GPL net/bridge/bridge 0x1601285d br_forward -EXPORT_SYMBOL_GPL net/bridge/bridge 0x2b974f6e br_multicast_has_querier_adjacent -EXPORT_SYMBOL_GPL net/bridge/bridge 0x33e1c47c br_fdb_clear_offload -EXPORT_SYMBOL_GPL net/bridge/bridge 0x36194ec8 br_fdb_find_port -EXPORT_SYMBOL_GPL net/bridge/bridge 0x37d6a665 br_multicast_has_querier_anywhere -EXPORT_SYMBOL_GPL net/bridge/bridge 0x3ccece19 br_forward_finish -EXPORT_SYMBOL_GPL net/bridge/bridge 0x59714c29 br_mdb_replay -EXPORT_SYMBOL_GPL net/bridge/bridge 0x65837e87 br_multicast_enabled -EXPORT_SYMBOL_GPL net/bridge/bridge 0x825f3f93 br_vlan_get_info -EXPORT_SYMBOL_GPL net/bridge/bridge 0x82d908f7 br_port_flag_is_set -EXPORT_SYMBOL_GPL net/bridge/bridge 0x83970682 br_vlan_replay -EXPORT_SYMBOL_GPL net/bridge/bridge 0x8a0b314f br_vlan_get_pvid -EXPORT_SYMBOL_GPL net/bridge/bridge 0x8a72dcec nf_br_ops -EXPORT_SYMBOL_GPL net/bridge/bridge 0x90aa200a br_get_ageing_time -EXPORT_SYMBOL_GPL net/bridge/bridge 0x9f62a558 br_handle_frame_finish -EXPORT_SYMBOL_GPL net/bridge/bridge 0xae583155 br_multicast_router -EXPORT_SYMBOL_GPL net/bridge/bridge 0xbc7bea49 br_port_get_stp_state -EXPORT_SYMBOL_GPL net/bridge/bridge 0xbe7c5d60 br_vlan_enabled -EXPORT_SYMBOL_GPL net/bridge/bridge 0xc3d70753 br_vlan_get_proto -EXPORT_SYMBOL_GPL net/bridge/bridge 0xd92cc7b2 br_multicast_list_adjacent -EXPORT_SYMBOL_GPL net/core/failover 0x7d959abb failover_register -EXPORT_SYMBOL_GPL net/core/failover 0x87c39e05 failover_slave_unregister -EXPORT_SYMBOL_GPL net/core/failover 0xb2b31ea9 failover_unregister -EXPORT_SYMBOL_GPL net/dccp/dccp 0x0009eb7a dccp_setsockopt -EXPORT_SYMBOL_GPL net/dccp/dccp 0x00126b66 dccp_ctl_make_reset -EXPORT_SYMBOL_GPL net/dccp/dccp 0x0cbe6d71 dccp_ioctl +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0788eb8b br_handle_frame_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x0e5c7cc7 br_vlan_get_pvid +EXPORT_SYMBOL_GPL net/bridge/bridge 0x1c0876fc br_mdb_replay +EXPORT_SYMBOL_GPL net/bridge/bridge 0x23bb3c21 br_multicast_router +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4792a715 br_vlan_replay +EXPORT_SYMBOL_GPL net/bridge/bridge 0x4d30c5b5 br_fdb_clear_offload +EXPORT_SYMBOL_GPL net/bridge/bridge 0x5dc7c32d br_multicast_list_adjacent +EXPORT_SYMBOL_GPL net/bridge/bridge 0x66cc1954 br_forward +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6aed81dd br_multicast_has_querier_anywhere +EXPORT_SYMBOL_GPL net/bridge/bridge 0x6d6f1d8a br_vlan_get_pvid_rcu +EXPORT_SYMBOL_GPL net/bridge/bridge 0x8a450064 br_multicast_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9a12ebde br_forward_finish +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9eccd650 nf_br_ops +EXPORT_SYMBOL_GPL net/bridge/bridge 0x9f04bde3 br_port_get_stp_state +EXPORT_SYMBOL_GPL net/bridge/bridge 0xad781f3f br_dev_queue_push_xmit +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc302350a br_get_ageing_time +EXPORT_SYMBOL_GPL net/bridge/bridge 0xc73285d5 br_fdb_find_port +EXPORT_SYMBOL_GPL net/bridge/bridge 0xcad1047a br_port_flag_is_set +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd2273b71 br_vlan_enabled +EXPORT_SYMBOL_GPL net/bridge/bridge 0xd7f66bec br_vlan_get_info +EXPORT_SYMBOL_GPL net/bridge/bridge 0xe86c2fb9 br_vlan_get_proto +EXPORT_SYMBOL_GPL net/bridge/bridge 0xf0f212a7 br_fdb_replay +EXPORT_SYMBOL_GPL net/bridge/bridge 0xfe3bfd15 br_multicast_has_querier_adjacent +EXPORT_SYMBOL_GPL net/core/failover 0x1c5f088d failover_unregister +EXPORT_SYMBOL_GPL net/core/failover 0x61c4edb5 failover_slave_unregister +EXPORT_SYMBOL_GPL net/core/failover 0x74e6227e failover_register +EXPORT_SYMBOL_GPL net/dccp/dccp 0x03d92e82 dccp_setsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x0bd19bc3 dccp_connect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x11807a4d dccp_getsockopt +EXPORT_SYMBOL_GPL net/dccp/dccp 0x144ba496 dccp_init_sock EXPORT_SYMBOL_GPL net/dccp/dccp 0x182ec2bf dccp_ackvec_parsed_add -EXPORT_SYMBOL_GPL net/dccp/dccp 0x18c4af80 dccp_destroy_sock -EXPORT_SYMBOL_GPL net/dccp/dccp 0x2525530c dccp_create_openreq_child -EXPORT_SYMBOL_GPL net/dccp/dccp 0x2c7c65b2 dccp_check_req -EXPORT_SYMBOL_GPL net/dccp/dccp 0x35a4bfae dccp_sync_mss -EXPORT_SYMBOL_GPL net/dccp/dccp 0x3d5f14b5 dccp_set_state -EXPORT_SYMBOL_GPL net/dccp/dccp 0x4498b2f5 dccp_recvmsg -EXPORT_SYMBOL_GPL net/dccp/dccp 0x46b9b56c dccp_disconnect -EXPORT_SYMBOL_GPL net/dccp/dccp 0x4764e089 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x1b82b564 dccp_disconnect +EXPORT_SYMBOL_GPL net/dccp/dccp 0x262c1e15 dccp_parse_options +EXPORT_SYMBOL_GPL net/dccp/dccp 0x26bf58d2 dccp_create_openreq_child +EXPORT_SYMBOL_GPL net/dccp/dccp 0x27d3f31a dccp_make_response +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2997bf59 dccp_child_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x2cace7f2 dccp_insert_option +EXPORT_SYMBOL_GPL net/dccp/dccp 0x371b1f23 dccp_ctl_make_reset +EXPORT_SYMBOL_GPL net/dccp/dccp 0x48b5341c dccp_reqsk_init +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4a842047 dccp_reqsk_send_ack +EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cd06a49 dccp_check_req EXPORT_SYMBOL_GPL net/dccp/dccp 0x4cdd391d dccp_feat_list_purge -EXPORT_SYMBOL_GPL net/dccp/dccp 0x4ed4bba9 dccp_init_sock +EXPORT_SYMBOL_GPL net/dccp/dccp 0x57d06189 dccp_destroy_sock EXPORT_SYMBOL_GPL net/dccp/dccp 0x59814a84 dccp_statistics +EXPORT_SYMBOL_GPL net/dccp/dccp 0x64a2443b dccp_close +EXPORT_SYMBOL_GPL net/dccp/dccp 0x668691c7 dccp_done +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6a149030 dccp_sync_mss +EXPORT_SYMBOL_GPL net/dccp/dccp 0x6e3599ec dccp_feat_signal_nn_change EXPORT_SYMBOL_GPL net/dccp/dccp 0x722630de dccp_hashinfo -EXPORT_SYMBOL_GPL net/dccp/dccp 0x7c4a7328 inet_dccp_listen EXPORT_SYMBOL_GPL net/dccp/dccp 0x80993155 dccp_timestamp -EXPORT_SYMBOL_GPL net/dccp/dccp 0x81f72387 dccp_make_response -EXPORT_SYMBOL_GPL net/dccp/dccp 0x850721ad dccp_parse_options EXPORT_SYMBOL_GPL net/dccp/dccp 0x86be7924 dccp_packet_name EXPORT_SYMBOL_GPL net/dccp/dccp 0x884a32bd dccp_death_row -EXPORT_SYMBOL_GPL net/dccp/dccp 0x88762ff0 dccp_feat_nn_get -EXPORT_SYMBOL_GPL net/dccp/dccp 0x8f429e32 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0x8e62521a dccp_rcv_state_process +EXPORT_SYMBOL_GPL net/dccp/dccp 0x95320a67 dccp_send_ack EXPORT_SYMBOL_GPL net/dccp/dccp 0x9598d24d dccp_ackvec_parsed_cleanup -EXPORT_SYMBOL_GPL net/dccp/dccp 0x95fcf36e dccp_reqsk_init -EXPORT_SYMBOL_GPL net/dccp/dccp 0x98597d78 dccp_insert_option -EXPORT_SYMBOL_GPL net/dccp/dccp 0x9cd8ab60 dccp_shutdown -EXPORT_SYMBOL_GPL net/dccp/dccp 0xabf54102 dccp_done -EXPORT_SYMBOL_GPL net/dccp/dccp 0xb4261788 dccp_getsockopt -EXPORT_SYMBOL_GPL net/dccp/dccp 0xbac988b9 dccp_reqsk_send_ack -EXPORT_SYMBOL_GPL net/dccp/dccp 0xbb4bbfca dccp_connect -EXPORT_SYMBOL_GPL net/dccp/dccp 0xbce497f7 dccp_feat_signal_nn_change -EXPORT_SYMBOL_GPL net/dccp/dccp 0xbf2c4957 dccp_close -EXPORT_SYMBOL_GPL net/dccp/dccp 0xc1af510a dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0x965ea73c dccp_recvmsg +EXPORT_SYMBOL_GPL net/dccp/dccp 0x9b865eec dccp_ioctl +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc1c133e0 dccp_sendmsg EXPORT_SYMBOL_GPL net/dccp/dccp 0xc3b6a26c dccp_orphan_count -EXPORT_SYMBOL_GPL net/dccp/dccp 0xca918a69 dccp_poll -EXPORT_SYMBOL_GPL net/dccp/dccp 0xd4a87233 dccp_send_ack -EXPORT_SYMBOL_GPL net/dccp/dccp 0xebd5209c dccp_rcv_state_process -EXPORT_SYMBOL_GPL net/dccp/dccp 0xfda4cce6 dccp_sendmsg -EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x21f7e609 dccp_v4_request_recv_sock -EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x30745d42 dccp_v4_connect -EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x8fe926c0 dccp_invalid_packet -EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xc5b5cbe2 dccp_v4_send_check -EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xfc240f39 dccp_v4_do_rcv -EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xfdcb0351 dccp_v4_conn_request -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x0393ad0c dsa_devlink_region_create -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x0d6aa9f6 dsa_devlink_params_register -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x26c982c6 dsa_switch_suspend -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x3b93c436 dsa_unregister_switch -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x3f4c5ab2 dsa_dev_to_net_device -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x4a382243 dsa_port_from_netdev -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x66e37f8d dsa_switch_resume -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x66fda046 dsa_tag_drivers_unregister -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x692d31d5 dsa_devlink_param_get -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x6949b667 dsa_port_get_ethtool_phy_stats -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x71913ad1 dsa_devlink_resources_unregister -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x724fff5d dsa_switch_find -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x738cccd6 dsa_register_switch -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x75e84188 dsa_devlink_port_region_create -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x79289bb4 dsa_devlink_params_unregister -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x7fd8695b dsa_devlink_resource_register -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x816fe86e dsa_tag_drivers_register -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xa38a5e07 dsa_slave_dev_check -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xa3c03dc4 dsa_port_get_phy_strings -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xa89fb9d9 dsa_devlink_param_set -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xaa915c57 dsa_devlink_resource_occ_get_register -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xbbac67c2 dsa_enqueue_skb -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xbc133a93 dsa_port_phylink_mac_change +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc83dcdd0 dccp_poll +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc90b3275 dccp_send_sync +EXPORT_SYMBOL_GPL net/dccp/dccp 0xc97e7848 dccp_shutdown +EXPORT_SYMBOL_GPL net/dccp/dccp 0xda84d9e3 dccp_set_state +EXPORT_SYMBOL_GPL net/dccp/dccp 0xdd270ee8 dccp_rcv_established +EXPORT_SYMBOL_GPL net/dccp/dccp 0xf1873f5a dccp_feat_nn_get +EXPORT_SYMBOL_GPL net/dccp/dccp 0xfb381ec5 inet_dccp_listen +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x2aa11f09 dccp_v4_do_rcv +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x3ee4da1b dccp_v4_connect +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x6b7fa914 dccp_invalid_packet +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0x782c8895 dccp_v4_send_check +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xb32daa5a dccp_v4_request_recv_sock +EXPORT_SYMBOL_GPL net/dccp/dccp_ipv4 0xe821b306 dccp_v4_conn_request +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x03b294a1 dsa_slave_dev_check +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x13d9f287 dsa_devlink_param_set +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x18bff523 dsa_unregister_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x1e513bfd dsa_devlink_port_region_create +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x21c74b4e dsa_devlink_params_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x3c53ec27 dsa_port_from_netdev +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x3d077e98 dsa_switch_resume +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x4a4ede88 dsa_port_get_phy_sset_count +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x4d6cbb06 dsa_port_phylink_mac_change +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x5524f38e dsa_dev_to_net_device +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x60411e47 dsa_devlink_params_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x61c16993 dsa_devlink_region_create +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x647db8bf dsa_tag_drivers_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x74e7fe13 dsa_devlink_resource_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x7d11dead dsa_switch_find +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x83c86c01 dsa_devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0x866900c4 dsa_port_get_phy_strings +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xa1f22926 dsa_tag_drivers_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xa4a79708 dsa_switch_suspend EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xc23e8d5f dsa_devlink_region_destroy -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xdab5e351 dsa_devlink_resource_occ_get_unregister -EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xe96a7b3c dsa_port_get_phy_sset_count -EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x1a7780ce dsa_8021q_tx_vid +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xc49539a8 dsa_enqueue_skb +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xc944a1fd dsa_devlink_resource_occ_get_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xd138acb0 dsa_register_switch +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xdf03bbf4 dsa_devlink_resources_unregister +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xe056b0d5 dsa_port_get_ethtool_phy_stats +EXPORT_SYMBOL_GPL net/dsa/dsa_core 0xf273f3c1 dsa_devlink_param_get +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x201be4f3 dsa_8021q_crosschip_bridge_leave EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x415e894e dsa_8021q_rx_subvlan EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x417d1fed dsa_8021q_rx_switch_id -EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x50b8d475 dsa_8021q_crosschip_bridge_join +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x518e6e1a dsa_8021q_crosschip_bridge_join EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x5928bba7 vid_is_dsa_8021q_rxvlan -EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x61257491 dsa_8021q_rx_vid -EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x9b7d195b dsa_8021q_setup +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x656537ad dsa_8021q_setup +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x791692fc dsa_8021q_xmit EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0x9e59271d dsa_8021q_rx_source_port -EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xba589416 dsa_8021q_rx_vid_subvlan -EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xc8f12971 dsa_8021q_xmit -EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xd416c1cd dsa_8021q_crosschip_bridge_leave +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xb1cf81c9 dsa_8021q_tx_vid +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xb2dd1040 dsa_8021q_rx_vid +EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xcabf8b17 dsa_8021q_rx_vid_subvlan EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xf13e1803 vid_is_dsa_8021q EXPORT_SYMBOL_GPL net/dsa/tag_8021q 0xf6f3b5c8 vid_is_dsa_8021q_txvlan -EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x516e5259 ieee802154_hdr_push -EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x680d803d ieee802154_hdr_peek_addrs -EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x77caa883 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x49e1ab29 ieee802154_hdr_push EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x87e2553b ieee802154_max_payload -EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xb948b11b ieee802154_hdr_pull -EXPORT_SYMBOL_GPL net/ife/ife 0x5bdc3e70 ife_encode +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0x8e4e292e ieee802154_hdr_pull +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xa976891a ieee802154_hdr_peek_addrs +EXPORT_SYMBOL_GPL net/ieee802154/ieee802154 0xdd44b1e6 ieee802154_hdr_peek +EXPORT_SYMBOL_GPL net/ife/ife 0x14566043 ife_encode EXPORT_SYMBOL_GPL net/ife/ife 0x6210e871 ife_tlv_meta_next EXPORT_SYMBOL_GPL net/ife/ife 0x67db2029 ife_tlv_meta_decode +EXPORT_SYMBOL_GPL net/ife/ife 0x9dc71dc9 ife_decode EXPORT_SYMBOL_GPL net/ife/ife 0xe7888e98 ife_tlv_meta_encode -EXPORT_SYMBOL_GPL net/ife/ife 0xe85cc78a ife_decode -EXPORT_SYMBOL_GPL net/ipv4/esp4 0xc6202dd1 esp_input_done2 -EXPORT_SYMBOL_GPL net/ipv4/esp4 0xc923d490 esp_output_head -EXPORT_SYMBOL_GPL net/ipv4/esp4 0xd61bd122 esp_output_tail -EXPORT_SYMBOL_GPL net/ipv4/gre 0x005b5489 gre_add_protocol -EXPORT_SYMBOL_GPL net/ipv4/gre 0xd0c93e1d gre_del_protocol -EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x04ea0581 inet_diag_msg_common_fill -EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x1aed69c7 inet_diag_register -EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x20eb5d1a inet_diag_msg_attrs_fill -EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x3d88fc1c inet_sk_diag_fill -EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x49fb6774 inet_diag_unregister -EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x5cd5d5a5 inet_diag_bc_sk -EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x865826ce inet_diag_dump_icsk -EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xab0d2b7b inet_diag_dump_one_icsk -EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xe51362b0 inet_diag_find_one_icsk -EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0x594c19c0 gretap_fb_dev_create -EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0x129cfa79 arpt_alloc_initial_table -EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x0b93d4d7 ipt_alloc_initial_table -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0xdde2825c nf_defrag_ipv4_enable -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0xe787ba23 nf_defrag_ipv4_disable -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0x3ce80017 nf_dup_ipv4 -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x2f1ea139 nf_reject_ip_tcphdr_get -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x77bcd245 nf_send_unreach -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x82c5a928 nf_reject_iphdr_put -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x88110b09 nf_send_reset -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xb38ae047 nf_reject_ip_tcphdr_put -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xc0b528e7 nf_reject_skb_v4_tcp_reset -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xec6d22c5 nf_reject_skb_v4_unreach -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_socket_ipv4 0x95a9afef nf_sk_lookup_slow_v4 -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x4fe6f3c1 nf_tproxy_handle_time_wait4 -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x842b516c nf_tproxy_get_sock_v4 -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x9774887d nf_tproxy_laddr4 -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0x5b912676 nft_fib4_eval -EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0x7258e559 nft_fib4_eval_type -EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x27aed3b4 tcp_vegas_init -EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x412a14e0 tcp_vegas_pkts_acked -EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x51cb8701 tcp_vegas_get_info -EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x7c2122f1 tcp_vegas_state -EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xa767474c tcp_vegas_cwnd_event -EXPORT_SYMBOL_GPL net/ipv6/esp6 0x9f536289 esp6_input_done2 -EXPORT_SYMBOL_GPL net/ipv6/esp6 0xc2b99ef4 esp6_output_head -EXPORT_SYMBOL_GPL net/ipv6/esp6 0xeedba74f esp6_output_tail -EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x3d694fbb ip6_tnl_rcv_ctl -EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xb5548aa0 ip6_tnl_encap_setup -EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0xc5069691 ip6_tnl_xmit_ctl -EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0x58138913 ip6t_alloc_initial_table -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x1323c9ed nf_defrag_ipv6_disable -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x4d9db19a nf_defrag_ipv6_enable -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x78d03c9f nf_ct_frag6_gather -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x6f8f27eb nf_dup_ipv6 -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x3f106d3c nf_send_reset6 -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x42cc6ca5 nf_send_unreach6 -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x44896df0 nf_reject_skb_v6_unreach -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x4c36558f nf_reject_skb_v6_tcp_reset -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x595f0ba4 nf_reject_ip6_tcphdr_put -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x73333431 nf_reject_ip6_tcphdr_get -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xa0bbbdc5 nf_reject_ip6hdr_put -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_socket_ipv6 0x12ce0e86 nf_sk_lookup_slow_v6 -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x1df8316c nf_tproxy_handle_time_wait6 -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x2cdee7d8 nf_tproxy_get_sock_v6 -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0xe8edf6f4 nf_tproxy_laddr6 -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0x4f82c77d nft_fib6_eval_type -EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0xe56909a9 nft_fib6_eval -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x100e02c8 l2tp_session_dec_refcount -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x149b7d29 l2tp_xmit_skb -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x155a33e3 l2tp_tunnel_create -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x189787b1 l2tp_tunnel_get_session -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1b415627 l2tp_session_get -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x1c3e9ac3 l2tp_tunnel_get -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x21a84993 l2tp_session_register -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x37ea9847 l2tp_tunnel_get_nth -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x66002544 l2tp_udp_encap_recv -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7478fcd5 l2tp_session_get_nth -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x84745333 l2tp_session_delete -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x87799690 l2tp_tunnel_delete -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x8a54937f l2tp_sk_to_tunnel -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb181646c l2tp_session_create -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xb39cbadc l2tp_tunnel_dec_refcount -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbc823913 l2tp_tunnel_inc_refcount -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xbfec0151 l2tp_recv_common -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc2630f29 l2tp_session_get_by_ifname -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc7d488a7 l2tp_session_inc_refcount -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe9c08d65 l2tp_session_set_header_len -EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xebf54509 l2tp_tunnel_register -EXPORT_SYMBOL_GPL net/l2tp/l2tp_ip 0x31fb6a82 l2tp_ioctl -EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x0afc2646 l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x1d6636e7 esp_output_tail +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x23a9b14f esp_input_done2 +EXPORT_SYMBOL_GPL net/ipv4/esp4 0x89939ec1 esp_output_head +EXPORT_SYMBOL_GPL net/ipv4/gre 0x438ef278 gre_del_protocol +EXPORT_SYMBOL_GPL net/ipv4/gre 0xddf58fc4 gre_add_protocol +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x40f19468 inet_diag_bc_sk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x566d0162 inet_diag_dump_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0x8c643687 inet_sk_diag_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb4607e49 inet_diag_unregister +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xb505b24e inet_diag_msg_common_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd7d31acd inet_diag_msg_attrs_fill +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xd979e491 inet_diag_dump_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xee4fab08 inet_diag_find_one_icsk +EXPORT_SYMBOL_GPL net/ipv4/inet_diag 0xfe3c599d inet_diag_register +EXPORT_SYMBOL_GPL net/ipv4/ip_gre 0xe70aa495 gretap_fb_dev_create +EXPORT_SYMBOL_GPL net/ipv4/netfilter/arp_tables 0xa89f7d4e arpt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/ip_tables 0x0d27a5b4 ipt_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x1a9f1e80 nf_defrag_ipv4_enable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_defrag_ipv4 0x6fd62d8c nf_defrag_ipv4_disable +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_dup_ipv4 0x0b6c893e nf_dup_ipv4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x39eb32e9 nf_send_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x42fae4ac nf_reject_ip_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x59c728f4 nf_send_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x7106d11e nf_reject_skb_v4_unreach +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0x7486905c nf_reject_ip_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xd3c4f326 nf_reject_iphdr_put +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_reject_ipv4 0xd8434a2e nf_reject_skb_v4_tcp_reset +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_socket_ipv4 0x165875a3 nf_sk_lookup_slow_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x18de81b4 nf_tproxy_handle_time_wait4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x37a2cde5 nf_tproxy_laddr4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nf_tproxy_ipv4 0x7d976310 nf_tproxy_get_sock_v4 +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0x1934a43f nft_fib4_eval +EXPORT_SYMBOL_GPL net/ipv4/netfilter/nft_fib_ipv4 0x5c30a978 nft_fib4_eval_type +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x219afcb7 tcp_vegas_get_info +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x3107a806 tcp_vegas_cwnd_event +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x3e5d8c7f tcp_vegas_state +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0x8f075442 tcp_vegas_init +EXPORT_SYMBOL_GPL net/ipv4/tcp_vegas 0xe1e2f043 tcp_vegas_pkts_acked +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x38b615d9 esp6_input_done2 +EXPORT_SYMBOL_GPL net/ipv6/esp6 0x464fcfd9 esp6_output_tail +EXPORT_SYMBOL_GPL net/ipv6/esp6 0xbcb8558a esp6_output_head +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x31af7e5f ip6_tnl_rcv_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x55c95325 ip6_tnl_xmit_ctl +EXPORT_SYMBOL_GPL net/ipv6/ip6_tunnel 0x5a1a1203 ip6_tnl_encap_setup +EXPORT_SYMBOL_GPL net/ipv6/netfilter/ip6_tables 0xa682f127 ip6t_alloc_initial_table +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x8435acb9 nf_ct_frag6_gather +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x9bf73487 nf_defrag_ipv6_enable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_defrag_ipv6 0x9f9eae32 nf_defrag_ipv6_disable +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_dup_ipv6 0x28f96a06 nf_dup_ipv6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x0f58f494 nf_send_unreach6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x312e98b3 nf_send_reset6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0x9589e0df nf_reject_skb_v6_tcp_reset +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xadcc4007 nf_reject_ip6_tcphdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xd40dfffc nf_reject_ip6hdr_put +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xea59b779 nf_reject_skb_v6_unreach +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_reject_ipv6 0xed83b6fa nf_reject_ip6_tcphdr_get +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_socket_ipv6 0x913fd4ca nf_sk_lookup_slow_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x1e60b8d4 nf_tproxy_laddr6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x7fa6bad5 nf_tproxy_get_sock_v6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nf_tproxy_ipv6 0x941433bd nf_tproxy_handle_time_wait6 +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0xb096b344 nft_fib6_eval +EXPORT_SYMBOL_GPL net/ipv6/netfilter/nft_fib_ipv6 0xf4ad093e nft_fib6_eval_type +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x066c4e30 l2tp_session_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x240d59cd l2tp_tunnel_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x41166696 l2tp_session_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6193d738 l2tp_session_delete +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x6e4acb8e l2tp_tunnel_get_session +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x719da053 l2tp_session_get_by_ifname +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x74754e4c l2tp_tunnel_inc_refcount +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7c9d5575 l2tp_session_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x7fa6259b l2tp_tunnel_get +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9756e88f l2tp_session_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9a7236d7 l2tp_tunnel_get_nth +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0x9e2911b0 l2tp_sk_to_tunnel +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xa23183df l2tp_udp_encap_recv +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc903aafa l2tp_session_inc_refcount +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xc9d0d386 l2tp_tunnel_create +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xda74df88 l2tp_xmit_skb +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xdca5f3bb l2tp_tunnel_register +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe6c33224 l2tp_session_dec_refcount +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xe7820c76 l2tp_recv_common +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xed6aba4b l2tp_session_set_header_len +EXPORT_SYMBOL_GPL net/l2tp/l2tp_core 0xf78348d6 l2tp_tunnel_dec_refcount +EXPORT_SYMBOL_GPL net/l2tp/l2tp_ip 0xdb1d0f2e l2tp_ioctl EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x337f2432 l2tp_nl_unregister_ops -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x045645ff ieee80211_iter_chan_contexts_atomic -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0b720f52 ieee80211_request_smps -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x18a371ca ieee80211_gtk_rekey_add -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1c8f6eb0 ieee80211_ave_rssi -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x221f6662 wdev_to_ieee80211_vif -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x2e12b8da ieee80211_iterate_stations_atomic -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x33f8a8b9 ieee80211_find_sta_by_ifaddr -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x40e69ce2 ieee80211_iterate_active_interfaces_mtx +EXPORT_SYMBOL_GPL net/l2tp/l2tp_netlink 0x4a32f0ad l2tp_nl_register_ops +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x050b7c54 ieee80211_calc_rx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x0c8b973e ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x1f720b1c ieee80211_iterate_active_interfaces_mtx +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x3d706290 ieee80211_gtk_rekey_add +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x405485c6 ieee80211_update_mu_groups +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x41c9ffc1 ieee80211_request_smps EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x5250cf98 ieee80211_tkip_add_iv +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x55aee856 ieee80211_iterate_active_interfaces_atomic EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x59c13bed ieee80211_key_mic_failure -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x6f8527be ieee80211_ready_on_channel -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x70e7341d ieee80211_iterate_active_interfaces_atomic -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x7b8cf601 ieee80211_iterate_interfaces -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8347bbcb ieee80211_vif_to_wdev -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x84f8cc42 ieee80211_remain_on_channel_expired -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8e9616a4 ieee80211_gtk_rekey_notify +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x67c88a4a ieee80211_find_sta_by_ifaddr +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x72a364b8 ieee80211_remain_on_channel_expired +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x87cbb804 ieee80211_resume_disconnect +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x8ed1337b ieee80211_iterate_interfaces +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0x90a40d50 wdev_to_ieee80211_vif EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa1247034 ieee80211_remove_key -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa2a46347 ieee80211_resume_disconnect EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xa4b2b77e ieee80211_key_replay -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb2beb8ea ieee80211_calc_tx_airtime +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xaceffcd3 ieee80211_ave_rssi +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xb183c529 ieee80211_iter_chan_contexts_atomic +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xbc4a2d84 ieee80211_iterate_stations_atomic EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xd8e09da4 ieee80211_set_key_rx_seq -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xe2431ad2 ieee80211_calc_rx_airtime -EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xed46acd0 ieee80211_update_mu_groups -EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x00929491 mpls_stats_inc_outucastpkts -EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x5b5fc537 mpls_dev_mtu -EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x64b109be mpls_output_possible +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xea5fd2ad ieee80211_ready_on_channel +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xee5397c9 ieee80211_vif_to_wdev +EXPORT_SYMBOL_GPL net/mac80211/mac80211 0xfb6e2aca ieee80211_calc_tx_airtime +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x18a6debf mpls_pkt_too_big +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x328d5abf mpls_stats_inc_outucastpkts +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x65abe14c mpls_dev_mtu +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x68e10ba8 mpls_output_possible EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x7670b536 nla_get_labels -EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x7e71b0ab mpls_pkt_too_big -EXPORT_SYMBOL_GPL net/mpls/mpls_router 0xcfd637d4 nla_put_labels -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x0bac4699 ip_set_put_flags -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x100cb06f ip_set_get_ip4_port -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x10d3b91a ip_set_match_extensions -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1320e626 ip_set_get_extensions -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1615bc72 ip_set_init_comment +EXPORT_SYMBOL_GPL net/mpls/mpls_router 0x85d44106 nla_put_labels +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x066f8599 ip_set_nfnl_get_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x09c71a58 ip_set_del +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1b11c2c7 ip_set_init_comment +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x1c66f280 ip_set_put_extensions EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x22d966c6 ip_set_range_to_cidr -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x3741a70b ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x26883abd ip_set_type_register +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x38ff1219 ip_set_get_extensions EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x397f6231 ip_set_free -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5bb53f9b ip_set_nfnl_put -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x5bd8bb64 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x51ca4037 ip_set_get_ip6_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x61690b49 ip_set_test +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x732f3a32 ip_set_put_flags +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x748cbb53 ip_set_add EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7924b6de ip_set_hostmask_map -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7e8b2791 ip_set_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7a7925e3 ip_set_get_ip4_port +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x7c409bbd ip_set_extensions EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x81fff2d1 ip_set_netmask_map -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x885512b4 ip_set_get_byname -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8a1ff996 ip_set_add +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x84252ac4 ip_set_match_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x8cbea293 ip_set_elem_len +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9a8344af ip_set_nfnl_put +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9ba32045 ip_set_name_byindex EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0x9e98722b ip_set_get_ipaddr6 EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa293f8a6 ip_set_get_ipaddr4 -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa8c55c7a ip_set_test -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xb25bbc6b ip_set_del -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xc065cdb1 ip_set_name_byindex -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xd2cb1544 ip_set_nfnl_get_byindex -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf22e6656 ip_set_put_extensions +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xa4874c37 ip_set_type_unregister +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf1a2e952 ip_set_put_byindex +EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf2524324 ip_set_get_byname EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xf3b4d4ae ip_set_alloc -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfe56d383 ip_set_type_unregister -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xfe86c891 ip_set_get_ip6_port -EXPORT_SYMBOL_GPL net/netfilter/ipset/ip_set 0xff751908 ip_set_elem_len -EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x0c6bd78b register_ip_vs_pe -EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x7d35b217 unregister_ip_vs_pe -EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xb5874100 ip_vs_conn_in_get_proto -EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xca21809d ip_vs_conn_out_get_proto -EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x0541af89 nf_conncount_gc_list +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0x9c8a4659 ip_vs_conn_out_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xad85a635 ip_vs_conn_in_get_proto +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xb4dd4343 register_ip_vs_pe +EXPORT_SYMBOL_GPL net/netfilter/ipvs/ip_vs 0xc5f6e1ac unregister_ip_vs_pe EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x3ff55ad3 nf_conncount_cache_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x6b859520 nf_conncount_gc_list EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x8c4cb9c3 nf_conncount_list_init -EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0x903470a7 nf_conncount_init -EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xb7fbbd13 nf_conncount_destroy -EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xf447a402 nf_conncount_count -EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xf8f50e88 nf_conncount_add -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x007ce1ae nf_ct_expect_iterate_net -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x02f3e73d nf_ct_get_tuplepr -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0306d606 nf_ct_expect_alloc -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x04ded9ef nf_ct_tcp_seqadj_set -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x072950d8 nf_ct_expect_iterate_destroy -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0871f035 nf_ct_expect_register_notifier -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0aa9b87a nf_connlabels_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xbb0a8227 nf_conncount_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xbcfc7a7d nf_conncount_count +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xc536ced6 nf_conncount_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conncount 0xdd7d685e nf_conncount_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x005999a3 nf_ct_gre_keymap_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0217ee32 nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x03b2735a nf_ct_expect_related_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x05aa731f nf_conntrack_unregister_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x06bc2fb3 nf_ct_gre_keymap_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x09ca4197 __nf_ct_refresh_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0aa13c61 nf_ct_tmpl_free EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0bc00f80 nf_nat_helper_try_module_get -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0c24f392 nf_ct_bridge_unregister -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0c2eba34 nf_ct_remove_expectations -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1ababb9d nf_ct_expect_find_get -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1c8fbbaa nf_conntrack_unregister_notifier -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1fecd824 nf_ct_unconfirmed_destroy -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x202b0d4a nf_ct_l4proto_find -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x20d88b62 __nf_conntrack_confirm -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x24f68094 nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0d5bb459 nf_ct_get_tuplepr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x0dead7e0 __nf_conntrack_helper_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x13c1215d nf_conntrack_free +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x162bc687 nf_conntrack_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x16d2a0c1 nf_ct_helper_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x19493454 nf_ct_untimeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x1b4eadfa nf_conntrack_alter_reply +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x214b2f40 nf_ct_bridge_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x230f8812 nf_ct_unlink_expect_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x26176743 nf_ct_expect_iterate_net EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x289c3714 nf_ct_alloc_hashtable EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x28eff409 nf_conntrack_hash -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2a6b9297 nf_ct_deliver_cached_events -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2adfb3de __nf_conntrack_helper_find -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2bb99c28 nf_ct_expect_init -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ecb39bb nf_conntrack_helper_unregister -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3db2ac30 nf_ct_l4proto_log_invalid -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4175e109 nf_ct_unexpect_related -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x445db60b nf_nat_helper_register -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x448fda1c nf_ct_expect_put -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x467be349 nf_connlabels_replace -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x490c4311 nf_ct_seqadj_set -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4a9a30b5 nf_conntrack_helper_register -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b120954 nf_ct_netns_get -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x52dffa6b nf_conntrack_register_notifier -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x590f4ef6 nf_conntrack_find_get -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5bafa02e nf_ct_timeout_find_get_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e4b6050 nf_ct_helper_expectfn_find_by_name -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62bcae65 nf_conntrack_hash_check_insert -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x653073a9 nf_ct_gre_keymap_add -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6597ca06 nf_ct_unlink_expect_report -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x662ee58e nf_conntrack_helpers_unregister -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x66672700 nf_ct_destroy_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x296f3d93 nf_ct_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x29b153e3 nf_ct_l4proto_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x29df22e1 nf_ct_netns_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2ea16795 nf_ct_timeout_find_get_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x2fd927fb nf_ct_remove_expect +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x30fcd20d nf_ct_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x3e07877d nf_conntrack_tuple_taken +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x40278991 nf_connlabels_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x413a22cc nf_ct_acct_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4793ac30 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x488afe7e nf_ct_extend_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4b08ed1d nf_ct_unexpect_related +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x4eee1e6f nf_conntrack_register_notifier +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x517d54ef nf_conntrack_eventmask_report +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x55aff527 nf_ct_expect_find_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x587a3e14 nf_ct_seq_adjust +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5d77e8c2 nf_nat_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5e4e2737 nf_ct_bridge_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x5ee0f32e __nf_ct_try_assign_helper +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x62318bac nf_ct_remove_expectations +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x656da313 nf_ct_seq_offset +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x67f4ea58 nf_ct_expect_unregister_notifier EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x693c3961 nf_ct_helper_hash -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7060a1a0 nf_ct_helper_init -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71f97dfd nf_conntrack_helpers_register -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x734e7307 nf_ct_seqadj_init -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x73abd2af nf_ct_remove_expect -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7957b92e nf_conntrack_free -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x795c3d37 nf_conntrack_count -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7f8f9a43 nf_ct_iterate_cleanup_net -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x84fb3ac0 __nf_ct_try_assign_helper -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8711fc27 nf_nat_helper_put -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x89bf0331 nf_ct_gre_keymap_destroy -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8be4df07 nf_ct_extend_unregister -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8f7be083 nf_conntrack_helper_try_module_get +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6af9f97a nf_ct_expect_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x6ec55626 nf_ct_port_tuple_to_nlattr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x71baf72a nf_ct_delete +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7318eb4a nf_conntrack_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x785cf95b nf_ct_tcp_seqadj_set +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7a2f2c8b nf_conntrack_helpers_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x7c323d0e nf_ct_destroy_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8325519a nf_conntrack_hash_check_insert +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8b3b4297 nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8fe5bcfb nf_ct_helper_ext_add EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x8ffe7e89 nf_conntrack_htable_size -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93d32233 nf_conntrack_in -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x95558401 nf_confirm -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x96f5d9af nf_ct_tmpl_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x92b40c9f nf_ct_helper_log +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x93efbfa8 nf_ct_expect_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x97fa2c4b nf_ct_kill_acct +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x98b192ba nf_ct_helper_expectfn_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9a7db493 nf_ct_expect_alloc EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9adb7399 nf_conntrack_expect_lock -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9d2cce46 nf_ct_tmpl_free -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9e736cb1 nf_conntrack_helper_put -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9e887430 nf_ct_get_id -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9e8e6828 nf_nat_helper_unregister -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9ec0a2df nf_ct_expect_unregister_notifier -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa2b8b543 nf_ct_acct_add -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa517a37c nf_ct_port_tuple_to_nlattr -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xae1f3262 nf_ct_netns_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0x9bf9f8e1 nf_ct_helper_expectfn_find_by_name +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa1b65705 nf_ct_set_timeout +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa226b0a1 nf_ct_deliver_cached_events +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xa4f3fd10 nf_conntrack_count +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaa56fd6b __nf_conntrack_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaeb83411 nf_conntrack_helpers_register EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xaf0847f0 nf_conntrack_locks EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xafbd6cf5 nf_ct_port_nlattr_to_tuple -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb0b731d9 nf_ct_helper_log -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb1c89c7a nf_ct_seq_adjust -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb27df204 nf_ct_expect_related_report -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb6b833e9 nf_l4proto_log_invalid -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb7a98996 nf_ct_kill_acct -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbd8391f0 nf_conntrack_eventmask_report -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc154d46e __nf_ct_refresh_acct -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc17a089b nf_ct_timeout_put_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb0114b4b nf_ct_unconfirmed_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb7d6b1e4 nf_l4proto_log_invalid +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xb8b19f15 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xbea025e7 nf_conntrack_alloc EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc18ac88d nf_ct_expect_hsize +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc25d056c nf_ct_seqadj_init EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc40f284c nf_ct_helper_hsize -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xc9e1ee64 nf_conntrack_alloc -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcb15f3f3 nf_ct_seq_offset -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xccb943d5 nf_ct_helper_expectfn_unregister -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd0b90934 nf_ct_untimeout -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd1673290 nf_ct_helper_ext_add +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcadde916 nf_ct_netns_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcae01765 nf_ct_iterate_cleanup_net +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xcb4e2f75 nf_ct_iterate_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd4d770b7 nf_connlabels_replace EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd505c3e0 nf_ct_port_nlattr_tuple_size +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd5229e6c nf_ct_extend_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd715a5a3 nf_ct_get_id +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xd91ba841 nf_ct_expect_register_notifier EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdba7326b nf_conntrack_lock EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf0aed48 nf_ct_port_nla_policy -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe3d6f537 nf_ct_delete -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe3db859d nf_connlabels_put -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe3f35b6a nf_conntrack_tuple_taken -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe7f11bca nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf28ce4e nf_confirm +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xdf6c6589 nf_ct_expect_init +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe4fb5af7 nf_ct_helper_expectfn_find_by_symbol +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe64838d0 nf_nat_helper_unregister +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xe798dc8b nf_connlabels_get EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xec8beba6 nf_ct_expect_hash -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf1b4dac9 nf_ct_bridge_register -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf2452be3 nf_ct_extend_register -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf2f482d8 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xed8721aa nf_nat_helper_put +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xef7a53b2 nf_conntrack_helper_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf20abee2 nf_conntrack_find_get EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf38bcdf3 nf_conntrack_max -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfdc6da61 nf_ct_helper_expectfn_register +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xf4deab29 __nf_ct_expect_find +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfbcc6fc9 nf_conntrack_in EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe731af8 nf_ct_invert_tuple -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xfe83e0df nf_ct_iterate_destroy -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack 0xff3e9117 nf_ct_set_timeout -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0x9dede27e nf_nat_amanda_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0x8107ae0b nf_conntrack_broadcast_help -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x125677f3 nf_nat_ftp_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x32874f1f nat_rtp_rtcp_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x5d31289c set_h245_addr_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9070dbd5 set_h225_addr_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x9898be58 get_h225_addr -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb8c5b41b nat_callforwarding_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb8f59ea8 set_sig_addr_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc3481cea nat_q931_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xe50d03b6 set_ras_addr_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf4a02bcc nat_t120_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xf744ee78 nat_h245_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x281ec935 nf_nat_irc_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x40f61e65 nf_nat_pptp_hook_inbound -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x47aa109e nf_nat_pptp_hook_outbound -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x9243180f nf_nat_pptp_hook_exp_gre -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xb29b3d57 nf_nat_pptp_hook_expectfn -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2c09961e ct_sip_parse_numerical_param -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4040567b ct_sip_get_sdp_header -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x4aa1aecc nf_nat_sip_hooks -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x6bc470e3 ct_sip_parse_header_uri -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x8d611c2a ct_sip_parse_request -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x948b1051 ct_sip_get_header -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xb7212443 ct_sip_parse_address_param -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x276d007c nf_nat_snmp_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0x6c93b12b nf_nat_tftp_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x3bdf538f nft_fwd_dup_netdev_offload -EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x8a33e0a6 nf_dup_netdev_egress -EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0xf2b80241 nf_fwd_netdev_egress -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x06961b97 flow_offload_free -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x1293a59b nf_flow_rule_route_ipv6 -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x48551aee flow_offload_add -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x48e62ce9 flow_offload_lookup -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x4917a04e nf_flow_offload_ipv6_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x57f281fd nf_flow_table_free -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x6ba2491e nf_flow_table_cleanup -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x7b4d9fce nf_flow_dnat_port -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x80bb8712 nf_flow_rule_route_ipv4 -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x8d637475 flow_offload_refresh -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xa5ca4022 flow_offload_teardown -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xb349c399 nf_flow_table_init -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xbafad31e nf_flow_offload_ip_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xcdfa404b flow_offload_alloc -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xcf438f6a nf_flow_snat_port -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xe232b472 flow_offload_route_init -EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xf6a36b07 nf_flow_table_offload_setup -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x27e4647f nf_nat_redirect_ipv6 -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x35751bec nf_nat_redirect_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_amanda 0xba788dfa nf_nat_amanda_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_broadcast 0xfbc57e13 nf_conntrack_broadcast_help +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_ftp 0x4a576e21 nf_nat_ftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x353df774 nat_h245_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x72ea6d1f set_h225_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8a3fae78 nat_rtp_rtcp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8b0e4ff0 nat_callforwarding_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0x8f12fa91 set_ras_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xb6ef1dc5 nat_t120_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xc5adf977 set_h245_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xce292194 set_sig_addr_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xdca3b74f get_h225_addr +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_h323 0xff60ab7d nat_q931_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_irc 0x4700ae26 nf_nat_irc_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0x63417916 nf_nat_pptp_hook_inbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xa1fb1d71 nf_nat_pptp_hook_exp_gre +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xab407052 nf_nat_pptp_hook_expectfn +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_pptp 0xd8312b9f nf_nat_pptp_hook_outbound +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x2b1554f5 ct_sip_get_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5489d16d ct_sip_parse_request +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x5c302534 ct_sip_get_sdp_header +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x924fc369 ct_sip_parse_numerical_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0x9862f77a ct_sip_parse_address_param +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xbf43791c ct_sip_parse_header_uri +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_sip 0xd8595cf5 nf_nat_sip_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_snmp 0x6e19396c nf_nat_snmp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_conntrack_tftp 0xb0d955b3 nf_nat_tftp_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0x049aa454 nf_fwd_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0xde8b370e nf_dup_netdev_egress +EXPORT_SYMBOL_GPL net/netfilter/nf_dup_netdev 0xe1d64372 nft_fwd_dup_netdev_offload +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x03d00c60 flow_offload_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x0e494013 nf_flow_table_offload_setup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x15804a35 nf_flow_offload_ip_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x257fb973 nf_flow_table_cleanup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x2644a218 flow_offload_alloc +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x338a1c2c nf_flow_table_free +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x42f53126 nf_flow_snat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x5e390df3 flow_offload_teardown +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x62b28a49 nf_flow_rule_route_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x6361be18 nf_flow_offload_ipv6_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x6bc48f72 flow_offload_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0x8bf34a09 flow_offload_route_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xa4a827d9 nf_flow_dnat_port +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xb97bf576 nf_flow_table_init +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xb9a77424 flow_offload_refresh +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xbe642b4a flow_offload_add +EXPORT_SYMBOL_GPL net/netfilter/nf_flow_table 0xf7d7c46b nf_flow_rule_route_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x0f1fbc12 nf_nat_ipv4_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x169a2327 nf_ct_nat_ext_add EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x3bc17c49 nf_nat_masquerade_inet_register_notifiers -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7350c55d nf_ct_nat_ext_add -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7422f40d nf_nat_ipv6_register_fn -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x7a06c7f2 nf_nat_ipv4_register_fn -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8b49799a nf_nat_ipv6_unregister_fn -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x8d6f90cc nf_nat_inet_unregister_fn -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x97762002 nf_nat_inet_register_fn -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa0259144 nf_nat_packet -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa1a7a7fc nf_nat_icmpv6_reply_translation -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa48c254b nf_nat_icmp_reply_translation -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa7bdebda nf_nat_ipv4_unregister_fn -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd2d8f7dd nf_nat_alloc_null_binding -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd4dca63a nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x40fe9fab nf_nat_masquerade_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x48598868 nf_nat_icmp_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x4becdaac nf_nat_inet_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x560726f9 nf_nat_masquerade_ipv4 +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x56b154ea nf_nat_alloc_null_binding +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x6685382a nf_nat_icmpv6_reply_translation +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x854c02f4 nf_nat_inet_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0x9c948cde nf_nat_inet_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xa738ccbd nf_nat_ipv6_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xbd4040ac nf_nat_ipv6_unregister_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd7393924 nf_nat_packet +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd982f879 nf_nat_redirect_ipv4 EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xd9c25654 nf_nat_masquerade_inet_unregister_notifiers -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xed3b029a nf_nat_inet_fn -EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfc057bdc nf_nat_masquerade_ipv4 -EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x0395e14c nf_synproxy_ipv6_init -EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x17157a2b nf_synproxy_ipv4_fini -EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1b0e1b75 ipv6_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xe8d46174 nf_nat_ipv4_register_fn +EXPORT_SYMBOL_GPL net/netfilter/nf_nat 0xfcb0f799 nf_nat_redirect_ipv6 EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1f099794 synproxy_init_timestamp_cookie -EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x1f69eee3 ipv4_synproxy_hook -EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x6475ae10 synproxy_recv_client_ack -EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x6e0e7a40 synproxy_parse_options -EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xab0652ed nf_synproxy_ipv6_fini -EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xbf86c98a nf_synproxy_ipv4_init -EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xc3b91c7a synproxy_send_client_synack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x51051e8a ipv6_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x568fa7c0 ipv4_synproxy_hook +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x8e871140 nf_synproxy_ipv6_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0x90f05356 nf_synproxy_ipv4_init +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xa7cfb24a synproxy_send_client_synack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xaa94fbf3 synproxy_parse_options +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb3d3a2eb synproxy_recv_client_ack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xb8f593b6 synproxy_recv_client_ack +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xc1076c1c nf_synproxy_ipv4_fini EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xca9fc082 synproxy_net_id -EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xccf60ece synproxy_recv_client_ack_ipv6 -EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xda6bc2b6 synproxy_send_client_synack_ipv6 -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0686383f nft_obj_notify +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xd50627f2 synproxy_send_client_synack_ipv6 +EXPORT_SYMBOL_GPL net/netfilter/nf_synproxy_core 0xdf702e0a nf_synproxy_ipv6_fini EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x06c6ca47 nft_meta_policy -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1574b1f3 nft_set_catchall_gc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x07562d45 nft_request_module +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x0c780f44 nft_register_chain_type EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1abf0696 nft_chain_validate_dependency -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1cdcbb31 nft_unregister_expr -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x230685fd nf_tables_deactivate_set -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2a9759ae nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1ae000d6 nft_set_catchall_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x1b69bcc1 nft_do_chain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x21b2d39e nf_tables_destroy_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2689e19d nft_meta_set_validate +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x2d433f02 nft_meta_get_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x31c05fe7 nft_parse_register_store EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3251d762 nf_tables_trans_destroy_flush_work +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x34b0e12f nft_set_lookup_global EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x36fc06f0 nft_chain_validate_hooks +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3735f2dd nft_chain_validate EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x3c9ba3bf nft_data_release EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x41b71e65 nft_trace_enabled -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x44ae0738 nf_tables_bind_set -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4535461c nft_set_catchall_lookup -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x560afc76 nft_meta_set_validate -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5ae7b822 nft_meta_get_eval -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5ffd6472 nft_chain_validate -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x64102aa5 nft_meta_set_eval -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x716d6488 nf_tables_destroy_set -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x733af59e nft_obj_lookup -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x735fbc72 nft_data_init -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7d611a8b nft_flowtable_lookup -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7f2396c7 __nft_release_basechain -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8b2a312e nft_do_chain -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8e739144 nft_meta_get_dump -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x90f400a8 nft_request_module -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x961d493e nft_data_dump -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9981a2a3 nft_register_expr -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9f9e7794 nft_meta_set_dump -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xab45e57f nf_tables_deactivate_flowtable -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb0c7bc68 nft_meta_set_destroy -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb652da20 nft_register_chain_type -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbe87a1c2 nft_dump_register -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc7dfe232 nft_meta_get_init -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xcc928cb9 nft_unregister_obj -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xce98edfa nft_set_lookup_global -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd08e0823 nft_unregister_flowtable_type -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xd2dc601c nft_parse_register_store -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xdc6ef058 nft_register_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x423262b1 nft_meta_set_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x431adacf nft_meta_set_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x45964a01 nft_meta_set_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x4c773bb3 nft_register_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x5177abb7 nft_register_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x541cd4ec nft_data_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x57aa3d04 nft_meta_get_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x60965f3c nft_obj_notify +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x62227437 nf_tables_deactivate_flowtable +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x66062180 nft_unregister_chain_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x6793408d __nft_release_basechain +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x766757dc nft_flowtable_lookup +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7681927e nft_set_elem_destroy +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7d1c7381 nft_data_dump +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x7e3070ac nf_tables_bind_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x811384cf nft_unregister_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x8a4709dc nft_unregister_flowtable_type +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x91ab0535 nft_meta_set_eval +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0x9bfa9d52 nft_register_obj +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa03abbb4 nft_dump_register +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xa600b48b nft_unregister_expr +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xb62d91d8 nf_tables_deactivate_set +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xbb738877 nft_set_catchall_gc +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc5ca12c2 nft_meta_get_init +EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xc8743823 nft_obj_lookup EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xde57b5f5 nft_parse_u32_check EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xe2b8cc13 nft_parse_register_load -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xf73b528c nft_register_flowtable_type -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfb2d1834 nft_unregister_chain_type -EXPORT_SYMBOL_GPL net/netfilter/nf_tables 0xfde6be1e nft_set_elem_destroy -EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x143a14e8 nfnetlink_has_listeners -EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x44336516 nfnetlink_unicast -EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x50af767b nfnetlink_broadcast -EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5c7ab660 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x12ed4c1b nfnetlink_broadcast EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x5ce3b588 nfnl_lock -EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x68e2ad17 nfnetlink_send -EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x852a1e54 nfnetlink_subsys_register -EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xc6a19551 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x681772e2 nfnetlink_set_err +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x8fe57a3b nfnetlink_send +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x9130a668 nfnetlink_has_listeners +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0x99b77846 nfnetlink_subsys_unregister +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xa8395202 nfnetlink_subsys_register +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xad07c915 nfnetlink_unicast EXPORT_SYMBOL_GPL net/netfilter/nfnetlink 0xdb065657 nfnl_unlock -EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x1b9ba84f nfnl_acct_find_get -EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x478f7673 nfnl_acct_update -EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x6e51d168 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x41509936 nfnl_acct_overquota +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x626418d5 nfnl_acct_find_get +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0x8a180a40 nfnl_acct_update EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_acct 0xbecf5d14 nfnl_acct_put +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x164682ee nf_osf_find EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x35eff5e0 nf_osf_fingers -EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x5023fd64 nf_osf_match -EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0x522f202a nf_osf_find -EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x484379cb nft_fib_store_result -EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x85ec3aa7 nft_fib_init -EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x9fc402b9 nft_fib_dump -EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0xabd37789 nft_fib_validate +EXPORT_SYMBOL_GPL net/netfilter/nfnetlink_osf 0xe2803483 nf_osf_match +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x0b2e87f5 nft_fib_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x1d56bb59 nft_fib_init +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0x212276be nft_fib_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_fib 0xd23de78f nft_fib_store_result EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x1de558c1 nft_reject_icmpv6_code -EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x4dd652bc nft_reject_validate +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x29d0a353 nft_reject_dump EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x6081751d nft_reject_policy -EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xae1bac6b nft_reject_init +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0x9cd69615 nft_reject_init EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xe2c84666 nft_reject_icmp_code -EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xf136e1ba nft_reject_dump +EXPORT_SYMBOL_GPL net/netfilter/nft_reject 0xf13f659c nft_reject_validate +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0430807b xt_request_find_table_lock EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x04e27719 xt_compat_flush_offsets -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x28a49795 xt_compat_target_from_user -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3cbd91af xt_hook_ops_alloc -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3d7ab698 xt_check_target -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x3e7b80e5 xt_unregister_table -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x46774b14 xt_proto_fini -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x47de264b xt_check_match -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4e5eb85d xt_register_table -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x50ac5917 xt_request_find_table_lock -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x5201b91f xt_request_find_target -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x612763cb xt_match_to_user -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x629fb47f xt_table_unlock -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x79e89f4e xt_proto_init +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x0729334a xt_hook_ops_alloc +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1d7868ad xt_compat_match_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x1e90324d xt_compat_match_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x26398e56 xt_register_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x2981e1d8 xt_find_table_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x4baa425c xt_unregister_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x66b4d86f xt_compat_target_from_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x77472774 xt_request_find_target EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7bce4603 xt_data_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x7f279a05 xt_check_target EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x807d2b2c xt_recseq EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x823edea5 xt_compat_add_offset -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x87fe0e63 xt_request_find_match -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8dff874d xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x8c54bd7e xt_compat_target_offset +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x90b7e206 xt_request_find_match +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x92157967 xt_proto_init EXPORT_SYMBOL_GPL net/netfilter/x_tables 0x9c995c69 xt_percpu_counter_alloc -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa03ed01c xt_compat_target_to_user -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa5ec3f60 xt_compat_match_offset EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xa7c94f1d xt_compat_lock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbe67cfa5 xt_table_unlock EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xbfacb837 xt_percpu_counter_free -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc25a6974 xt_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc5546621 xt_match_to_user EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xc7fae024 xt_compat_calc_jump +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcaa79bca xt_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xcd14beea xt_check_match EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd1e246a2 xt_compat_unlock +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd2a78920 xt_proto_fini EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd3fcc511 xt_tee_enabled -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd76aa81d xt_compat_target_offset EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xd9bb821b xt_copy_counters -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xdad175f8 xt_compat_match_from_user EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xddf68fc6 xt_find_revision -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xe7bad747 xt_replace_table -EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xfd43199f xt_find_table_lock -EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x3844f63f xt_rateest_put -EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x82eebe5e xt_rateest_lookup -EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x32d60d9d nci_spi_read -EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x7eab7972 nci_spi_allocate_spi -EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xe1435ebe nci_spi_send +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xddf92c78 xt_compat_match_to_user +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf0b6b53c xt_replace_table +EXPORT_SYMBOL_GPL net/netfilter/x_tables 0xf9d7bee0 xt_compat_target_to_user +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x3cc6cc6a xt_rateest_lookup +EXPORT_SYMBOL_GPL net/netfilter/xt_RATEEST 0x72b6befd xt_rateest_put +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0x7fa25f24 nci_spi_send +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xc2b7df09 nci_spi_read +EXPORT_SYMBOL_GPL net/nfc/nci/nci_spi 0xec07600c nci_spi_allocate_spi EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x9820b526 nci_uart_set_config EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0x984b5659 nci_uart_unregister EXPORT_SYMBOL_GPL net/nfc/nci/nci_uart 0xf1232817 nci_uart_register -EXPORT_SYMBOL_GPL net/nsh/nsh 0x768e1e68 nsh_push -EXPORT_SYMBOL_GPL net/nsh/nsh 0x94d6e276 nsh_pop -EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x68d0be01 ovs_vport_alloc -EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x7b6a04a8 ovs_vport_ops_unregister -EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x90abf8b4 __ovs_vport_ops_register -EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x96bf9601 ovs_netdev_link -EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xbdbaa64f ovs_netdev_tunnel_destroy -EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xeb5909ec ovs_vport_free -EXPORT_SYMBOL_GPL net/psample/psample 0x5c92b36f psample_group_put -EXPORT_SYMBOL_GPL net/psample/psample 0x94024f9a psample_sample_packet -EXPORT_SYMBOL_GPL net/psample/psample 0x98baf036 psample_group_get -EXPORT_SYMBOL_GPL net/psample/psample 0xf6ece737 psample_group_take +EXPORT_SYMBOL_GPL net/nsh/nsh 0x6aa942e1 nsh_pop +EXPORT_SYMBOL_GPL net/nsh/nsh 0xaf8ce753 nsh_push +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x1e9bd734 __ovs_vport_ops_register +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x50c375a8 ovs_vport_ops_unregister +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x9a95e94c ovs_netdev_tunnel_destroy +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0x9f2e994a ovs_vport_alloc +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xa09e9e6d ovs_netdev_link +EXPORT_SYMBOL_GPL net/openvswitch/openvswitch 0xd03a525c ovs_vport_free +EXPORT_SYMBOL_GPL net/psample/psample 0x5e2d26f4 psample_group_take +EXPORT_SYMBOL_GPL net/psample/psample 0x7a942226 psample_group_put +EXPORT_SYMBOL_GPL net/psample/psample 0x8b4ca94f psample_sample_packet +EXPORT_SYMBOL_GPL net/psample/psample 0xa4416b86 psample_group_get EXPORT_SYMBOL_GPL net/qrtr/ns 0x8d25501f qrtr_ns_remove EXPORT_SYMBOL_GPL net/qrtr/ns 0xa47e91ba qrtr_ns_init -EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x34673524 qrtr_endpoint_unregister -EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x4ade2843 qrtr_endpoint_post -EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x983b563a qrtr_endpoint_register +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0x91a54119 qrtr_endpoint_post +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0xbf342f7a qrtr_endpoint_unregister +EXPORT_SYMBOL_GPL net/qrtr/qrtr 0xdfc90d1c qrtr_endpoint_register EXPORT_SYMBOL_GPL net/rds/rds 0x00a467af rds_wq -EXPORT_SYMBOL_GPL net/rds/rds 0x214971ca rds_conn_drop -EXPORT_SYMBOL_GPL net/rds/rds 0x272af402 rds_info_register_func -EXPORT_SYMBOL_GPL net/rds/rds 0x28dec3f3 rds_rdma_send_complete -EXPORT_SYMBOL_GPL net/rds/rds 0x2a0ebc07 rds_info_deregister_func -EXPORT_SYMBOL_GPL net/rds/rds 0x2b00f6e9 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x0aac9bd6 rds_connect_path_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x0f2bc9d5 rds_conn_drop EXPORT_SYMBOL_GPL net/rds/rds 0x2b0d543c rds_message_add_extension -EXPORT_SYMBOL_GPL net/rds/rds 0x357998c3 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0x2dc91465 rds_info_register_func +EXPORT_SYMBOL_GPL net/rds/rds 0x32251004 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x32da2cb3 rds_recv_incoming +EXPORT_SYMBOL_GPL net/rds/rds 0x32f732bf rds_conn_connect_if_down EXPORT_SYMBOL_GPL net/rds/rds 0x36087aa4 rds_stats -EXPORT_SYMBOL_GPL net/rds/rds 0x38e21d5a rds_send_ping -EXPORT_SYMBOL_GPL net/rds/rds 0x3cf242bb rds_conn_destroy +EXPORT_SYMBOL_GPL net/rds/rds 0x3a59ac70 rds_message_unmapped +EXPORT_SYMBOL_GPL net/rds/rds 0x43b0a98e rds_message_put EXPORT_SYMBOL_GPL net/rds/rds 0x45a4781e rds_addr_cmp -EXPORT_SYMBOL_GPL net/rds/rds 0x477215c6 rds_send_drop_acked -EXPORT_SYMBOL_GPL net/rds/rds 0x4911fd58 rds_message_put -EXPORT_SYMBOL_GPL net/rds/rds 0x50d4001b rds_connect_path_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x47faa2c0 rds_for_each_conn_info EXPORT_SYMBOL_GPL net/rds/rds 0x582fe5cf rds_message_add_rdma_dest_extension EXPORT_SYMBOL_GPL net/rds/rds 0x585f567b rds_message_populate_header -EXPORT_SYMBOL_GPL net/rds/rds 0x588d82ac rds_conn_connect_if_down -EXPORT_SYMBOL_GPL net/rds/rds 0x5ee974a0 rds_trans_register -EXPORT_SYMBOL_GPL net/rds/rds 0x61cb4833 rds_message_addref -EXPORT_SYMBOL_GPL net/rds/rds 0x7064769c rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x59f19cf7 rds_trans_unregister +EXPORT_SYMBOL_GPL net/rds/rds 0x6c251e69 rds_send_drop_acked +EXPORT_SYMBOL_GPL net/rds/rds 0x715b138b rds_conn_create EXPORT_SYMBOL_GPL net/rds/rds 0x7b399e66 rds_page_remainder_alloc +EXPORT_SYMBOL_GPL net/rds/rds 0x7c25baef rds_atomic_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x7e9a0305 rds_conn_path_connect_if_down EXPORT_SYMBOL_GPL net/rds/rds 0x85e4e520 rds_stats_info_copy -EXPORT_SYMBOL_GPL net/rds/rds 0xa5ab68ec rds_trans_unregister -EXPORT_SYMBOL_GPL net/rds/rds 0xa9a28ab7 rds_recv_incoming -EXPORT_SYMBOL_GPL net/rds/rds 0xa9c0f2b9 rds_conn_create_outgoing -EXPORT_SYMBOL_GPL net/rds/rds 0xaee1fa55 rds_for_each_conn_info -EXPORT_SYMBOL_GPL net/rds/rds 0xafade9b5 rds_inc_put -EXPORT_SYMBOL_GPL net/rds/rds 0xb754f92f rds_send_path_reset -EXPORT_SYMBOL_GPL net/rds/rds 0xb931383a rds_conn_path_connect_if_down -EXPORT_SYMBOL_GPL net/rds/rds 0xbdbb21a0 rds_connect_complete +EXPORT_SYMBOL_GPL net/rds/rds 0x96e5ae83 rds_send_xmit +EXPORT_SYMBOL_GPL net/rds/rds 0x9865c796 rds_send_ping +EXPORT_SYMBOL_GPL net/rds/rds 0x9c36fe5f rds_inc_put +EXPORT_SYMBOL_GPL net/rds/rds 0xaa356f5a rds_trans_register +EXPORT_SYMBOL_GPL net/rds/rds 0xaacb7f77 rds_message_addref +EXPORT_SYMBOL_GPL net/rds/rds 0xb12a0c38 rds_inc_init +EXPORT_SYMBOL_GPL net/rds/rds 0xbc2c31f9 rds_send_path_drop_acked EXPORT_SYMBOL_GPL net/rds/rds 0xc2dab779 rds_info_copy -EXPORT_SYMBOL_GPL net/rds/rds 0xda491320 rds_send_path_drop_acked -EXPORT_SYMBOL_GPL net/rds/rds 0xe05114e5 rds_inc_path_init -EXPORT_SYMBOL_GPL net/rds/rds 0xe2aeee42 rds_atomic_send_complete -EXPORT_SYMBOL_GPL net/rds/rds 0xf7a99521 rds_conn_path_drop -EXPORT_SYMBOL_GPL net/rds/rds 0xf995abed rds_conn_create +EXPORT_SYMBOL_GPL net/rds/rds 0xc3a0a790 rds_rdma_send_complete +EXPORT_SYMBOL_GPL net/rds/rds 0xd3749eaa rds_send_path_reset +EXPORT_SYMBOL_GPL net/rds/rds 0xda6fcfe3 rds_conn_path_drop +EXPORT_SYMBOL_GPL net/rds/rds 0xe4a4168e rds_info_deregister_func +EXPORT_SYMBOL_GPL net/rds/rds 0xe9e8fede rds_inc_path_init +EXPORT_SYMBOL_GPL net/rds/rds 0xed6bb5e6 rds_conn_create_outgoing +EXPORT_SYMBOL_GPL net/rds/rds 0xf1cf2cdc rds_conn_destroy EXPORT_SYMBOL_GPL net/rds/rds 0xfd22dd56 rds_cong_map_updated -EXPORT_SYMBOL_GPL net/sched/sch_pie 0x31a8a92e pie_drop_early EXPORT_SYMBOL_GPL net/sched/sch_pie 0x6ce9b467 pie_calculate_probability -EXPORT_SYMBOL_GPL net/sched/sch_pie 0xe1971420 pie_process_dequeue +EXPORT_SYMBOL_GPL net/sched/sch_pie 0x90cc378b pie_drop_early +EXPORT_SYMBOL_GPL net/sched/sch_pie 0xa9188ab7 pie_process_dequeue EXPORT_SYMBOL_GPL net/sched/sch_taprio 0x5fc3c6ed taprio_offload_free EXPORT_SYMBOL_GPL net/sched/sch_taprio 0xa7f08102 taprio_offload_get -EXPORT_SYMBOL_GPL net/sctp/sctp 0x5d015fec sctp_for_each_transport -EXPORT_SYMBOL_GPL net/sctp/sctp 0x7dfc0dc6 sctp_for_each_endpoint -EXPORT_SYMBOL_GPL net/sctp/sctp 0xa8b5710c sctp_get_sctp_info -EXPORT_SYMBOL_GPL net/sctp/sctp 0xc0f16ede sctp_transport_lookup_process -EXPORT_SYMBOL_GPL net/smc/smc 0x1d8abfe7 smcd_handle_irq -EXPORT_SYMBOL_GPL net/smc/smc 0x22b093c9 smc_proto6 -EXPORT_SYMBOL_GPL net/smc/smc 0x2b7a10c7 smcd_handle_event -EXPORT_SYMBOL_GPL net/smc/smc 0x40dee469 smcd_register_dev -EXPORT_SYMBOL_GPL net/smc/smc 0x493bb5e1 smc_proto -EXPORT_SYMBOL_GPL net/smc/smc 0x5da173da smcd_alloc_dev -EXPORT_SYMBOL_GPL net/smc/smc 0x7f28c8fa smc_unhash_sk -EXPORT_SYMBOL_GPL net/smc/smc 0x8d16a8dd smc_hash_sk -EXPORT_SYMBOL_GPL net/smc/smc 0xbca552e6 smcd_free_dev -EXPORT_SYMBOL_GPL net/smc/smc 0xe8038f9a smcd_unregister_dev +EXPORT_SYMBOL_GPL net/sctp/sctp 0x49829252 sctp_for_each_endpoint +EXPORT_SYMBOL_GPL net/sctp/sctp 0x5e4c8602 sctp_for_each_transport +EXPORT_SYMBOL_GPL net/sctp/sctp 0xaeafc2cd sctp_transport_lookup_process +EXPORT_SYMBOL_GPL net/sctp/sctp 0xb2f131cc sctp_get_sctp_info +EXPORT_SYMBOL_GPL net/smc/smc 0x03b72c0c smcd_free_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x21d143cc smcd_unregister_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x24710322 smcd_register_dev +EXPORT_SYMBOL_GPL net/smc/smc 0x46fd0e83 smc_proto6 +EXPORT_SYMBOL_GPL net/smc/smc 0x6f0e3ff8 smc_proto +EXPORT_SYMBOL_GPL net/smc/smc 0x9e641e9c smcd_handle_event +EXPORT_SYMBOL_GPL net/smc/smc 0xda54c0eb smcd_handle_irq +EXPORT_SYMBOL_GPL net/smc/smc 0xe32887dd smcd_alloc_dev +EXPORT_SYMBOL_GPL net/smc/smc 0xe98d1e74 smc_hash_sk +EXPORT_SYMBOL_GPL net/smc/smc 0xf439e228 smc_unhash_sk EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x38d3dce5 g_make_token_header EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x482ac5a4 g_token_size -EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x5c9c825e gss_mech_register -EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x6015432c svcauth_gss_register_pseudoflavor -EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7ad04748 gss_mech_unregister -EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x7d571414 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x541f1713 svcauth_gss_flavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8047089f gss_mech_register +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x8f7a4e24 svcauth_gss_register_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0x96eaa3b2 gss_mech_unregister EXPORT_SYMBOL_GPL net/sunrpc/auth_gss/auth_rpcgss 0xd7673035 g_verify_token_header -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x00060464 cache_create_net -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x015417f7 rpcauth_init_cred -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01ac6ed1 cache_register_net -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01ee7d22 csum_partial_copy_to_xdr -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0279b200 xdr_encode_word -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0396991f sunrpc_cache_pipe_upcall_timeout -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0481c73e cache_seq_stop_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x006546e2 svc_xprt_names +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x016d744d svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x01d9e614 rpc_sleep_on_priority +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x057423c8 rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05b15350 xprt_wait_for_reply_request_def EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x05e807a9 xdr_encode_string EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x065994f1 xdr_encode_opaque_fixed -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0680b0c7 rpc_pton -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x07a987b7 rpc_call_async -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0ad9aee0 xprt_reserve_xprt -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0d2e8d8e svc_close_xprt -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f32f264 xdr_stream_decode_string -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x11125573 rpc_call_start -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x135923f3 rpc_destroy_pipe_data -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1399c654 rpc_clnt_xprt_switch_add_xprt -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16a14ca9 rpc_clone_client_set_auth -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x16de952a rpc_proc_unregister -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17a94ace rpc_mkpipe_data -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x18f01ce2 svc_drop -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19bfe76c xdr_stream_pos -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x19de0803 xprt_complete_rqst -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1c18218c rpcauth_register -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1cba4cf1 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x06f808a0 svc_create_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0944d99f _copy_from_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0b37144d xdr_buf_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0dc9a0bd xprt_wake_pending_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0e3f9b22 rpc_task_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0f8fe8b8 rpc_alloc_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x0fa07a89 xdr_process_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x107ad27e svc_xprt_deferred_close +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x111e027b xdr_terminate_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x131a7d90 rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x13745d38 rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x15b690b7 xprt_unregister_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1723858e rpc_put_task_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x17924f7f rpc_mkpipe_dentry +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d24682f svc_rqst_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d6c6b30 svc_fill_symlink_pathname +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1d83ef04 svc_wake_up EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e119a79 rpcauth_get_pseudoflavor +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e437980 rpc_localaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1e761195 svc_generic_rpcbind_set EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f2a9970 rpc_ntop -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fb2274a xprt_release_rqst_cong -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x209c1887 svc_set_num_threads -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x22598775 xprt_lock_connect -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23466b32 rpc_d_lookup_sb -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23d2ea62 rpc_localaddr -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x26555df7 rpcauth_wrap_req_encode -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x27231dd6 rpc_clnt_iterate_for_each_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1f3bc782 rpc_peeraddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fbeac93 xdr_stream_decode_string +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x1fed226d xdr_buf_from_iov +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2055a1b1 sunrpc_cache_lookup_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x21f131c6 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x225305c9 rpc_force_rebind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23b5dd90 xprt_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x23e3ce5a rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2522c162 sunrpc_cache_register_pipefs EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2919b156 xdr_decode_string_inplace -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x293aa7c7 rpc_init_pipe_dir_head -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2a804127 auth_domain_put -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2bdfabd1 xprt_unregister_transport -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c76a8d4 cache_seq_next_rcu -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2d52520a xprt_put -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2ee957ae rpcauth_create -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2f8bff9c bc_svc_process -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30ceb5be svc_create_xprt -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x30f967e5 xprt_get +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x29279016 xdr_init_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x295784e2 svc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2b88a975 xdr_align_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2c5287b9 auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2cfbf04a xprt_free_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2e264fcf xprt_complete_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2eeac95f xprt_alloc_slot +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x2fae2381 xdr_shift_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x304df5bc rpc_find_or_alloc_pipe_dir_object EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x31a89d59 rpc_debug -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3375435f svc_xprt_enqueue -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3412e11f rpc_remove_pipe_dir_object -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3444ac3c xprt_reconnect_delay -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x345b7b2e svc_xprt_deferred_close +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3227fba1 svc_prepare_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x32eb4c88 xprt_update_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x336d7a0f svc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33827453 svc_rpcb_setup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x33f497b4 svc_drop +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3406bb6d svc_proc_register EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x34d184de rpc_wake_up_status -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3750c1d5 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x36f27f1f rpc_shutdown_client EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x387e1639 rpc_pipefs_notifier_register -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x38a626fc xdr_stream_decode_opaque_dup -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3936287b xprt_unlock_connect -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x39728baa unix_domain_find -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ac11a32 svc_xprt_do_enqueue -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ae8d905 svcauth_unix_set_client -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3be1c176 rpc_bind_new_program -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3be4c967 svc_reg_xprt_class -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d7e17aa rpcauth_lookup_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a77ea70 xdr_stream_decode_opaque_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3a9fb1d0 rpc_sleep_on_priority_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3ab5de95 xprt_lock_connect +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3acc2782 svc_seq_show +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c6dec8c xprt_unpin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c7415fc rpc_sleep_on_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3c7b96e6 rpc_wake_up_queued_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3d7df6b8 xdr_stream_decode_opaque +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3dedff6f sunrpc_destroy_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f5b95f2 rpcauth_init_cred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f80824d svc_xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f97ee16 rpc_queue_upcall EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x3f9a2b0b rpcauth_get_gssinfo -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x427f046f rpc_mkpipe_dentry -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4316625c xprt_free_slot -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x452ff85b rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4058946c xdr_stream_decode_string_dup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x40fa964f svcauth_unix_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x410652de rpc_clnt_iterate_for_each_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x412a87d8 xdr_init_decode_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x41b5da77 xprt_write_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x42ff714d xprt_force_disconnect EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x453efa54 svc_pool_map -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4722f662 svc_wake_up -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4745ced1 rpc_proc_register -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x48d1a531 xdr_stream_decode_string_dup -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x49d3084f rpc_clnt_xprt_switch_put -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ae72d02 svc_sock_update_bufs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4568b06b cache_destroy_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x466f24c2 rpcauth_destroy_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x473f16f6 xdr_write_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4831b50f rpc_clnt_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x498afaae rpc_bind_new_program +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a31c4a6 svc_generic_init_request +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4a94d556 svc_destroy +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ae13b14 rpc_clone_client EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4afedab1 xprtiod_workqueue -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b1665c3 rpc_exit -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c28000c cache_unregister_net -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c2adbb8 svc_prepare_thread -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c33d9a6 cache_destroy_net -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ca59bc6 svc_fill_symlink_pathname -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4caed645 rpc_find_or_alloc_pipe_dir_object -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4d652151 sunrpc_cache_unhash -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4da6f236 rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4b6d9c53 rpc_task_release_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4c7f6629 xprt_destroy_backchannel EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4dac77f0 xdr_encode_netobj -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e702135 svc_set_client EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4e8f6ca7 sunrpc_net_id -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50beaef0 xprt_pin_rqst -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x50f446fa auth_domain_lookup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4ecae2d8 unix_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4efb0ee6 rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x4f3ab9fd svc_find_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x504bad2d cache_register_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x520574d8 rpc_wake_up_next +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x52895ce3 svc_xprt_received EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53445f68 nlm_debug -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x539aa657 xdr_inline_pages -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5748a0ce sunrpc_destroy_cache_detail -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x59d4735a xdr_reserve_space_vec +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x53da2650 rpcauth_init_credcache +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x560e9d0c rpc_sleep_on +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5614ef61 rpc_clone_client_set_auth +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x56b642b1 sunrpc_init_cache_detail +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x57376c06 xprt_reconnect_backoff +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5816cd41 write_bytes_to_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x592155a6 rpc_num_bc_slots EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5a45ba31 svc_auth_unregister -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5c78aeb1 svc_process -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5f4700dc xdr_read_pages -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x62a64a74 svc_find_xprt -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x650e4b25 rpc_sleep_on_priority -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65d5842f svc_seq_show -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x664ec867 rpc_task_timeout -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x666e39ed xprt_alloc_slot -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66ad3b72 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5ac0f8e4 svc_rpcbind_set_version +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5b9c85e9 rpc_run_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5bccf0d6 xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5d4b3e99 svc_addsock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5de46201 rpc_set_connect_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x5e4ac5ac rpc_get_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x623cc41e xprt_reserve_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x64f35ba4 xdr_encode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6594bad6 rpc_pton +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x65ad98c7 xprt_release_rqst_cong EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x66ed2439 rpc_destroy_wait_queue -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x682a9269 rpc_clnt_add_xprt -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69e92736 xdr_commit_encode -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a2b7986 rpc_delay -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a9adca9 xdr_inline_decode -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b677507 rpc_prepare_reply_pages -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6da549bc rpc_switch_client_transport -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e3fb212 cache_purge -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6e6478e5 xdr_init_decode_pages -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f59065b xdr_encode_array2 -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x701a111b rpc_set_connect_timeout -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70a1a6fe xdr_process_buf -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x712a33c9 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x68ee2a84 xprt_wake_up_backlog +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x69c4a9b0 rpc_remove_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a5675ff xdr_stream_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a61bbfd svc_return_autherr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6a6fffcd rpc_net_ns +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6b6c2727 svc_xprt_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6ca58101 rpc_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x6f1ed346 xprt_request_get_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70087603 rpc_unlink +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7018a0cd svc_xprt_do_enqueue +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x70ebd7c9 rpc_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x711d0077 rpc_clnt_test_and_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71a7fb0f rpc_release_client EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71bc40e3 rpc_wake_up EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x71fa908a cache_flush -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7326bc39 rpc_num_bc_slots -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7417ffb6 rpc_init_pipe_dir_object -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7857f890 rpc_sleep_on_priority_timeout -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78cd38ed rpcb_getport_async -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x79beb6f5 svc_set_num_threads_sync -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7ac9162f rpc_clnt_xprt_switch_has_addr -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b0c520f xdr_init_encode -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7b83680c xdr_write_pages -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7dc76896 xdr_expand_hole +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x733c30ff cache_unregister_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x745eb9b1 rpc_clnt_xprt_switch_has_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x755d4b6d xdr_expand_hole +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x76834c95 cache_seq_next_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7686a71a sunrpc_cache_unregister_pipefs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x78573bcd gssd_running +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7a6b0320 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7cafcdf0 rpc_max_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7d374953 rpc_call_null EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7de53067 rpc_init_rtt -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f1ca299 rpc_clnt_swap_deactivate -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f90ac3c sunrpc_cache_pipe_upcall -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80d34a36 rpc_max_bc_payload -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80f28ae8 rpc_restart_call -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x81f3971e cache_seq_start_rcu -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x838058ec rpc_net_ns -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x85b7033c xprt_lookup_rqst -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x862b832d __rpc_wait_for_completion_task -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x873ebbda rpc_force_rebind -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8749cb5f read_bytes_from_xdr_buf -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87846870 svc_generic_rpcbind_set -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x88b10ef0 svc_authenticate -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x89d592e3 svc_rqst_alloc -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a5d4ecd svc_xprt_init -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a948173 gssd_running -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b0b1468 rpc_clnt_show_stats -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8bde2ff3 rpc_uaddr2sockaddr -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cfadcd9 xprt_wait_for_buffer_space -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d04b70c xdr_terminate_string -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8db7491b sunrpc_cache_update -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8e5398c8 svc_rqst_free -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8ea88470 svc_bind -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x909f7371 rpc_alloc_iostats -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x91293aa8 xprt_register_transport -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x918ef423 rpc_add_pipe_dir_object -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x92d675bf xprt_setup_backchannel -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9308635d svc_xprt_received -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9474cc05 rpc_put_sb_net -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x965b5d96 xprt_wait_for_reply_request_def +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7e2fc9ce rpc_clnt_show_stats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x7f667db6 cache_purge +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x80ed6bb1 xdr_commit_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x817cf252 xdr_buf_trim +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8285f05f auth_domain_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x83ff1e23 sunrpc_cache_pipe_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x855021b7 xdr_decode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x87eef3cd __rpc_wait_for_completion_task +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a36254d svc_shutdown_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8a7b225e xprt_wait_for_buffer_space +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8b9d6581 rpc_mkpipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8cf684da cache_seq_stop_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8d753126 xprt_adjust_cwnd +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8dc151c8 rpcauth_wrap_req_encode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x8eca9cf1 svc_fill_write_vector +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9111fb86 svc_alien_sock +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x93918137 xdr_read_pages EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9670b5a1 rpc_free_iostats -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x968fbc30 xprt_reconnect_backoff -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x972802ab svc_auth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x96d5a420 xprt_alloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x97bc5ee5 rpc_add_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x98b4e178 xdr_reserve_space EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x99aee353 rpc_init_priority_wait_queue -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e34b9d2 rpcauth_unregister -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e7cf2f5 rpc_peeraddr2str -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1259a36 rpcauth_unwrap_resp_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9bc56398 read_bytes_from_xdr_buf +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9c2e04df rpc_restart_call +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9d062613 xdr_stream_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e368394 xdr_decode_array2 +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9e50e7e4 rpc_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f266c95 rpc_call_async +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0x9f786ecd rpc_proc_unregister EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa13acdb8 svc_pool_map_put -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1d4f163 xdr_page_pos -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa20417e8 xdr_shift_buf -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa21f48dc xdr_enter_page -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa27d58ba xprt_unpin_rqst -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3271d1d svc_fill_write_vector -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa33f106b svc_create -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3f7bdb1 put_rpccred -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa425563c xdr_reserve_space -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4288dc6 svcauth_unix_purge -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa4d8732b rpc_wake_up_queued_task -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6071685 xdr_align_data -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa70d8e5e svc_shutdown_net -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa7aee72c rpc_sleep_on_timeout -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa8808196 svc_xprt_put -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9c18378 svc_encode_result_payload -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaa0c045a svc_max_payload -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab18318f xprt_write_space -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab3569f9 rpcauth_lookupcred -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xac846232 rpcauth_stringify_acceptor -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xace5175c svc_destroy -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf1999bd xprt_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa1e9985b svc_recv +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa3f665a9 svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa407a8b4 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa64a71e5 svc_rqst_free +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6b719f1 sunrpc_cache_unhash +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa6bb3155 rpc_clnt_xprt_switch_add_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa70bdbb6 xprt_release_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa95020a9 rpc_d_lookup_sb +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa983515b xprt_wait_for_reply_request_rtt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9916859 xprt_release_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xa9c01ce3 cache_create_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xab05bcae svc_set_num_threads_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xabf901ed cache_seq_start_rcu +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xadb0b865 csum_partial_copy_to_xdr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xadc98be8 rpc_max_bc_payload EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xaf5bf6ef nfs_debug -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafa9b33d rpc_pipe_generic_upcall -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafb1771e sunrpc_init_cache_detail -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0381627 rpc_wake_up_next -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb1623e39 rpc_clnt_setup_test_and_add_xprt -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb2527f7c rpc_restart_call_prepare +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xafca4501 rpc_init_pipe_dir_head +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb0ae2dc0 svc_age_temp_xprts_now +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb30754b0 rpcb_getport_async EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb312d0c4 svc_pool_map_get -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb317ea6e rpc_peeraddr -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3a66436 rpc_put_task_async -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb4d379d3 xdr_stream_subsegment +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb3cb39e4 xprt_reserve_xprt_cong +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51256ca xprt_register_transport EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb51a3724 rpc_pipefs_notifier_unregister -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb835ba53 rpc_task_release_transport -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb9418e62 svc_unreg_xprt_class -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbbe53e54 rpcauth_destroy_credcache -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd2a1921 xprt_release_xprt_cong -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd59566f cache_check +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb698dc5a xdr_inline_pages +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb7beeb80 xprt_reconnect_delay +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xb862b34c sunrpc_cache_update +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbad7edcd svc_rpcb_cleanup +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb091d0c xprt_setup_backchannel +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb46521c svc_proc_unregister +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbb4f7640 rpc_destroy_pipe_data +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbc8822ce rpc_malloc +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbd54c258 xprt_add_backlog +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbe9b85c2 rpc_prepare_reply_pages EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xbf9d1b96 nfsd_debug EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc12435e3 rpc_calc_rto -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc3cc460f svc_recv -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc4142398 xdr_stream_decode_opaque -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc48cc549 rpc_clnt_test_and_add_xprt -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5055d4c svc_alien_sock -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc5897ee5 xprt_alloc -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc73b01a3 sunrpc_cache_register_pipefs -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc75b8a64 svc_proc_register -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc7d64002 svc_rpcb_setup -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8d1290d rpc_count_iostats_metrics +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc191ec24 xprt_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc25b8fbc svc_reg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc2ace3de xdr_reserve_space_vec +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc497594a rpcauth_unregister EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8e96dea qword_addhex -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xc8fbf700 xprt_release_xprt -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xca68aad7 rpc_free -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc386d18 sunrpc_cache_lookup_rcu -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc38dd83 xprt_wake_pending_tasks -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcd09ee32 xprt_wake_up_backlog +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcb6ecb8b svc_print_addr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcbd92148 xprt_lookup_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc0acef9 xdr_encode_word +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcc488d8f rpc_call_sync +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce1ad195 svc_bind +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce516da0 rpc_proc_register EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xce678a59 xdr_decode_netobj -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf1b3dd1 xprt_force_disconnect -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0fc8ed7 svc_exit_thread -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd177549d xprt_request_get_cong -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1b0f47c svc_create_pooled -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd1c79d70 rpc_create -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3e45639 rpc_put_task -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd476707c svc_age_temp_xprts_now -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd55dbd2b svc_rpcb_cleanup -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd593ceb1 rpc_shutdown_client -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd62b38a5 rpc_max_payload -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6307663 xprt_update_rtt -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd6af99b3 rpc_count_iostats +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcebb151b xdr_page_pos +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xcf1ca186 svc_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd08df516 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd0d24130 xdr_init_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd164badd rpc_peeraddr2str +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd2ee9cad svc_close_xprt +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd3848b82 rpc_clnt_swap_activate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd428a9a8 xdr_inline_decode EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd79be622 rpc_machine_cred -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7ecff1d xprt_add_backlog -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda618f21 rpc_unlink -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdc9167aa rpc_wake_up_first +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd7b898f4 rpc_put_sb_net +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd826be75 bc_svc_process +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xd96f42c6 svc_reserve +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xda6cf634 xdr_enter_page +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdb94ac28 rpc_init_pipe_dir_object +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdbf0b3a1 rpcauth_stringify_acceptor EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xdd691402 xprt_find_transport_ident -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xddfdc394 svc_print_addr -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe0b9c997 svc_proc_unregister -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe188fdbf rpc_malloc -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1964f40 svc_return_autherr -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe1feb994 xprt_reserve_xprt_cong -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe3034395 xprt_destroy_backchannel -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe34e4608 rpc_release_client -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe4951fea svc_addsock -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe52737ab rpc_killall_tasks +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xde820e88 svc_exit_thread +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe183a1db rpc_switch_client_transport +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe19858f1 xprt_pin_rqst +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe2f1ed51 svc_authenticate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe55bc898 rpc_put_task EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5919cb1 xdr_encode_opaque -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe5c34491 xdr_decode_word -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe72d56ee _copy_from_pages -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe79ff7f3 rpc_call_null -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe7ee63c9 svc_rpcbind_set_version -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8594a1b svc_xprt_names -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe8f31a1a xprt_disconnect_done +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe92d1d24 xprt_free EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe97f4ce5 qword_get -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea2b97fe rpc_call_sync -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xea676371 xdr_decode_array2 -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeaa217ad rpc_queue_upcall -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec9ad459 xprt_adjust_cwnd -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedb3a192 rpc_setbufsize +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xe9fcd155 svc_encode_result_payload +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeb5f610f svc_xprt_init +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xec37e3f9 rpcauth_unwrap_resp_decode +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeceec048 cache_check EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xedcf6be4 qword_add -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee57f5c4 rpc_clone_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xede97dbb rpc_exit +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee6b6aad svc_set_num_threads +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xee942ecb xprt_unlock_connect EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xeeacab69 rpc_update_rtt -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf058d386 rpc_sleep_on -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0694d55 auth_domain_find +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef12ef40 rpc_clnt_swap_deactivate +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef4c44e4 put_rpccred +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xef730309 rpcauth_lookupcred EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf0b7775d rpc_init_wait_queue -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf13cc42a xdr_buf_subsegment -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2bec8ae svc_generic_init_request -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf54c4151 xprt_wait_for_reply_request_rtt -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf69f9275 xdr_buf_from_iov -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf995506a xdr_init_decode -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfb847130 write_bytes_to_xdr_buf -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfbb2d3aa sunrpc_cache_unregister_pipefs -EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfee37576 svc_reserve -EXPORT_SYMBOL_GPL net/tls/tls 0xc69a64fe tls_offload_tx_resync_request -EXPORT_SYMBOL_GPL net/tls/tls 0xc845de12 tls_encrypt_skb -EXPORT_SYMBOL_GPL net/tls/tls 0xcac029f4 tls_validate_xmit_skb -EXPORT_SYMBOL_GPL net/tls/tls 0xd8edf97e tls_device_sk_destruct +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf1e76cdf rpcauth_create +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf2dd18e5 rpc_call_start +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf4d3966b svc_unreg_xprt_class +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf509be9d rpcauth_register +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8427264 rpc_uaddr2sockaddr +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8b5cdb9 svc_create_pooled +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf8d71f68 svc_xprt_copy_addrs +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9dcf414 rpc_pipe_generic_upcall +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xf9f76fe5 sunrpc_cache_pipe_upcall_timeout +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa57af50 svcauth_unix_set_client +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfa84d6cf rpc_clnt_xprt_switch_put +EXPORT_SYMBOL_GPL net/sunrpc/sunrpc 0xfab4d02e rpc_clnt_setup_test_and_add_xprt +EXPORT_SYMBOL_GPL net/tls/tls 0x414a55e6 tls_encrypt_skb +EXPORT_SYMBOL_GPL net/tls/tls 0xa2c63120 tls_device_sk_destruct +EXPORT_SYMBOL_GPL net/tls/tls 0xc7b5183b tls_validate_xmit_skb +EXPORT_SYMBOL_GPL net/tls/tls 0xcc0f5b05 tls_offload_tx_resync_request EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x03a81e69 virtio_transport_stream_allow -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x03d0b7c2 virtio_transport_notify_recv_pre_dequeue -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x05abbd6c virtio_transport_stream_enqueue -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x08c2f903 virtio_transport_stream_dequeue -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x0ef7f1f5 virtio_transport_stream_rcvhiwat -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x14b8fa0a virtio_transport_inc_tx_pkt -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x21870b4e virtio_transport_notify_recv_init -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x21f3711f virtio_transport_notify_recv_post_dequeue -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x2639150e virtio_transport_notify_send_pre_block -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x29b9e2b8 virtio_transport_notify_send_pre_enqueue -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x2c7e9871 virtio_transport_stream_has_space -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x38b01c3b virtio_transport_notify_send_post_enqueue -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x4fec838e virtio_transport_stream_is_active -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x58fa9226 virtio_transport_get_credit -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x5e0d9bb4 virtio_transport_put_credit -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x67c5b4fd virtio_transport_dgram_enqueue -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x687c3c52 virtio_transport_notify_poll_in -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x70022f21 virtio_transport_free_pkt -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x78276538 virtio_transport_deliver_tap_pkt -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x7fbb031b virtio_transport_destruct -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x80fe3ceb virtio_transport_notify_recv_pre_block -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x987756c2 virtio_transport_notify_send_init -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xa28790bd virtio_transport_connect -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xb1dce484 virtio_transport_do_socket_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x0d86364d virtio_transport_notify_recv_pre_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x127c9f8d virtio_transport_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x19cb4e1e virtio_transport_dgram_bind +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x21005264 virtio_transport_dgram_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x2a31f6fe virtio_transport_do_socket_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x41f99443 virtio_transport_stream_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x4442de41 virtio_transport_notify_send_pre_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x4d654d18 virtio_transport_inc_tx_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x4e9aa09e virtio_transport_destruct +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x4edb2552 virtio_transport_notify_recv_post_dequeue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x5102e52e virtio_transport_stream_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x74a086ca virtio_transport_notify_recv_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x7bb3ab82 virtio_transport_notify_buffer_size +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x7d5dc0a2 virtio_transport_notify_poll_out +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x830068d1 virtio_transport_stream_rcvhiwat +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x95a683b3 virtio_transport_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0x9fd049a8 virtio_transport_deliver_tap_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xa68a76a5 virtio_transport_release +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xa6d83ccc virtio_transport_dgram_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xae816995 virtio_transport_put_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xae89226e virtio_transport_notify_send_pre_block +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xb6b80c67 virtio_transport_notify_send_init EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbabd30f5 virtio_transport_dgram_allow -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xce4335b5 virtio_transport_dgram_bind -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xd39a17d0 virtio_transport_dgram_dequeue -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xde07976a virtio_transport_release -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xde3e80b5 virtio_transport_notify_poll_out -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xdf9a8523 virtio_transport_stream_has_data -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xe1dc4da7 virtio_transport_shutdown -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xeadd6445 virtio_transport_notify_buffer_size -EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xfb681485 virtio_transport_recv_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xbfb0b8b6 virtio_transport_notify_send_post_enqueue +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xcabb0942 virtio_transport_stream_is_active +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xcb5c244f virtio_transport_notify_poll_in +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xcb7e8744 virtio_transport_get_credit +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xd4d76592 virtio_transport_connect +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xd87f7343 virtio_transport_shutdown +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xdbafd0bd virtio_transport_free_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xec163a00 virtio_transport_recv_pkt +EXPORT_SYMBOL_GPL net/vmw_vsock/vmw_vsock_virtio_transport_common 0xf2aae82f virtio_transport_notify_recv_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0bf60602 vsock_core_register +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0c5f5584 vsock_add_pending EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x0e9bc9b6 vsock_addr_unbind -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x18729bad vsock_find_bound_socket -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x200632bb vsock_remove_pending -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x2777d69f vsock_add_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x1d6a16e1 vsock_assign_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x22012210 vsock_find_bound_socket EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x284e07d8 vsock_bind_table -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x28d8ee20 vsock_remove_sock +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3884faeb vsock_add_tap EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3d4b0fca vsock_addr_init +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x3e08f4c5 vsock_create_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x489e5fef vsock_deliver_tap EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4b99648c vsock_addr_bound -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x58692296 vsock_core_unregister -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x62b1f04f vsock_remove_bound -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6e74698f vsock_enqueue_accept -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x6fc199af vsock_create_connected -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x7519ea7c vsock_for_each_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x4ff82ae4 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x630bbc72 vsock_for_each_connected_socket EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x77c14317 vsock_addr_cast -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8bc58b1d vsock_insert_connected -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x8d431520 vsock_core_get_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x83b58249 vsock_remove_sock EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x90aa8549 vsock_find_cid -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9449e873 vsock_add_pending -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x97253505 vsock_deliver_tap +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9374b674 vsock_insert_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x94cadd06 vsock_remove_bound EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9bb6fd09 vsock_connected_table -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xa46bc5d9 vsock_remove_connected -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xab1032c7 vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9bbe023c vsock_stream_has_space +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0x9f0416ad vsock_core_unregister EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xaf2674b5 vsock_addr_equals_addr -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb17197ea vsock_core_register +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb3e9ca1f vsock_remove_pending +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xb8b72666 vsock_remove_connected +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc8544a07 vsock_remove_tap EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xc92f7f50 vsock_table_lock -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xcc6a684a vsock_assign_transport -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xd718bcf5 vsock_find_connected_socket +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xdce133bc vsock_stream_has_data +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xeb718a60 vsock_core_get_transport +EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xec91cba6 vsock_enqueue_accept EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xec96eadf vsock_addr_validate -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xecb80d4c vsock_remove_tap -EXPORT_SYMBOL_GPL net/vmw_vsock/vsock 0xfd21b250 vsock_stream_has_data -EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3284d58a cfg80211_vendor_cmd_reply -EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x3ff13120 cfg80211_pmsr_complete -EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x517d3a64 cfg80211_shutdown_all_interfaces -EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x6e0e6eee cfg80211_vendor_cmd_get_sender -EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb7ee409e cfg80211_pmsr_report +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0x2e3a3488 cfg80211_shutdown_all_interfaces +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xb38aff76 cfg80211_vendor_cmd_get_sender +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xbd684917 cfg80211_pmsr_report +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xc550d5f1 cfg80211_vendor_cmd_reply +EXPORT_SYMBOL_GPL net/wireless/cfg80211 0xeca0515f cfg80211_pmsr_complete EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0049ca83 xfrm_aead_get_byname EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x00c80741 xfrm_ealg_get_byid EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0x0a575945 xfrm_count_pfkey_auth_supported @@ -13080,17 +13081,15 @@ EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xb73be794 xfrm_ealg_get_byidx EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xc6b1fdbe xfrm_aalg_get_byidx EXPORT_SYMBOL_GPL net/xfrm/xfrm_algo 0xd6f50cf7 xfrm_ealg_get_byname -EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x4b60e412 ipcomp_init_state -EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x67d5a104 ipcomp_input -EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x7035c50e ipcomp_output -EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xa96f54e5 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x069bdbf3 ipcomp_output +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0x3b174c20 ipcomp_input +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xa89cb7e6 ipcomp_destroy +EXPORT_SYMBOL_GPL net/xfrm/xfrm_ipcomp 0xaf62bc88 ipcomp_init_state EXPORT_SYMBOL_GPL net/xfrm/xfrm_user 0x7f5dfa6a xfrma_policy EXPORT_SYMBOL_GPL net/xfrm/xfrm_user 0xa7c6076c xfrm_msg_min EXPORT_SYMBOL_GPL vmlinux 0x00171084 usb_get_dr_mode EXPORT_SYMBOL_GPL vmlinux 0x001b074f mce_is_correctable -EXPORT_SYMBOL_GPL vmlinux 0x002ebb9a scsi_nl_sock EXPORT_SYMBOL_GPL vmlinux 0x002f462c regmap_register_patch -EXPORT_SYMBOL_GPL vmlinux 0x0031bef4 register_pernet_device EXPORT_SYMBOL_GPL vmlinux 0x00397739 devm_free_pages EXPORT_SYMBOL_GPL vmlinux 0x003a69fc phy_modify_mmd_changed EXPORT_SYMBOL_GPL vmlinux 0x00431b69 iommu_group_for_each_dev @@ -13099,26 +13098,27 @@ EXPORT_SYMBOL_GPL vmlinux 0x00565f18 pernet_ops_rwsem EXPORT_SYMBOL_GPL vmlinux 0x00590bab __phy_modify_mmd_changed EXPORT_SYMBOL_GPL vmlinux 0x005f18a6 add_wait_queue_priority +EXPORT_SYMBOL_GPL vmlinux 0x006511a5 device_match_of_node +EXPORT_SYMBOL_GPL vmlinux 0x006cc002 crypto_stats_rng_seed EXPORT_SYMBOL_GPL vmlinux 0x00759fb5 dm_get_queue_limits EXPORT_SYMBOL_GPL vmlinux 0x007c94d0 sysfs_create_mount_point EXPORT_SYMBOL_GPL vmlinux 0x008539f0 klp_shadow_alloc EXPORT_SYMBOL_GPL vmlinux 0x009d5122 ata_cable_unknown +EXPORT_SYMBOL_GPL vmlinux 0x00af26fa __netpoll_free EXPORT_SYMBOL_GPL vmlinux 0x00b2f3aa input_ff_create EXPORT_SYMBOL_GPL vmlinux 0x00d0dd65 vring_create_virtqueue EXPORT_SYMBOL_GPL vmlinux 0x00d4c500 usb_decode_interval EXPORT_SYMBOL_GPL vmlinux 0x00d7862f blk_ksm_intersect_modes -EXPORT_SYMBOL_GPL vmlinux 0x00dc33e5 vxlan_fdb_clear_offload EXPORT_SYMBOL_GPL vmlinux 0x00df9837 ioasid_register_allocator +EXPORT_SYMBOL_GPL vmlinux 0x01043fd3 l3mdev_fib_table_by_index EXPORT_SYMBOL_GPL vmlinux 0x01070369 devm_namespace_enable EXPORT_SYMBOL_GPL vmlinux 0x010ca20d tty_prepare_flip_string +EXPORT_SYMBOL_GPL vmlinux 0x011eaa86 devlink_dpipe_table_unregister EXPORT_SYMBOL_GPL vmlinux 0x0125cedb bio_trim -EXPORT_SYMBOL_GPL vmlinux 0x012e46e4 tcp_set_keepalive EXPORT_SYMBOL_GPL vmlinux 0x012e730e apei_exec_noop EXPORT_SYMBOL_GPL vmlinux 0x01318024 iommu_get_domain_for_dev -EXPORT_SYMBOL_GPL vmlinux 0x01338256 l3mdev_ifindex_lookup_by_table_id -EXPORT_SYMBOL_GPL vmlinux 0x01539506 fib_info_nh_uses_dev EXPORT_SYMBOL_GPL vmlinux 0x0156cf39 pci_bus_add_device -EXPORT_SYMBOL_GPL vmlinux 0x015b4c3a skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0x0163354e perf_tp_event EXPORT_SYMBOL_GPL vmlinux 0x01640ed9 gpiod_get_array EXPORT_SYMBOL_GPL vmlinux 0x0167dbe0 vfio_init_group_dev EXPORT_SYMBOL_GPL vmlinux 0x0171ff8d regulator_list_voltage_linear @@ -13128,48 +13128,57 @@ EXPORT_SYMBOL_GPL vmlinux 0x018b3d1e intel_pt_validate_cap EXPORT_SYMBOL_GPL vmlinux 0x018bc5da unregister_kretprobes EXPORT_SYMBOL_GPL vmlinux 0x0190386a event_triggers_call +EXPORT_SYMBOL_GPL vmlinux 0x0190ed69 nfs42_ssc_unregister +EXPORT_SYMBOL_GPL vmlinux 0x01948598 __SCK__tp_func_devlink_hwerr EXPORT_SYMBOL_GPL vmlinux 0x0199257a dma_get_required_mask EXPORT_SYMBOL_GPL vmlinux 0x01a0cb78 property_entries_free EXPORT_SYMBOL_GPL vmlinux 0x01a2c31b pm_generic_resume_early -EXPORT_SYMBOL_GPL vmlinux 0x01ad988d netdev_set_default_ethtool_ops -EXPORT_SYMBOL_GPL vmlinux 0x01b7511e ethnl_cable_test_fault_length +EXPORT_SYMBOL_GPL vmlinux 0x01ae45d4 alloc_skb_for_msg EXPORT_SYMBOL_GPL vmlinux 0x01b7e35b __SCK__tp_func_block_bio_remap EXPORT_SYMBOL_GPL vmlinux 0x01c0aecb __clk_mux_determine_rate EXPORT_SYMBOL_GPL vmlinux 0x01c12c32 cpu_bit_bitmap EXPORT_SYMBOL_GPL vmlinux 0x01e1a8de kgdb_breakpoint +EXPORT_SYMBOL_GPL vmlinux 0x01e9e52e __dev_forward_skb EXPORT_SYMBOL_GPL vmlinux 0x01ee5532 smp_call_function_any EXPORT_SYMBOL_GPL vmlinux 0x0207a6c6 reset_control_bulk_acquire EXPORT_SYMBOL_GPL vmlinux 0x021c581e clk_hw_set_rate_range EXPORT_SYMBOL_GPL vmlinux 0x02206a0e virtqueue_is_broken EXPORT_SYMBOL_GPL vmlinux 0x022a7502 regulator_set_suspend_voltage +EXPORT_SYMBOL_GPL vmlinux 0x022c6e29 crypto_register_skcipher EXPORT_SYMBOL_GPL vmlinux 0x022c99df usb_hcd_pci_pm_ops EXPORT_SYMBOL_GPL vmlinux 0x02333417 md_new_event +EXPORT_SYMBOL_GPL vmlinux 0x023368be bpf_trace_run4 EXPORT_SYMBOL_GPL vmlinux 0x02394899 play_idle_precise +EXPORT_SYMBOL_GPL vmlinux 0x023d84db devlink_traps_unregister EXPORT_SYMBOL_GPL vmlinux 0x02455c5d devm_gpiod_unhinge EXPORT_SYMBOL_GPL vmlinux 0x024d13dd request_free_mem_region +EXPORT_SYMBOL_GPL vmlinux 0x025580be seg6_do_srh_inline EXPORT_SYMBOL_GPL vmlinux 0x0267d5f3 find_extend_vma EXPORT_SYMBOL_GPL vmlinux 0x026816be led_update_brightness EXPORT_SYMBOL_GPL vmlinux 0x02871138 wait_on_page_writeback_killable EXPORT_SYMBOL_GPL vmlinux 0x02959189 rt_mutex_trylock +EXPORT_SYMBOL_GPL vmlinux 0x02983838 __traceiter_tcp_send_reset EXPORT_SYMBOL_GPL vmlinux 0x02a0412c _proc_mkdir -EXPORT_SYMBOL_GPL vmlinux 0x02a31e47 devlink_resource_register EXPORT_SYMBOL_GPL vmlinux 0x02a52cc5 devm_kstrdup_const -EXPORT_SYMBOL_GPL vmlinux 0x02ad2232 __tracepoint_pelt_cfs_tp +EXPORT_SYMBOL_GPL vmlinux 0x02aaab81 devlink_trap_policers_register EXPORT_SYMBOL_GPL vmlinux 0x02e24129 usb_string -EXPORT_SYMBOL_GPL vmlinux 0x02e44f27 crypto_spawn_tfm EXPORT_SYMBOL_GPL vmlinux 0x02e9600f vp_modern_config_vector +EXPORT_SYMBOL_GPL vmlinux 0x02f42d36 nvme_cleanup_cmd EXPORT_SYMBOL_GPL vmlinux 0x02fc8d7f __tracepoint_nvme_sq +EXPORT_SYMBOL_GPL vmlinux 0x02ffe6e2 security_kernel_post_read_file EXPORT_SYMBOL_GPL vmlinux 0x0312b3b0 reset_controller_add_lookup EXPORT_SYMBOL_GPL vmlinux 0x0320946b dev_pm_genpd_set_next_wakeup +EXPORT_SYMBOL_GPL vmlinux 0x0323d790 lwtunnel_build_state +EXPORT_SYMBOL_GPL vmlinux 0x032937b5 ipv6_find_tlv EXPORT_SYMBOL_GPL vmlinux 0x032a68ec led_trigger_unregister_simple EXPORT_SYMBOL_GPL vmlinux 0x03372453 force_irqthreads EXPORT_SYMBOL_GPL vmlinux 0x033832c7 usb_amd_hang_symptom_quirk +EXPORT_SYMBOL_GPL vmlinux 0x033ba73c __tracepoint_pelt_cfs_tp EXPORT_SYMBOL_GPL vmlinux 0x0343bdf1 __i2c_board_list -EXPORT_SYMBOL_GPL vmlinux 0x0343df7c dst_blackhole_update_pmtu EXPORT_SYMBOL_GPL vmlinux 0x034a3153 __rio_local_write_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x0352ae2a ip6_append_data EXPORT_SYMBOL_GPL vmlinux 0x035e38e9 pm_clk_add_clk EXPORT_SYMBOL_GPL vmlinux 0x036de383 perf_event_cgrp_subsys_enabled_key -EXPORT_SYMBOL_GPL vmlinux 0x0379fd18 rtnl_register_module EXPORT_SYMBOL_GPL vmlinux 0x03870675 __fscrypt_prepare_readdir EXPORT_SYMBOL_GPL vmlinux 0x038a08e5 ata_sas_scsi_ioctl EXPORT_SYMBOL_GPL vmlinux 0x038d3cbd dw_pcie_upconfig_setup @@ -13179,69 +13188,67 @@ EXPORT_SYMBOL_GPL vmlinux 0x039fc5ba ata_bmdma32_port_ops EXPORT_SYMBOL_GPL vmlinux 0x03a02e44 rio_mport_write_config_8 EXPORT_SYMBOL_GPL vmlinux 0x03b7927e scsi_ioctl_block_when_processing_errors -EXPORT_SYMBOL_GPL vmlinux 0x03b87bcc tcp_unregister_congestion_control EXPORT_SYMBOL_GPL vmlinux 0x03c12dfe cancel_work_sync EXPORT_SYMBOL_GPL vmlinux 0x03c1c035 acrn_remove_intr_handler EXPORT_SYMBOL_GPL vmlinux 0x03c364c0 devfreq_cooling_em_register -EXPORT_SYMBOL_GPL vmlinux 0x03ccaf6e sched_set_fifo_low EXPORT_SYMBOL_GPL vmlinux 0x03ce7234 sched_smt_present EXPORT_SYMBOL_GPL vmlinux 0x03d2570d account_locked_vm EXPORT_SYMBOL_GPL vmlinux 0x03dc4f30 relay_late_setup_files EXPORT_SYMBOL_GPL vmlinux 0x03e62f61 virtio_max_dma_size -EXPORT_SYMBOL_GPL vmlinux 0x03e76254 __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0x03ecfded security_kernel_read_file EXPORT_SYMBOL_GPL vmlinux 0x03edd042 __account_locked_vm EXPORT_SYMBOL_GPL vmlinux 0x03f959ee gpiod_set_value_cansleep -EXPORT_SYMBOL_GPL vmlinux 0x03fe9d9f __tracepoint_napi_poll -EXPORT_SYMBOL_GPL vmlinux 0x03ffc8a4 l3mdev_update_flow EXPORT_SYMBOL_GPL vmlinux 0x0402cbbf preempt_notifier_inc EXPORT_SYMBOL_GPL vmlinux 0x040afb96 debugfs_attr_write -EXPORT_SYMBOL_GPL vmlinux 0x04123e4c devlink_sb_register EXPORT_SYMBOL_GPL vmlinux 0x0419e175 vbin_printf -EXPORT_SYMBOL_GPL vmlinux 0x04212c94 do_tcp_sendpages EXPORT_SYMBOL_GPL vmlinux 0x042522f2 sched_trace_rd_span EXPORT_SYMBOL_GPL vmlinux 0x042c9a04 em_cpu_get +EXPORT_SYMBOL_GPL vmlinux 0x043cf4d7 skcipher_walk_aead_encrypt EXPORT_SYMBOL_GPL vmlinux 0x0443c081 dev_pm_opp_adjust_voltage EXPORT_SYMBOL_GPL vmlinux 0x044776ac regmap_check_range_table EXPORT_SYMBOL_GPL vmlinux 0x044a0f90 __tracepoint_xdp_bulk_tx +EXPORT_SYMBOL_GPL vmlinux 0x0453a40c __sock_recv_ts_and_drops EXPORT_SYMBOL_GPL vmlinux 0x045f7386 uart_handle_cts_change +EXPORT_SYMBOL_GPL vmlinux 0x046145ea __tracepoint_pelt_dl_tp +EXPORT_SYMBOL_GPL vmlinux 0x046162bb device_store_bool EXPORT_SYMBOL_GPL vmlinux 0x0465a073 regmap_reg_in_ranges -EXPORT_SYMBOL_GPL vmlinux 0x046bd9b5 bpf_offload_dev_match +EXPORT_SYMBOL_GPL vmlinux 0x0469217f tun_get_tx_ring EXPORT_SYMBOL_GPL vmlinux 0x047b585e blk_rq_prep_clone -EXPORT_SYMBOL_GPL vmlinux 0x048af618 crypto_lookup_template +EXPORT_SYMBOL_GPL vmlinux 0x0488e0f0 inet6_csk_addr2sockaddr EXPORT_SYMBOL_GPL vmlinux 0x04bf0092 io_cgrp_subsys_enabled_key EXPORT_SYMBOL_GPL vmlinux 0x04c4f603 mpi_get_buffer EXPORT_SYMBOL_GPL vmlinux 0x04c98282 gpiod_is_active_low EXPORT_SYMBOL_GPL vmlinux 0x04df8fbc lzo1x_decompress_safe -EXPORT_SYMBOL_GPL vmlinux 0x04e1478c inet_csk_listen_stop -EXPORT_SYMBOL_GPL vmlinux 0x04ee3d69 __traceiter_devlink_trap_report EXPORT_SYMBOL_GPL vmlinux 0x04f3ab19 led_trigger_rename_static EXPORT_SYMBOL_GPL vmlinux 0x05048344 fs_kobj EXPORT_SYMBOL_GPL vmlinux 0x0504ba04 dev_pm_enable_wake_irq EXPORT_SYMBOL_GPL vmlinux 0x05179fdd iommu_unmap +EXPORT_SYMBOL_GPL vmlinux 0x0519581d devlink_resource_register EXPORT_SYMBOL_GPL vmlinux 0x051aafa2 gpiod_set_config EXPORT_SYMBOL_GPL vmlinux 0x0525cb78 arizona_clk32k_enable -EXPORT_SYMBOL_GPL vmlinux 0x052b78d0 ipv6_stub EXPORT_SYMBOL_GPL vmlinux 0x052c77ee kobject_create_and_add EXPORT_SYMBOL_GPL vmlinux 0x052c9aed ktime_get_real_fast_ns EXPORT_SYMBOL_GPL vmlinux 0x05415a3b devm_of_icc_get EXPORT_SYMBOL_GPL vmlinux 0x0549fe36 srcu_notifier_chain_unregister EXPORT_SYMBOL_GPL vmlinux 0x054e550b kernel_halt EXPORT_SYMBOL_GPL vmlinux 0x054f8645 __tracepoint_mc_event +EXPORT_SYMBOL_GPL vmlinux 0x0559d23f fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x055a7543 msg_zerocopy_alloc EXPORT_SYMBOL_GPL vmlinux 0x0566c3ac vp_modern_get_status EXPORT_SYMBOL_GPL vmlinux 0x05682a94 crypto_alg_mod_lookup -EXPORT_SYMBOL_GPL vmlinux 0x05753bc8 seg6_do_srh_inline +EXPORT_SYMBOL_GPL vmlinux 0x056ec3a6 raw_seq_start EXPORT_SYMBOL_GPL vmlinux 0x05883efb __traceiter_suspend_resume EXPORT_SYMBOL_GPL vmlinux 0x058b582a vt_get_leds EXPORT_SYMBOL_GPL vmlinux 0x058f9366 apei_exec_collect_resources EXPORT_SYMBOL_GPL vmlinux 0x05919b4f dma_resv_get_fences_rcu +EXPORT_SYMBOL_GPL vmlinux 0x059767a1 l3mdev_master_upper_ifindex_by_index_rcu +EXPORT_SYMBOL_GPL vmlinux 0x059e3972 inet6_hash_connect EXPORT_SYMBOL_GPL vmlinux 0x059f1f37 securityfs_create_dir EXPORT_SYMBOL_GPL vmlinux 0x05a2906e devres_for_each_res -EXPORT_SYMBOL_GPL vmlinux 0x05a604ec tun_get_tx_ring EXPORT_SYMBOL_GPL vmlinux 0x05a6f293 param_set_bool_enable_only EXPORT_SYMBOL_GPL vmlinux 0x05a9b77b trace_array_put EXPORT_SYMBOL_GPL vmlinux 0x05b4eec8 serial8250_do_shutdown EXPORT_SYMBOL_GPL vmlinux 0x05cac36e fuse_dev_install -EXPORT_SYMBOL_GPL vmlinux 0x05d715ce __tracepoint_br_fdb_external_learn_add EXPORT_SYMBOL_GPL vmlinux 0x05d8d9dd devres_release_group EXPORT_SYMBOL_GPL vmlinux 0x05de9058 tps65912_regmap_config EXPORT_SYMBOL_GPL vmlinux 0x05ea7651 irq_domain_free_irqs_parent @@ -13251,10 +13258,9 @@ EXPORT_SYMBOL_GPL vmlinux 0x0624f35a fsverity_prepare_setattr EXPORT_SYMBOL_GPL vmlinux 0x0625ea13 icc_sync_state EXPORT_SYMBOL_GPL vmlinux 0x0626da5f od_unregister_powersave_bias_handler -EXPORT_SYMBOL_GPL vmlinux 0x0637aa66 spi_split_transfers_maxsize -EXPORT_SYMBOL_GPL vmlinux 0x06435b78 vtime_guest_enter EXPORT_SYMBOL_GPL vmlinux 0x064db9a5 mark_mounts_for_expiry EXPORT_SYMBOL_GPL vmlinux 0x068176a9 blk_poll +EXPORT_SYMBOL_GPL vmlinux 0x06920332 udp_tunnel_drop_rx_port EXPORT_SYMBOL_GPL vmlinux 0x06965bb5 devm_platform_get_and_ioremap_resource EXPORT_SYMBOL_GPL vmlinux 0x06968186 pm_genpd_add_device EXPORT_SYMBOL_GPL vmlinux 0x06af398c class_find_device @@ -13263,21 +13269,19 @@ EXPORT_SYMBOL_GPL vmlinux 0x06c5c608 decrypt_blob EXPORT_SYMBOL_GPL vmlinux 0x06ca6cf1 scsi_check_sense EXPORT_SYMBOL_GPL vmlinux 0x06cca30b ring_buffer_record_off -EXPORT_SYMBOL_GPL vmlinux 0x06d4331c udp4_lib_lookup EXPORT_SYMBOL_GPL vmlinux 0x06ea0080 efivar_entry_remove EXPORT_SYMBOL_GPL vmlinux 0x06eedfcb pci_epf_bind EXPORT_SYMBOL_GPL vmlinux 0x06f46f67 pci_bus_max_busnr EXPORT_SYMBOL_GPL vmlinux 0x0707019a context_tracking EXPORT_SYMBOL_GPL vmlinux 0x07242d92 put_dax EXPORT_SYMBOL_GPL vmlinux 0x07257e5e rio_dev_get -EXPORT_SYMBOL_GPL vmlinux 0x07292aae ncsi_start_dev -EXPORT_SYMBOL_GPL vmlinux 0x0740e4d3 ip_tunnel_newlink +EXPORT_SYMBOL_GPL vmlinux 0x07437c6c ip_tunnel_rcv EXPORT_SYMBOL_GPL vmlinux 0x07483e13 cn_del_callback EXPORT_SYMBOL_GPL vmlinux 0x074f98db synth_event_add_field EXPORT_SYMBOL_GPL vmlinux 0x07627adb rtc_set_alarm EXPORT_SYMBOL_GPL vmlinux 0x076356e7 sfp_may_have_phy -EXPORT_SYMBOL_GPL vmlinux 0x0763c525 udp_tunnel_sock_release EXPORT_SYMBOL_GPL vmlinux 0x07646cee ata_tf_to_fis +EXPORT_SYMBOL_GPL vmlinux 0x07833916 devlink_net EXPORT_SYMBOL_GPL vmlinux 0x07883ee1 class_compat_remove_link EXPORT_SYMBOL_GPL vmlinux 0x07a2a675 __tracepoint_xhci_dbg_quirks EXPORT_SYMBOL_GPL vmlinux 0x07aa59c8 component_master_del @@ -13285,22 +13289,23 @@ EXPORT_SYMBOL_GPL vmlinux 0x07b52e38 rtnl_unregister EXPORT_SYMBOL_GPL vmlinux 0x07b64d81 hyperv_stop_tsc_emulation EXPORT_SYMBOL_GPL vmlinux 0x07be6905 net_inc_egress_queue -EXPORT_SYMBOL_GPL vmlinux 0x07ec7742 tcp_ca_openreq_child -EXPORT_SYMBOL_GPL vmlinux 0x07f734a9 nvme_complete_async_event -EXPORT_SYMBOL_GPL vmlinux 0x080d6b6e spi_slave_abort +EXPORT_SYMBOL_GPL vmlinux 0x07fe0d04 sk_attach_filter EXPORT_SYMBOL_GPL vmlinux 0x08135613 dax_write_cache EXPORT_SYMBOL_GPL vmlinux 0x0828d609 mc146818_get_time EXPORT_SYMBOL_GPL vmlinux 0x0846be16 attribute_container_find_class_device -EXPORT_SYMBOL_GPL vmlinux 0x08799ba1 kobject_uevent +EXPORT_SYMBOL_GPL vmlinux 0x08769482 __tracepoint_sched_overutilized_tp EXPORT_SYMBOL_GPL vmlinux 0x087f5dc5 wm831x_of_match -EXPORT_SYMBOL_GPL vmlinux 0x08905b97 fwnode_property_read_u32_array +EXPORT_SYMBOL_GPL vmlinux 0x08800b83 skb_consume_udp +EXPORT_SYMBOL_GPL vmlinux 0x088c9fcb preempt_notifier_register EXPORT_SYMBOL_GPL vmlinux 0x08b0383b pinctrl_select_state EXPORT_SYMBOL_GPL vmlinux 0x08b58842 pci_enable_rom +EXPORT_SYMBOL_GPL vmlinux 0x08babaea fib_nh_common_release EXPORT_SYMBOL_GPL vmlinux 0x08bc927e dm_hold EXPORT_SYMBOL_GPL vmlinux 0x08d3bf02 trace_vprintk EXPORT_SYMBOL_GPL vmlinux 0x08d4ac54 blk_crypto_evict_key EXPORT_SYMBOL_GPL vmlinux 0x08dfdc23 vp_modern_map_vq_notify EXPORT_SYMBOL_GPL vmlinux 0x0907d14d blocking_notifier_chain_register +EXPORT_SYMBOL_GPL vmlinux 0x09166c10 devlink_trap_report EXPORT_SYMBOL_GPL vmlinux 0x0918db00 nd_region_provider_data EXPORT_SYMBOL_GPL vmlinux 0x091eb9b4 round_jiffies EXPORT_SYMBOL_GPL vmlinux 0x0925493f clear_page_orig @@ -13310,17 +13315,17 @@ EXPORT_SYMBOL_GPL vmlinux 0x093813f5 genphy_c45_read_link EXPORT_SYMBOL_GPL vmlinux 0x09505f2f sysfs_remove_link_from_group EXPORT_SYMBOL_GPL vmlinux 0x0959353d fscrypt_fname_siphash +EXPORT_SYMBOL_GPL vmlinux 0x095bbe33 fib_rules_dump EXPORT_SYMBOL_GPL vmlinux 0x096a7e6f x86_spec_ctrl_base EXPORT_SYMBOL_GPL vmlinux 0x09778af6 icc_nodes_remove -EXPORT_SYMBOL_GPL vmlinux 0x097949c7 tcp_reno_ssthresh EXPORT_SYMBOL_GPL vmlinux 0x097aa570 rio_local_set_device_id EXPORT_SYMBOL_GPL vmlinux 0x097ddc04 context_tracking_exit -EXPORT_SYMBOL_GPL vmlinux 0x097faf5e fib_add_nexthop -EXPORT_SYMBOL_GPL vmlinux 0x0982968b __tracepoint_neigh_event_send_dead +EXPORT_SYMBOL_GPL vmlinux 0x098d429b sk_msg_recvmsg EXPORT_SYMBOL_GPL vmlinux 0x0998f441 ata_scsi_port_error_handler EXPORT_SYMBOL_GPL vmlinux 0x09b53e14 interval_tree_remove +EXPORT_SYMBOL_GPL vmlinux 0x09b7320d devlink_port_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0x09b9ed2d __traceiter_br_fdb_external_learn_add EXPORT_SYMBOL_GPL vmlinux 0x09c59c5f crypto_grab_shash -EXPORT_SYMBOL_GPL vmlinux 0x09d2bf16 crypto_stats_ahash_final EXPORT_SYMBOL_GPL vmlinux 0x09d63265 list_lru_count_node EXPORT_SYMBOL_GPL vmlinux 0x09f50f32 rcu_nocb_flush_deferred_wakeup EXPORT_SYMBOL_GPL vmlinux 0x09fd68bb virtio_device_freeze @@ -13333,7 +13338,8 @@ EXPORT_SYMBOL_GPL vmlinux 0x0a502c98 dmar_platform_optin EXPORT_SYMBOL_GPL vmlinux 0x0a52c511 hv_query_ext_cap EXPORT_SYMBOL_GPL vmlinux 0x0a52d1d1 sysfs_create_bin_file -EXPORT_SYMBOL_GPL vmlinux 0x0a5815b3 skcipher_register_instance +EXPORT_SYMBOL_GPL vmlinux 0x0a5418bb set_cpus_allowed_ptr +EXPORT_SYMBOL_GPL vmlinux 0x0a624743 __tracepoint_sched_update_nr_running_tp EXPORT_SYMBOL_GPL vmlinux 0x0a646e08 rio_mport_send_doorbell EXPORT_SYMBOL_GPL vmlinux 0x0a6c4041 cn_netlink_send EXPORT_SYMBOL_GPL vmlinux 0x0a8d9575 rio_del_mport_pw_handler @@ -13342,18 +13348,15 @@ EXPORT_SYMBOL_GPL vmlinux 0x0aba6393 pci_disable_pcie_error_reporting EXPORT_SYMBOL_GPL vmlinux 0x0ac92e4f usb_enable_lpm EXPORT_SYMBOL_GPL vmlinux 0x0aca92f8 pci_disable_pasid +EXPORT_SYMBOL_GPL vmlinux 0x0ace89be perf_pmu_unregister EXPORT_SYMBOL_GPL vmlinux 0x0ad137d3 lpit_read_residency_count_address EXPORT_SYMBOL_GPL vmlinux 0x0ad772c2 generic_online_page -EXPORT_SYMBOL_GPL vmlinux 0x0ae3a6de tcp_set_state -EXPORT_SYMBOL_GPL vmlinux 0x0af35aa4 __skb_tstamp_tx EXPORT_SYMBOL_GPL vmlinux 0x0af40724 iommu_alloc_resv_region EXPORT_SYMBOL_GPL vmlinux 0x0af41527 dm_set_target_max_io_len EXPORT_SYMBOL_GPL vmlinux 0x0afccedf pinctrl_unregister EXPORT_SYMBOL_GPL vmlinux 0x0b0227ac __irq_domain_add EXPORT_SYMBOL_GPL vmlinux 0x0b07abe2 unshare_fs_struct -EXPORT_SYMBOL_GPL vmlinux 0x0b094ea6 __traceiter_devlink_hwerr EXPORT_SYMBOL_GPL vmlinux 0x0b0b74b6 pci_user_read_config_word -EXPORT_SYMBOL_GPL vmlinux 0x0b1394e5 spi_controller_dma_map_mem_op_data EXPORT_SYMBOL_GPL vmlinux 0x0b2d5e94 subsys_dev_iter_exit EXPORT_SYMBOL_GPL vmlinux 0x0b2db2d5 remove_resource EXPORT_SYMBOL_GPL vmlinux 0x0b44ec64 bus_for_each_drv @@ -13365,120 +13368,115 @@ EXPORT_SYMBOL_GPL vmlinux 0x0b7f75f9 led_sysfs_enable EXPORT_SYMBOL_GPL vmlinux 0x0b800ac7 iommu_report_device_fault EXPORT_SYMBOL_GPL vmlinux 0x0b803dea cpufreq_cpu_get -EXPORT_SYMBOL_GPL vmlinux 0x0b85b223 ip_tunnel_dellink EXPORT_SYMBOL_GPL vmlinux 0x0bbca2fc hv_ringbuffer_get_debuginfo EXPORT_SYMBOL_GPL vmlinux 0x0bcd0929 irq_remove_generic_chip EXPORT_SYMBOL_GPL vmlinux 0x0bde69fd elv_register EXPORT_SYMBOL_GPL vmlinux 0x0be1a4d8 amd_unregister_ecc_decoder EXPORT_SYMBOL_GPL vmlinux 0x0be5a089 regulator_get_current_limit_regmap +EXPORT_SYMBOL_GPL vmlinux 0x0be8a36c tcp_sendmsg_locked EXPORT_SYMBOL_GPL vmlinux 0x0bfa3a19 rcu_idle_exit +EXPORT_SYMBOL_GPL vmlinux 0x0bfd4703 skb_segment_list EXPORT_SYMBOL_GPL vmlinux 0x0c0e662b tpm_chip_register -EXPORT_SYMBOL_GPL vmlinux 0x0c121354 sock_inuse_get -EXPORT_SYMBOL_GPL vmlinux 0x0c2166b2 device_find_child EXPORT_SYMBOL_GPL vmlinux 0x0c264b48 kvm_clock EXPORT_SYMBOL_GPL vmlinux 0x0c2c5802 work_busy EXPORT_SYMBOL_GPL vmlinux 0x0c32ff8a edac_pci_alloc_index -EXPORT_SYMBOL_GPL vmlinux 0x0c3be074 devlink_reload_disable EXPORT_SYMBOL_GPL vmlinux 0x0c427d81 __traceiter_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0x0c52252b tcpv6_prot EXPORT_SYMBOL_GPL vmlinux 0x0c805f93 clflush_cache_range EXPORT_SYMBOL_GPL vmlinux 0x0c84929d pci_disable_ats EXPORT_SYMBOL_GPL vmlinux 0x0cb92acf debugfs_write_file_bool EXPORT_SYMBOL_GPL vmlinux 0x0cbb54df phy_calibrate -EXPORT_SYMBOL_GPL vmlinux 0x0cbd15ae devlink_port_region_create EXPORT_SYMBOL_GPL vmlinux 0x0cbe3ee2 software_node_unregister +EXPORT_SYMBOL_GPL vmlinux 0x0cd31eda bpf_trace_run2 EXPORT_SYMBOL_GPL vmlinux 0x0cdae6b7 fwnode_gpiod_get_index EXPORT_SYMBOL_GPL vmlinux 0x0cf9f792 devm_pm_opp_set_regulators EXPORT_SYMBOL_GPL vmlinux 0x0cfe59cb hyperv_fill_flush_guest_mapping_list -EXPORT_SYMBOL_GPL vmlinux 0x0d07d820 sock_prot_inuse_get EXPORT_SYMBOL_GPL vmlinux 0x0d125474 __cpuhp_state_add_instance +EXPORT_SYMBOL_GPL vmlinux 0x0d140858 ipv6_bpf_stub EXPORT_SYMBOL_GPL vmlinux 0x0d31d20e bsg_job_get -EXPORT_SYMBOL_GPL vmlinux 0x0d35abad xdp_attachment_setup EXPORT_SYMBOL_GPL vmlinux 0x0d459213 work_on_cpu_safe EXPORT_SYMBOL_GPL vmlinux 0x0d4961de nf_log_buf_open -EXPORT_SYMBOL_GPL vmlinux 0x0d614c0c crypto_unregister_alg EXPORT_SYMBOL_GPL vmlinux 0x0d71d98c __SCK__tp_func_unmap EXPORT_SYMBOL_GPL vmlinux 0x0d76a189 platform_device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x0d779a32 devlink_dpipe_entry_ctx_prepare EXPORT_SYMBOL_GPL vmlinux 0x0dcb3ee8 divider_recalc_rate EXPORT_SYMBOL_GPL vmlinux 0x0dd767b3 elv_rqhash_del EXPORT_SYMBOL_GPL vmlinux 0x0ddb1cd7 llist_reverse_order +EXPORT_SYMBOL_GPL vmlinux 0x0df8d518 sock_prot_inuse_get EXPORT_SYMBOL_GPL vmlinux 0x0e1194d5 hrtimer_try_to_cancel -EXPORT_SYMBOL_GPL vmlinux 0x0e11fef4 bpf_event_output EXPORT_SYMBOL_GPL vmlinux 0x0e13cb4d apei_resources_release +EXPORT_SYMBOL_GPL vmlinux 0x0e1b0823 __devm_spi_alloc_controller EXPORT_SYMBOL_GPL vmlinux 0x0e1fc8ef __SCT__tp_func_non_standard_event EXPORT_SYMBOL_GPL vmlinux 0x0e31035c __pci_hp_register EXPORT_SYMBOL_GPL vmlinux 0x0e33d800 debugfs_remove EXPORT_SYMBOL_GPL vmlinux 0x0e3435e3 pci_epc_start -EXPORT_SYMBOL_GPL vmlinux 0x0e5ff0fe ip6_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x0e50b918 nexthop_select_path EXPORT_SYMBOL_GPL vmlinux 0x0e625646 debugfs_file_get EXPORT_SYMBOL_GPL vmlinux 0x0e6b79af static_key_disable_cpuslocked EXPORT_SYMBOL_GPL vmlinux 0x0e7346d4 intel_pinctrl_suspend_noirq EXPORT_SYMBOL_GPL vmlinux 0x0e73fe9c register_kprobe -EXPORT_SYMBOL_GPL vmlinux 0x0e7f25ad sock_diag_save_cookie EXPORT_SYMBOL_GPL vmlinux 0x0e924bed spi_bus_type EXPORT_SYMBOL_GPL vmlinux 0x0e930a72 iomap_page_mkwrite EXPORT_SYMBOL_GPL vmlinux 0x0e9d3ad2 irq_chip_set_vcpu_affinity_parent EXPORT_SYMBOL_GPL vmlinux 0x0e9d7077 ata_bmdma_dumb_qc_prep -EXPORT_SYMBOL_GPL vmlinux 0x0eadb3bf dev_set_name EXPORT_SYMBOL_GPL vmlinux 0x0ec096b0 hv_read_reference_counter EXPORT_SYMBOL_GPL vmlinux 0x0ece95db synth_event_trace_end EXPORT_SYMBOL_GPL vmlinux 0x0ed15812 devm_create_dev_dax -EXPORT_SYMBOL_GPL vmlinux 0x0ee52225 fwnode_property_read_u16_array -EXPORT_SYMBOL_GPL vmlinux 0x0ee7557a ipv6_opt_accepted EXPORT_SYMBOL_GPL vmlinux 0x0eeae3e8 key_type_encrypted EXPORT_SYMBOL_GPL vmlinux 0x0ef1e485 tty_kclose EXPORT_SYMBOL_GPL vmlinux 0x0f002392 dw_pcie_wait_for_link -EXPORT_SYMBOL_GPL vmlinux 0x0f02621d tcp_rate_check_app_limited +EXPORT_SYMBOL_GPL vmlinux 0x0f026c02 crypto_stats_decompress EXPORT_SYMBOL_GPL vmlinux 0x0f0b21fe pm_trace_rtc_abused +EXPORT_SYMBOL_GPL vmlinux 0x0f0b7cdf dst_cache_set_ip6 EXPORT_SYMBOL_GPL vmlinux 0x0f180070 ring_buffer_free_read_page +EXPORT_SYMBOL_GPL vmlinux 0x0f1a3ab7 sk_msg_alloc EXPORT_SYMBOL_GPL vmlinux 0x0f2d7d87 mce_unregister_decode_chain +EXPORT_SYMBOL_GPL vmlinux 0x0f376772 __SCK__tp_func_pelt_rt_tp EXPORT_SYMBOL_GPL vmlinux 0x0f482136 pm_generic_restore -EXPORT_SYMBOL_GPL vmlinux 0x0f58361a ptp_parse_header +EXPORT_SYMBOL_GPL vmlinux 0x0f4ad15c __raw_v4_lookup EXPORT_SYMBOL_GPL vmlinux 0x0f667b4a ata_pio_need_iordy EXPORT_SYMBOL_GPL vmlinux 0x0f692765 percpu_down_write EXPORT_SYMBOL_GPL vmlinux 0x0f6ad17a pm_clk_suspend EXPORT_SYMBOL_GPL vmlinux 0x0f72ada1 acpi_dev_resource_io EXPORT_SYMBOL_GPL vmlinux 0x0f7ca236 dmi_memdev_name EXPORT_SYMBOL_GPL vmlinux 0x0f7d206f dm_copy_name_and_uuid -EXPORT_SYMBOL_GPL vmlinux 0x0fac6f99 sock_prot_inuse_add EXPORT_SYMBOL_GPL vmlinux 0x0fb07269 hvc_remove EXPORT_SYMBOL_GPL vmlinux 0x0fbb7344 memremap_compat_align EXPORT_SYMBOL_GPL vmlinux 0x0fc37562 amd_smn_read EXPORT_SYMBOL_GPL vmlinux 0x0fcc1969 copy_from_user_nmi EXPORT_SYMBOL_GPL vmlinux 0x0fd4610e kmem_dump_obj -EXPORT_SYMBOL_GPL vmlinux 0x0fd77b61 lwtunnel_input -EXPORT_SYMBOL_GPL vmlinux 0x0fe74c74 device_match_devt EXPORT_SYMBOL_GPL vmlinux 0x0fe895e3 arizona_pm_ops EXPORT_SYMBOL_GPL vmlinux 0x1005d60b tick_nohz_dep_set_cpu EXPORT_SYMBOL_GPL vmlinux 0x10138352 tracing_on EXPORT_SYMBOL_GPL vmlinux 0x1038b96f adxl_get_component_names -EXPORT_SYMBOL_GPL vmlinux 0x1053b500 spi_controller_resume EXPORT_SYMBOL_GPL vmlinux 0x10597091 vmbus_teardown_gpadl EXPORT_SYMBOL_GPL vmlinux 0x1063a6e0 pci_device_group +EXPORT_SYMBOL_GPL vmlinux 0x106ecae4 ncsi_unregister_dev EXPORT_SYMBOL_GPL vmlinux 0x107026ad regulator_list_voltage +EXPORT_SYMBOL_GPL vmlinux 0x1077c492 fib_nexthop_info EXPORT_SYMBOL_GPL vmlinux 0x1079d0b2 ata_sff_busy_sleep +EXPORT_SYMBOL_GPL vmlinux 0x107f05bb __tracepoint_neigh_update EXPORT_SYMBOL_GPL vmlinux 0x10829fd1 wb_writeout_inc EXPORT_SYMBOL_GPL vmlinux 0x108a0acd bstr_printf EXPORT_SYMBOL_GPL vmlinux 0x108be812 unregister_kprobe -EXPORT_SYMBOL_GPL vmlinux 0x108ce213 crypto_alloc_skcipher EXPORT_SYMBOL_GPL vmlinux 0x10a3678c debugfs_rename EXPORT_SYMBOL_GPL vmlinux 0x10a6a1a0 regulator_enable +EXPORT_SYMBOL_GPL vmlinux 0x10b2ff73 ping_close EXPORT_SYMBOL_GPL vmlinux 0x10b74a89 bus_get_device_klist -EXPORT_SYMBOL_GPL vmlinux 0x10c37416 phy_package_leave +EXPORT_SYMBOL_GPL vmlinux 0x10d65d5d dev_nit_active EXPORT_SYMBOL_GPL vmlinux 0x10ecc52c usb_amd_quirk_pll_enable EXPORT_SYMBOL_GPL vmlinux 0x10f92921 iomap_invalidatepage EXPORT_SYMBOL_GPL vmlinux 0x110106c1 cper_severity_to_aer EXPORT_SYMBOL_GPL vmlinux 0x11012a02 efivar_entry_size -EXPORT_SYMBOL_GPL vmlinux 0x110d65f7 spi_controller_suspend EXPORT_SYMBOL_GPL vmlinux 0x1124a5ac virtqueue_get_buf EXPORT_SYMBOL_GPL vmlinux 0x1129c84a of_icc_bulk_get EXPORT_SYMBOL_GPL vmlinux 0x11398a65 mm_unaccount_pinned_pages EXPORT_SYMBOL_GPL vmlinux 0x11465c7c tracepoint_probe_register_prio_may_exist EXPORT_SYMBOL_GPL vmlinux 0x1154a70c pcie_update_link_speed -EXPORT_SYMBOL_GPL vmlinux 0x11584498 dev_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x115c55bd sock_diag_check_cookie EXPORT_SYMBOL_GPL vmlinux 0x115dffef debugfs_real_fops EXPORT_SYMBOL_GPL vmlinux 0x116180b5 hv_current_partition_id EXPORT_SYMBOL_GPL vmlinux 0x116bdb86 usb_hcd_end_port_resume -EXPORT_SYMBOL_GPL vmlinux 0x116c94c4 dev_nit_active EXPORT_SYMBOL_GPL vmlinux 0x116efc8a attribute_container_unregister EXPORT_SYMBOL_GPL vmlinux 0x1172d487 rhashtable_insert_slow EXPORT_SYMBOL_GPL vmlinux 0x118fa90e crypto_comp_decompress @@ -13486,55 +13484,59 @@ EXPORT_SYMBOL_GPL vmlinux 0x11a2e0ac crypto_dh_key_len EXPORT_SYMBOL_GPL vmlinux 0x11b5d040 gpiod_put EXPORT_SYMBOL_GPL vmlinux 0x11b68ed8 acpi_subsys_poweroff +EXPORT_SYMBOL_GPL vmlinux 0x11b86a7e ping_get_port EXPORT_SYMBOL_GPL vmlinux 0x11c23240 crypto_attr_u32 -EXPORT_SYMBOL_GPL vmlinux 0x11cb6b37 perf_event_pause EXPORT_SYMBOL_GPL vmlinux 0x11d1a548 irq_domain_xlate_onetwocell EXPORT_SYMBOL_GPL vmlinux 0x11df0e75 devlink_fmsg_binary_pair_nest_start EXPORT_SYMBOL_GPL vmlinux 0x11df4abc devm_remove_action EXPORT_SYMBOL_GPL vmlinux 0x11e06ee9 badrange_init EXPORT_SYMBOL_GPL vmlinux 0x11e08f96 trace_seq_putmem_hex -EXPORT_SYMBOL_GPL vmlinux 0x1209c974 dst_cache_set_ip6 +EXPORT_SYMBOL_GPL vmlinux 0x12008c1b task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0x121353b9 fib6_new_table EXPORT_SYMBOL_GPL vmlinux 0x12189359 __SCT__tp_func_block_unplug EXPORT_SYMBOL_GPL vmlinux 0x121d958a unregister_die_notifier EXPORT_SYMBOL_GPL vmlinux 0x122f5691 tpm2_get_cc_attrs_tbl -EXPORT_SYMBOL_GPL vmlinux 0x12322f02 fwnode_get_named_child_node EXPORT_SYMBOL_GPL vmlinux 0x1234e483 get_cpu_iowait_time_us EXPORT_SYMBOL_GPL vmlinux 0x1234ffa1 cper_estatus_check_header EXPORT_SYMBOL_GPL vmlinux 0x1235460a proc_get_parent_data EXPORT_SYMBOL_GPL vmlinux 0x123680bf crypto_register_scomp EXPORT_SYMBOL_GPL vmlinux 0x12550931 dev_pm_opp_put_clkname -EXPORT_SYMBOL_GPL vmlinux 0x125b3205 tcp_done EXPORT_SYMBOL_GPL vmlinux 0x125fd0d3 blkdev_read_iter EXPORT_SYMBOL_GPL vmlinux 0x1268f357 resume_device_irqs -EXPORT_SYMBOL_GPL vmlinux 0x12696241 nvme_reset_ctrl EXPORT_SYMBOL_GPL vmlinux 0x127c109b __SCT__tp_func_suspend_resume EXPORT_SYMBOL_GPL vmlinux 0x12820930 fscrypt_d_revalidate EXPORT_SYMBOL_GPL vmlinux 0x1284ddb6 of_pm_clk_add_clks EXPORT_SYMBOL_GPL vmlinux 0x128da9da console_drivers -EXPORT_SYMBOL_GPL vmlinux 0x12922216 xfrm_audit_state_add EXPORT_SYMBOL_GPL vmlinux 0x129334ae sfp_parse_support -EXPORT_SYMBOL_GPL vmlinux 0x12a4407f nf_hook_entries_insert_raw +EXPORT_SYMBOL_GPL vmlinux 0x12aa3adb nvme_set_features +EXPORT_SYMBOL_GPL vmlinux 0x12b28ef7 crypto_unregister_alg EXPORT_SYMBOL_GPL vmlinux 0x12bdb90b regmap_get_reg_stride +EXPORT_SYMBOL_GPL vmlinux 0x12e1f178 spi_take_timestamp_pre EXPORT_SYMBOL_GPL vmlinux 0x12e2f860 key_set_timeout EXPORT_SYMBOL_GPL vmlinux 0x1303894e relay_subbufs_consumed +EXPORT_SYMBOL_GPL vmlinux 0x13103e3e spi_unregister_device EXPORT_SYMBOL_GPL vmlinux 0x131a5ed7 regmap_del_irq_chip EXPORT_SYMBOL_GPL vmlinux 0x131db64a system_long_wq EXPORT_SYMBOL_GPL vmlinux 0x133969d7 __trace_printk EXPORT_SYMBOL_GPL vmlinux 0x1339e50c bus_unregister_notifier EXPORT_SYMBOL_GPL vmlinux 0x133a030f clk_hw_get_parent EXPORT_SYMBOL_GPL vmlinux 0x1342989a pci_generic_config_read32 -EXPORT_SYMBOL_GPL vmlinux 0x134626c5 ipv4_redirect EXPORT_SYMBOL_GPL vmlinux 0x134f3a83 regulator_get_voltage +EXPORT_SYMBOL_GPL vmlinux 0x135d5149 raw_hash_sk EXPORT_SYMBOL_GPL vmlinux 0x13607569 dev_pm_domain_start EXPORT_SYMBOL_GPL vmlinux 0x1360b4a9 nvdimm_has_cache EXPORT_SYMBOL_GPL vmlinux 0x136209db power_supply_reg_notifier EXPORT_SYMBOL_GPL vmlinux 0x136c4380 tracing_snapshot_cond_enable +EXPORT_SYMBOL_GPL vmlinux 0x1373c735 nvme_uninit_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x1382aa61 tcf_dev_queue_xmit +EXPORT_SYMBOL_GPL vmlinux 0x1387b08b ip_tunnel_xmit EXPORT_SYMBOL_GPL vmlinux 0x138a6bb8 usb_interrupt_msg EXPORT_SYMBOL_GPL vmlinux 0x138bc0c3 genphy_c45_restart_aneg EXPORT_SYMBOL_GPL vmlinux 0x138e0957 dax_write_cache_enabled EXPORT_SYMBOL_GPL vmlinux 0x1391c331 component_bind_all EXPORT_SYMBOL_GPL vmlinux 0x13a1b2b4 blk_mq_update_nr_hw_queues -EXPORT_SYMBOL_GPL vmlinux 0x13bded34 __SCK__tp_func_sched_overutilized_tp +EXPORT_SYMBOL_GPL vmlinux 0x13aa95fe skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x13b5b0b4 device_match_devt EXPORT_SYMBOL_GPL vmlinux 0x13ce87e8 asn1_ber_decoder EXPORT_SYMBOL_GPL vmlinux 0x13d07e45 usb_alloc_coherent EXPORT_SYMBOL_GPL vmlinux 0x13d81671 srcu_init_notifier_head @@ -13542,72 +13544,76 @@ EXPORT_SYMBOL_GPL vmlinux 0x13e226ca fscrypt_set_bio_crypt_ctx EXPORT_SYMBOL_GPL vmlinux 0x13ed8784 sdev_evt_alloc EXPORT_SYMBOL_GPL vmlinux 0x13fab921 cpuidle_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0x13fee082 device_add_groups EXPORT_SYMBOL_GPL vmlinux 0x1403ad09 cpufreq_add_update_util_hook +EXPORT_SYMBOL_GPL vmlinux 0x1407631d crypto_unregister_skcipher EXPORT_SYMBOL_GPL vmlinux 0x1410ebda acpi_bus_trim EXPORT_SYMBOL_GPL vmlinux 0x141218e7 usb_put_hcd EXPORT_SYMBOL_GPL vmlinux 0x141acb62 acpi_bind_one EXPORT_SYMBOL_GPL vmlinux 0x141f38bf ktime_get_raw_fast_ns -EXPORT_SYMBOL_GPL vmlinux 0x142fe6f4 fwnode_count_parents +EXPORT_SYMBOL_GPL vmlinux 0x1422c295 pingv6_prot +EXPORT_SYMBOL_GPL vmlinux 0x14319462 device_remove_file_self EXPORT_SYMBOL_GPL vmlinux 0x144dabe9 __iomap_dio_rw EXPORT_SYMBOL_GPL vmlinux 0x14506818 devm_thermal_add_hwmon_sysfs -EXPORT_SYMBOL_GPL vmlinux 0x14572c7b __traceiter_devlink_hwmsg -EXPORT_SYMBOL_GPL vmlinux 0x1457bd6a dev_queue_xmit_nit -EXPORT_SYMBOL_GPL vmlinux 0x146ec503 devlink_params_unregister -EXPORT_SYMBOL_GPL vmlinux 0x14791810 fixed_phy_set_link_update +EXPORT_SYMBOL_GPL vmlinux 0x146097cd device_match_any EXPORT_SYMBOL_GPL vmlinux 0x1482dfc7 fscrypt_set_test_dummy_encryption -EXPORT_SYMBOL_GPL vmlinux 0x149b814a crypto_stats_ahash_update -EXPORT_SYMBOL_GPL vmlinux 0x14a3d34c spi_unregister_controller +EXPORT_SYMBOL_GPL vmlinux 0x148c3d8f sock_inuse_get EXPORT_SYMBOL_GPL vmlinux 0x14a86973 dev_pm_put_subsys_data EXPORT_SYMBOL_GPL vmlinux 0x14b2a6e4 nvdimm_to_bus EXPORT_SYMBOL_GPL vmlinux 0x14b3de34 cpufreq_cpu_get_raw -EXPORT_SYMBOL_GPL vmlinux 0x14c6e2b7 pid_nr_ns +EXPORT_SYMBOL_GPL vmlinux 0x14b583f9 unregister_pernet_subsys EXPORT_SYMBOL_GPL vmlinux 0x14cb9643 fsverity_ioctl_measure EXPORT_SYMBOL_GPL vmlinux 0x14d01690 clk_mux_index_to_val -EXPORT_SYMBOL_GPL vmlinux 0x14de8257 ping_get_port EXPORT_SYMBOL_GPL vmlinux 0x14f0d7c8 crypto_unregister_ahashes EXPORT_SYMBOL_GPL vmlinux 0x14ff9edf usb_altnum_to_altsetting EXPORT_SYMBOL_GPL vmlinux 0x15021b4a xa_delete_node EXPORT_SYMBOL_GPL vmlinux 0x15079b53 key_type_asymmetric EXPORT_SYMBOL_GPL vmlinux 0x150d9f58 __devm_reset_control_bulk_get -EXPORT_SYMBOL_GPL vmlinux 0x152003f8 free_fib_info EXPORT_SYMBOL_GPL vmlinux 0x152357b9 vfs_setxattr EXPORT_SYMBOL_GPL vmlinux 0x153b60a6 klist_del EXPORT_SYMBOL_GPL vmlinux 0x15510a89 devlink_fmsg_binary_put EXPORT_SYMBOL_GPL vmlinux 0x1555061c uart_get_rs485_mode -EXPORT_SYMBOL_GPL vmlinux 0x1566372c netlink_remove_tap +EXPORT_SYMBOL_GPL vmlinux 0x156d7f50 dev_queue_xmit_nit EXPORT_SYMBOL_GPL vmlinux 0x156e8afe __SCT__tp_func_fib6_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x156f4903 lwtunnel_encap_del_ops EXPORT_SYMBOL_GPL vmlinux 0x157de9d7 efivar_entry_set_get_size EXPORT_SYMBOL_GPL vmlinux 0x15838cc6 usb_driver_claim_interface -EXPORT_SYMBOL_GPL vmlinux 0x158f415b tcp_register_congestion_control EXPORT_SYMBOL_GPL vmlinux 0x1591b2c6 hyperv_read_cfg_blk EXPORT_SYMBOL_GPL vmlinux 0x15945475 __blkg_prfill_rwstat EXPORT_SYMBOL_GPL vmlinux 0x15998a65 dev_pm_genpd_remove_notifier EXPORT_SYMBOL_GPL vmlinux 0x159b266c xhci_reset_bandwidth -EXPORT_SYMBOL_GPL vmlinux 0x159e8db9 yield_to EXPORT_SYMBOL_GPL vmlinux 0x15a5b8fb disk_uevent EXPORT_SYMBOL_GPL vmlinux 0x15c3731e pm_clk_resume +EXPORT_SYMBOL_GPL vmlinux 0x15c83ae2 tcp_reno_cong_avoid EXPORT_SYMBOL_GPL vmlinux 0x15cac940 fscrypt_drop_inode EXPORT_SYMBOL_GPL vmlinux 0x15ea2648 hwpoison_filter_flags_mask +EXPORT_SYMBOL_GPL vmlinux 0x15f4243f skb_zerocopy EXPORT_SYMBOL_GPL vmlinux 0x15fad7f0 ata_sas_port_resume EXPORT_SYMBOL_GPL vmlinux 0x15fb3e88 sysfs_groups_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x15fc2682 perf_trace_run_bpf_submit EXPORT_SYMBOL_GPL vmlinux 0x15fd4aa0 rio_unregister_driver EXPORT_SYMBOL_GPL vmlinux 0x16014804 pm_clk_add_notifier EXPORT_SYMBOL_GPL vmlinux 0x1601a225 iomap_is_partially_uptodate +EXPORT_SYMBOL_GPL vmlinux 0x160fce71 crypto_skcipher_decrypt EXPORT_SYMBOL_GPL vmlinux 0x16240b71 clk_hw_get_name EXPORT_SYMBOL_GPL vmlinux 0x162d5812 gpiochip_line_is_irq -EXPORT_SYMBOL_GPL vmlinux 0x1631dd4d __traceiter_br_fdb_update +EXPORT_SYMBOL_GPL vmlinux 0x16409426 fwnode_property_read_u16_array EXPORT_SYMBOL_GPL vmlinux 0x164b16ba get_kernel_pages EXPORT_SYMBOL_GPL vmlinux 0x16516798 osc_pc_lpi_support_confirmed EXPORT_SYMBOL_GPL vmlinux 0x16558e1a blkg_conf_finish EXPORT_SYMBOL_GPL vmlinux 0x166db1b5 sched_clock_idle_wakeup_event +EXPORT_SYMBOL_GPL vmlinux 0x166fc36a __SCK__tp_func_pelt_cfs_tp EXPORT_SYMBOL_GPL vmlinux 0x167d7113 acpi_bus_register_early_device EXPORT_SYMBOL_GPL vmlinux 0x16895dd7 devm_memunmap_pages +EXPORT_SYMBOL_GPL vmlinux 0x16937a7e ping_bind EXPORT_SYMBOL_GPL vmlinux 0x169e454a tracepoint_srcu EXPORT_SYMBOL_GPL vmlinux 0x16da1f88 devlink_fmsg_u32_put +EXPORT_SYMBOL_GPL vmlinux 0x16f1d356 udp_tunnel_notify_add_rx_port EXPORT_SYMBOL_GPL vmlinux 0x170cc36c put_timespec64 EXPORT_SYMBOL_GPL vmlinux 0x1716bd74 scsi_build_sense EXPORT_SYMBOL_GPL vmlinux 0x1727650b usb_autopm_put_interface_no_suspend -EXPORT_SYMBOL_GPL vmlinux 0x17362c63 __sock_recv_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x173147f0 devlink_port_attrs_set +EXPORT_SYMBOL_GPL vmlinux 0x17411e91 spi_finalize_current_message EXPORT_SYMBOL_GPL vmlinux 0x1741ddee trace_seq_puts EXPORT_SYMBOL_GPL vmlinux 0x174c6274 ring_buffer_time_stamp EXPORT_SYMBOL_GPL vmlinux 0x17505455 crypto_ahash_digest @@ -13617,13 +13623,17 @@ EXPORT_SYMBOL_GPL vmlinux 0x1760a35c iommu_fwspec_init EXPORT_SYMBOL_GPL vmlinux 0x17614bf3 apei_resources_sub EXPORT_SYMBOL_GPL vmlinux 0x17655041 alloc_page_buffers +EXPORT_SYMBOL_GPL vmlinux 0x176e82a7 inet_csk_route_child_sock EXPORT_SYMBOL_GPL vmlinux 0x177080fb acpi_device_update_power EXPORT_SYMBOL_GPL vmlinux 0x17913fdd vmbus_hvsock_device_unregister EXPORT_SYMBOL_GPL vmlinux 0x179c2a92 page_cache_async_ra +EXPORT_SYMBOL_GPL vmlinux 0x17a215b8 __tracepoint_pelt_se_tp +EXPORT_SYMBOL_GPL vmlinux 0x17aad3da __tracepoint_neigh_update_done EXPORT_SYMBOL_GPL vmlinux 0x17add64b gdt_page EXPORT_SYMBOL_GPL vmlinux 0x17b1c812 rio_release_outb_mbox EXPORT_SYMBOL_GPL vmlinux 0x17ce71d9 rio_unlock_device EXPORT_SYMBOL_GPL vmlinux 0x17d0e17f crypto_unregister_shashes +EXPORT_SYMBOL_GPL vmlinux 0x17ddcdb0 __rtnl_link_register EXPORT_SYMBOL_GPL vmlinux 0x17dec048 wm5110_i2c_regmap EXPORT_SYMBOL_GPL vmlinux 0x17e01f11 erst_clear EXPORT_SYMBOL_GPL vmlinux 0x17e4c405 page_cache_sync_ra @@ -13634,7 +13644,6 @@ EXPORT_SYMBOL_GPL vmlinux 0x1832767e pci_epc_map_addr EXPORT_SYMBOL_GPL vmlinux 0x183587ab sysfs_chmod_file EXPORT_SYMBOL_GPL vmlinux 0x1836f104 vfio_virqfd_enable -EXPORT_SYMBOL_GPL vmlinux 0x18501477 __sock_recv_ts_and_drops EXPORT_SYMBOL_GPL vmlinux 0x18582826 amd_pmu_disable_virt EXPORT_SYMBOL_GPL vmlinux 0x186118ba bus_sort_breadthfirst EXPORT_SYMBOL_GPL vmlinux 0x18615d35 efivar_supports_writes @@ -13643,15 +13652,14 @@ EXPORT_SYMBOL_GPL vmlinux 0x18a699d6 simple_attr_release EXPORT_SYMBOL_GPL vmlinux 0x18b10a2c kill_pid_usb_asyncio EXPORT_SYMBOL_GPL vmlinux 0x18c0fa61 arizona_request_irq -EXPORT_SYMBOL_GPL vmlinux 0x18c46774 rcuwait_wake_up EXPORT_SYMBOL_GPL vmlinux 0x18c600ef vp_modern_get_queue_enable -EXPORT_SYMBOL_GPL vmlinux 0x18d107a9 phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0x18d12cbc __traceiter_sched_cpu_capacity_tp EXPORT_SYMBOL_GPL vmlinux 0x18e4f8aa swphy_read_reg EXPORT_SYMBOL_GPL vmlinux 0x18efd97c ata_port_schedule_eh EXPORT_SYMBOL_GPL vmlinux 0x18f5504e iommu_device_register EXPORT_SYMBOL_GPL vmlinux 0x18fb2caf cpus_read_unlock EXPORT_SYMBOL_GPL vmlinux 0x1900b3f9 __fscrypt_prepare_link -EXPORT_SYMBOL_GPL vmlinux 0x190bc500 xdp_rxq_info_is_reg +EXPORT_SYMBOL_GPL vmlinux 0x1904cc38 skb_append_pagefrags EXPORT_SYMBOL_GPL vmlinux 0x1910abe8 cs47l24_irq EXPORT_SYMBOL_GPL vmlinux 0x1913b57a kcpustat_cpu_fetch EXPORT_SYMBOL_GPL vmlinux 0x1927f433 usb_control_msg @@ -13663,6 +13671,7 @@ EXPORT_SYMBOL_GPL vmlinux 0x19608d4a gpiod_get_index_optional EXPORT_SYMBOL_GPL vmlinux 0x196614ce hw_breakpoint_restore EXPORT_SYMBOL_GPL vmlinux 0x1969472d vfs_kern_mount +EXPORT_SYMBOL_GPL vmlinux 0x197952f1 cgrp_dfl_root EXPORT_SYMBOL_GPL vmlinux 0x197e60a5 pcie_port_find_device EXPORT_SYMBOL_GPL vmlinux 0x19964b24 dummy_irq_chip EXPORT_SYMBOL_GPL vmlinux 0x19a304ba usb_disabled @@ -13674,6 +13683,8 @@ EXPORT_SYMBOL_GPL vmlinux 0x19bd2455 regulator_set_drvdata EXPORT_SYMBOL_GPL vmlinux 0x19bf62e4 class_dev_iter_exit EXPORT_SYMBOL_GPL vmlinux 0x19c22d94 ata_sas_tport_add +EXPORT_SYMBOL_GPL vmlinux 0x19d04571 __traceiter_fdb_delete +EXPORT_SYMBOL_GPL vmlinux 0x19df1bac fwnode_property_read_string_array EXPORT_SYMBOL_GPL vmlinux 0x19e0ae50 __SCT__tp_func_br_fdb_external_learn_add EXPORT_SYMBOL_GPL vmlinux 0x19e6488f nvmem_device_find EXPORT_SYMBOL_GPL vmlinux 0x19e81304 btree_alloc @@ -13683,15 +13694,14 @@ EXPORT_SYMBOL_GPL vmlinux 0x1a146ec3 usb_ep_type_string EXPORT_SYMBOL_GPL vmlinux 0x1a2111f6 tpm_chip_alloc EXPORT_SYMBOL_GPL vmlinux 0x1a22178a usb_init_urb +EXPORT_SYMBOL_GPL vmlinux 0x1a550add metadata_dst_free EXPORT_SYMBOL_GPL vmlinux 0x1a651249 __acpi_nvdimm_notify EXPORT_SYMBOL_GPL vmlinux 0x1a6bf28f fsnotify_get_cookie -EXPORT_SYMBOL_GPL vmlinux 0x1a78320b fwnode_get_next_available_child_node -EXPORT_SYMBOL_GPL vmlinux 0x1a813148 tcp_get_info EXPORT_SYMBOL_GPL vmlinux 0x1a9754cf sbitmap_queue_min_shallow_depth EXPORT_SYMBOL_GPL vmlinux 0x1aacfc57 blk_mq_flush_busy_ctxs +EXPORT_SYMBOL_GPL vmlinux 0x1ab5d4e3 unix_peer_get EXPORT_SYMBOL_GPL vmlinux 0x1aba430c efivars_unregister EXPORT_SYMBOL_GPL vmlinux 0x1abc283b bus_unregister -EXPORT_SYMBOL_GPL vmlinux 0x1ac02ec5 skb_partial_csum_set EXPORT_SYMBOL_GPL vmlinux 0x1ac18d8f dev_pm_opp_get_max_clock_latency EXPORT_SYMBOL_GPL vmlinux 0x1acd18c8 cpuset_cgrp_subsys_on_dfl_key EXPORT_SYMBOL_GPL vmlinux 0x1ad96cbf pm_generic_freeze_late @@ -13700,45 +13710,36 @@ EXPORT_SYMBOL_GPL vmlinux 0x1af267f8 int_pow EXPORT_SYMBOL_GPL vmlinux 0x1aff3d55 mce_register_injector_chain EXPORT_SYMBOL_GPL vmlinux 0x1b01d11c rio_inb_pwrite_handler -EXPORT_SYMBOL_GPL vmlinux 0x1b129ef7 devlink_port_type_clear -EXPORT_SYMBOL_GPL vmlinux 0x1b380faa devlink_sb_unregister +EXPORT_SYMBOL_GPL vmlinux 0x1b13cddb ip6_route_lookup +EXPORT_SYMBOL_GPL vmlinux 0x1b1ff1b0 xdp_rxq_info_reg_mem_model +EXPORT_SYMBOL_GPL vmlinux 0x1b3c6c20 device_get_match_data EXPORT_SYMBOL_GPL vmlinux 0x1b3da86e acpi_subsys_freeze -EXPORT_SYMBOL_GPL vmlinux 0x1b43eb4f __tcp_send_ack EXPORT_SYMBOL_GPL vmlinux 0x1b5059ce ata_id_xfermask -EXPORT_SYMBOL_GPL vmlinux 0x1b578ef8 devm_device_remove_group +EXPORT_SYMBOL_GPL vmlinux 0x1b53c7dc perf_event_sysfs_show EXPORT_SYMBOL_GPL vmlinux 0x1b5f4377 trace_seq_putc -EXPORT_SYMBOL_GPL vmlinux 0x1b67bcfe perf_event_update_userpage -EXPORT_SYMBOL_GPL vmlinux 0x1b6c362a net_selftest EXPORT_SYMBOL_GPL vmlinux 0x1b78e486 pm_generic_suspend_noirq -EXPORT_SYMBOL_GPL vmlinux 0x1b7a8344 xfrm_audit_policy_delete EXPORT_SYMBOL_GPL vmlinux 0x1b80fa56 vfs_lock_file -EXPORT_SYMBOL_GPL vmlinux 0x1b87b36e crypto_register_instance EXPORT_SYMBOL_GPL vmlinux 0x1b8822d8 pinctrl_gpio_direction_output EXPORT_SYMBOL_GPL vmlinux 0x1b8e977e usb_phy_roothub_alloc EXPORT_SYMBOL_GPL vmlinux 0x1b92e41d inet_putpeer EXPORT_SYMBOL_GPL vmlinux 0x1ba237b0 default_cpu_present_to_apicid EXPORT_SYMBOL_GPL vmlinux 0x1baaca86 regmap_bulk_write -EXPORT_SYMBOL_GPL vmlinux 0x1babff65 bpf_map_put EXPORT_SYMBOL_GPL vmlinux 0x1baffc71 da9052_adc_manual_read EXPORT_SYMBOL_GPL vmlinux 0x1bb36a23 usb_enable_ltm -EXPORT_SYMBOL_GPL vmlinux 0x1bb42dbf nfnl_ct_hook EXPORT_SYMBOL_GPL vmlinux 0x1bbaebe7 device_reprobe EXPORT_SYMBOL_GPL vmlinux 0x1bbe8017 dma_buf_unmap_attachment EXPORT_SYMBOL_GPL vmlinux 0x1bc5eebe pinctrl_gpio_direction_input +EXPORT_SYMBOL_GPL vmlinux 0x1bcf1315 udp4_hwcsum EXPORT_SYMBOL_GPL vmlinux 0x1bd8d33b pci_vfs_assigned EXPORT_SYMBOL_GPL vmlinux 0x1be159b1 pci_epc_get_features -EXPORT_SYMBOL_GPL vmlinux 0x1becb800 tcp_cong_avoid_ai EXPORT_SYMBOL_GPL vmlinux 0x1bee4974 sg_alloc_table_chained EXPORT_SYMBOL_GPL vmlinux 0x1bfd8deb dm_internal_resume_fast EXPORT_SYMBOL_GPL vmlinux 0x1c0b9056 mbox_client_txdone EXPORT_SYMBOL_GPL vmlinux 0x1c0eb8f8 ata_std_qc_defer EXPORT_SYMBOL_GPL vmlinux 0x1c0f9d33 iomap_ioend_try_merge -EXPORT_SYMBOL_GPL vmlinux 0x1c18bd62 put_pid EXPORT_SYMBOL_GPL vmlinux 0x1c1e2ad7 nvdimm_volatile_region_create EXPORT_SYMBOL_GPL vmlinux 0x1c26c050 smpboot_register_percpu_thread -EXPORT_SYMBOL_GPL vmlinux 0x1c2bbedc device_rename EXPORT_SYMBOL_GPL vmlinux 0x1c5541bd cpufreq_boost_enabled -EXPORT_SYMBOL_GPL vmlinux 0x1c55634c netdev_walk_all_lower_dev EXPORT_SYMBOL_GPL vmlinux 0x1c567566 wbt_enable_default EXPORT_SYMBOL_GPL vmlinux 0x1c5b1f28 irq_free_descs EXPORT_SYMBOL_GPL vmlinux 0x1c5ff742 clk_get_phase @@ -13748,41 +13749,44 @@ EXPORT_SYMBOL_GPL vmlinux 0x1c808d04 platform_get_irq_optional EXPORT_SYMBOL_GPL vmlinux 0x1c80d27d btree_geo128 EXPORT_SYMBOL_GPL vmlinux 0x1c87a811 __round_jiffies_up -EXPORT_SYMBOL_GPL vmlinux 0x1c8e24eb device_get_named_child_node +EXPORT_SYMBOL_GPL vmlinux 0x1c8e0448 nvme_host_path_error EXPORT_SYMBOL_GPL vmlinux 0x1ca3aa97 alarm_forward EXPORT_SYMBOL_GPL vmlinux 0x1cab759a crypto_hash_walk_done EXPORT_SYMBOL_GPL vmlinux 0x1cb7c983 apei_exec_read_register_value EXPORT_SYMBOL_GPL vmlinux 0x1cbd92b0 cpu_mitigations_off EXPORT_SYMBOL_GPL vmlinux 0x1cc56c2c pci_epf_alloc_space EXPORT_SYMBOL_GPL vmlinux 0x1ccf99a5 devm_krealloc +EXPORT_SYMBOL_GPL vmlinux 0x1cdc3b37 scsi_nl_sock EXPORT_SYMBOL_GPL vmlinux 0x1cfe4101 clkdev_hw_create EXPORT_SYMBOL_GPL vmlinux 0x1d147a4a shmem_read_mapping_page_gfp EXPORT_SYMBOL_GPL vmlinux 0x1d1a7cf4 shash_ahash_finup EXPORT_SYMBOL_GPL vmlinux 0x1d222ced irq_get_irqchip_state +EXPORT_SYMBOL_GPL vmlinux 0x1d344e4e tcp_get_info EXPORT_SYMBOL_GPL vmlinux 0x1d34e996 pp_msgs -EXPORT_SYMBOL_GPL vmlinux 0x1d3c52a6 __traceiter_pelt_se_tp -EXPORT_SYMBOL_GPL vmlinux 0x1d62af77 nvme_wait_reset +EXPORT_SYMBOL_GPL vmlinux 0x1d3db87c skb_gso_validate_mac_len +EXPORT_SYMBOL_GPL vmlinux 0x1d45915d bpf_prog_add EXPORT_SYMBOL_GPL vmlinux 0x1d7704f6 fuse_dev_alloc EXPORT_SYMBOL_GPL vmlinux 0x1d77b0f8 unix_socket_table +EXPORT_SYMBOL_GPL vmlinux 0x1d7ec16d xfrm_audit_state_replay_overflow EXPORT_SYMBOL_GPL vmlinux 0x1d8cc2d2 blk_mq_alloc_request_hctx EXPORT_SYMBOL_GPL vmlinux 0x1d8e7388 generic_fh_to_parent EXPORT_SYMBOL_GPL vmlinux 0x1d926b7d dev_pm_qos_remove_request EXPORT_SYMBOL_GPL vmlinux 0x1d94a218 dmi_memdev_handle EXPORT_SYMBOL_GPL vmlinux 0x1dba57a7 regulator_get -EXPORT_SYMBOL_GPL vmlinux 0x1dd0e9d4 crypto_stats_aead_encrypt -EXPORT_SYMBOL_GPL vmlinux 0x1dd73885 ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x1dcdfc14 spi_async_locked +EXPORT_SYMBOL_GPL vmlinux 0x1ddad97c spi_busnum_to_master EXPORT_SYMBOL_GPL vmlinux 0x1ddd29fc __SCK__tp_func_xdp_bulk_tx EXPORT_SYMBOL_GPL vmlinux 0x1dfa5dbd mpi_invm EXPORT_SYMBOL_GPL vmlinux 0x1e0670c6 reset_control_release +EXPORT_SYMBOL_GPL vmlinux 0x1e0cd5ce nf_nat_hook EXPORT_SYMBOL_GPL vmlinux 0x1e0da830 devm_kmemdup +EXPORT_SYMBOL_GPL vmlinux 0x1e123ecc register_pernet_device EXPORT_SYMBOL_GPL vmlinux 0x1e424d61 user_preparse -EXPORT_SYMBOL_GPL vmlinux 0x1e447985 fwnode_graph_get_endpoint_by_id EXPORT_SYMBOL_GPL vmlinux 0x1e4e98c0 acpi_dev_filter_resource_type EXPORT_SYMBOL_GPL vmlinux 0x1e516b73 acpi_set_modalias EXPORT_SYMBOL_GPL vmlinux 0x1e58b833 serial8250_get_port EXPORT_SYMBOL_GPL vmlinux 0x1e5f69a0 wm831x_regmap_config -EXPORT_SYMBOL_GPL vmlinux 0x1e6201c3 get_net_ns_by_pid -EXPORT_SYMBOL_GPL vmlinux 0x1e748b66 kobject_uevent_env +EXPORT_SYMBOL_GPL vmlinux 0x1e6e34a0 inet_ctl_sock_create EXPORT_SYMBOL_GPL vmlinux 0x1e754b47 cpufreq_driver_target EXPORT_SYMBOL_GPL vmlinux 0x1e7bbcb3 kernel_restart EXPORT_SYMBOL_GPL vmlinux 0x1e8b4f2b __platform_create_bundle @@ -13796,8 +13800,8 @@ EXPORT_SYMBOL_GPL vmlinux 0x1ebf6c2a pci_power_names EXPORT_SYMBOL_GPL vmlinux 0x1ed4d2eb percpu_ref_kill_and_confirm EXPORT_SYMBOL_GPL vmlinux 0x1efa20c6 pci_remove_root_bus -EXPORT_SYMBOL_GPL vmlinux 0x1f0073c6 crypto_alg_extsize EXPORT_SYMBOL_GPL vmlinux 0x1f087c09 wm831x_reg_read +EXPORT_SYMBOL_GPL vmlinux 0x1f09cd12 ip_tunnel_encap_setup EXPORT_SYMBOL_GPL vmlinux 0x1f0cb5bf pm_power_off_prepare EXPORT_SYMBOL_GPL vmlinux 0x1f10b435 irq_domain_pop_irq EXPORT_SYMBOL_GPL vmlinux 0x1f1cae3d kthread_use_mm @@ -13805,24 +13809,23 @@ EXPORT_SYMBOL_GPL vmlinux 0x1f400447 ata_sff_tf_read EXPORT_SYMBOL_GPL vmlinux 0x1f449588 mctrl_gpio_disable_ms EXPORT_SYMBOL_GPL vmlinux 0x1f563160 bpf_offload_dev_priv -EXPORT_SYMBOL_GPL vmlinux 0x1f5cbc70 msg_zerocopy_realloc EXPORT_SYMBOL_GPL vmlinux 0x1f5ece97 cond_wakeup_cpu0 +EXPORT_SYMBOL_GPL vmlinux 0x1f678db4 devlink_params_publish EXPORT_SYMBOL_GPL vmlinux 0x1f8544b8 panic_timeout EXPORT_SYMBOL_GPL vmlinux 0x1f898845 gpiod_set_raw_array_value_cansleep EXPORT_SYMBOL_GPL vmlinux 0x1fa1d95c sha256_zero_message_hash EXPORT_SYMBOL_GPL vmlinux 0x1faa572a usb_queue_reset_device EXPORT_SYMBOL_GPL vmlinux 0x1fb212b0 of_icc_get_from_provider -EXPORT_SYMBOL_GPL vmlinux 0x1fbaf117 do_xdp_generic EXPORT_SYMBOL_GPL vmlinux 0x1fe6e504 gpiod_add_hogs -EXPORT_SYMBOL_GPL vmlinux 0x1feda01d udp_tunnel6_xmit_skb -EXPORT_SYMBOL_GPL vmlinux 0x1fee3dff device_property_match_string EXPORT_SYMBOL_GPL vmlinux 0x1fee8039 cpufreq_dbs_governor_stop EXPORT_SYMBOL_GPL vmlinux 0x1ffd898b irq_get_domain_generic_chip EXPORT_SYMBOL_GPL vmlinux 0x2009e400 devlink_info_board_serial_number_put +EXPORT_SYMBOL_GPL vmlinux 0x200fe500 fib_table_lookup EXPORT_SYMBOL_GPL vmlinux 0x20110922 gpiochip_is_requested EXPORT_SYMBOL_GPL vmlinux 0x20149eef phy_pm_runtime_put_sync -EXPORT_SYMBOL_GPL vmlinux 0x20159990 crypto_stats_akcipher_verify +EXPORT_SYMBOL_GPL vmlinux 0x20162dc3 device_find_child EXPORT_SYMBOL_GPL vmlinux 0x202d4ed6 nvmem_cell_write +EXPORT_SYMBOL_GPL vmlinux 0x20326238 __nvme_check_ready EXPORT_SYMBOL_GPL vmlinux 0x2055b1f3 dm_internal_resume EXPORT_SYMBOL_GPL vmlinux 0x20710600 ata_bmdma_qc_prep EXPORT_SYMBOL_GPL vmlinux 0x20835a9f __xdp_release_frame @@ -13831,66 +13834,62 @@ EXPORT_SYMBOL_GPL vmlinux 0x20978fb9 idr_find EXPORT_SYMBOL_GPL vmlinux 0x209f2d4d pci_epc_put EXPORT_SYMBOL_GPL vmlinux 0x20af90c6 synth_event_add_next_val -EXPORT_SYMBOL_GPL vmlinux 0x20cc6916 metadata_dst_alloc_percpu EXPORT_SYMBOL_GPL vmlinux 0x20cde57b scsi_queue_work +EXPORT_SYMBOL_GPL vmlinux 0x20df8509 sock_prot_inuse_add EXPORT_SYMBOL_GPL vmlinux 0x20f6dd3d report_iommu_fault EXPORT_SYMBOL_GPL vmlinux 0x2103f747 fuse_abort_conn +EXPORT_SYMBOL_GPL vmlinux 0x2123583d devlink_unregister EXPORT_SYMBOL_GPL vmlinux 0x21331e60 rio_release_dma EXPORT_SYMBOL_GPL vmlinux 0x21397311 phy_pm_runtime_get_sync EXPORT_SYMBOL_GPL vmlinux 0x21460389 blk_update_request -EXPORT_SYMBOL_GPL vmlinux 0x2154ff1c crypto_unregister_skciphers -EXPORT_SYMBOL_GPL vmlinux 0x215c69f1 crypto_stats_kpp_set_secret EXPORT_SYMBOL_GPL vmlinux 0x2160141b crypto_shash_tfm_digest EXPORT_SYMBOL_GPL vmlinux 0x216de4e1 rcu_get_gp_kthreads_prio EXPORT_SYMBOL_GPL vmlinux 0x216f53e3 pci_generic_config_read EXPORT_SYMBOL_GPL vmlinux 0x2176e42a hwpoison_filter_memcg EXPORT_SYMBOL_GPL vmlinux 0x217e96d6 dev_pm_qos_expose_flags EXPORT_SYMBOL_GPL vmlinux 0x218541a1 __pm_runtime_use_autosuspend -EXPORT_SYMBOL_GPL vmlinux 0x21960c9f __fl6_sock_lookup EXPORT_SYMBOL_GPL vmlinux 0x219d0d74 crypto_alloc_rng EXPORT_SYMBOL_GPL vmlinux 0x21a563da clk_get_accuracy -EXPORT_SYMBOL_GPL vmlinux 0x21a918fa ip_tunnel_init EXPORT_SYMBOL_GPL vmlinux 0x21ab18c1 devfreq_event_add_edev EXPORT_SYMBOL_GPL vmlinux 0x21ac8b77 iommu_group_get_by_id EXPORT_SYMBOL_GPL vmlinux 0x21ae0c47 clockevents_unbind_device -EXPORT_SYMBOL_GPL vmlinux 0x21af946c __traceiter_tcp_send_reset EXPORT_SYMBOL_GPL vmlinux 0x21b1679e clk_register EXPORT_SYMBOL_GPL vmlinux 0x21b3f474 devm_hwmon_device_register_with_groups EXPORT_SYMBOL_GPL vmlinux 0x21cd536a crypto_put_default_null_skcipher -EXPORT_SYMBOL_GPL vmlinux 0x21ce0ca4 xfrm_get_translator EXPORT_SYMBOL_GPL vmlinux 0x21ce3ed1 dev_fetch_sw_netstats EXPORT_SYMBOL_GPL vmlinux 0x21da4930 gpiochip_line_is_open_source EXPORT_SYMBOL_GPL vmlinux 0x21fbf7b3 irq_chip_set_affinity_parent EXPORT_SYMBOL_GPL vmlinux 0x2211a4c0 blk_op_str EXPORT_SYMBOL_GPL vmlinux 0x221394ae hyperv_reg_block_invalidate EXPORT_SYMBOL_GPL vmlinux 0x221eab6d scatterwalk_copychunks -EXPORT_SYMBOL_GPL vmlinux 0x222d10d2 __put_net EXPORT_SYMBOL_GPL vmlinux 0x223d363c tick_nohz_full_setup EXPORT_SYMBOL_GPL vmlinux 0x223ff233 find_asymmetric_key -EXPORT_SYMBOL_GPL vmlinux 0x22439fb3 fib_nh_common_init EXPORT_SYMBOL_GPL vmlinux 0x224f51bf nvmem_device_cell_read -EXPORT_SYMBOL_GPL vmlinux 0x226ae6f5 inet6_lookup EXPORT_SYMBOL_GPL vmlinux 0x228cacf6 platform_device_del EXPORT_SYMBOL_GPL vmlinux 0x22a6c3e9 bsg_remove_queue EXPORT_SYMBOL_GPL vmlinux 0x22a77965 governor_sysfs_ops -EXPORT_SYMBOL_GPL vmlinux 0x22bb938b ping_recvmsg +EXPORT_SYMBOL_GPL vmlinux 0x22d3d85e rtnl_link_register EXPORT_SYMBOL_GPL vmlinux 0x22d60537 tcf_frag_xmit_count EXPORT_SYMBOL_GPL vmlinux 0x22d9409b iomap_sort_ioends +EXPORT_SYMBOL_GPL vmlinux 0x22e457a7 udp_bpf_update_proto EXPORT_SYMBOL_GPL vmlinux 0x22e870bf nvdimm_setup_pfn +EXPORT_SYMBOL_GPL vmlinux 0x22e9b18d ping_seq_start EXPORT_SYMBOL_GPL vmlinux 0x22ec5205 cpu_latency_qos_remove_request EXPORT_SYMBOL_GPL vmlinux 0x22f17c1e blk_stat_enable_accounting EXPORT_SYMBOL_GPL vmlinux 0x22fd08ba cpuacct_cgrp_subsys_on_dfl_key EXPORT_SYMBOL_GPL vmlinux 0x22fd2e8f __hwspin_trylock +EXPORT_SYMBOL_GPL vmlinux 0x22fd5f87 nvme_cancel_request EXPORT_SYMBOL_GPL vmlinux 0x2306dc01 pci_reset_bus EXPORT_SYMBOL_GPL vmlinux 0x230db330 iommu_sva_bind_device EXPORT_SYMBOL_GPL vmlinux 0x231a5f31 dequeue_signal -EXPORT_SYMBOL_GPL vmlinux 0x231c7624 skb_segment_list EXPORT_SYMBOL_GPL vmlinux 0x23323b30 scsi_internal_device_block_nowait EXPORT_SYMBOL_GPL vmlinux 0x2337da6b devm_clk_hw_register EXPORT_SYMBOL_GPL vmlinux 0x23386cd8 devm_platform_ioremap_resource_byname EXPORT_SYMBOL_GPL vmlinux 0x23412816 rtc_tm_to_ktime EXPORT_SYMBOL_GPL vmlinux 0x234706ba pci_epc_get EXPORT_SYMBOL_GPL vmlinux 0x234cf416 devlink_fmsg_string_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x235703b7 devlink_register +EXPORT_SYMBOL_GPL vmlinux 0x23645cdb ip_tunnel_newlink EXPORT_SYMBOL_GPL vmlinux 0x2375832a register_kretprobes EXPORT_SYMBOL_GPL vmlinux 0x237c8880 regulator_set_voltage_sel_regmap EXPORT_SYMBOL_GPL vmlinux 0x237f3619 led_blink_set @@ -13899,39 +13898,36 @@ EXPORT_SYMBOL_GPL vmlinux 0x23879e31 blk_mq_virtio_map_queues EXPORT_SYMBOL_GPL vmlinux 0x2396c7f0 clk_set_parent EXPORT_SYMBOL_GPL vmlinux 0x23a1a4d4 device_set_wakeup_enable -EXPORT_SYMBOL_GPL vmlinux 0x23aabe90 __SCK__tp_func_devlink_hwmsg +EXPORT_SYMBOL_GPL vmlinux 0x23abc90c dev_set_name EXPORT_SYMBOL_GPL vmlinux 0x23b4e0d7 clear_page_rep -EXPORT_SYMBOL_GPL vmlinux 0x23b69c2d crypto_grab_skcipher EXPORT_SYMBOL_GPL vmlinux 0x23b72b31 dma_can_mmap EXPORT_SYMBOL_GPL vmlinux 0x23b7d60a ata_scsi_dma_need_drain EXPORT_SYMBOL_GPL vmlinux 0x23be6f9d dm_start_time_ns_from_clone +EXPORT_SYMBOL_GPL vmlinux 0x23c1be71 msg_zerocopy_realloc +EXPORT_SYMBOL_GPL vmlinux 0x23c2e8b5 seg6_do_srh_encap EXPORT_SYMBOL_GPL vmlinux 0x23d2575e dma_run_dependencies EXPORT_SYMBOL_GPL vmlinux 0x23e8486c rio_del_device -EXPORT_SYMBOL_GPL vmlinux 0x23eee7f7 raw_seq_start EXPORT_SYMBOL_GPL vmlinux 0x23f9c92f x509_cert_parse EXPORT_SYMBOL_GPL vmlinux 0x240c917c pci_check_and_mask_intx EXPORT_SYMBOL_GPL vmlinux 0x2410c338 x86_virt_spec_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x241bf452 bpf_sk_storage_diag_put EXPORT_SYMBOL_GPL vmlinux 0x2421097b mpi_const -EXPORT_SYMBOL_GPL vmlinux 0x2436d265 xdp_do_redirect +EXPORT_SYMBOL_GPL vmlinux 0x243445da device_get_phy_mode EXPORT_SYMBOL_GPL vmlinux 0x245e77b6 da9052_enable_irq EXPORT_SYMBOL_GPL vmlinux 0x245f3247 serial8250_release_dma -EXPORT_SYMBOL_GPL vmlinux 0x246078cc phy_speed_down EXPORT_SYMBOL_GPL vmlinux 0x2464da17 gen_pool_size +EXPORT_SYMBOL_GPL vmlinux 0x246a84e4 strp_done EXPORT_SYMBOL_GPL vmlinux 0x24709b2f trace_seq_putmem -EXPORT_SYMBOL_GPL vmlinux 0x2479721c rtnl_delete_link EXPORT_SYMBOL_GPL vmlinux 0x247ef831 kdb_unregister EXPORT_SYMBOL_GPL vmlinux 0x248a3662 regmap_fields_update_bits_base EXPORT_SYMBOL_GPL vmlinux 0x248bc867 raw_notifier_call_chain_robust EXPORT_SYMBOL_GPL vmlinux 0x248e1473 kfree_strarray EXPORT_SYMBOL_GPL vmlinux 0x2495ca18 rtc_read_time -EXPORT_SYMBOL_GPL vmlinux 0x249f3419 tcpv6_prot -EXPORT_SYMBOL_GPL vmlinux 0x24a1f025 perf_event_refresh -EXPORT_SYMBOL_GPL vmlinux 0x24a8dfd7 __SCK__tp_func_br_fdb_external_learn_add EXPORT_SYMBOL_GPL vmlinux 0x24a971ca iommu_group_remove_device EXPORT_SYMBOL_GPL vmlinux 0x24ad11db wakeup_sources_read_unlock EXPORT_SYMBOL_GPL vmlinux 0x24c9a8ac __SCK__tp_func_block_bio_complete EXPORT_SYMBOL_GPL vmlinux 0x24da0093 rcu_inkernel_boot_has_ended -EXPORT_SYMBOL_GPL vmlinux 0x24df5f9f device_link_remove +EXPORT_SYMBOL_GPL vmlinux 0x24dca085 crypto_register_algs EXPORT_SYMBOL_GPL vmlinux 0x24ea2565 sata_pmp_port_ops EXPORT_SYMBOL_GPL vmlinux 0x24eb7e32 leds_list EXPORT_SYMBOL_GPL vmlinux 0x24ef2300 gpiochip_disable_irq @@ -13942,25 +13938,26 @@ EXPORT_SYMBOL_GPL vmlinux 0x251bc61a bus_for_each_dev EXPORT_SYMBOL_GPL vmlinux 0x251f9600 devm_regulator_bulk_get EXPORT_SYMBOL_GPL vmlinux 0x25269051 dev_pm_opp_find_freq_ceil_by_volt +EXPORT_SYMBOL_GPL vmlinux 0x25297e00 css_next_descendant_pre +EXPORT_SYMBOL_GPL vmlinux 0x252ffcb4 ip_route_output_flow EXPORT_SYMBOL_GPL vmlinux 0x25301bc6 arch_wb_cache_pmem EXPORT_SYMBOL_GPL vmlinux 0x25379e73 clk_set_min_rate +EXPORT_SYMBOL_GPL vmlinux 0x253a4fbb devlink_trap_groups_register EXPORT_SYMBOL_GPL vmlinux 0x2541697e __SCK__tp_func_rpm_idle EXPORT_SYMBOL_GPL vmlinux 0x25492480 tty_wakeup -EXPORT_SYMBOL_GPL vmlinux 0x254a69f3 fib6_rule_default EXPORT_SYMBOL_GPL vmlinux 0x2572fc7e pinctrl_register -EXPORT_SYMBOL_GPL vmlinux 0x2580275c nvme_fail_nonready_command EXPORT_SYMBOL_GPL vmlinux 0x2592fc6c console_printk -EXPORT_SYMBOL_GPL vmlinux 0x25a412b3 l3mdev_table_lookup_unregister EXPORT_SYMBOL_GPL vmlinux 0x25b6c898 acpi_subsys_runtime_resume EXPORT_SYMBOL_GPL vmlinux 0x25bbfa9a security_kernel_load_data EXPORT_SYMBOL_GPL vmlinux 0x25c46bb4 blk_mq_hctx_set_fq_lock_class +EXPORT_SYMBOL_GPL vmlinux 0x25ca351e tcp_is_ulp_esp EXPORT_SYMBOL_GPL vmlinux 0x25d2be4a regmap_multi_reg_write_bypassed EXPORT_SYMBOL_GPL vmlinux 0x25e21465 regmap_read EXPORT_SYMBOL_GPL vmlinux 0x25ead171 ata_bmdma_post_internal_cmd +EXPORT_SYMBOL_GPL vmlinux 0x25fcae8a __ip_tunnel_change_mtu EXPORT_SYMBOL_GPL vmlinux 0x2622df48 kset_find_obj EXPORT_SYMBOL_GPL vmlinux 0x262d8b08 regulator_bulk_enable EXPORT_SYMBOL_GPL vmlinux 0x263f039e xas_nomem -EXPORT_SYMBOL_GPL vmlinux 0x26415b56 __SCK__tp_func_br_fdb_add EXPORT_SYMBOL_GPL vmlinux 0x26469b6b cdrom_multisession EXPORT_SYMBOL_GPL vmlinux 0x2650f9a8 ata_pci_device_suspend EXPORT_SYMBOL_GPL vmlinux 0x26520970 vm_memory_committed @@ -13971,21 +13968,19 @@ EXPORT_SYMBOL_GPL vmlinux 0x2677c3e3 __hwspin_lock_timeout EXPORT_SYMBOL_GPL vmlinux 0x267df662 smp_call_on_cpu EXPORT_SYMBOL_GPL vmlinux 0x267e6c10 nvmem_cell_read_u8 -EXPORT_SYMBOL_GPL vmlinux 0x2698b404 bpf_trace_run9 EXPORT_SYMBOL_GPL vmlinux 0x26a93eb2 verify_pkcs7_signature EXPORT_SYMBOL_GPL vmlinux 0x26ab4755 put_old_itimerspec32 EXPORT_SYMBOL_GPL vmlinux 0x26c90ea4 scsi_eh_get_sense -EXPORT_SYMBOL_GPL vmlinux 0x26cc9979 security_inode_mkdir +EXPORT_SYMBOL_GPL vmlinux 0x26c9ee06 peernet2id_alloc EXPORT_SYMBOL_GPL vmlinux 0x26cda94f e820__mapped_raw_any EXPORT_SYMBOL_GPL vmlinux 0x26db09ee pm_clk_destroy EXPORT_SYMBOL_GPL vmlinux 0x26deb848 arizona_set_irq_wake -EXPORT_SYMBOL_GPL vmlinux 0x26e73b03 ethnl_cable_test_free -EXPORT_SYMBOL_GPL vmlinux 0x26e7e4ed devlink_trap_report EXPORT_SYMBOL_GPL vmlinux 0x26ed2186 register_vmap_purge_notifier EXPORT_SYMBOL_GPL vmlinux 0x26f28293 scsi_free_sgtables EXPORT_SYMBOL_GPL vmlinux 0x26fd13e7 smca_banks EXPORT_SYMBOL_GPL vmlinux 0x2700c8bc input_device_enabled EXPORT_SYMBOL_GPL vmlinux 0x2700d62f trace_event_buffer_commit +EXPORT_SYMBOL_GPL vmlinux 0x2706636f udp_tun_rx_dst EXPORT_SYMBOL_GPL vmlinux 0x2711043a balloon_page_alloc EXPORT_SYMBOL_GPL vmlinux 0x271c921b regulator_map_voltage_pickable_linear_range EXPORT_SYMBOL_GPL vmlinux 0x271d5fab iomap_zero_range @@ -13994,55 +13989,55 @@ EXPORT_SYMBOL_GPL vmlinux 0x273aff5c __SCT__tp_func_block_bio_remap EXPORT_SYMBOL_GPL vmlinux 0x273e2382 __context_tracking_enter EXPORT_SYMBOL_GPL vmlinux 0x274dd1a3 sg_free_table_chained +EXPORT_SYMBOL_GPL vmlinux 0x275d77bf fwnode_graph_get_remote_endpoint EXPORT_SYMBOL_GPL vmlinux 0x2773c485 __wake_up_locked EXPORT_SYMBOL_GPL vmlinux 0x277bedcb __pci_reset_function_locked EXPORT_SYMBOL_GPL vmlinux 0x277c3842 device_wakeup_disable EXPORT_SYMBOL_GPL vmlinux 0x278b1b2a sata_std_hardreset -EXPORT_SYMBOL_GPL vmlinux 0x27981cc3 device_match_name -EXPORT_SYMBOL_GPL vmlinux 0x27a56d13 inet_send_prepare +EXPORT_SYMBOL_GPL vmlinux 0x279bced2 devlink_port_type_eth_set EXPORT_SYMBOL_GPL vmlinux 0x27a6fa27 rt_mutex_lock EXPORT_SYMBOL_GPL vmlinux 0x27b162cb __vfs_setxattr_locked EXPORT_SYMBOL_GPL vmlinux 0x27b4e02f platform_find_device_by_driver EXPORT_SYMBOL_GPL vmlinux 0x27ba06a4 __bio_add_page -EXPORT_SYMBOL_GPL vmlinux 0x27c7d7b7 spi_mem_driver_unregister EXPORT_SYMBOL_GPL vmlinux 0x27c8cdb9 eventfd_fget -EXPORT_SYMBOL_GPL vmlinux 0x27ec0846 sk_free_unlock_clone EXPORT_SYMBOL_GPL vmlinux 0x27f4f029 ftrace_set_global_filter +EXPORT_SYMBOL_GPL vmlinux 0x27f507f3 __ndisc_fill_addr_option EXPORT_SYMBOL_GPL vmlinux 0x27f74aaf phy_exit -EXPORT_SYMBOL_GPL vmlinux 0x27f82aba skb_morph EXPORT_SYMBOL_GPL vmlinux 0x27fa66e1 nr_free_buffer_pages -EXPORT_SYMBOL_GPL vmlinux 0x2806db05 ip_local_out +EXPORT_SYMBOL_GPL vmlinux 0x2805149b __rtnl_link_unregister EXPORT_SYMBOL_GPL vmlinux 0x2817f7fd cppc_get_desired_perf +EXPORT_SYMBOL_GPL vmlinux 0x281de7d2 inet6_csk_xmit EXPORT_SYMBOL_GPL vmlinux 0x281f79af blkdev_write_iter EXPORT_SYMBOL_GPL vmlinux 0x2834bf9a __irq_alloc_domain_generic_chips +EXPORT_SYMBOL_GPL vmlinux 0x28421ea2 sock_diag_unregister_inet_compat +EXPORT_SYMBOL_GPL vmlinux 0x28543aaa xdp_rxq_info_unreg EXPORT_SYMBOL_GPL vmlinux 0x28632429 of_devfreq_cooling_register EXPORT_SYMBOL_GPL vmlinux 0x2864abc9 klist_node_attached -EXPORT_SYMBOL_GPL vmlinux 0x286a8867 nvme_start_freeze EXPORT_SYMBOL_GPL vmlinux 0x286ba068 trace_seq_path EXPORT_SYMBOL_GPL vmlinux 0x286cc647 async_synchronize_cookie_domain EXPORT_SYMBOL_GPL vmlinux 0x2879c113 kill_dev_dax +EXPORT_SYMBOL_GPL vmlinux 0x28831f58 devlink_dpipe_headers_unregister EXPORT_SYMBOL_GPL vmlinux 0x2897f050 subsys_interface_register -EXPORT_SYMBOL_GPL vmlinux 0x28a98d97 get_device EXPORT_SYMBOL_GPL vmlinux 0x28aa6a67 call_rcu EXPORT_SYMBOL_GPL vmlinux 0x28ab4fb9 pinctrl_gpio_free EXPORT_SYMBOL_GPL vmlinux 0x28afbb08 cpu_latency_qos_add_request -EXPORT_SYMBOL_GPL vmlinux 0x28b1968a xdp_convert_zc_to_xdp_frame -EXPORT_SYMBOL_GPL vmlinux 0x28bd16bd strp_init EXPORT_SYMBOL_GPL vmlinux 0x28be0cef misc_cg_res_total_usage EXPORT_SYMBOL_GPL vmlinux 0x28c8151e regulator_get_optional EXPORT_SYMBOL_GPL vmlinux 0x28cc0ea7 blkcg_print_blkgs -EXPORT_SYMBOL_GPL vmlinux 0x28d2ad67 devlink_dpipe_entry_ctx_append -EXPORT_SYMBOL_GPL vmlinux 0x28e17194 fixed_phy_register_with_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x28dab0aa rtnl_get_net_ns_capable EXPORT_SYMBOL_GPL vmlinux 0x28ebd3a3 crypto_larval_alloc EXPORT_SYMBOL_GPL vmlinux 0x28eda316 phy_pm_runtime_get +EXPORT_SYMBOL_GPL vmlinux 0x29070065 init_dummy_netdev EXPORT_SYMBOL_GPL vmlinux 0x291876f3 mpi_ec_get_affine +EXPORT_SYMBOL_GPL vmlinux 0x291aed04 ip_local_out EXPORT_SYMBOL_GPL vmlinux 0x292b3583 sysfs_remove_mount_point -EXPORT_SYMBOL_GPL vmlinux 0x292e3c74 crypto_stats_init EXPORT_SYMBOL_GPL vmlinux 0x29366b61 register_ftrace_direct +EXPORT_SYMBOL_GPL vmlinux 0x2937af68 device_show_ulong +EXPORT_SYMBOL_GPL vmlinux 0x294a9839 dst_blackhole_update_pmtu EXPORT_SYMBOL_GPL vmlinux 0x294c4059 usb_get_dev EXPORT_SYMBOL_GPL vmlinux 0x2951a872 trace_clock_local -EXPORT_SYMBOL_GPL vmlinux 0x29569cb9 inet_csk_addr2sockaddr EXPORT_SYMBOL_GPL vmlinux 0x29818258 iommu_map +EXPORT_SYMBOL_GPL vmlinux 0x2984737f spi_statistics_add_transfer_stats EXPORT_SYMBOL_GPL vmlinux 0x298ed23e power_supply_get_property EXPORT_SYMBOL_GPL vmlinux 0x29b57c3f auxiliary_find_device EXPORT_SYMBOL_GPL vmlinux 0x29c2cb03 __devm_irq_alloc_descs @@ -14060,27 +14055,26 @@ EXPORT_SYMBOL_GPL vmlinux 0x2a892db0 regmap_raw_write_async EXPORT_SYMBOL_GPL vmlinux 0x2a8db0b1 trace_array_printk EXPORT_SYMBOL_GPL vmlinux 0x2a9917ea ata_pci_device_do_suspend -EXPORT_SYMBOL_GPL vmlinux 0x2a9c5c97 sk_msg_memcopy_from_iter EXPORT_SYMBOL_GPL vmlinux 0x2aadad1a efi_capsule_update -EXPORT_SYMBOL_GPL vmlinux 0x2abebd55 lwtunnel_xmit EXPORT_SYMBOL_GPL vmlinux 0x2ac497ff percpu_up_write EXPORT_SYMBOL_GPL vmlinux 0x2ac9ba36 gpiochip_add_data_with_key EXPORT_SYMBOL_GPL vmlinux 0x2acd990f watchdog_init_timeout EXPORT_SYMBOL_GPL vmlinux 0x2aff68f9 perf_guest_get_msrs EXPORT_SYMBOL_GPL vmlinux 0x2b2062b8 irq_gc_ack_set_bit +EXPORT_SYMBOL_GPL vmlinux 0x2b23971e unix_inq_len EXPORT_SYMBOL_GPL vmlinux 0x2b2e4c51 __devm_of_phy_provider_register EXPORT_SYMBOL_GPL vmlinux 0x2b2fdaf4 bus_rescan_devices EXPORT_SYMBOL_GPL vmlinux 0x2b3acc3b __SCT__tp_func_remove_device_from_group EXPORT_SYMBOL_GPL vmlinux 0x2b3f3cf0 gpiod_cansleep EXPORT_SYMBOL_GPL vmlinux 0x2b4509dd devlink_health_reporter_state_update -EXPORT_SYMBOL_GPL vmlinux 0x2b5a5fb0 device_add_properties +EXPORT_SYMBOL_GPL vmlinux 0x2b5b664a fib6_check_nexthop EXPORT_SYMBOL_GPL vmlinux 0x2b6150fb power_supply_temp2resist_simple EXPORT_SYMBOL_GPL vmlinux 0x2b67b6b7 mds_idle_clear EXPORT_SYMBOL_GPL vmlinux 0x2b6d960d synth_event_cmd_init EXPORT_SYMBOL_GPL vmlinux 0x2b7d67b0 iommu_enable_nesting EXPORT_SYMBOL_GPL vmlinux 0x2b7f8c7f sysfs_create_link_nowarn EXPORT_SYMBOL_GPL vmlinux 0x2b7fc385 hv_init_clocksource -EXPORT_SYMBOL_GPL vmlinux 0x2b7fddae __ip6_datagram_connect +EXPORT_SYMBOL_GPL vmlinux 0x2b882963 ping_recvmsg EXPORT_SYMBOL_GPL vmlinux 0x2b93023a apply_to_existing_page_range EXPORT_SYMBOL_GPL vmlinux 0x2b93505e relay_buf_full EXPORT_SYMBOL_GPL vmlinux 0x2b952517 clk_has_parent @@ -14089,8 +14083,8 @@ EXPORT_SYMBOL_GPL vmlinux 0x2ba80c88 cpuidle_unregister EXPORT_SYMBOL_GPL vmlinux 0x2bb05baf devm_regmap_del_irq_chip EXPORT_SYMBOL_GPL vmlinux 0x2bbd79fe phy_restore_page -EXPORT_SYMBOL_GPL vmlinux 0x2bcb64b7 sched_trace_rq_cpu -EXPORT_SYMBOL_GPL vmlinux 0x2bd09a20 ipv6_dup_options +EXPORT_SYMBOL_GPL vmlinux 0x2bc6e806 devlink_port_region_create +EXPORT_SYMBOL_GPL vmlinux 0x2bd7712a devm_phy_package_join EXPORT_SYMBOL_GPL vmlinux 0x2bf05d16 kobj_sysfs_ops EXPORT_SYMBOL_GPL vmlinux 0x2c208607 power_supply_is_system_supplied EXPORT_SYMBOL_GPL vmlinux 0x2c23f873 get_user_pages_fast_only @@ -14100,30 +14094,31 @@ EXPORT_SYMBOL_GPL vmlinux 0x2c34ddb9 __scsi_init_queue EXPORT_SYMBOL_GPL vmlinux 0x2c4e8b4c dma_mmap_noncontiguous EXPORT_SYMBOL_GPL vmlinux 0x2c5b5469 anon_inode_getfile -EXPORT_SYMBOL_GPL vmlinux 0x2c62416a ping_seq_start EXPORT_SYMBOL_GPL vmlinux 0x2c62cbe6 ata_slave_link_init EXPORT_SYMBOL_GPL vmlinux 0x2c635527 arch_invalidate_pmem EXPORT_SYMBOL_GPL vmlinux 0x2c66ac85 devlink_info_serial_number_put -EXPORT_SYMBOL_GPL vmlinux 0x2c69704d ipv4_update_pmtu EXPORT_SYMBOL_GPL vmlinux 0x2c7db649 irq_dispose_mapping EXPORT_SYMBOL_GPL vmlinux 0x2c7e9250 dax_copy_to_iter EXPORT_SYMBOL_GPL vmlinux 0x2c8b606d usb_hc_died EXPORT_SYMBOL_GPL vmlinux 0x2c8dd6b8 edac_mem_types EXPORT_SYMBOL_GPL vmlinux 0x2c9a57c5 ata_host_put -EXPORT_SYMBOL_GPL vmlinux 0x2c9a666f nf_ip_route EXPORT_SYMBOL_GPL vmlinux 0x2c9bde1f pci_test_config_bits -EXPORT_SYMBOL_GPL vmlinux 0x2ca1010c crypto_stats_decompress EXPORT_SYMBOL_GPL vmlinux 0x2ca41024 ioasid_get +EXPORT_SYMBOL_GPL vmlinux 0x2ca93578 inet_csk_get_port EXPORT_SYMBOL_GPL vmlinux 0x2cad0b96 __clk_get_hw -EXPORT_SYMBOL_GPL vmlinux 0x2ccdc87c device_for_each_child_reverse +EXPORT_SYMBOL_GPL vmlinux 0x2cbe263d tcp_slow_start +EXPORT_SYMBOL_GPL vmlinux 0x2cce51fb __dev_change_net_namespace EXPORT_SYMBOL_GPL vmlinux 0x2cdd2603 dax_supported EXPORT_SYMBOL_GPL vmlinux 0x2cea32ee unregister_oldmem_pfn_is_ram EXPORT_SYMBOL_GPL vmlinux 0x2cfbb2b5 __SCT__tp_func_pelt_dl_tp EXPORT_SYMBOL_GPL vmlinux 0x2d0684a9 hrtimer_init EXPORT_SYMBOL_GPL vmlinux 0x2d13c097 __SCK__tp_func_suspend_resume EXPORT_SYMBOL_GPL vmlinux 0x2d1b02d2 usermodehelper_read_lock_wait +EXPORT_SYMBOL_GPL vmlinux 0x2d1d896b __nvme_submit_sync_cmd EXPORT_SYMBOL_GPL vmlinux 0x2d2d6e05 pstore_unregister EXPORT_SYMBOL_GPL vmlinux 0x2d2dd36f kobj_ns_grab_current +EXPORT_SYMBOL_GPL vmlinux 0x2d309aa4 housekeeping_affine +EXPORT_SYMBOL_GPL vmlinux 0x2d35708e device_create_bin_file EXPORT_SYMBOL_GPL vmlinux 0x2d35b477 tty_buffer_request_room EXPORT_SYMBOL_GPL vmlinux 0x2d393f48 intel_soc_pmic_exec_mipi_pmic_seq_element EXPORT_SYMBOL_GPL vmlinux 0x2d412514 pci_scan_child_bus @@ -14134,12 +14129,13 @@ EXPORT_SYMBOL_GPL vmlinux 0x2d6a72f6 dev_pm_genpd_add_notifier EXPORT_SYMBOL_GPL vmlinux 0x2d6aa0f0 arch_apei_enable_cmcff EXPORT_SYMBOL_GPL vmlinux 0x2d77b352 virtqueue_get_vring_size -EXPORT_SYMBOL_GPL vmlinux 0x2d88bdd7 bpf_prog_alloc EXPORT_SYMBOL_GPL vmlinux 0x2d89b1ad __SCT__tp_func_attach_device_to_domain EXPORT_SYMBOL_GPL vmlinux 0x2d918b46 pci_try_reset_function +EXPORT_SYMBOL_GPL vmlinux 0x2db014fb pskb_put EXPORT_SYMBOL_GPL vmlinux 0x2de028cb gpiochip_irqchip_add_domain EXPORT_SYMBOL_GPL vmlinux 0x2df309c7 ata_std_prereset EXPORT_SYMBOL_GPL vmlinux 0x2dfed574 dm_get_md +EXPORT_SYMBOL_GPL vmlinux 0x2dffcb67 ip_tunnel_ioctl EXPORT_SYMBOL_GPL vmlinux 0x2e028ae6 rcutorture_get_gp_data EXPORT_SYMBOL_GPL vmlinux 0x2e08226d badrange_add EXPORT_SYMBOL_GPL vmlinux 0x2e0cb075 ata_bmdma_setup @@ -14148,35 +14144,38 @@ EXPORT_SYMBOL_GPL vmlinux 0x2e21e795 pinctrl_register_and_init EXPORT_SYMBOL_GPL vmlinux 0x2e226313 devm_regmap_field_bulk_alloc EXPORT_SYMBOL_GPL vmlinux 0x2e2360b1 ftrace_set_global_notrace +EXPORT_SYMBOL_GPL vmlinux 0x2e25abbf find_pid_ns EXPORT_SYMBOL_GPL vmlinux 0x2e2df7f4 irq_remapping_cap EXPORT_SYMBOL_GPL vmlinux 0x2e3e595f set_pages_array_wt EXPORT_SYMBOL_GPL vmlinux 0x2e478dad irq_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x2e585418 devlink_dpipe_table_resource_set EXPORT_SYMBOL_GPL vmlinux 0x2e593452 regmap_get_val_bytes EXPORT_SYMBOL_GPL vmlinux 0x2e5a1188 __pm_relax EXPORT_SYMBOL_GPL vmlinux 0x2e670427 sbitmap_queue_wake_all EXPORT_SYMBOL_GPL vmlinux 0x2e678211 xas_find_conflict EXPORT_SYMBOL_GPL vmlinux 0x2e7a17d4 vmap_pfn EXPORT_SYMBOL_GPL vmlinux 0x2e8736c5 ima_file_check +EXPORT_SYMBOL_GPL vmlinux 0x2e9799f9 crypto_lookup_template EXPORT_SYMBOL_GPL vmlinux 0x2ea53405 cpufreq_dbs_governor_limits EXPORT_SYMBOL_GPL vmlinux 0x2ebb19fd execute_in_process_context EXPORT_SYMBOL_GPL vmlinux 0x2ebe3135 cpu_is_hotpluggable EXPORT_SYMBOL_GPL vmlinux 0x2ecbfc32 unregister_kretprobe EXPORT_SYMBOL_GPL vmlinux 0x2ed2be19 sysfs_add_file_to_group EXPORT_SYMBOL_GPL vmlinux 0x2ee7c52b btree_visitor +EXPORT_SYMBOL_GPL vmlinux 0x2eed592f ip6_route_output_flags +EXPORT_SYMBOL_GPL vmlinux 0x2ef0e3e2 device_property_read_u64_array EXPORT_SYMBOL_GPL vmlinux 0x2efa94fd pci_restore_msi_state EXPORT_SYMBOL_GPL vmlinux 0x2eff0628 regulator_set_current_limit -EXPORT_SYMBOL_GPL vmlinux 0x2f0d0eba skcipher_walk_done +EXPORT_SYMBOL_GPL vmlinux 0x2eff880b device_add +EXPORT_SYMBOL_GPL vmlinux 0x2f00b9c7 ip_tunnel_lookup EXPORT_SYMBOL_GPL vmlinux 0x2f0d9053 usb_otg_state_string -EXPORT_SYMBOL_GPL vmlinux 0x2f26fac2 xfrm_register_translator +EXPORT_SYMBOL_GPL vmlinux 0x2f224d99 netlink_has_listeners EXPORT_SYMBOL_GPL vmlinux 0x2f28e1e9 crypto_alloc_aead EXPORT_SYMBOL_GPL vmlinux 0x2f2b85ed virtqueue_detach_unused_buf EXPORT_SYMBOL_GPL vmlinux 0x2f2c95c4 flush_work -EXPORT_SYMBOL_GPL vmlinux 0x2f2fa22b ip_tunnel_changelink -EXPORT_SYMBOL_GPL vmlinux 0x2f30b057 strp_stop EXPORT_SYMBOL_GPL vmlinux 0x2f3a7e99 vfs_setlease EXPORT_SYMBOL_GPL vmlinux 0x2f4823f1 wait_for_stable_page EXPORT_SYMBOL_GPL vmlinux 0x2f4880df static_key_slow_dec -EXPORT_SYMBOL_GPL vmlinux 0x2f51fc2a __tracepoint_devlink_hwmsg EXPORT_SYMBOL_GPL vmlinux 0x2f55b00a key_type_user EXPORT_SYMBOL_GPL vmlinux 0x2f64415f unregister_acpi_hed_notifier EXPORT_SYMBOL_GPL vmlinux 0x2f7310fe __hvc_resize @@ -14184,64 +14183,65 @@ EXPORT_SYMBOL_GPL vmlinux 0x2f8fd89d xas_split_alloc EXPORT_SYMBOL_GPL vmlinux 0x2f94c183 __vfs_setxattr_noperm EXPORT_SYMBOL_GPL vmlinux 0x2fa322ab pm_runtime_get_if_active +EXPORT_SYMBOL_GPL vmlinux 0x2fb4fb36 spi_set_cs_timing EXPORT_SYMBOL_GPL vmlinux 0x2fb77b42 acpi_data_fwnode_ops EXPORT_SYMBOL_GPL vmlinux 0x2fc1e0fe kmem_valid_obj +EXPORT_SYMBOL_GPL vmlinux 0x2fc4762e fib_rules_lookup +EXPORT_SYMBOL_GPL vmlinux 0x2fc666d1 fixed_phy_register EXPORT_SYMBOL_GPL vmlinux 0x2fc66e82 get_current_tty +EXPORT_SYMBOL_GPL vmlinux 0x2fdc93da device_property_read_u16_array EXPORT_SYMBOL_GPL vmlinux 0x2fdcfd28 smca_get_long_name EXPORT_SYMBOL_GPL vmlinux 0x2ff38f41 irq_domain_create_sim EXPORT_SYMBOL_GPL vmlinux 0x2ffce1af regulator_bulk_get EXPORT_SYMBOL_GPL vmlinux 0x300b7e09 cpufreq_register_driver EXPORT_SYMBOL_GPL vmlinux 0x300e9411 dax_region_put -EXPORT_SYMBOL_GPL vmlinux 0x30114a3a spi_mem_dtr_supports_op -EXPORT_SYMBOL_GPL vmlinux 0x3015ea6b __tracepoint_tcp_send_reset +EXPORT_SYMBOL_GPL vmlinux 0x30195846 spi_async +EXPORT_SYMBOL_GPL vmlinux 0x302154de sk_psock_msg_verdict +EXPORT_SYMBOL_GPL vmlinux 0x30216e17 nvme_start_freeze EXPORT_SYMBOL_GPL vmlinux 0x302c7673 cpufreq_disable_fast_switch +EXPORT_SYMBOL_GPL vmlinux 0x3054476f crypto_stats_aead_decrypt EXPORT_SYMBOL_GPL vmlinux 0x305878b9 tty_ldisc_release EXPORT_SYMBOL_GPL vmlinux 0x3061cfce ring_buffer_entries_cpu EXPORT_SYMBOL_GPL vmlinux 0x30b2acb4 mddev_resume +EXPORT_SYMBOL_GPL vmlinux 0x30c1e1d0 __SCK__tp_func_neigh_timer_handler EXPORT_SYMBOL_GPL vmlinux 0x30c97556 tty_ldisc_ref_wait EXPORT_SYMBOL_GPL vmlinux 0x30cf804f slow_virt_to_phys EXPORT_SYMBOL_GPL vmlinux 0x30e1ec25 apei_map_generic_address EXPORT_SYMBOL_GPL vmlinux 0x30e42163 tick_nohz_dep_clear_cpu -EXPORT_SYMBOL_GPL vmlinux 0x30f478e3 raw_seq_stop EXPORT_SYMBOL_GPL vmlinux 0x30fdaab4 iommu_domain_free -EXPORT_SYMBOL_GPL vmlinux 0x31092bc5 crypto_register_algs EXPORT_SYMBOL_GPL vmlinux 0x31128b8e hv_remove_kexec_handler EXPORT_SYMBOL_GPL vmlinux 0x3117a67c __tracepoint_attach_device_to_domain EXPORT_SYMBOL_GPL vmlinux 0x31266931 con_debug_leave -EXPORT_SYMBOL_GPL vmlinux 0x312a29ce spi_set_cs_timing EXPORT_SYMBOL_GPL vmlinux 0x313913ca tpm_tis_resume +EXPORT_SYMBOL_GPL vmlinux 0x3165962c nvme_complete_rq EXPORT_SYMBOL_GPL vmlinux 0x316f3105 rio_mport_get_physefb EXPORT_SYMBOL_GPL vmlinux 0x31706316 __SCT__tp_func_error_report_end EXPORT_SYMBOL_GPL vmlinux 0x31839ad3 software_node_register_nodes EXPORT_SYMBOL_GPL vmlinux 0x31893edb usb_get_descriptor +EXPORT_SYMBOL_GPL vmlinux 0x3191863f crypto_stats_rng_generate EXPORT_SYMBOL_GPL vmlinux 0x3192d768 cpufreq_remove_update_util_hook EXPORT_SYMBOL_GPL vmlinux 0x31984858 pm_generic_restore_early EXPORT_SYMBOL_GPL vmlinux 0x3198bd55 __SCT__tp_func_detach_device_from_domain -EXPORT_SYMBOL_GPL vmlinux 0x319dfb54 device_remove_properties EXPORT_SYMBOL_GPL vmlinux 0x319f7c62 pm_clk_init EXPORT_SYMBOL_GPL vmlinux 0x31a95e8b ring_buffer_record_enable_cpu -EXPORT_SYMBOL_GPL vmlinux 0x31aec343 crypto_stats_skcipher_decrypt EXPORT_SYMBOL_GPL vmlinux 0x31c7970f pciserial_suspend_ports EXPORT_SYMBOL_GPL vmlinux 0x31cc025e pcc_mbox_free_channel EXPORT_SYMBOL_GPL vmlinux 0x31dbae0b regulator_notifier_call_chain EXPORT_SYMBOL_GPL vmlinux 0x31e2e77f vmbus_free_mmio +EXPORT_SYMBOL_GPL vmlinux 0x3201beda __tracepoint_br_fdb_external_learn_add EXPORT_SYMBOL_GPL vmlinux 0x32031f39 devm_of_phy_get_by_index -EXPORT_SYMBOL_GPL vmlinux 0x32077242 spi_async EXPORT_SYMBOL_GPL vmlinux 0x3208dddf blk_rq_err_bytes -EXPORT_SYMBOL_GPL vmlinux 0x320e2e54 crypto_unregister_skcipher EXPORT_SYMBOL_GPL vmlinux 0x321055cb vmbus_prep_negotiate_resp -EXPORT_SYMBOL_GPL vmlinux 0x321f738a fib_nh_common_release EXPORT_SYMBOL_GPL vmlinux 0x3224b2a9 mpi_read_raw_from_sgl EXPORT_SYMBOL_GPL vmlinux 0x3236b613 pci_epc_write_header EXPORT_SYMBOL_GPL vmlinux 0x3238cddf device_set_wakeup_capable EXPORT_SYMBOL_GPL vmlinux 0x32531fb7 devm_platform_get_irqs_affinity EXPORT_SYMBOL_GPL vmlinux 0x325a3a55 edac_pci_create_generic_ctl -EXPORT_SYMBOL_GPL vmlinux 0x326970aa fib6_get_table -EXPORT_SYMBOL_GPL vmlinux 0x326b2d1e find_pid_ns EXPORT_SYMBOL_GPL vmlinux 0x326cefe5 hwpoison_filter_dev_minor EXPORT_SYMBOL_GPL vmlinux 0x327c78d6 iommu_device_unregister EXPORT_SYMBOL_GPL vmlinux 0x327dfb4f sata_lpm_ignore_phy_events EXPORT_SYMBOL_GPL vmlinux 0x3283fe97 edac_mc_del_mc +EXPORT_SYMBOL_GPL vmlinux 0x3285e588 strp_check_rcv EXPORT_SYMBOL_GPL vmlinux 0x32877d1b fscrypt_mergeable_bio EXPORT_SYMBOL_GPL vmlinux 0x328e3354 __memcpy_flushcache EXPORT_SYMBOL_GPL vmlinux 0x3293b03a clk_hw_rate_is_protected @@ -14254,7 +14254,6 @@ EXPORT_SYMBOL_GPL vmlinux 0x32b78280 pcie_port_bus_type EXPORT_SYMBOL_GPL vmlinux 0x32b9b784 fsverity_verify_bio EXPORT_SYMBOL_GPL vmlinux 0x32bc0fcf preempt_notifier_dec -EXPORT_SYMBOL_GPL vmlinux 0x32bf03ab bpf_trace_run11 EXPORT_SYMBOL_GPL vmlinux 0x32c2bb04 list_lru_walk_node EXPORT_SYMBOL_GPL vmlinux 0x32c3cb4e class_compat_register EXPORT_SYMBOL_GPL vmlinux 0x32c74040 __blk_mq_debugfs_rq_show @@ -14264,14 +14263,13 @@ EXPORT_SYMBOL_GPL vmlinux 0x32e3ed60 devm_regmap_field_free EXPORT_SYMBOL_GPL vmlinux 0x32e4d1e0 sgx_virt_ecreate EXPORT_SYMBOL_GPL vmlinux 0x32f3593b pci_user_write_config_word +EXPORT_SYMBOL_GPL vmlinux 0x32f7cd0e nvme_sync_queues EXPORT_SYMBOL_GPL vmlinux 0x32ff2720 kthread_queue_delayed_work EXPORT_SYMBOL_GPL vmlinux 0x330010b6 cpuset_cgrp_subsys_enabled_key EXPORT_SYMBOL_GPL vmlinux 0x33035a23 serial8250_em485_start_tx EXPORT_SYMBOL_GPL vmlinux 0x3323ca15 ata_ncq_sdev_attrs EXPORT_SYMBOL_GPL vmlinux 0x33393a2e __traceiter_io_page_fault EXPORT_SYMBOL_GPL vmlinux 0x334550fd dev_pm_domain_attach_by_name -EXPORT_SYMBOL_GPL vmlinux 0x334c4262 spi_finalize_current_transfer -EXPORT_SYMBOL_GPL vmlinux 0x334e34c7 netdev_is_rx_handler_busy EXPORT_SYMBOL_GPL vmlinux 0x334f2e91 __ata_change_queue_depth EXPORT_SYMBOL_GPL vmlinux 0x33560326 ata_bmdma_error_handler EXPORT_SYMBOL_GPL vmlinux 0x335c570f enable_percpu_irq @@ -14291,21 +14289,24 @@ EXPORT_SYMBOL_GPL vmlinux 0x33efe464 iommu_detach_group EXPORT_SYMBOL_GPL vmlinux 0x33f19549 crypto_alloc_acomp EXPORT_SYMBOL_GPL vmlinux 0x33fa7dd4 debugfs_print_regs32 +EXPORT_SYMBOL_GPL vmlinux 0x3404c580 inet6_destroy_sock +EXPORT_SYMBOL_GPL vmlinux 0x340ab40a ip_route_output_key_hash EXPORT_SYMBOL_GPL vmlinux 0x3430fc16 usb_hcd_setup_local_mem +EXPORT_SYMBOL_GPL vmlinux 0x34318be9 sfp_add_phy EXPORT_SYMBOL_GPL vmlinux 0x34331f04 acpi_os_unmap_memory EXPORT_SYMBOL_GPL vmlinux 0x34407691 crypto_has_ahash EXPORT_SYMBOL_GPL vmlinux 0x344a2c84 iomap_dio_complete EXPORT_SYMBOL_GPL vmlinux 0x3450ad94 mpi_set_ui +EXPORT_SYMBOL_GPL vmlinux 0x345518fc nvme_change_ctrl_state +EXPORT_SYMBOL_GPL vmlinux 0x34630e87 ping_unhash EXPORT_SYMBOL_GPL vmlinux 0x34640c47 shash_ahash_digest EXPORT_SYMBOL_GPL vmlinux 0x3470768a acpi_gpiochip_free_interrupts EXPORT_SYMBOL_GPL vmlinux 0x347ceae1 blk_queue_required_elevator_features -EXPORT_SYMBOL_GPL vmlinux 0x3491ea21 ip6_dst_lookup_flow -EXPORT_SYMBOL_GPL vmlinux 0x34a1f36e fib_rules_register +EXPORT_SYMBOL_GPL vmlinux 0x347f6e5f spi_replace_transfers +EXPORT_SYMBOL_GPL vmlinux 0x34922baa __tracepoint_br_fdb_update EXPORT_SYMBOL_GPL vmlinux 0x34d1b57e fuse_request_end EXPORT_SYMBOL_GPL vmlinux 0x34e96a27 __platform_driver_probe -EXPORT_SYMBOL_GPL vmlinux 0x350d55cc fib4_rule_default EXPORT_SYMBOL_GPL vmlinux 0x350f6ce5 tasklet_unlock_wait -EXPORT_SYMBOL_GPL vmlinux 0x351000b0 sfp_bus_find_fwnode EXPORT_SYMBOL_GPL vmlinux 0x352ec68b bpf_offload_dev_destroy EXPORT_SYMBOL_GPL vmlinux 0x353766b9 led_sysfs_disable EXPORT_SYMBOL_GPL vmlinux 0x35507f08 tty_ldisc_ref @@ -14314,51 +14315,43 @@ EXPORT_SYMBOL_GPL vmlinux 0x3567743b vfio_external_user_iommu_id EXPORT_SYMBOL_GPL vmlinux 0x3584bfad vfio_external_group_match_file EXPORT_SYMBOL_GPL vmlinux 0x359c14e7 dev_pm_opp_enable +EXPORT_SYMBOL_GPL vmlinux 0x359f69c3 fib_new_table EXPORT_SYMBOL_GPL vmlinux 0x35b7d36b crypto_register_shashes -EXPORT_SYMBOL_GPL vmlinux 0x35bf0835 xfrm_audit_state_notfound_simple EXPORT_SYMBOL_GPL vmlinux 0x35c0da90 dax_attribute_group EXPORT_SYMBOL_GPL vmlinux 0x35c1eb93 ata_pci_bmdma_init EXPORT_SYMBOL_GPL vmlinux 0x35c760d2 blkg_conf_prep EXPORT_SYMBOL_GPL vmlinux 0x35c9d4d4 scsi_unregister_device_handler -EXPORT_SYMBOL_GPL vmlinux 0x35cf3c6f bpf_prog_inc EXPORT_SYMBOL_GPL vmlinux 0x35d3dc46 crypto_alg_sem -EXPORT_SYMBOL_GPL vmlinux 0x35e17339 metadata_dst_free EXPORT_SYMBOL_GPL vmlinux 0x35f1d960 devm_gpiod_get_from_of_node EXPORT_SYMBOL_GPL vmlinux 0x35f43770 __clk_hw_register_gate +EXPORT_SYMBOL_GPL vmlinux 0x35fdb221 device_add_properties EXPORT_SYMBOL_GPL vmlinux 0x36075bb5 iommu_group_register_notifier EXPORT_SYMBOL_GPL vmlinux 0x360a4279 relay_flush EXPORT_SYMBOL_GPL vmlinux 0x36173c1d phys_to_target_node EXPORT_SYMBOL_GPL vmlinux 0x361cdee8 __tracepoint_non_standard_event EXPORT_SYMBOL_GPL vmlinux 0x36242943 switchdev_deferred_process EXPORT_SYMBOL_GPL vmlinux 0x362bea1e regulator_desc_list_voltage_linear -EXPORT_SYMBOL_GPL vmlinux 0x362fbf88 nvme_stop_keep_alive -EXPORT_SYMBOL_GPL vmlinux 0x364b1350 lwtunnel_encap_add_ops EXPORT_SYMBOL_GPL vmlinux 0x36545611 vmbus_set_event EXPORT_SYMBOL_GPL vmlinux 0x366bcd6e crypto_larval_kill -EXPORT_SYMBOL_GPL vmlinux 0x3686a355 lwtunnel_state_alloc -EXPORT_SYMBOL_GPL vmlinux 0x3693c5f9 xdp_rxq_info_reg_mem_model EXPORT_SYMBOL_GPL vmlinux 0x369fcd70 tracing_snapshot -EXPORT_SYMBOL_GPL vmlinux 0x36b3f222 devlink_dpipe_match_put EXPORT_SYMBOL_GPL vmlinux 0x36b5497e intel_iommu_enabled -EXPORT_SYMBOL_GPL vmlinux 0x36b6dd6e aead_init_geniv -EXPORT_SYMBOL_GPL vmlinux 0x36dff6c9 phy_speed_up -EXPORT_SYMBOL_GPL vmlinux 0x36e659b4 sk_psock_init -EXPORT_SYMBOL_GPL vmlinux 0x36ee2563 device_get_phy_mode EXPORT_SYMBOL_GPL vmlinux 0x36fb7bed fb_deferred_io_open EXPORT_SYMBOL_GPL vmlinux 0x36fc8efb device_pm_wait_for_dev -EXPORT_SYMBOL_GPL vmlinux 0x36fe64b0 bpf_trace_run7 EXPORT_SYMBOL_GPL vmlinux 0x37169f79 cpu_latency_qos_update_request EXPORT_SYMBOL_GPL vmlinux 0x3718cce1 ata_wait_after_reset -EXPORT_SYMBOL_GPL vmlinux 0x371c02f3 device_add +EXPORT_SYMBOL_GPL vmlinux 0x3725865d nfs_ssc_client_tbl EXPORT_SYMBOL_GPL vmlinux 0x374c53e1 ata_get_cmd_descript EXPORT_SYMBOL_GPL vmlinux 0x374e8d97 devm_devfreq_event_add_edev EXPORT_SYMBOL_GPL vmlinux 0x3750d770 erst_read -EXPORT_SYMBOL_GPL vmlinux 0x375a0042 netdev_rx_handler_register +EXPORT_SYMBOL_GPL vmlinux 0x3759dce3 proc_create_net_data EXPORT_SYMBOL_GPL vmlinux 0x375d98a0 devm_regulator_unregister EXPORT_SYMBOL_GPL vmlinux 0x3766d988 sysfs_file_change_owner +EXPORT_SYMBOL_GPL vmlinux 0x376cbd4c devlink_health_reporter_create EXPORT_SYMBOL_GPL vmlinux 0x37789813 gpiochip_populate_parent_fwspec_fourcell EXPORT_SYMBOL_GPL vmlinux 0x377bbcbc pm_suspend_target_state EXPORT_SYMBOL_GPL vmlinux 0x377d64ff serial8250_rpm_put +EXPORT_SYMBOL_GPL vmlinux 0x37873fab udp_tunnel6_xmit_skb +EXPORT_SYMBOL_GPL vmlinux 0x378bdee9 tcp_reno_ssthresh EXPORT_SYMBOL_GPL vmlinux 0x3796d20c clk_hw_is_prepared EXPORT_SYMBOL_GPL vmlinux 0x37ab0fd9 uart_set_options EXPORT_SYMBOL_GPL vmlinux 0x37b30a78 vmf_insert_pfn_pmd_prot @@ -14368,8 +14361,6 @@ EXPORT_SYMBOL_GPL vmlinux 0x37bf7be3 percpu_ref_exit EXPORT_SYMBOL_GPL vmlinux 0x37d595c6 phy_pm_runtime_allow EXPORT_SYMBOL_GPL vmlinux 0x37d9e061 hwmon_device_register_with_info -EXPORT_SYMBOL_GPL vmlinux 0x37e86c7c spi_sync -EXPORT_SYMBOL_GPL vmlinux 0x37ec4089 ip6_route_output_flags EXPORT_SYMBOL_GPL vmlinux 0x37ecf49b driver_attach EXPORT_SYMBOL_GPL vmlinux 0x37f292c4 pmc_atom_write EXPORT_SYMBOL_GPL vmlinux 0x3801776b __ioread32_copy @@ -14377,26 +14368,26 @@ EXPORT_SYMBOL_GPL vmlinux 0x38268b62 icc_bulk_enable EXPORT_SYMBOL_GPL vmlinux 0x3832ab92 iomap_file_unshare EXPORT_SYMBOL_GPL vmlinux 0x38374815 clear_selection -EXPORT_SYMBOL_GPL vmlinux 0x383a9c49 skb_tstamp_tx -EXPORT_SYMBOL_GPL vmlinux 0x384b4cce fwnode_get_nth_parent EXPORT_SYMBOL_GPL vmlinux 0x385fadc7 acpi_dma_controller_free EXPORT_SYMBOL_GPL vmlinux 0x3866e217 nvmem_device_write EXPORT_SYMBOL_GPL vmlinux 0x38708e25 inet_peer_base_init EXPORT_SYMBOL_GPL vmlinux 0x38722f80 kernel_fpu_end +EXPORT_SYMBOL_GPL vmlinux 0x387a1747 nvme_alloc_request EXPORT_SYMBOL_GPL vmlinux 0x3892f70c dma_alloc_noncontiguous -EXPORT_SYMBOL_GPL vmlinux 0x3893fa64 ip_md_tunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x3897101c crypto_register_template EXPORT_SYMBOL_GPL vmlinux 0x389b1be4 serial8250_do_set_mctrl EXPORT_SYMBOL_GPL vmlinux 0x389b64a2 static_key_count -EXPORT_SYMBOL_GPL vmlinux 0x38a1b096 skcipher_walk_async +EXPORT_SYMBOL_GPL vmlinux 0x389d10d6 __tracepoint_devlink_trap_report EXPORT_SYMBOL_GPL vmlinux 0x38a6c373 devm_gpiod_get_index EXPORT_SYMBOL_GPL vmlinux 0x38aa1397 gpiod_add_lookup_table -EXPORT_SYMBOL_GPL vmlinux 0x38b34b62 bpf_trace_run2 EXPORT_SYMBOL_GPL vmlinux 0x38b6a890 __SCT__tp_func_sched_util_est_cfs_tp EXPORT_SYMBOL_GPL vmlinux 0x38c3ff30 freq_qos_add_notifier EXPORT_SYMBOL_GPL vmlinux 0x38cd4c94 devm_phy_put +EXPORT_SYMBOL_GPL vmlinux 0x38de412b fib_info_nh_uses_dev +EXPORT_SYMBOL_GPL vmlinux 0x38e18b26 of_css EXPORT_SYMBOL_GPL vmlinux 0x38e1fde7 mpi_set EXPORT_SYMBOL_GPL vmlinux 0x38e5bc5a clk_set_rate_range -EXPORT_SYMBOL_GPL vmlinux 0x38f335c6 fwnode_graph_get_remote_node +EXPORT_SYMBOL_GPL vmlinux 0x38ec77c8 bpf_trace_run10 EXPORT_SYMBOL_GPL vmlinux 0x3902b518 led_trigger_write EXPORT_SYMBOL_GPL vmlinux 0x3902c112 __traceiter_rpm_idle EXPORT_SYMBOL_GPL vmlinux 0x39048e56 pinctrl_utils_add_config @@ -14408,13 +14399,11 @@ EXPORT_SYMBOL_GPL vmlinux 0x393cc4e4 blk_mq_sched_mark_restart_hctx EXPORT_SYMBOL_GPL vmlinux 0x394f1de3 acpi_dma_controller_register EXPORT_SYMBOL_GPL vmlinux 0x395c9ca5 phy_create -EXPORT_SYMBOL_GPL vmlinux 0x396e1255 bpf_prog_select_runtime -EXPORT_SYMBOL_GPL vmlinux 0x39764514 ptp_classify_raw -EXPORT_SYMBOL_GPL vmlinux 0x3982e18a __tracepoint_fib6_table_lookup EXPORT_SYMBOL_GPL vmlinux 0x3983310a led_init_core EXPORT_SYMBOL_GPL vmlinux 0x3989496c pinctrl_enable +EXPORT_SYMBOL_GPL vmlinux 0x398c515a __traceiter_xdp_exception +EXPORT_SYMBOL_GPL vmlinux 0x399cf946 rtnl_delete_link EXPORT_SYMBOL_GPL vmlinux 0x399eda0f sbitmap_add_wait_queue -EXPORT_SYMBOL_GPL vmlinux 0x39a2da83 fwnode_find_reference EXPORT_SYMBOL_GPL vmlinux 0x39a7affc driver_deferred_probe_timeout EXPORT_SYMBOL_GPL vmlinux 0x39af3211 icc_node_add EXPORT_SYMBOL_GPL vmlinux 0x39c79ebb of_phy_provider_unregister @@ -14427,34 +14416,36 @@ EXPORT_SYMBOL_GPL vmlinux 0x3a26ed11 sched_clock EXPORT_SYMBOL_GPL vmlinux 0x3a2e1b39 dm_report_zones_cb EXPORT_SYMBOL_GPL vmlinux 0x3a391a92 pkcs7_validate_trust +EXPORT_SYMBOL_GPL vmlinux 0x3a39f6c3 spi_slave_abort +EXPORT_SYMBOL_GPL vmlinux 0x3a477b84 devlink_port_param_driverinit_value_get EXPORT_SYMBOL_GPL vmlinux 0x3a4f0741 input_ff_destroy EXPORT_SYMBOL_GPL vmlinux 0x3a4f6a32 ata_sff_interrupt EXPORT_SYMBOL_GPL vmlinux 0x3a536bd7 ring_buffer_read_finish EXPORT_SYMBOL_GPL vmlinux 0x3a55981a static_key_enable_cpuslocked EXPORT_SYMBOL_GPL vmlinux 0x3a740d1f __mnt_is_readonly -EXPORT_SYMBOL_GPL vmlinux 0x3a74d3c1 spi_bus_unlock EXPORT_SYMBOL_GPL vmlinux 0x3a8bbb8e trace_clock_jiffies -EXPORT_SYMBOL_GPL vmlinux 0x3a8f2f43 inet_twsk_hashdance EXPORT_SYMBOL_GPL vmlinux 0x3a94940e pm_genpd_remove_subdomain EXPORT_SYMBOL_GPL vmlinux 0x3a9be019 asymmetric_key_id_partial EXPORT_SYMBOL_GPL vmlinux 0x3ab61b8a irq_domain_remove +EXPORT_SYMBOL_GPL vmlinux 0x3abbbdf9 dev_fill_forward_path EXPORT_SYMBOL_GPL vmlinux 0x3acde3da devm_pinctrl_put -EXPORT_SYMBOL_GPL vmlinux 0x3adca8dd __SCK__tp_func_pelt_irq_tp EXPORT_SYMBOL_GPL vmlinux 0x3ae56c49 rio_request_inb_pwrite EXPORT_SYMBOL_GPL vmlinux 0x3af578f5 hyperv_report_panic EXPORT_SYMBOL_GPL vmlinux 0x3afb19d5 rio_request_inb_mbox EXPORT_SYMBOL_GPL vmlinux 0x3b0d500a blk_mq_freeze_queue -EXPORT_SYMBOL_GPL vmlinux 0x3b14c7ff sch_frag_xmit_hook EXPORT_SYMBOL_GPL vmlinux 0x3b158380 debugfs_create_u8 EXPORT_SYMBOL_GPL vmlinux 0x3b19d75f gpiochip_generic_free +EXPORT_SYMBOL_GPL vmlinux 0x3b1e8fda __traceiter_sched_update_nr_running_tp EXPORT_SYMBOL_GPL vmlinux 0x3b4ba33c devm_regmap_field_alloc EXPORT_SYMBOL_GPL vmlinux 0x3b5cdb12 split_page EXPORT_SYMBOL_GPL vmlinux 0x3b5de834 pci_epc_mem_exit EXPORT_SYMBOL_GPL vmlinux 0x3b66745a generic_access_phys EXPORT_SYMBOL_GPL vmlinux 0x3b77daa0 dma_buf_move_notify EXPORT_SYMBOL_GPL vmlinux 0x3b91db5b intel_pt_handle_vmx +EXPORT_SYMBOL_GPL vmlinux 0x3b9404b9 crypto_stats_akcipher_decrypt EXPORT_SYMBOL_GPL vmlinux 0x3b95f543 klp_shadow_free EXPORT_SYMBOL_GPL vmlinux 0x3ba01b47 get_compat_sigset +EXPORT_SYMBOL_GPL vmlinux 0x3ba70893 __SCK__tp_func_br_fdb_add EXPORT_SYMBOL_GPL vmlinux 0x3ba9c3eb rdev_get_regmap EXPORT_SYMBOL_GPL vmlinux 0x3bd57967 pci_epc_linkup EXPORT_SYMBOL_GPL vmlinux 0x3bdb5d28 alg_test @@ -14462,14 +14453,13 @@ EXPORT_SYMBOL_GPL vmlinux 0x3bf17755 mpi_read_buffer EXPORT_SYMBOL_GPL vmlinux 0x3bf2393a __SCT__tp_func_nvme_sq EXPORT_SYMBOL_GPL vmlinux 0x3bfd8c64 usb_hub_find_child -EXPORT_SYMBOL_GPL vmlinux 0x3c057bfd nvme_sync_io_queues -EXPORT_SYMBOL_GPL vmlinux 0x3c0c74f6 xfrm_put_translator EXPORT_SYMBOL_GPL vmlinux 0x3c0e8050 hyperv_pcpu_input_arg EXPORT_SYMBOL_GPL vmlinux 0x3c1c3725 rcu_fwd_progress_check EXPORT_SYMBOL_GPL vmlinux 0x3c1c94c0 usb_hub_claim_port EXPORT_SYMBOL_GPL vmlinux 0x3c300418 unregister_asymmetric_key_parser EXPORT_SYMBOL_GPL vmlinux 0x3c5d543a hrtimer_start_range_ns EXPORT_SYMBOL_GPL vmlinux 0x3c681dc4 ring_buffer_record_disable +EXPORT_SYMBOL_GPL vmlinux 0x3c68458e ip6_sk_dst_lookup_flow EXPORT_SYMBOL_GPL vmlinux 0x3c73e797 pci_enable_pasid EXPORT_SYMBOL_GPL vmlinux 0x3c7f7221 rio_dev_put EXPORT_SYMBOL_GPL vmlinux 0x3c8393cd devm_platform_ioremap_resource @@ -14478,48 +14468,49 @@ EXPORT_SYMBOL_GPL vmlinux 0x3ca9aeab irq_generic_chip_ops EXPORT_SYMBOL_GPL vmlinux 0x3cc4b494 key_type_trusted EXPORT_SYMBOL_GPL vmlinux 0x3cd06035 add_input_randomness -EXPORT_SYMBOL_GPL vmlinux 0x3cdf92b6 ethtool_set_ethtool_phy_ops EXPORT_SYMBOL_GPL vmlinux 0x3ce650fd phy_10gbit_features EXPORT_SYMBOL_GPL vmlinux 0x3cec4617 sysfs_remove_link -EXPORT_SYMBOL_GPL vmlinux 0x3d2694fa sk_setup_caps -EXPORT_SYMBOL_GPL vmlinux 0x3d2a8598 __spi_register_driver EXPORT_SYMBOL_GPL vmlinux 0x3d3021bd trace_array_init_printk EXPORT_SYMBOL_GPL vmlinux 0x3d388324 dpm_resume_end EXPORT_SYMBOL_GPL vmlinux 0x3d510a7b rcu_jiffies_till_stall_check -EXPORT_SYMBOL_GPL vmlinux 0x3d720371 nvme_start_ctrl EXPORT_SYMBOL_GPL vmlinux 0x3d7cfec5 firmware_request_platform EXPORT_SYMBOL_GPL vmlinux 0x3d8baf3b zs_huge_class_size EXPORT_SYMBOL_GPL vmlinux 0x3d8cd596 cpu_device_create EXPORT_SYMBOL_GPL vmlinux 0x3d9bbf75 wwan_port_txon -EXPORT_SYMBOL_GPL vmlinux 0x3da0fbbc nvme_sync_queues EXPORT_SYMBOL_GPL vmlinux 0x3dac2e7a of_icc_xlate_onecell EXPORT_SYMBOL_GPL vmlinux 0x3db48927 sbitmap_any_bit_set +EXPORT_SYMBOL_GPL vmlinux 0x3db88856 devlink_port_attrs_pci_sf_set EXPORT_SYMBOL_GPL vmlinux 0x3dbbfe7b perf_aux_output_skip EXPORT_SYMBOL_GPL vmlinux 0x3dd40710 sata_set_spd EXPORT_SYMBOL_GPL vmlinux 0x3de9cae1 crypto_remove_final EXPORT_SYMBOL_GPL vmlinux 0x3df66685 blk_ksm_update_capabilities EXPORT_SYMBOL_GPL vmlinux 0x3df82d00 mce_log +EXPORT_SYMBOL_GPL vmlinux 0x3e01c089 lwtunnel_get_encap_size EXPORT_SYMBOL_GPL vmlinux 0x3e28c9ed tty_port_install EXPORT_SYMBOL_GPL vmlinux 0x3e2f50ae regulator_set_voltage -EXPORT_SYMBOL_GPL vmlinux 0x3e4d895a ip_fib_metrics_init EXPORT_SYMBOL_GPL vmlinux 0x3e57b284 serial8250_read_char +EXPORT_SYMBOL_GPL vmlinux 0x3e631b46 nfs42_ssc_register EXPORT_SYMBOL_GPL vmlinux 0x3e6ce443 wm8997_patch EXPORT_SYMBOL_GPL vmlinux 0x3e7080cb mpi_read_from_buffer +EXPORT_SYMBOL_GPL vmlinux 0x3e769a21 ip_tunnel_delete_nets EXPORT_SYMBOL_GPL vmlinux 0x3e7ba707 for_each_kernel_tracepoint EXPORT_SYMBOL_GPL vmlinux 0x3e8a83e8 unregister_wide_hw_breakpoint EXPORT_SYMBOL_GPL vmlinux 0x3ea5196d apei_osc_setup EXPORT_SYMBOL_GPL vmlinux 0x3ea8f843 devm_bitmap_zalloc -EXPORT_SYMBOL_GPL vmlinux 0x3eaa3989 ipv4_sk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0x3eb58572 fib_nl_delrule +EXPORT_SYMBOL_GPL vmlinux 0x3eb775bc sk_psock_drop EXPORT_SYMBOL_GPL vmlinux 0x3ebf57c3 usb_get_urb EXPORT_SYMBOL_GPL vmlinux 0x3ec45c5e gpiod_set_array_value EXPORT_SYMBOL_GPL vmlinux 0x3ec93255 hv_get_isolation_type EXPORT_SYMBOL_GPL vmlinux 0x3ecbce4e find_iova EXPORT_SYMBOL_GPL vmlinux 0x3ecc2e39 unregister_trace_event EXPORT_SYMBOL_GPL vmlinux 0x3ecc42bb thermal_zone_get_temp +EXPORT_SYMBOL_GPL vmlinux 0x3ecf41ef device_link_remove +EXPORT_SYMBOL_GPL vmlinux 0x3ed81f76 fwnode_handle_get EXPORT_SYMBOL_GPL vmlinux 0x3ed88fec pin_user_pages_fast -EXPORT_SYMBOL_GPL vmlinux 0x3edf001a blk_mq_rdma_map_queues EXPORT_SYMBOL_GPL vmlinux 0x3eedd07c usb_unlink_urb EXPORT_SYMBOL_GPL vmlinux 0x3ef051c8 crypto_inc +EXPORT_SYMBOL_GPL vmlinux 0x3ef132d9 device_get_named_child_node EXPORT_SYMBOL_GPL vmlinux 0x3ef37108 crypto_unregister_akcipher EXPORT_SYMBOL_GPL vmlinux 0x3efd1889 dax_direct_access EXPORT_SYMBOL_GPL vmlinux 0x3f07aa64 paste_selection @@ -14529,33 +14520,35 @@ EXPORT_SYMBOL_GPL vmlinux 0x3f348f9e power_supply_put EXPORT_SYMBOL_GPL vmlinux 0x3f39b082 look_up_OID EXPORT_SYMBOL_GPL vmlinux 0x3f3cb863 irq_create_mapping_affinity -EXPORT_SYMBOL_GPL vmlinux 0x3f3d1165 ping_init_sock EXPORT_SYMBOL_GPL vmlinux 0x3f3ffddf blk_insert_cloned_request EXPORT_SYMBOL_GPL vmlinux 0x3f491f49 reset_control_bulk_reset -EXPORT_SYMBOL_GPL vmlinux 0x3f4a7439 mptcp_subflow_init_cookie_req EXPORT_SYMBOL_GPL vmlinux 0x3f4b2ba4 rio_unmap_outb_region EXPORT_SYMBOL_GPL vmlinux 0x3f5dc12a pci_disable_pri +EXPORT_SYMBOL_GPL vmlinux 0x3f6560a5 udp_destruct_sock EXPORT_SYMBOL_GPL vmlinux 0x3f6de7d5 cleanup_srcu_struct -EXPORT_SYMBOL_GPL vmlinux 0x3f71cc83 iptunnel_metadata_reply EXPORT_SYMBOL_GPL vmlinux 0x3f7d9856 agp_remove_bridge EXPORT_SYMBOL_GPL vmlinux 0x3f7f5d2f devm_regmap_add_irq_chip EXPORT_SYMBOL_GPL vmlinux 0x3f83f8d3 rcu_bind_current_to_nocb EXPORT_SYMBOL_GPL vmlinux 0x3f84bcd7 dax_alive EXPORT_SYMBOL_GPL vmlinux 0x3f88d804 pkcs7_free_message EXPORT_SYMBOL_GPL vmlinux 0x3f8ab72e devlink_fmsg_bool_put -EXPORT_SYMBOL_GPL vmlinux 0x3f9bb05e kick_process EXPORT_SYMBOL_GPL vmlinux 0x3fa34abc __SCK__tp_func_error_report_end EXPORT_SYMBOL_GPL vmlinux 0x3fae6ab0 hv_vp_index +EXPORT_SYMBOL_GPL vmlinux 0x3fb29f99 __traceiter_pelt_rt_tp EXPORT_SYMBOL_GPL vmlinux 0x3fc689ec __tracepoint_arm_event EXPORT_SYMBOL_GPL vmlinux 0x3fe35aea irq_bypass_unregister_consumer EXPORT_SYMBOL_GPL vmlinux 0x3fe6c346 devlink_fmsg_binary_pair_put +EXPORT_SYMBOL_GPL vmlinux 0x3ff302e0 tcp_set_keepalive EXPORT_SYMBOL_GPL vmlinux 0x3ff82085 public_key_signature_free EXPORT_SYMBOL_GPL vmlinux 0x3ffdacf3 timerqueue_iterate_next EXPORT_SYMBOL_GPL vmlinux 0x4001aa13 dev_pm_opp_remove EXPORT_SYMBOL_GPL vmlinux 0x400a024b acpi_scan_lock_release +EXPORT_SYMBOL_GPL vmlinux 0x4024cd49 spi_bus_lock EXPORT_SYMBOL_GPL vmlinux 0x40267068 usb_anchor_resume_wakeups +EXPORT_SYMBOL_GPL vmlinux 0x40322b27 kill_device EXPORT_SYMBOL_GPL vmlinux 0x403f9529 gpio_request_one EXPORT_SYMBOL_GPL vmlinux 0x40495369 da9052_disable_irq_nosync +EXPORT_SYMBOL_GPL vmlinux 0x404cc22a blk_mq_rdma_map_queues EXPORT_SYMBOL_GPL vmlinux 0x404fd6f1 hwmon_notify_event EXPORT_SYMBOL_GPL vmlinux 0x4059e74f ata_bmdma_status EXPORT_SYMBOL_GPL vmlinux 0x4064d1bb usb_free_coherent @@ -14564,7 +14557,7 @@ EXPORT_SYMBOL_GPL vmlinux 0x4071b517 out_of_line_wait_on_bit_timeout EXPORT_SYMBOL_GPL vmlinux 0x40743e6e __clk_hw_register_divider EXPORT_SYMBOL_GPL vmlinux 0x407af304 usb_wait_anchor_empty_timeout -EXPORT_SYMBOL_GPL vmlinux 0x407cd608 validate_xmit_skb_list +EXPORT_SYMBOL_GPL vmlinux 0x4081007f __ip6_datagram_connect EXPORT_SYMBOL_GPL vmlinux 0x40819c8e __percpu_init_rwsem EXPORT_SYMBOL_GPL vmlinux 0x4099f919 tun_ptr_free EXPORT_SYMBOL_GPL vmlinux 0x409fd2e7 hwspin_lock_request @@ -14573,8 +14566,11 @@ EXPORT_SYMBOL_GPL vmlinux 0x40a7c86b blkcg_activate_policy EXPORT_SYMBOL_GPL vmlinux 0x40b6b89e __rio_local_read_config_8 EXPORT_SYMBOL_GPL vmlinux 0x40c0cca6 devm_acpi_dev_add_driver_gpios +EXPORT_SYMBOL_GPL vmlinux 0x40d2b1d4 __ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x40d2c6b1 inet6_hash EXPORT_SYMBOL_GPL vmlinux 0x40d349b6 sbitmap_queue_resize EXPORT_SYMBOL_GPL vmlinux 0x40da06dd acpi_subsys_prepare +EXPORT_SYMBOL_GPL vmlinux 0x40da0787 lwtunnel_fill_encap EXPORT_SYMBOL_GPL vmlinux 0x40e6c850 vfs_test_lock EXPORT_SYMBOL_GPL vmlinux 0x40f0683e reset_control_put EXPORT_SYMBOL_GPL vmlinux 0x40f8b94e ring_buffer_iter_dropped @@ -14585,22 +14581,23 @@ EXPORT_SYMBOL_GPL vmlinux 0x4129f5ee kernel_fpu_begin_mask EXPORT_SYMBOL_GPL vmlinux 0x412bc681 ring_buffer_empty_cpu EXPORT_SYMBOL_GPL vmlinux 0x4136c23e irq_domain_remove_sim +EXPORT_SYMBOL_GPL vmlinux 0x4136cf53 phy_start_machine EXPORT_SYMBOL_GPL vmlinux 0x4137e848 crypto_unregister_ahash EXPORT_SYMBOL_GPL vmlinux 0x41545b3e dev_pm_qos_flags EXPORT_SYMBOL_GPL vmlinux 0x415e9ec4 pci_slots_kset -EXPORT_SYMBOL_GPL vmlinux 0x416476db sock_diag_unregister -EXPORT_SYMBOL_GPL vmlinux 0x417d416b fwnode_get_parent EXPORT_SYMBOL_GPL vmlinux 0x41814cb8 dirty_writeback_interval -EXPORT_SYMBOL_GPL vmlinux 0x41832777 xfrm_unregister_translator EXPORT_SYMBOL_GPL vmlinux 0x418873cc irq_bypass_register_producer -EXPORT_SYMBOL_GPL vmlinux 0x419106de set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x4190a821 pktgen_xfrm_outer_mode_output EXPORT_SYMBOL_GPL vmlinux 0x419770f0 gpiochip_line_is_valid EXPORT_SYMBOL_GPL vmlinux 0x419e7efd sfp_module_stop EXPORT_SYMBOL_GPL vmlinux 0x41b7dfe2 con_debug_enter EXPORT_SYMBOL_GPL vmlinux 0x41ba9147 scsi_target_unblock EXPORT_SYMBOL_GPL vmlinux 0x41be9725 regulator_set_current_limit_regmap EXPORT_SYMBOL_GPL vmlinux 0x41d13609 regmap_add_irq_chip +EXPORT_SYMBOL_GPL vmlinux 0x41d375f9 sk_msg_return_zero +EXPORT_SYMBOL_GPL vmlinux 0x41e786ff l3mdev_table_lookup_unregister EXPORT_SYMBOL_GPL vmlinux 0x41ed3cec eventfd_ctx_remove_wait_queue +EXPORT_SYMBOL_GPL vmlinux 0x41f5756f devlink_port_params_register EXPORT_SYMBOL_GPL vmlinux 0x420bece8 regmap_multi_reg_write EXPORT_SYMBOL_GPL vmlinux 0x420f3d01 nvmem_unregister_notifier EXPORT_SYMBOL_GPL vmlinux 0x42214614 __ftrace_vbprintk @@ -14611,13 +14608,12 @@ EXPORT_SYMBOL_GPL vmlinux 0x42635d55 pm_suspend_global_flags EXPORT_SYMBOL_GPL vmlinux 0x426452a3 acpi_evaluation_failure_warn EXPORT_SYMBOL_GPL vmlinux 0x427bad8c power_supply_unregister -EXPORT_SYMBOL_GPL vmlinux 0x427ddc38 device_create_bin_file EXPORT_SYMBOL_GPL vmlinux 0x427f93c8 serial8250_handle_irq EXPORT_SYMBOL_GPL vmlinux 0x42825ce2 rcu_scheduler_active EXPORT_SYMBOL_GPL vmlinux 0x4284961e tty_ldisc_deref EXPORT_SYMBOL_GPL vmlinux 0x4297e500 blk_mq_queue_inflight EXPORT_SYMBOL_GPL vmlinux 0x42a47f4a dma_resv_test_signaled_rcu -EXPORT_SYMBOL_GPL vmlinux 0x42b5193a crypto_inst_setname +EXPORT_SYMBOL_GPL vmlinux 0x42a80d39 sk_clone_lock EXPORT_SYMBOL_GPL vmlinux 0x42b98d96 usb_add_hcd EXPORT_SYMBOL_GPL vmlinux 0x42be4370 iommu_set_fault_handler EXPORT_SYMBOL_GPL vmlinux 0x42d3aa69 efivar_entry_set @@ -14627,10 +14623,10 @@ EXPORT_SYMBOL_GPL vmlinux 0x42e9d0da ring_buffer_unlock_commit EXPORT_SYMBOL_GPL vmlinux 0x42f728aa mctrl_gpio_get_outputs EXPORT_SYMBOL_GPL vmlinux 0x430d88ec __traceiter_arm_event -EXPORT_SYMBOL_GPL vmlinux 0x432e9d55 device_change_owner EXPORT_SYMBOL_GPL vmlinux 0x4333f54e devm_power_supply_register_no_ws EXPORT_SYMBOL_GPL vmlinux 0x4347e8f1 dm_accept_partial_bio EXPORT_SYMBOL_GPL vmlinux 0x434ee459 devm_pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0x434f187e bpf_prog_free EXPORT_SYMBOL_GPL vmlinux 0x4355a71b transport_destroy_device EXPORT_SYMBOL_GPL vmlinux 0x436d817f mpi_clear_bit EXPORT_SYMBOL_GPL vmlinux 0x437eb1df ipv6_mod_enabled @@ -14638,10 +14634,12 @@ EXPORT_SYMBOL_GPL vmlinux 0x439ddf6b dma_buf_detach EXPORT_SYMBOL_GPL vmlinux 0x43aa319e lease_register_notifier EXPORT_SYMBOL_GPL vmlinux 0x43b34e93 scsi_dh_set_params +EXPORT_SYMBOL_GPL vmlinux 0x43bf1a4d __tracepoint_br_fdb_add EXPORT_SYMBOL_GPL vmlinux 0x43c58c62 crypto_shash_update -EXPORT_SYMBOL_GPL vmlinux 0x43c5d8d8 device_property_read_u64_array EXPORT_SYMBOL_GPL vmlinux 0x43cabfbf regulator_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0x43d2335e tcp_sendpage_locked EXPORT_SYMBOL_GPL vmlinux 0x43d67c32 dev_pm_opp_find_freq_ceil +EXPORT_SYMBOL_GPL vmlinux 0x43d8fe1d switchdev_handle_port_obj_del EXPORT_SYMBOL_GPL vmlinux 0x43f56e82 ata_xfer_mode2shift EXPORT_SYMBOL_GPL vmlinux 0x43f690a7 devfreq_event_reset_event EXPORT_SYMBOL_GPL vmlinux 0x43f81957 clk_round_rate @@ -14653,55 +14651,58 @@ EXPORT_SYMBOL_GPL vmlinux 0x444c818e pm_generic_poweroff_noirq EXPORT_SYMBOL_GPL vmlinux 0x44558572 synchronize_srcu EXPORT_SYMBOL_GPL vmlinux 0x445a09c0 nvmem_device_cell_write -EXPORT_SYMBOL_GPL vmlinux 0x445a6e91 __tracepoint_pelt_irq_tp +EXPORT_SYMBOL_GPL vmlinux 0x44683464 switchdev_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0x4472a5b3 inet6_lookup EXPORT_SYMBOL_GPL vmlinux 0x4484a5a4 wait_for_device_probe EXPORT_SYMBOL_GPL vmlinux 0x448d2732 PageHuge EXPORT_SYMBOL_GPL vmlinux 0x44913664 usb_deregister EXPORT_SYMBOL_GPL vmlinux 0x44994afb dev_pm_opp_set_prop_name -EXPORT_SYMBOL_GPL vmlinux 0x449ca2a1 skcipher_walk_complete -EXPORT_SYMBOL_GPL vmlinux 0x44b41f4d bpf_preload_ops EXPORT_SYMBOL_GPL vmlinux 0x44bae227 bit_wait_timeout +EXPORT_SYMBOL_GPL vmlinux 0x44ceadbd devlink_dpipe_entry_ctx_close EXPORT_SYMBOL_GPL vmlinux 0x44cf8cf0 blk_zone_cond_str -EXPORT_SYMBOL_GPL vmlinux 0x44da32cd xdp_return_frame_rx_napi EXPORT_SYMBOL_GPL vmlinux 0x44fe1da3 edac_pci_del_device EXPORT_SYMBOL_GPL vmlinux 0x450110e8 perf_assign_events +EXPORT_SYMBOL_GPL vmlinux 0x4502e0ff nl_table EXPORT_SYMBOL_GPL vmlinux 0x4507f4a8 cpuhp_tasks_frozen EXPORT_SYMBOL_GPL vmlinux 0x450cfc0f crypto_unregister_rng EXPORT_SYMBOL_GPL vmlinux 0x4514e0e8 edac_mc_find_csrow_by_page +EXPORT_SYMBOL_GPL vmlinux 0x451ce7fe mptcp_subflow_init_cookie_req EXPORT_SYMBOL_GPL vmlinux 0x4531624f usb_decode_ctrl EXPORT_SYMBOL_GPL vmlinux 0x4531ab62 copy_from_kernel_nofault EXPORT_SYMBOL_GPL vmlinux 0x4541fe0d mtrr_state -EXPORT_SYMBOL_GPL vmlinux 0x4543e77e spi_mem_adjust_op_size -EXPORT_SYMBOL_GPL vmlinux 0x45485719 devlink_dpipe_table_unregister EXPORT_SYMBOL_GPL vmlinux 0x45558f56 clk_unregister_fixed_factor EXPORT_SYMBOL_GPL vmlinux 0x45634bb1 irq_create_direct_mapping EXPORT_SYMBOL_GPL vmlinux 0x4575025b device_create_managed_software_node EXPORT_SYMBOL_GPL vmlinux 0x457594fa crypto_alg_list EXPORT_SYMBOL_GPL vmlinux 0x4587d64a pci_ignore_hotplug -EXPORT_SYMBOL_GPL vmlinux 0x458c324f device_store_int EXPORT_SYMBOL_GPL vmlinux 0x45912e66 blk_req_needs_zone_write_lock EXPORT_SYMBOL_GPL vmlinux 0x459e8768 tpm_pm_resume EXPORT_SYMBOL_GPL vmlinux 0x45abfbe6 dev_pm_opp_find_freq_exact EXPORT_SYMBOL_GPL vmlinux 0x45ad7f3e kthread_mod_delayed_work +EXPORT_SYMBOL_GPL vmlinux 0x45cceb9f __tracepoint_pelt_irq_tp EXPORT_SYMBOL_GPL vmlinux 0x45e44749 crypto_shoot_alg +EXPORT_SYMBOL_GPL vmlinux 0x45ecb10a __put_net EXPORT_SYMBOL_GPL vmlinux 0x46013233 net_dec_ingress_queue EXPORT_SYMBOL_GPL vmlinux 0x46030074 __hrtimer_get_remaining -EXPORT_SYMBOL_GPL vmlinux 0x46052072 perf_event_enable EXPORT_SYMBOL_GPL vmlinux 0x46161b13 pci_msi_mask_irq EXPORT_SYMBOL_GPL vmlinux 0x4639bcda acpi_nfit_shutdown EXPORT_SYMBOL_GPL vmlinux 0x463d8290 __irq_alloc_descs EXPORT_SYMBOL_GPL vmlinux 0x464b8062 iomap_fiemap EXPORT_SYMBOL_GPL vmlinux 0x4650c93a tpm_get_random EXPORT_SYMBOL_GPL vmlinux 0x46586c7c __class_register -EXPORT_SYMBOL_GPL vmlinux 0x46864bb7 preempt_notifier_register +EXPORT_SYMBOL_GPL vmlinux 0x465e9d7a devlink_sb_register EXPORT_SYMBOL_GPL vmlinux 0x4688d7ec pvclock_gtod_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0x469b8d89 perf_event_enable EXPORT_SYMBOL_GPL vmlinux 0x469baf77 mbox_send_message EXPORT_SYMBOL_GPL vmlinux 0x46a417ca vmbus_proto_version EXPORT_SYMBOL_GPL vmlinux 0x46a4b118 hrtimer_cancel +EXPORT_SYMBOL_GPL vmlinux 0x46a665f7 mptcp_pm_get_add_addr_accept_max EXPORT_SYMBOL_GPL vmlinux 0x46a6c9ef hv_get_tsc_page EXPORT_SYMBOL_GPL vmlinux 0x46c5be22 clk_multiplier_ops EXPORT_SYMBOL_GPL vmlinux 0x46cd3969 trace_output_call EXPORT_SYMBOL_GPL vmlinux 0x46d2cc58 led_trigger_blink +EXPORT_SYMBOL_GPL vmlinux 0x46e5ade8 nvme_delete_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x46f28607 ip4_datagram_release_cb EXPORT_SYMBOL_GPL vmlinux 0x46f42be0 devlink_fmsg_u8_put EXPORT_SYMBOL_GPL vmlinux 0x46f90570 regmap_fields_read EXPORT_SYMBOL_GPL vmlinux 0x47204d54 dummy_con @@ -14709,38 +14710,38 @@ EXPORT_SYMBOL_GPL vmlinux 0x4722af26 iommu_attach_group EXPORT_SYMBOL_GPL vmlinux 0x4726211e usb_clear_halt EXPORT_SYMBOL_GPL vmlinux 0x474343e8 crypto_shash_alg_has_setkey +EXPORT_SYMBOL_GPL vmlinux 0x474bedd5 tcp_bpf_sendmsg_redir EXPORT_SYMBOL_GPL vmlinux 0x475f8548 class_interface_unregister EXPORT_SYMBOL_GPL vmlinux 0x476167c8 remove_memory EXPORT_SYMBOL_GPL vmlinux 0x4761f17c register_netevent_notifier EXPORT_SYMBOL_GPL vmlinux 0x476d3bf9 vmbus_setevent +EXPORT_SYMBOL_GPL vmlinux 0x47868b32 ncsi_vlan_rx_kill_vid EXPORT_SYMBOL_GPL vmlinux 0x47884890 system_power_efficient_wq EXPORT_SYMBOL_GPL vmlinux 0x478debf5 phy_10gbit_fec_features -EXPORT_SYMBOL_GPL vmlinux 0x4791b1d1 l3mdev_fib_table_by_index EXPORT_SYMBOL_GPL vmlinux 0x4791cb91 apei_mce_report_mem_error EXPORT_SYMBOL_GPL vmlinux 0x479f7d4b clk_bulk_disable EXPORT_SYMBOL_GPL vmlinux 0x47aad3b9 have_governor_per_policy EXPORT_SYMBOL_GPL vmlinux 0x47b14894 fsstack_copy_attr_all -EXPORT_SYMBOL_GPL vmlinux 0x47b3de22 device_link_add +EXPORT_SYMBOL_GPL vmlinux 0x47b9bd24 crypto_enqueue_request EXPORT_SYMBOL_GPL vmlinux 0x47ba8c40 acpi_cppc_processor_exit EXPORT_SYMBOL_GPL vmlinux 0x47d0eea2 acpi_lpat_temp_to_raw EXPORT_SYMBOL_GPL vmlinux 0x47de0dc7 clk_unregister_mux EXPORT_SYMBOL_GPL vmlinux 0x47dec2c6 led_compose_name EXPORT_SYMBOL_GPL vmlinux 0x47f18a9b __hv_pkt_iter_next EXPORT_SYMBOL_GPL vmlinux 0x47fb3a2e gpiod_export -EXPORT_SYMBOL_GPL vmlinux 0x47fbe653 vxlan_dev_create -EXPORT_SYMBOL_GPL vmlinux 0x47fed918 __SCK__tp_func_devlink_trap_report EXPORT_SYMBOL_GPL vmlinux 0x480273f9 __traceiter_block_bio_complete EXPORT_SYMBOL_GPL vmlinux 0x480305ca kmsg_dump_rewind EXPORT_SYMBOL_GPL vmlinux 0x480411ba call_srcu EXPORT_SYMBOL_GPL vmlinux 0x4805b0a9 regmap_irq_get_domain EXPORT_SYMBOL_GPL vmlinux 0x480dae1a perf_get_aux EXPORT_SYMBOL_GPL vmlinux 0x48142d1a blk_queue_max_zone_append_sectors +EXPORT_SYMBOL_GPL vmlinux 0x48189d37 __traceiter_neigh_update_done EXPORT_SYMBOL_GPL vmlinux 0x481af314 usb_hcd_unlink_urb_from_ep EXPORT_SYMBOL_GPL vmlinux 0x481f9b7d mpi_mulm EXPORT_SYMBOL_GPL vmlinux 0x4828e77b acpi_scan_lock_acquire EXPORT_SYMBOL_GPL vmlinux 0x483e3068 vring_transport_features -EXPORT_SYMBOL_GPL vmlinux 0x484dbb53 __tracepoint_fdb_delete EXPORT_SYMBOL_GPL vmlinux 0x48528041 crypto_alloc_acomp_node +EXPORT_SYMBOL_GPL vmlinux 0x4852a166 device_show_bool EXPORT_SYMBOL_GPL vmlinux 0x485bf505 cpufreq_unregister_driver EXPORT_SYMBOL_GPL vmlinux 0x487d01d4 __crypto_alloc_tfm EXPORT_SYMBOL_GPL vmlinux 0x48a167b2 devm_blk_ksm_init @@ -14749,66 +14750,60 @@ EXPORT_SYMBOL_GPL vmlinux 0x48a4fab9 wm831x_bulk_read EXPORT_SYMBOL_GPL vmlinux 0x48ac6112 virtqueue_add_inbuf_ctx EXPORT_SYMBOL_GPL vmlinux 0x48c7b5bf trace_event_buffer_reserve -EXPORT_SYMBOL_GPL vmlinux 0x48da0233 css_next_descendant_pre EXPORT_SYMBOL_GPL vmlinux 0x48e10100 virtio_check_driver_offered_feature -EXPORT_SYMBOL_GPL vmlinux 0x48e6f4ba crypto_unregister_template EXPORT_SYMBOL_GPL vmlinux 0x48e97a52 devm_mbox_controller_register EXPORT_SYMBOL_GPL vmlinux 0x48f49400 apei_hest_parse EXPORT_SYMBOL_GPL vmlinux 0x48fd96b9 __SCK__tp_func_rpm_return_int EXPORT_SYMBOL_GPL vmlinux 0x490f9272 genphy_c45_an_config_aneg -EXPORT_SYMBOL_GPL vmlinux 0x49168cbf crypto_stats_aead_decrypt EXPORT_SYMBOL_GPL vmlinux 0x4921ecb1 __kernel_write EXPORT_SYMBOL_GPL vmlinux 0x49224181 nvme_reset_wq EXPORT_SYMBOL_GPL vmlinux 0x49242bc7 freezer_cgrp_subsys_on_dfl_key EXPORT_SYMBOL_GPL vmlinux 0x49245ba9 gpiochip_add_pingroup_range +EXPORT_SYMBOL_GPL vmlinux 0x492c44b1 kobject_uevent EXPORT_SYMBOL_GPL vmlinux 0x4934bdd0 crypto_check_attr_type EXPORT_SYMBOL_GPL vmlinux 0x4939ebcd numa_map_to_online_node -EXPORT_SYMBOL_GPL vmlinux 0x49533c72 nvme_set_features +EXPORT_SYMBOL_GPL vmlinux 0x493d1de3 msg_zerocopy_put_abort EXPORT_SYMBOL_GPL vmlinux 0x495a4221 __SCT__tp_func_rpm_return_int EXPORT_SYMBOL_GPL vmlinux 0x495f2b18 __SCK__tp_func_io_page_fault EXPORT_SYMBOL_GPL vmlinux 0x49608959 migrate_disable +EXPORT_SYMBOL_GPL vmlinux 0x49618263 device_property_match_string EXPORT_SYMBOL_GPL vmlinux 0x499043d3 crypto_init_queue EXPORT_SYMBOL_GPL vmlinux 0x4993eb44 debugfs_create_u64 EXPORT_SYMBOL_GPL vmlinux 0x49951708 sev_enable_key -EXPORT_SYMBOL_GPL vmlinux 0x49954dab __tracepoint_pelt_dl_tp EXPORT_SYMBOL_GPL vmlinux 0x499bbf57 nfit_get_smbios_id +EXPORT_SYMBOL_GPL vmlinux 0x49a2eb56 msg_zerocopy_callback +EXPORT_SYMBOL_GPL vmlinux 0x49b7e192 crypto_stats_akcipher_sign EXPORT_SYMBOL_GPL vmlinux 0x49c14a61 ex_handler_fault -EXPORT_SYMBOL_GPL vmlinux 0x49c50905 sk_psock_tls_strp_read -EXPORT_SYMBOL_GPL vmlinux 0x49c8e4b3 devlink_port_param_driverinit_value_set EXPORT_SYMBOL_GPL vmlinux 0x49d26019 kthread_park EXPORT_SYMBOL_GPL vmlinux 0x49da9b3c class_for_each_device EXPORT_SYMBOL_GPL vmlinux 0x49de600a edac_pci_release_generic_ctl EXPORT_SYMBOL_GPL vmlinux 0x49e9297c input_class EXPORT_SYMBOL_GPL vmlinux 0x49e96999 cond_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x49ece1fd fib_rules_register EXPORT_SYMBOL_GPL vmlinux 0x49f739dc virtio_device_restore -EXPORT_SYMBOL_GPL vmlinux 0x49fdbb89 __udp_gso_segment EXPORT_SYMBOL_GPL vmlinux 0x4a17ed66 sysrq_mask EXPORT_SYMBOL_GPL vmlinux 0x4a420d09 acpi_bus_detach_private_data -EXPORT_SYMBOL_GPL vmlinux 0x4a481ac7 fl6_merge_options EXPORT_SYMBOL_GPL vmlinux 0x4a487501 node_to_amd_nb EXPORT_SYMBOL_GPL vmlinux 0x4a6d46fb __blk_req_zone_write_lock -EXPORT_SYMBOL_GPL vmlinux 0x4a6e9688 ip6_route_lookup EXPORT_SYMBOL_GPL vmlinux 0x4a756bc0 regmap_async_complete EXPORT_SYMBOL_GPL vmlinux 0x4a7cf519 screen_pos EXPORT_SYMBOL_GPL vmlinux 0x4a844cbc crypto_unregister_kpp EXPORT_SYMBOL_GPL vmlinux 0x4a88367b devm_regulator_get_exclusive -EXPORT_SYMBOL_GPL vmlinux 0x4a929eff crypto_skcipher_decrypt -EXPORT_SYMBOL_GPL vmlinux 0x4a9693a4 setup_udp_tunnel_sock EXPORT_SYMBOL_GPL vmlinux 0x4aa4239c fuse_fill_super_common -EXPORT_SYMBOL_GPL vmlinux 0x4aab41c6 netdev_rx_handler_unregister -EXPORT_SYMBOL_GPL vmlinux 0x4adfdaf6 ip_build_and_send_pkt +EXPORT_SYMBOL_GPL vmlinux 0x4aae2f91 dst_cache_get +EXPORT_SYMBOL_GPL vmlinux 0x4acf6769 ipv6_dup_options EXPORT_SYMBOL_GPL vmlinux 0x4b0aaf55 __put_task_struct EXPORT_SYMBOL_GPL vmlinux 0x4b1440f7 virtqueue_get_buf_ctx EXPORT_SYMBOL_GPL vmlinux 0x4b1c9720 ata_sff_error_handler EXPORT_SYMBOL_GPL vmlinux 0x4b2210b8 vmbus_send_tl_connect_request EXPORT_SYMBOL_GPL vmlinux 0x4b230804 regulator_set_voltage_sel_pickable_regmap EXPORT_SYMBOL_GPL vmlinux 0x4b2b0561 sata_sff_hardreset +EXPORT_SYMBOL_GPL vmlinux 0x4b2c5a61 skb_splice_bits EXPORT_SYMBOL_GPL vmlinux 0x4b35acac crypto_register_rngs EXPORT_SYMBOL_GPL vmlinux 0x4b4a6d80 register_wide_hw_breakpoint EXPORT_SYMBOL_GPL vmlinux 0x4b514e1c __traceiter_rpm_resume EXPORT_SYMBOL_GPL vmlinux 0x4b51f74c ata_xfer_mode2mask EXPORT_SYMBOL_GPL vmlinux 0x4b62eebb vmbus_next_request_id -EXPORT_SYMBOL_GPL vmlinux 0x4b68a621 crypto_alloc_sync_skcipher EXPORT_SYMBOL_GPL vmlinux 0x4b72009e dynamic_debug_exec_queries EXPORT_SYMBOL_GPL vmlinux 0x4b762828 start_thread EXPORT_SYMBOL_GPL vmlinux 0x4b7e3164 acpi_unbind_one @@ -14820,27 +14815,31 @@ EXPORT_SYMBOL_GPL vmlinux 0x4b98b90d gpiod_put_array EXPORT_SYMBOL_GPL vmlinux 0x4b99ac21 debugfs_create_x32 EXPORT_SYMBOL_GPL vmlinux 0x4ba325d0 __vmbus_driver_register +EXPORT_SYMBOL_GPL vmlinux 0x4ba8b277 crypto_grab_skcipher EXPORT_SYMBOL_GPL vmlinux 0x4bd6f08b misc_cgrp_subsys_on_dfl_key -EXPORT_SYMBOL_GPL vmlinux 0x4bfab0de devlink_port_attrs_pci_vf_set -EXPORT_SYMBOL_GPL vmlinux 0x4c02a44b sock_diag_register_inet_compat -EXPORT_SYMBOL_GPL vmlinux 0x4c2e8228 __fib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4c115ddd ip6_route_input_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4c2849fd __pneigh_lookup EXPORT_SYMBOL_GPL vmlinux 0x4c34bbcf __tracepoint_add_device_to_group EXPORT_SYMBOL_GPL vmlinux 0x4c3b60b3 usb_acpi_power_manageable -EXPORT_SYMBOL_GPL vmlinux 0x4c459be1 crypto_register_skciphers +EXPORT_SYMBOL_GPL vmlinux 0x4c49f1de hv_clock_per_cpu EXPORT_SYMBOL_GPL vmlinux 0x4c5871a5 pci_load_saved_state EXPORT_SYMBOL_GPL vmlinux 0x4c695cb0 clk_hw_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x4c6ea250 fwnode_graph_get_next_endpoint EXPORT_SYMBOL_GPL vmlinux 0x4c7092e9 thermal_zone_unbind_cooling_device EXPORT_SYMBOL_GPL vmlinux 0x4c762b5c x86_stepping EXPORT_SYMBOL_GPL vmlinux 0x4c795c37 dax_layout_busy_page EXPORT_SYMBOL_GPL vmlinux 0x4c83c5e9 dma_buf_unpin EXPORT_SYMBOL_GPL vmlinux 0x4c8adfe1 hv_root_partition EXPORT_SYMBOL_GPL vmlinux 0x4c93353b phy_save_page -EXPORT_SYMBOL_GPL vmlinux 0x4ca45d4b sk_msg_clone +EXPORT_SYMBOL_GPL vmlinux 0x4ca580c4 inet_csk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0x4cab7b25 __traceiter_devlink_hwmsg EXPORT_SYMBOL_GPL vmlinux 0x4cb27100 ktime_get_snapshot +EXPORT_SYMBOL_GPL vmlinux 0x4cb7e163 switchdev_port_attr_set EXPORT_SYMBOL_GPL vmlinux 0x4cbbf559 handle_fasteoi_nmi EXPORT_SYMBOL_GPL vmlinux 0x4ccac82c gpiochip_remove_pin_ranges EXPORT_SYMBOL_GPL vmlinux 0x4cd0738a vp_modern_probe -EXPORT_SYMBOL_GPL vmlinux 0x4cf3a545 ip_tunnel_lookup +EXPORT_SYMBOL_GPL vmlinux 0x4cd501cf dev_get_tstats64 +EXPORT_SYMBOL_GPL vmlinux 0x4cf8f4c4 xfrm_audit_state_replay EXPORT_SYMBOL_GPL vmlinux 0x4d0015e2 cpu_hotplug_disable EXPORT_SYMBOL_GPL vmlinux 0x4d0b752f alloc_iova EXPORT_SYMBOL_GPL vmlinux 0x4d132f4f iommu_uapi_cache_invalidate @@ -14851,22 +14850,19 @@ EXPORT_SYMBOL_GPL vmlinux 0x4d712aed acpi_nfit_init EXPORT_SYMBOL_GPL vmlinux 0x4d7272e4 migrate_enable EXPORT_SYMBOL_GPL vmlinux 0x4d744444 crypto_register_ahashes -EXPORT_SYMBOL_GPL vmlinux 0x4d79e455 ipv6_proxy_select_ident EXPORT_SYMBOL_GPL vmlinux 0x4d7b8740 devm_pinctrl_register EXPORT_SYMBOL_GPL vmlinux 0x4d8a96ab xas_set_mark -EXPORT_SYMBOL_GPL vmlinux 0x4d8b2b2a __SCK__tp_func_neigh_update_done EXPORT_SYMBOL_GPL vmlinux 0x4d943e0f blk_clear_pm_only EXPORT_SYMBOL_GPL vmlinux 0x4d9edc02 irq_create_fwspec_mapping EXPORT_SYMBOL_GPL vmlinux 0x4da1f4a7 list_lru_del EXPORT_SYMBOL_GPL vmlinux 0x4da383c0 fuse_file_poll +EXPORT_SYMBOL_GPL vmlinux 0x4db5a9aa xdp_return_frame_bulk EXPORT_SYMBOL_GPL vmlinux 0x4db60788 ata_scsi_change_queue_depth EXPORT_SYMBOL_GPL vmlinux 0x4db9ea94 user_describe -EXPORT_SYMBOL_GPL vmlinux 0x4dba22f7 devlink_resource_size_get EXPORT_SYMBOL_GPL vmlinux 0x4dc5db9b tracepoint_probe_register_prio EXPORT_SYMBOL_GPL vmlinux 0x4dc68649 led_trigger_read EXPORT_SYMBOL_GPL vmlinux 0x4dd9d14d cn_netlink_send_mult EXPORT_SYMBOL_GPL vmlinux 0x4de17ab3 usb_state_string -EXPORT_SYMBOL_GPL vmlinux 0x4de6ef65 bpf_offload_dev_netdev_unregister EXPORT_SYMBOL_GPL vmlinux 0x4deb6435 of_icc_get EXPORT_SYMBOL_GPL vmlinux 0x4df8dd6b regulator_desc_list_voltage_linear_range EXPORT_SYMBOL_GPL vmlinux 0x4dfc725f bio_release_pages @@ -14878,30 +14874,27 @@ EXPORT_SYMBOL_GPL vmlinux 0x4e1ddecb locks_alloc_lock EXPORT_SYMBOL_GPL vmlinux 0x4e1dfac2 rdev_set_badblocks EXPORT_SYMBOL_GPL vmlinux 0x4e280832 gpiod_get_raw_array_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0x4e287865 nf_route EXPORT_SYMBOL_GPL vmlinux 0x4e4c37e2 freq_qos_remove_notifier EXPORT_SYMBOL_GPL vmlinux 0x4e5ee273 tick_nohz_full_mask EXPORT_SYMBOL_GPL vmlinux 0x4e62945e unwind_get_return_address -EXPORT_SYMBOL_GPL vmlinux 0x4e72a602 device_link_del EXPORT_SYMBOL_GPL vmlinux 0x4e7990f3 register_trace_event -EXPORT_SYMBOL_GPL vmlinux 0x4e8cfebf lwtunnel_encap_del_ops EXPORT_SYMBOL_GPL vmlinux 0x4eac5fc1 cpu_mitigations_auto_nosmt EXPORT_SYMBOL_GPL vmlinux 0x4ebc0c99 ata_pci_bmdma_prepare_host EXPORT_SYMBOL_GPL vmlinux 0x4ece3615 blocking_notifier_chain_unregister EXPORT_SYMBOL_GPL vmlinux 0x4ecea863 __devm_regmap_init_mmio_clk -EXPORT_SYMBOL_GPL vmlinux 0x4edad2d2 unregister_pernet_device EXPORT_SYMBOL_GPL vmlinux 0x4ef0ca71 phy_reset -EXPORT_SYMBOL_GPL vmlinux 0x4ef1d7b7 device_match_fwnode EXPORT_SYMBOL_GPL vmlinux 0x4ef5bcf4 perf_swevent_get_recursion_context EXPORT_SYMBOL_GPL vmlinux 0x4efcf021 mpi_normalize EXPORT_SYMBOL_GPL vmlinux 0x4f0cfa79 irq_domain_reset_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x4f147cb9 crypto_unregister_instance EXPORT_SYMBOL_GPL vmlinux 0x4f1d501c iommu_dev_disable_feature -EXPORT_SYMBOL_GPL vmlinux 0x4f1e2617 ip_tunnel_change_mtu EXPORT_SYMBOL_GPL vmlinux 0x4f2593f0 btree_update EXPORT_SYMBOL_GPL vmlinux 0x4f2ae314 add_disk_randomness EXPORT_SYMBOL_GPL vmlinux 0x4f2c996d kmsg_dump_get_line EXPORT_SYMBOL_GPL vmlinux 0x4f2e2bf6 atomic_notifier_call_chain_robust EXPORT_SYMBOL_GPL vmlinux 0x4f34bd0f balloon_page_list_dequeue -EXPORT_SYMBOL_GPL vmlinux 0x4f3b69e2 strp_done +EXPORT_SYMBOL_GPL vmlinux 0x4f3e7297 fl6_merge_options EXPORT_SYMBOL_GPL vmlinux 0x4f4b17c8 sysfs_remove_groups EXPORT_SYMBOL_GPL vmlinux 0x4f667d9d pm_runtime_irq_safe EXPORT_SYMBOL_GPL vmlinux 0x4f6a07fe show_rcu_gp_kthreads @@ -14909,22 +14902,23 @@ EXPORT_SYMBOL_GPL vmlinux 0x4f720e20 tty_put_char EXPORT_SYMBOL_GPL vmlinux 0x4f72a987 uart_parse_options EXPORT_SYMBOL_GPL vmlinux 0x4f8546af cpuidle_poll_state_init -EXPORT_SYMBOL_GPL vmlinux 0x4fa19c98 device_get_next_child_node -EXPORT_SYMBOL_GPL vmlinux 0x4fa204d2 devlink_health_reporter_create EXPORT_SYMBOL_GPL vmlinux 0x4fb99b19 fat_getattr +EXPORT_SYMBOL_GPL vmlinux 0x4fbf8438 netlink_remove_tap EXPORT_SYMBOL_GPL vmlinux 0x4fc02643 rhashtable_walk_exit EXPORT_SYMBOL_GPL vmlinux 0x4fdc945d sata_deb_timing_normal EXPORT_SYMBOL_GPL vmlinux 0x4fe1eddf unregister_netevent_notifier -EXPORT_SYMBOL_GPL vmlinux 0x4fe2872b devlink_params_unpublish EXPORT_SYMBOL_GPL vmlinux 0x4fe93a4b serial8250_request_dma EXPORT_SYMBOL_GPL vmlinux 0x500c768c apei_exec_read_register +EXPORT_SYMBOL_GPL vmlinux 0x500cdf52 bpf_offload_dev_netdev_register EXPORT_SYMBOL_GPL vmlinux 0x5026c618 platform_device_add_data +EXPORT_SYMBOL_GPL vmlinux 0x502746cb nf_queue_nf_hook_drop EXPORT_SYMBOL_GPL vmlinux 0x5028f048 usb_get_current_frame_number EXPORT_SYMBOL_GPL vmlinux 0x50448f60 crypto_register_rng EXPORT_SYMBOL_GPL vmlinux 0x505d1507 regulator_is_equal EXPORT_SYMBOL_GPL vmlinux 0x5066f261 __acpi_node_get_property_reference -EXPORT_SYMBOL_GPL vmlinux 0x5079cca5 nf_hook_entries_delete_raw +EXPORT_SYMBOL_GPL vmlinux 0x508c0f84 sched_show_task EXPORT_SYMBOL_GPL vmlinux 0x5091b823 ring_buffer_read_start +EXPORT_SYMBOL_GPL vmlinux 0x50988fc9 __SCK__tp_func_pelt_irq_tp EXPORT_SYMBOL_GPL vmlinux 0x509d5f55 clk_divider_ro_ops EXPORT_SYMBOL_GPL vmlinux 0x50ac89b3 dev_pm_opp_set_opp EXPORT_SYMBOL_GPL vmlinux 0x50afa013 cpufreq_freq_attr_scaling_available_freqs @@ -14932,40 +14926,39 @@ EXPORT_SYMBOL_GPL vmlinux 0x50b6ecb1 usb_autopm_get_interface_no_resume EXPORT_SYMBOL_GPL vmlinux 0x50c61940 __context_tracking_exit EXPORT_SYMBOL_GPL vmlinux 0x50ca7087 kstrdup_quotable_cmdline -EXPORT_SYMBOL_GPL vmlinux 0x50cd731c xfrm_audit_state_replay EXPORT_SYMBOL_GPL vmlinux 0x50d1f870 pgprot_writecombine +EXPORT_SYMBOL_GPL vmlinux 0x50d309e3 sched_trace_rq_nr_running +EXPORT_SYMBOL_GPL vmlinux 0x50dd71ab __sock_recv_wifi_status EXPORT_SYMBOL_GPL vmlinux 0x50df94f5 btree_insert EXPORT_SYMBOL_GPL vmlinux 0x50e7193a __i2c_first_dynamic_bus_num EXPORT_SYMBOL_GPL vmlinux 0x50f7a001 pkcs7_verify EXPORT_SYMBOL_GPL vmlinux 0x50fad434 round_jiffies_up -EXPORT_SYMBOL_GPL vmlinux 0x51074f46 devlink_region_create -EXPORT_SYMBOL_GPL vmlinux 0x5111a8e0 __traceiter_napi_poll -EXPORT_SYMBOL_GPL vmlinux 0x5121d7e6 sock_gen_put EXPORT_SYMBOL_GPL vmlinux 0x5124ddb6 bsg_unregister_queue EXPORT_SYMBOL_GPL vmlinux 0x51390c96 rcu_barrier_tasks_rude EXPORT_SYMBOL_GPL vmlinux 0x51398c39 class_compat_create_link EXPORT_SYMBOL_GPL vmlinux 0x513ac4ac rio_bus_type +EXPORT_SYMBOL_GPL vmlinux 0x513c4817 tcp_ca_get_key_by_name +EXPORT_SYMBOL_GPL vmlinux 0x513d525e put_pid EXPORT_SYMBOL_GPL vmlinux 0x51437c7b exportfs_decode_fh_raw EXPORT_SYMBOL_GPL vmlinux 0x51507c41 usb_sg_wait EXPORT_SYMBOL_GPL vmlinux 0x5157e710 crypto_alloc_shash EXPORT_SYMBOL_GPL vmlinux 0x515fea7e crypto_unregister_shash EXPORT_SYMBOL_GPL vmlinux 0x516a6778 register_kretprobe EXPORT_SYMBOL_GPL vmlinux 0x516a951c edac_device_handle_ce_count -EXPORT_SYMBOL_GPL vmlinux 0x5178c559 clean_acked_data_disable EXPORT_SYMBOL_GPL vmlinux 0x517a6bea usb_free_streams +EXPORT_SYMBOL_GPL vmlinux 0x517df680 ipv4_update_pmtu EXPORT_SYMBOL_GPL vmlinux 0x518c2fc6 hpet_rtc_dropped_irq EXPORT_SYMBOL_GPL vmlinux 0x518ce290 fuse_conn_put +EXPORT_SYMBOL_GPL vmlinux 0x5197f4d1 sock_diag_put_meminfo EXPORT_SYMBOL_GPL vmlinux 0x51a790bb fuse_do_open -EXPORT_SYMBOL_GPL vmlinux 0x51bcdfc6 aead_geniv_alloc EXPORT_SYMBOL_GPL vmlinux 0x51be5f68 acpi_subsys_runtime_suspend -EXPORT_SYMBOL_GPL vmlinux 0x51bf9bf5 init_pid_ns EXPORT_SYMBOL_GPL vmlinux 0x51c50796 power_supply_set_input_current_limit_from_supplier EXPORT_SYMBOL_GPL vmlinux 0x51d85535 store_sampling_rate EXPORT_SYMBOL_GPL vmlinux 0x51d9920c devfreq_event_get_event -EXPORT_SYMBOL_GPL vmlinux 0x51e2402c cgroup_path_ns EXPORT_SYMBOL_GPL vmlinux 0x51eb0eac ata_sff_queue_pio_task EXPORT_SYMBOL_GPL vmlinux 0x51ef83cd cpuidle_get_cpu_driver EXPORT_SYMBOL_GPL vmlinux 0x5206f0bd clk_register_fractional_divider +EXPORT_SYMBOL_GPL vmlinux 0x520edc28 strp_process EXPORT_SYMBOL_GPL vmlinux 0x52127c33 watchdog_set_restart_priority EXPORT_SYMBOL_GPL vmlinux 0x5212e0f8 bsg_setup_queue EXPORT_SYMBOL_GPL vmlinux 0x52252316 clk_unregister_fixed_rate @@ -14976,24 +14969,23 @@ EXPORT_SYMBOL_GPL vmlinux 0x526bcf2a wwan_port_get_drvdata EXPORT_SYMBOL_GPL vmlinux 0x527130f8 pfn_to_online_page EXPORT_SYMBOL_GPL vmlinux 0x527c939c bio_iov_iter_get_pages +EXPORT_SYMBOL_GPL vmlinux 0x527f9c36 __traceiter_pelt_irq_tp +EXPORT_SYMBOL_GPL vmlinux 0x5288d0bf __traceiter_pelt_dl_tp +EXPORT_SYMBOL_GPL vmlinux 0x52a011a4 nvme_set_queue_count EXPORT_SYMBOL_GPL vmlinux 0x52a47c00 dev_pm_opp_get_opp_table EXPORT_SYMBOL_GPL vmlinux 0x52b1e3c7 pci_flags EXPORT_SYMBOL_GPL vmlinux 0x52c35e83 call_rcu_tasks_trace EXPORT_SYMBOL_GPL vmlinux 0x52cd3862 hwmon_device_register_with_groups EXPORT_SYMBOL_GPL vmlinux 0x52d54fce devlink_info_version_stored_put EXPORT_SYMBOL_GPL vmlinux 0x52e3bae6 regcache_drop_region -EXPORT_SYMBOL_GPL vmlinux 0x52fe9e99 udp_tun_rx_dst EXPORT_SYMBOL_GPL vmlinux 0x5306adc8 subsys_dev_iter_init EXPORT_SYMBOL_GPL vmlinux 0x530a7c96 regulator_get_voltage_sel_regmap EXPORT_SYMBOL_GPL vmlinux 0x5312b302 usb_create_shared_hcd EXPORT_SYMBOL_GPL vmlinux 0x5321d3d6 sbitmap_get EXPORT_SYMBOL_GPL vmlinux 0x532b90b5 kprobe_event_cmd_init -EXPORT_SYMBOL_GPL vmlinux 0x5340bdbe lwtunnel_get_encap_size -EXPORT_SYMBOL_GPL vmlinux 0x53430562 security_file_ioctl EXPORT_SYMBOL_GPL vmlinux 0x534ec72e perf_aux_output_flag EXPORT_SYMBOL_GPL vmlinux 0x5358864e devlink_fmsg_binary_pair_nest_end EXPORT_SYMBOL_GPL vmlinux 0x536822e3 sfp_module_insert -EXPORT_SYMBOL_GPL vmlinux 0x536dd9e2 udp_tunnel_nic_ops EXPORT_SYMBOL_GPL vmlinux 0x536f1c95 gen10g_config_aneg EXPORT_SYMBOL_GPL vmlinux 0x536f5d1e vmbus_connect_ring EXPORT_SYMBOL_GPL vmlinux 0x53761937 gpiod_get_raw_array_value @@ -15001,15 +14993,16 @@ EXPORT_SYMBOL_GPL vmlinux 0x53953b39 xhci_drop_endpoint EXPORT_SYMBOL_GPL vmlinux 0x53a49f10 dev_pm_set_wake_irq EXPORT_SYMBOL_GPL vmlinux 0x53aec803 debugfs_file_put +EXPORT_SYMBOL_GPL vmlinux 0x53b3f9a7 security_file_ioctl EXPORT_SYMBOL_GPL vmlinux 0x53b5d9c7 usb_match_id -EXPORT_SYMBOL_GPL vmlinux 0x53bc36b5 spi_mem_default_supports_op EXPORT_SYMBOL_GPL vmlinux 0x53bee8c2 badblocks_clear EXPORT_SYMBOL_GPL vmlinux 0x53c089f5 property_entries_dup EXPORT_SYMBOL_GPL vmlinux 0x53c4f712 crypto_ahash_setkey +EXPORT_SYMBOL_GPL vmlinux 0x53d4f419 ip6_local_out EXPORT_SYMBOL_GPL vmlinux 0x53d7c01e __traceiter_cpu_idle EXPORT_SYMBOL_GPL vmlinux 0x53d90976 cpuidle_get_driver EXPORT_SYMBOL_GPL vmlinux 0x53db627c kernfs_get -EXPORT_SYMBOL_GPL vmlinux 0x53e2c38e device_create_file +EXPORT_SYMBOL_GPL vmlinux 0x53dd2081 tcp_enter_memory_pressure EXPORT_SYMBOL_GPL vmlinux 0x54156708 tracing_snapshot_cond EXPORT_SYMBOL_GPL vmlinux 0x541bd60a irq_work_run EXPORT_SYMBOL_GPL vmlinux 0x54215db5 visitor64 @@ -15025,29 +15018,33 @@ EXPORT_SYMBOL_GPL vmlinux 0x54944056 rio_add_net EXPORT_SYMBOL_GPL vmlinux 0x549525ef handle_nested_irq EXPORT_SYMBOL_GPL vmlinux 0x54a0dfd7 dm_bio_get_target_bio_nr +EXPORT_SYMBOL_GPL vmlinux 0x54b67176 spi_mem_adjust_op_size EXPORT_SYMBOL_GPL vmlinux 0x54b8d18c fuse_mount_remove +EXPORT_SYMBOL_GPL vmlinux 0x54c3d833 fwnode_get_name EXPORT_SYMBOL_GPL vmlinux 0x54c95b78 do_unregister_con_driver EXPORT_SYMBOL_GPL vmlinux 0x54d0cfb7 rio_mport_get_efb +EXPORT_SYMBOL_GPL vmlinux 0x54dd6a43 cgroup_get_from_fd EXPORT_SYMBOL_GPL vmlinux 0x54e60104 wm5110_spi_regmap +EXPORT_SYMBOL_GPL vmlinux 0x54f2c85a __SCK__tp_func_br_fdb_external_learn_add EXPORT_SYMBOL_GPL vmlinux 0x54f66be7 vfio_group_get_external_user_from_dev -EXPORT_SYMBOL_GPL vmlinux 0x54f9ffdd tcp_ca_get_key_by_name EXPORT_SYMBOL_GPL vmlinux 0x54fa6873 regulator_disable -EXPORT_SYMBOL_GPL vmlinux 0x55089221 devm_device_add_groups EXPORT_SYMBOL_GPL vmlinux 0x550ce709 pat_enabled -EXPORT_SYMBOL_GPL vmlinux 0x5512b488 netdev_walk_all_upper_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x552098fb sk_msg_free_partial EXPORT_SYMBOL_GPL vmlinux 0x55287377 __hwspin_unlock EXPORT_SYMBOL_GPL vmlinux 0x552cfceb platform_device_add_resources EXPORT_SYMBOL_GPL vmlinux 0x55339365 flush_delayed_fput -EXPORT_SYMBOL_GPL vmlinux 0x55345386 spi_mem_dirmap_read EXPORT_SYMBOL_GPL vmlinux 0x553b49a4 cpufreq_get_driver_data EXPORT_SYMBOL_GPL vmlinux 0x55417264 unregister_vt_notifier EXPORT_SYMBOL_GPL vmlinux 0x554bee3a dbs_update EXPORT_SYMBOL_GPL vmlinux 0x5550c05b to_nvdimm_bus_dev EXPORT_SYMBOL_GPL vmlinux 0x555d1e69 rio_mport_write_config_16 EXPORT_SYMBOL_GPL vmlinux 0x555f9eca rhashtable_walk_enter -EXPORT_SYMBOL_GPL vmlinux 0x556cfd11 nf_queue +EXPORT_SYMBOL_GPL vmlinux 0x5563f06c ethnl_cable_test_finished +EXPORT_SYMBOL_GPL vmlinux 0x556b2b50 kick_process EXPORT_SYMBOL_GPL vmlinux 0x556e4390 clk_get_rate +EXPORT_SYMBOL_GPL vmlinux 0x5576c206 xdp_rxq_info_reg EXPORT_SYMBOL_GPL vmlinux 0x55784228 regmap_irq_get_virq +EXPORT_SYMBOL_GPL vmlinux 0x559a5675 nvme_cancel_admin_tagset EXPORT_SYMBOL_GPL vmlinux 0x559de96e hwspin_lock_register EXPORT_SYMBOL_GPL vmlinux 0x55b69102 power_supply_set_property EXPORT_SYMBOL_GPL vmlinux 0x55b86a82 vp_modern_generation @@ -15062,38 +15059,38 @@ EXPORT_SYMBOL_GPL vmlinux 0x56054c05 crypto_it_tab EXPORT_SYMBOL_GPL vmlinux 0x56162c22 nvdimm_has_flush EXPORT_SYMBOL_GPL vmlinux 0x56173654 pcap_set_ts_bits +EXPORT_SYMBOL_GPL vmlinux 0x561fdfed spi_mem_dirmap_create EXPORT_SYMBOL_GPL vmlinux 0x56256e8a orderly_poweroff EXPORT_SYMBOL_GPL vmlinux 0x56310925 regulator_mode_to_status EXPORT_SYMBOL_GPL vmlinux 0x56398615 mark_tsc_unstable EXPORT_SYMBOL_GPL vmlinux 0x563aaf4d tpmm_chip_alloc EXPORT_SYMBOL_GPL vmlinux 0x5641485b tty_termios_encode_baud_rate +EXPORT_SYMBOL_GPL vmlinux 0x5665dec7 devlink_dpipe_action_put EXPORT_SYMBOL_GPL vmlinux 0x56679e2f dev_pm_opp_free_cpufreq_table EXPORT_SYMBOL_GPL vmlinux 0x566f9bc8 pkcs7_parse_message EXPORT_SYMBOL_GPL vmlinux 0x5674b3cb rhashtable_free_and_destroy -EXPORT_SYMBOL_GPL vmlinux 0x567cf156 ip_tunnel_ctl EXPORT_SYMBOL_GPL vmlinux 0x5680ee47 pci_epc_unmap_addr EXPORT_SYMBOL_GPL vmlinux 0x56a365fc mbox_request_channel +EXPORT_SYMBOL_GPL vmlinux 0x56b64844 ip_tunnel_change_mtu EXPORT_SYMBOL_GPL vmlinux 0x56b70675 ata_link_abort EXPORT_SYMBOL_GPL vmlinux 0x56b838e9 tty_find_polling_driver -EXPORT_SYMBOL_GPL vmlinux 0x56c88401 skb_segment EXPORT_SYMBOL_GPL vmlinux 0x56d61dce context_tracking_enter EXPORT_SYMBOL_GPL vmlinux 0x56daa21c alloc_io_pgtable_ops -EXPORT_SYMBOL_GPL vmlinux 0x56e4d03b tcp_abort EXPORT_SYMBOL_GPL vmlinux 0x56e916da simple_attr_read EXPORT_SYMBOL_GPL vmlinux 0x56f14899 edac_mc_add_mc_with_groups -EXPORT_SYMBOL_GPL vmlinux 0x56fa3655 nvme_enable_ctrl +EXPORT_SYMBOL_GPL vmlinux 0x56f67471 rtnl_link_unregister EXPORT_SYMBOL_GPL vmlinux 0x56fbb130 no_hash_pointers EXPORT_SYMBOL_GPL vmlinux 0x57058c75 em_pd_get EXPORT_SYMBOL_GPL vmlinux 0x571774d9 fat_remove_entries EXPORT_SYMBOL_GPL vmlinux 0x5732adbb ata_scsi_ioctl EXPORT_SYMBOL_GPL vmlinux 0x5735d4ef sdev_evt_send_simple EXPORT_SYMBOL_GPL vmlinux 0x573b5453 ipv6_fixup_options +EXPORT_SYMBOL_GPL vmlinux 0x57418ab0 ncsi_register_dev EXPORT_SYMBOL_GPL vmlinux 0x574609c5 apei_exec_write_register_value EXPORT_SYMBOL_GPL vmlinux 0x57577369 vfs_listxattr +EXPORT_SYMBOL_GPL vmlinux 0x577236d9 sk_set_memalloc EXPORT_SYMBOL_GPL vmlinux 0x57732438 inet_twsk_purge EXPORT_SYMBOL_GPL vmlinux 0x577868ef intel_pinctrl_probe_by_uid -EXPORT_SYMBOL_GPL vmlinux 0x577cf7fc ip6_datagram_connect_v6_only -EXPORT_SYMBOL_GPL vmlinux 0x577f1a30 devlink_port_attrs_pci_sf_set EXPORT_SYMBOL_GPL vmlinux 0x578eeb4d hugetlb_cgrp_subsys_enabled_key EXPORT_SYMBOL_GPL vmlinux 0x5790e7a0 pci_unlock_rescan_remove EXPORT_SYMBOL_GPL vmlinux 0x579e0bf5 rtnl_unregister_all @@ -15104,30 +15101,31 @@ EXPORT_SYMBOL_GPL vmlinux 0x57d22951 to_nd_blk_region EXPORT_SYMBOL_GPL vmlinux 0x57d4050a xhci_get_endpoint_index EXPORT_SYMBOL_GPL vmlinux 0x57df5d3e fat_detach +EXPORT_SYMBOL_GPL vmlinux 0x57e050ce nf_queue_entry_free EXPORT_SYMBOL_GPL vmlinux 0x57f576b9 mpi_ec_curve_point -EXPORT_SYMBOL_GPL vmlinux 0x57f5ff30 device_set_of_node_from_dev EXPORT_SYMBOL_GPL vmlinux 0x57f70547 secure_ipv4_port_ephemeral EXPORT_SYMBOL_GPL vmlinux 0x57fbbeed pci_enable_ats EXPORT_SYMBOL_GPL vmlinux 0x580550fa iommu_attach_device -EXPORT_SYMBOL_GPL vmlinux 0x5813f50b ping_bind +EXPORT_SYMBOL_GPL vmlinux 0x581238bc device_property_read_u8_array EXPORT_SYMBOL_GPL vmlinux 0x58249b11 regulator_is_supported_voltage EXPORT_SYMBOL_GPL vmlinux 0x58276f93 cper_next_record_id EXPORT_SYMBOL_GPL vmlinux 0x582ab621 tracing_cond_snapshot_data EXPORT_SYMBOL_GPL vmlinux 0x5831e062 cpus_read_trylock -EXPORT_SYMBOL_GPL vmlinux 0x5832b933 skb_to_sgvec +EXPORT_SYMBOL_GPL vmlinux 0x58489277 spi_controller_resume EXPORT_SYMBOL_GPL vmlinux 0x584e3c06 tpm_pcr_extend -EXPORT_SYMBOL_GPL vmlinux 0x585134f9 fwnode_handle_get EXPORT_SYMBOL_GPL vmlinux 0x5852c018 key_type_logon +EXPORT_SYMBOL_GPL vmlinux 0x5859a711 device_destroy EXPORT_SYMBOL_GPL vmlinux 0x586bfc8a alarm_restart EXPORT_SYMBOL_GPL vmlinux 0x586d1d0f rio_release_inb_mbox EXPORT_SYMBOL_GPL vmlinux 0x58721ac3 irq_chip_set_type_parent -EXPORT_SYMBOL_GPL vmlinux 0x5872857d __traceiter_neigh_event_send_dead EXPORT_SYMBOL_GPL vmlinux 0x5879a27d sfp_get_module_info EXPORT_SYMBOL_GPL vmlinux 0x587a5b18 of_hwspin_lock_get_id +EXPORT_SYMBOL_GPL vmlinux 0x588d4594 sk_psock_tls_strp_read EXPORT_SYMBOL_GPL vmlinux 0x588fb4a1 wm5110_revd_irq EXPORT_SYMBOL_GPL vmlinux 0x589d8524 virtqueue_get_vring EXPORT_SYMBOL_GPL vmlinux 0x58a19d84 uart_console_write EXPORT_SYMBOL_GPL vmlinux 0x58bb99fd devm_regulator_put +EXPORT_SYMBOL_GPL vmlinux 0x58d318b0 ipv6_recv_error EXPORT_SYMBOL_GPL vmlinux 0x58d45d4f acpiphp_register_attention EXPORT_SYMBOL_GPL vmlinux 0x58d6311d trace_clock EXPORT_SYMBOL_GPL vmlinux 0x58d79bf3 uprobe_unregister @@ -15136,87 +15134,89 @@ EXPORT_SYMBOL_GPL vmlinux 0x58fe199d __list_lru_init EXPORT_SYMBOL_GPL vmlinux 0x59137fdb apei_get_debugfs_dir EXPORT_SYMBOL_GPL vmlinux 0x5944cd71 nvdimm_blk_region_create +EXPORT_SYMBOL_GPL vmlinux 0x595181d0 perf_event_addr_filters_sync EXPORT_SYMBOL_GPL vmlinux 0x59624e07 desc_to_gpio EXPORT_SYMBOL_GPL vmlinux 0x59639229 blk_req_zone_write_trylock EXPORT_SYMBOL_GPL vmlinux 0x5963a1a7 __SCK__tp_func_detach_device_from_domain EXPORT_SYMBOL_GPL vmlinux 0x5968c567 devm_release_action EXPORT_SYMBOL_GPL vmlinux 0x5968e1b8 nvdimm_in_overwrite -EXPORT_SYMBOL_GPL vmlinux 0x597fb794 xfrm_audit_state_icvfail +EXPORT_SYMBOL_GPL vmlinux 0x5975c687 switchdev_handle_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0x5979fc70 __SCK__tp_func_sched_overutilized_tp EXPORT_SYMBOL_GPL vmlinux 0x5981b063 power_supply_register_no_ws -EXPORT_SYMBOL_GPL vmlinux 0x598499b8 nvme_wait_freeze EXPORT_SYMBOL_GPL vmlinux 0x5986d190 kdb_printf +EXPORT_SYMBOL_GPL vmlinux 0x59a7d6de devlink_dpipe_match_put EXPORT_SYMBOL_GPL vmlinux 0x59b2adbf input_ff_effect_from_user EXPORT_SYMBOL_GPL vmlinux 0x59bbf145 pv_info EXPORT_SYMBOL_GPL vmlinux 0x59c43dc9 __traceiter_non_standard_event EXPORT_SYMBOL_GPL vmlinux 0x59c6aff4 irq_set_affinity_hint EXPORT_SYMBOL_GPL vmlinux 0x59c88457 md_find_rdev_rcu +EXPORT_SYMBOL_GPL vmlinux 0x59c975dd ip_tunnel_ctl EXPORT_SYMBOL_GPL vmlinux 0x59d948da fscrypt_file_open EXPORT_SYMBOL_GPL vmlinux 0x59de1a26 serial8250_init_port +EXPORT_SYMBOL_GPL vmlinux 0x59dee84a nf_ct_hook EXPORT_SYMBOL_GPL vmlinux 0x59e1d8db acpiphp_unregister_attention EXPORT_SYMBOL_GPL vmlinux 0x59e63236 power_supply_powers EXPORT_SYMBOL_GPL vmlinux 0x59f0542e blk_mq_init_queue_data EXPORT_SYMBOL_GPL vmlinux 0x59f10005 dev_pm_opp_get_sharing_cpus EXPORT_SYMBOL_GPL vmlinux 0x59f32720 mpi_subm +EXPORT_SYMBOL_GPL vmlinux 0x5a077e19 __netdev_watchdog_up EXPORT_SYMBOL_GPL vmlinux 0x5a1114cb regulator_list_voltage_linear_range -EXPORT_SYMBOL_GPL vmlinux 0x5a14a4e5 sock_diag_put_meminfo +EXPORT_SYMBOL_GPL vmlinux 0x5a1166f9 fib_alias_hw_flags_set EXPORT_SYMBOL_GPL vmlinux 0x5a1d134a rcu_momentary_dyntick_idle EXPORT_SYMBOL_GPL vmlinux 0x5a28c0ab posix_acl_access_xattr_handler +EXPORT_SYMBOL_GPL vmlinux 0x5a312268 devm_device_remove_groups EXPORT_SYMBOL_GPL vmlinux 0x5a3697ed transport_add_device EXPORT_SYMBOL_GPL vmlinux 0x5a3fdeb9 clk_hw_get_num_parents +EXPORT_SYMBOL_GPL vmlinux 0x5a401c5e nvme_wait_freeze_timeout EXPORT_SYMBOL_GPL vmlinux 0x5a49dbc9 timerqueue_del EXPORT_SYMBOL_GPL vmlinux 0x5a4d53bf dm_disk -EXPORT_SYMBOL_GPL vmlinux 0x5a561df9 __tracepoint_pelt_se_tp +EXPORT_SYMBOL_GPL vmlinux 0x5a5a35ac sk_msg_free_nocharge EXPORT_SYMBOL_GPL vmlinux 0x5a6cdb52 nf_ct_zone_dflt EXPORT_SYMBOL_GPL vmlinux 0x5a786df0 clk_hw_set_parent -EXPORT_SYMBOL_GPL vmlinux 0x5a789dd1 device_property_read_string_array EXPORT_SYMBOL_GPL vmlinux 0x5a7bfe41 crypto_probing_notify +EXPORT_SYMBOL_GPL vmlinux 0x5a987d4e sk_msg_trim EXPORT_SYMBOL_GPL vmlinux 0x5aa70984 acpi_reduced_hardware -EXPORT_SYMBOL_GPL vmlinux 0x5aafb168 fwnode_device_is_available EXPORT_SYMBOL_GPL vmlinux 0x5ab09745 edac_get_owner -EXPORT_SYMBOL_GPL vmlinux 0x5ab0ff32 devlink_port_register EXPORT_SYMBOL_GPL vmlinux 0x5ab10d08 kgdb_register_io_module -EXPORT_SYMBOL_GPL vmlinux 0x5abc4dd1 get_task_pid EXPORT_SYMBOL_GPL vmlinux 0x5ad52418 vfs_truncate -EXPORT_SYMBOL_GPL vmlinux 0x5ae3ac35 skb_cow_data -EXPORT_SYMBOL_GPL vmlinux 0x5aeba15b devm_spi_mem_dirmap_create EXPORT_SYMBOL_GPL vmlinux 0x5b017f36 sprint_OID EXPORT_SYMBOL_GPL vmlinux 0x5b102860 hrtimer_init_sleeper +EXPORT_SYMBOL_GPL vmlinux 0x5b16ce44 __traceiter_neigh_event_send_dead EXPORT_SYMBOL_GPL vmlinux 0x5b21ceff ring_buffer_iter_peek +EXPORT_SYMBOL_GPL vmlinux 0x5b2c7be0 fib6_get_table EXPORT_SYMBOL_GPL vmlinux 0x5b35c4f9 vfio_group_set_kvm EXPORT_SYMBOL_GPL vmlinux 0x5b4583fc irq_chip_mask_ack_parent EXPORT_SYMBOL_GPL vmlinux 0x5b6b0329 swiotlb_max_segment EXPORT_SYMBOL_GPL vmlinux 0x5b7311cf __SCK__tp_func_block_rq_insert EXPORT_SYMBOL_GPL vmlinux 0x5b7ee03c ata_sff_qc_issue +EXPORT_SYMBOL_GPL vmlinux 0x5b8605d7 xfrm_audit_state_delete EXPORT_SYMBOL_GPL vmlinux 0x5b97bf51 bio_start_io_acct +EXPORT_SYMBOL_GPL vmlinux 0x5b9d38a6 phy_restart_aneg +EXPORT_SYMBOL_GPL vmlinux 0x5ba0e32d devlink_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0x5bb1d54f xfrm_audit_policy_delete EXPORT_SYMBOL_GPL vmlinux 0x5bb8a0f5 xhci_run EXPORT_SYMBOL_GPL vmlinux 0x5bbdfa26 scatterwalk_ffwd EXPORT_SYMBOL_GPL vmlinux 0x5bd0748f crypto_del_default_rng EXPORT_SYMBOL_GPL vmlinux 0x5bdae35b usb_phy_roothub_set_mode EXPORT_SYMBOL_GPL vmlinux 0x5bdbac4e rcu_unexpedite_gp -EXPORT_SYMBOL_GPL vmlinux 0x5be074ec call_switchdev_blocking_notifiers -EXPORT_SYMBOL_GPL vmlinux 0x5be621f9 devm_spi_register_controller EXPORT_SYMBOL_GPL vmlinux 0x5bf0fb4c irq_domain_translate_onecell -EXPORT_SYMBOL_GPL vmlinux 0x5bf6a51b inet_ehash_nolisten EXPORT_SYMBOL_GPL vmlinux 0x5bf95271 fscrypt_ioctl_remove_key EXPORT_SYMBOL_GPL vmlinux 0x5c03b203 __fscrypt_prepare_setattr EXPORT_SYMBOL_GPL vmlinux 0x5c0c165e __SCT__tp_func_neigh_update EXPORT_SYMBOL_GPL vmlinux 0x5c0eaf31 acpi_dev_resource_interrupt +EXPORT_SYMBOL_GPL vmlinux 0x5c179be7 get_task_pid EXPORT_SYMBOL_GPL vmlinux 0x5c1983c8 reset_controller_register -EXPORT_SYMBOL_GPL vmlinux 0x5c2aae30 sk_msg_recvmsg EXPORT_SYMBOL_GPL vmlinux 0x5c2bcd37 bpf_warn_invalid_xdp_action EXPORT_SYMBOL_GPL vmlinux 0x5c309e65 hibernate_quiet_exec -EXPORT_SYMBOL_GPL vmlinux 0x5c42f0bc strp_process EXPORT_SYMBOL_GPL vmlinux 0x5c498162 __pm_runtime_disable +EXPORT_SYMBOL_GPL vmlinux 0x5c535c62 __SCK__tp_func_neigh_update_done EXPORT_SYMBOL_GPL vmlinux 0x5c5a1b16 tick_broadcast_control EXPORT_SYMBOL_GPL vmlinux 0x5c5aa1a6 __generic_fsdax_supported EXPORT_SYMBOL_GPL vmlinux 0x5c5c6826 phy_10gbit_full_features -EXPORT_SYMBOL_GPL vmlinux 0x5c5e4d37 nfs_ssc_unregister EXPORT_SYMBOL_GPL vmlinux 0x5c6242c0 kobject_get_path -EXPORT_SYMBOL_GPL vmlinux 0x5c6c71fc tcp_twsk_unique +EXPORT_SYMBOL_GPL vmlinux 0x5c72bdd2 sock_diag_unregister EXPORT_SYMBOL_GPL vmlinux 0x5c9dfa4f iomap_truncate_page EXPORT_SYMBOL_GPL vmlinux 0x5cad8fc3 power_supply_ocv2cap_simple -EXPORT_SYMBOL_GPL vmlinux 0x5cb8d7fc skcipher_walk_virt -EXPORT_SYMBOL_GPL vmlinux 0x5cc29c33 ip6_flush_pending_frames EXPORT_SYMBOL_GPL vmlinux 0x5cc81a87 crypto_aead_setkey EXPORT_SYMBOL_GPL vmlinux 0x5cdf823f iommu_fwspec_add_ids EXPORT_SYMBOL_GPL vmlinux 0x5cede0a7 xdp_flush_frame_bulk @@ -15224,18 +15224,17 @@ EXPORT_SYMBOL_GPL vmlinux 0x5cf68d01 __reset_control_get EXPORT_SYMBOL_GPL vmlinux 0x5cfc5925 __percpu_down_read EXPORT_SYMBOL_GPL vmlinux 0x5d17148b apei_write -EXPORT_SYMBOL_GPL vmlinux 0x5d1aed6e sk_set_peek_off EXPORT_SYMBOL_GPL vmlinux 0x5d25eb58 acpi_register_gsi EXPORT_SYMBOL_GPL vmlinux 0x5d2bc42a reset_control_rearm EXPORT_SYMBOL_GPL vmlinux 0x5d34e30e fat_build_inode EXPORT_SYMBOL_GPL vmlinux 0x5d42f15d regulator_enable_regmap -EXPORT_SYMBOL_GPL vmlinux 0x5d44168f raw_seq_next -EXPORT_SYMBOL_GPL vmlinux 0x5d52d915 ethnl_cable_test_result -EXPORT_SYMBOL_GPL vmlinux 0x5d819921 __traceiter_fib6_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x5d51e975 __SCK__tp_func_fib6_table_lookup EXPORT_SYMBOL_GPL vmlinux 0x5d8476d3 bpf_sk_storage_diag_alloc EXPORT_SYMBOL_GPL vmlinux 0x5d8486fa irq_chip_disable_parent -EXPORT_SYMBOL_GPL vmlinux 0x5d85f40f pingv6_ops EXPORT_SYMBOL_GPL vmlinux 0x5d862bc4 regmap_mmio_detach_clk +EXPORT_SYMBOL_GPL vmlinux 0x5d88c2a9 nvme_sync_io_queues +EXPORT_SYMBOL_GPL vmlinux 0x5d9360fa xdp_build_skb_from_frame +EXPORT_SYMBOL_GPL vmlinux 0x5d965782 nvme_enable_ctrl EXPORT_SYMBOL_GPL vmlinux 0x5d9b731f platform_device_register_full EXPORT_SYMBOL_GPL vmlinux 0x5da67adc zs_compact EXPORT_SYMBOL_GPL vmlinux 0x5dbcfa4f boot_cpu_physical_apicid @@ -15244,20 +15243,27 @@ EXPORT_SYMBOL_GPL vmlinux 0x5df959a6 pci_assign_unassigned_bridge_resources EXPORT_SYMBOL_GPL vmlinux 0x5e04bb29 acpi_device_modalias EXPORT_SYMBOL_GPL vmlinux 0x5e173309 cpu_cgrp_subsys_on_dfl_key +EXPORT_SYMBOL_GPL vmlinux 0x5e17f5b0 nf_ip_route +EXPORT_SYMBOL_GPL vmlinux 0x5e327f5c devlink_param_driverinit_value_get EXPORT_SYMBOL_GPL vmlinux 0x5e4b92d7 find_mci_by_dev EXPORT_SYMBOL_GPL vmlinux 0x5e515be6 ktime_get_ts64 +EXPORT_SYMBOL_GPL vmlinux 0x5e5303f8 device_link_del EXPORT_SYMBOL_GPL vmlinux 0x5e5790de rtc_alarm_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0x5e5938dd ip6_sk_redirect EXPORT_SYMBOL_GPL vmlinux 0x5e73e0cf pci_epc_set_msix EXPORT_SYMBOL_GPL vmlinux 0x5e73ea3c _copy_mc_to_iter -EXPORT_SYMBOL_GPL vmlinux 0x5e764899 device_get_dma_attr EXPORT_SYMBOL_GPL vmlinux 0x5e798ffb divider_get_val +EXPORT_SYMBOL_GPL vmlinux 0x5e7d08ac devlink_flash_update_timeout_notify EXPORT_SYMBOL_GPL vmlinux 0x5e846352 regulator_bulk_disable EXPORT_SYMBOL_GPL vmlinux 0x5e85415b ring_buffer_consume EXPORT_SYMBOL_GPL vmlinux 0x5e8e697e mbox_request_channel_byname EXPORT_SYMBOL_GPL vmlinux 0x5e915a1b dma_buf_dynamic_attach +EXPORT_SYMBOL_GPL vmlinux 0x5eace5a5 devlink_reload_enable EXPORT_SYMBOL_GPL vmlinux 0x5eae5408 clk_is_enabled_when_prepared EXPORT_SYMBOL_GPL vmlinux 0x5eaed060 fscrypt_prepare_symlink +EXPORT_SYMBOL_GPL vmlinux 0x5eb01909 spi_write_then_read EXPORT_SYMBOL_GPL vmlinux 0x5ec62549 ata_dev_classify +EXPORT_SYMBOL_GPL vmlinux 0x5ee30e84 clean_acked_data_enable EXPORT_SYMBOL_GPL vmlinux 0x5eecbd0b iommu_uapi_sva_bind_gpasid EXPORT_SYMBOL_GPL vmlinux 0x5eed9ad7 usb_unlocked_disable_lpm EXPORT_SYMBOL_GPL vmlinux 0x5f1870f8 phy_modify_mmd @@ -15268,38 +15274,30 @@ EXPORT_SYMBOL_GPL vmlinux 0x5f2fcc83 ioremap_uc EXPORT_SYMBOL_GPL vmlinux 0x5f6f1e9e dax_get_private EXPORT_SYMBOL_GPL vmlinux 0x5f722c6d kset_create_and_add -EXPORT_SYMBOL_GPL vmlinux 0x5f76250c pid_vnr +EXPORT_SYMBOL_GPL vmlinux 0x5f78b528 __traceiter_br_fdb_add EXPORT_SYMBOL_GPL vmlinux 0x5fa625ed mpi_ec_mul_point EXPORT_SYMBOL_GPL vmlinux 0x5fab4059 public_key_free -EXPORT_SYMBOL_GPL vmlinux 0x5fbd4785 crypto_enqueue_request EXPORT_SYMBOL_GPL vmlinux 0x5fc245d1 acpi_device_fix_up_power EXPORT_SYMBOL_GPL vmlinux 0x5fc72f84 vp_modern_set_status EXPORT_SYMBOL_GPL vmlinux 0x5fdb80e8 ata_cable_sata EXPORT_SYMBOL_GPL vmlinux 0x5fdfa2c1 amd_pmu_enable_virt EXPORT_SYMBOL_GPL vmlinux 0x5fe52487 register_acpi_bus_type -EXPORT_SYMBOL_GPL vmlinux 0x5feb898f nf_ipv6_ops +EXPORT_SYMBOL_GPL vmlinux 0x5fe56525 pid_nr_ns EXPORT_SYMBOL_GPL vmlinux 0x5febc52d kobject_move -EXPORT_SYMBOL_GPL vmlinux 0x5fef52c8 device_store_ulong -EXPORT_SYMBOL_GPL vmlinux 0x5ff20dbd sched_show_task EXPORT_SYMBOL_GPL vmlinux 0x5ffdec6a __tracepoint_cpu_frequency -EXPORT_SYMBOL_GPL vmlinux 0x600205b6 msg_zerocopy_callback EXPORT_SYMBOL_GPL vmlinux 0x60069ee1 inet_ehash_locks_alloc -EXPORT_SYMBOL_GPL vmlinux 0x600780a7 nfs42_ssc_register -EXPORT_SYMBOL_GPL vmlinux 0x60087cdb spi_res_release EXPORT_SYMBOL_GPL vmlinux 0x60091316 clk_notifier_register -EXPORT_SYMBOL_GPL vmlinux 0x6037f6ba spi_mem_dirmap_destroy +EXPORT_SYMBOL_GPL vmlinux 0x601e762a udp_sock_create6 EXPORT_SYMBOL_GPL vmlinux 0x603d0d51 acpi_os_map_iomem -EXPORT_SYMBOL_GPL vmlinux 0x60400779 is_skb_forwardable EXPORT_SYMBOL_GPL vmlinux 0x6041361e vring_del_virtqueue EXPORT_SYMBOL_GPL vmlinux 0x604722fd devices_cgrp_subsys_enabled_key -EXPORT_SYMBOL_GPL vmlinux 0x606104d8 devlink_remote_reload_actions_performed +EXPORT_SYMBOL_GPL vmlinux 0x6057afa3 skb_send_sock_locked EXPORT_SYMBOL_GPL vmlinux 0x6069fe8a iommu_iova_to_phys EXPORT_SYMBOL_GPL vmlinux 0x606b2bf4 irq_domain_alloc_irqs_parent EXPORT_SYMBOL_GPL vmlinux 0x60795884 dmi_kobj EXPORT_SYMBOL_GPL vmlinux 0x607c4683 devlink_info_version_fixed_put EXPORT_SYMBOL_GPL vmlinux 0x60869289 crypto_unregister_aead -EXPORT_SYMBOL_GPL vmlinux 0x60879819 __netif_set_xps_queue -EXPORT_SYMBOL_GPL vmlinux 0x608893d4 crypto_spawn_tfm2 +EXPORT_SYMBOL_GPL vmlinux 0x60895858 sched_trace_rq_cpu EXPORT_SYMBOL_GPL vmlinux 0x6091797f synchronize_rcu EXPORT_SYMBOL_GPL vmlinux 0x60a13e90 rcu_barrier EXPORT_SYMBOL_GPL vmlinux 0x60a5cd8b fuse_direct_io @@ -15307,13 +15305,14 @@ EXPORT_SYMBOL_GPL vmlinux 0x60c89d72 devm_nvdimm_memremap EXPORT_SYMBOL_GPL vmlinux 0x60d82d32 srcu_torture_stats_print EXPORT_SYMBOL_GPL vmlinux 0x60dfe07d locks_release_private +EXPORT_SYMBOL_GPL vmlinux 0x60e47040 __iptunnel_pull_header EXPORT_SYMBOL_GPL vmlinux 0x60ebc96f ring_buffer_read_prepare EXPORT_SYMBOL_GPL vmlinux 0x60f99e1b cppc_set_perf EXPORT_SYMBOL_GPL vmlinux 0x60f9ec9b ata_scsi_slave_destroy -EXPORT_SYMBOL_GPL vmlinux 0x60fcc55c __traceiter_neigh_event_send_done EXPORT_SYMBOL_GPL vmlinux 0x6104d4ae usb_phy_roothub_suspend EXPORT_SYMBOL_GPL vmlinux 0x6111b844 events_hybrid_sysfs_show EXPORT_SYMBOL_GPL vmlinux 0x611cfa85 klist_add_tail +EXPORT_SYMBOL_GPL vmlinux 0x61222b01 devlink_port_type_clear EXPORT_SYMBOL_GPL vmlinux 0x6129fb93 sfp_remove_phy EXPORT_SYMBOL_GPL vmlinux 0x612bfd89 errno_to_blk_status EXPORT_SYMBOL_GPL vmlinux 0x613f312f gpiod_get_array_optional @@ -15322,19 +15321,22 @@ EXPORT_SYMBOL_GPL vmlinux 0x6162d81a pm_clk_runtime_suspend EXPORT_SYMBOL_GPL vmlinux 0x6167812e dw_pcie_find_capability EXPORT_SYMBOL_GPL vmlinux 0x617b026c hwrng_register +EXPORT_SYMBOL_GPL vmlinux 0x617c1eb6 ip_tunnel_uninit EXPORT_SYMBOL_GPL vmlinux 0x6181e79f timerqueue_add EXPORT_SYMBOL_GPL vmlinux 0x6198dfea __ring_buffer_alloc EXPORT_SYMBOL_GPL vmlinux 0x6199ad5d crypto_has_skcipher EXPORT_SYMBOL_GPL vmlinux 0x619a551e blk_bio_list_merge EXPORT_SYMBOL_GPL vmlinux 0x619b14da fpstate_init EXPORT_SYMBOL_GPL vmlinux 0x619d2eca acpi_gpio_get_irq_resource -EXPORT_SYMBOL_GPL vmlinux 0x61a82c7d tcp_reno_cong_avoid EXPORT_SYMBOL_GPL vmlinux 0x61ae1d2d xas_pause EXPORT_SYMBOL_GPL vmlinux 0x61c079b7 clockevents_register_device EXPORT_SYMBOL_GPL vmlinux 0x61cc0662 balloon_page_enqueue +EXPORT_SYMBOL_GPL vmlinux 0x61da1028 __tracepoint_neigh_timer_handler +EXPORT_SYMBOL_GPL vmlinux 0x61e04585 ip6_redirect EXPORT_SYMBOL_GPL vmlinux 0x61e78570 devm_regulator_register_supply_alias -EXPORT_SYMBOL_GPL vmlinux 0x61ecbd75 ncsi_vlan_rx_add_vid +EXPORT_SYMBOL_GPL vmlinux 0x61ef7d71 ethnl_cable_test_fault_length EXPORT_SYMBOL_GPL vmlinux 0x61f67c92 phy_gbit_features_array +EXPORT_SYMBOL_GPL vmlinux 0x620e8c8d devlink_resources_unregister EXPORT_SYMBOL_GPL vmlinux 0x621323a6 devm_hwspin_lock_request_specific EXPORT_SYMBOL_GPL vmlinux 0x622c7922 register_oom_notifier EXPORT_SYMBOL_GPL vmlinux 0x62377a7b blk_io_schedule @@ -15344,7 +15346,6 @@ EXPORT_SYMBOL_GPL vmlinux 0x6258e209 pci_hp_del EXPORT_SYMBOL_GPL vmlinux 0x6259d291 clk_restore_context EXPORT_SYMBOL_GPL vmlinux 0x626a20fa regulator_get_exclusive -EXPORT_SYMBOL_GPL vmlinux 0x6273f8f4 proc_create_net_data_write EXPORT_SYMBOL_GPL vmlinux 0x627a7b82 __rt_mutex_init EXPORT_SYMBOL_GPL vmlinux 0x627bd61a da9052_request_irq EXPORT_SYMBOL_GPL vmlinux 0x6283bdfc regulator_force_disable @@ -15353,37 +15354,39 @@ EXPORT_SYMBOL_GPL vmlinux 0x62bb09bf clocks_calc_mult_shift EXPORT_SYMBOL_GPL vmlinux 0x62c3ea98 iommu_dev_enable_feature EXPORT_SYMBOL_GPL vmlinux 0x62c59102 usb_phy_roothub_resume +EXPORT_SYMBOL_GPL vmlinux 0x62d6a0c6 nvme_disable_ctrl EXPORT_SYMBOL_GPL vmlinux 0x62e1a6f2 fscrypt_prepare_new_inode +EXPORT_SYMBOL_GPL vmlinux 0x62f0b214 tcp_twsk_unique EXPORT_SYMBOL_GPL vmlinux 0x62f205ea thermal_zone_device_enable EXPORT_SYMBOL_GPL vmlinux 0x62f2b80f balloon_page_dequeue -EXPORT_SYMBOL_GPL vmlinux 0x62fef9ed ip_tunnel_rcv -EXPORT_SYMBOL_GPL vmlinux 0x630dddb4 sk_attach_filter +EXPORT_SYMBOL_GPL vmlinux 0x63106f51 spi_sync EXPORT_SYMBOL_GPL vmlinux 0x63150e06 clk_get_parent +EXPORT_SYMBOL_GPL vmlinux 0x6318d7a3 device_remove_groups EXPORT_SYMBOL_GPL vmlinux 0x63197685 s2idle_wake +EXPORT_SYMBOL_GPL vmlinux 0x632195f2 devlink_params_unregister EXPORT_SYMBOL_GPL vmlinux 0x6329bcf1 synth_event_trace_start -EXPORT_SYMBOL_GPL vmlinux 0x63401929 __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0x633522a3 __tracepoint_sched_util_est_se_tp +EXPORT_SYMBOL_GPL vmlinux 0x633b73c3 devlink_port_register EXPORT_SYMBOL_GPL vmlinux 0x6340434e x86_model +EXPORT_SYMBOL_GPL vmlinux 0x636a1ed3 __udp_gso_segment EXPORT_SYMBOL_GPL vmlinux 0x637bc20f tty_port_register_device_serdev -EXPORT_SYMBOL_GPL vmlinux 0x637cc822 inet_twsk_put +EXPORT_SYMBOL_GPL vmlinux 0x637c6834 fib_rules_unregister EXPORT_SYMBOL_GPL vmlinux 0x638a9653 memory_add_physaddr_to_nid EXPORT_SYMBOL_GPL vmlinux 0x638aff11 proc_douintvec_minmax -EXPORT_SYMBOL_GPL vmlinux 0x63a630c7 net_ns_get_ownership -EXPORT_SYMBOL_GPL vmlinux 0x63a891c9 device_property_read_u16_array EXPORT_SYMBOL_GPL vmlinux 0x63b40e1e badblocks_store EXPORT_SYMBOL_GPL vmlinux 0x63bbe76a tick_nohz_dep_clear_task EXPORT_SYMBOL_GPL vmlinux 0x63c08029 clk_bulk_unprepare +EXPORT_SYMBOL_GPL vmlinux 0x63c317c4 fwnode_property_read_string EXPORT_SYMBOL_GPL vmlinux 0x63ca3881 irq_domain_xlate_onecell +EXPORT_SYMBOL_GPL vmlinux 0x63e4ad20 mptcp_token_get_sock EXPORT_SYMBOL_GPL vmlinux 0x63ea80b3 cper_mem_err_type_str -EXPORT_SYMBOL_GPL vmlinux 0x63fcac4c nvme_cancel_tagset -EXPORT_SYMBOL_GPL vmlinux 0x640a8c93 devlink_port_param_value_changed +EXPORT_SYMBOL_GPL vmlinux 0x6403f820 devm_spi_register_controller EXPORT_SYMBOL_GPL vmlinux 0x641f0f5c ata_sff_data_xfer32 -EXPORT_SYMBOL_GPL vmlinux 0x64221421 __netpoll_free EXPORT_SYMBOL_GPL vmlinux 0x642e3824 pci_epf_free_space EXPORT_SYMBOL_GPL vmlinux 0x6441a69f rio_map_outb_region EXPORT_SYMBOL_GPL vmlinux 0x6467bf42 crypto_register_shash EXPORT_SYMBOL_GPL vmlinux 0x646f1af7 cpufreq_table_index_unsorted -EXPORT_SYMBOL_GPL vmlinux 0x64789d67 nvme_try_sched_reset -EXPORT_SYMBOL_GPL vmlinux 0x6478b59d fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x6484acef spi_alloc_device EXPORT_SYMBOL_GPL vmlinux 0x648e8031 modify_user_hw_breakpoint EXPORT_SYMBOL_GPL vmlinux 0x64925270 __dax_synchronous EXPORT_SYMBOL_GPL vmlinux 0x64944bd4 pm_generic_thaw_noirq @@ -15395,28 +15398,29 @@ EXPORT_SYMBOL_GPL vmlinux 0x64b71173 reserve_iova EXPORT_SYMBOL_GPL vmlinux 0x64b9e187 edac_pci_add_device EXPORT_SYMBOL_GPL vmlinux 0x64d3cc4e xas_load -EXPORT_SYMBOL_GPL vmlinux 0x64d59972 devlink_register EXPORT_SYMBOL_GPL vmlinux 0x64e27c4f synth_event_delete -EXPORT_SYMBOL_GPL vmlinux 0x64f195c6 inet6_hash_connect EXPORT_SYMBOL_GPL vmlinux 0x64f36620 dax_flush +EXPORT_SYMBOL_GPL vmlinux 0x64f8cc1f nvme_shutdown_ctrl EXPORT_SYMBOL_GPL vmlinux 0x64faf25c vprintk_default EXPORT_SYMBOL_GPL vmlinux 0x6504665b rt_mutex_unlock -EXPORT_SYMBOL_GPL vmlinux 0x6513fb69 rtnl_get_net_ns_capable EXPORT_SYMBOL_GPL vmlinux 0x6527a231 dbgp_external_startup EXPORT_SYMBOL_GPL vmlinux 0x652d9907 pm_runtime_autosuspend_expiration EXPORT_SYMBOL_GPL vmlinux 0x6531a37f mpi_add EXPORT_SYMBOL_GPL vmlinux 0x653da6ed edac_pci_free_ctl_info -EXPORT_SYMBOL_GPL vmlinux 0x6568a628 crypto_stats_skcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0x6556dc47 mdiobus_modify +EXPORT_SYMBOL_GPL vmlinux 0x6556fc1f devlink_port_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0x65692930 devlink_port_attrs_pci_vf_set EXPORT_SYMBOL_GPL vmlinux 0x65704d22 hv_stimer_cleanup -EXPORT_SYMBOL_GPL vmlinux 0x657e048e ip_route_output_tunnel EXPORT_SYMBOL_GPL vmlinux 0x65971014 vmbus_set_sc_create_callback EXPORT_SYMBOL_GPL vmlinux 0x65ccb6f0 call_netevent_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x65ddeb40 crypto_stats_ahash_final EXPORT_SYMBOL_GPL vmlinux 0x65f9b449 usb_hcd_giveback_urb EXPORT_SYMBOL_GPL vmlinux 0x6605f208 __fscrypt_prepare_lookup +EXPORT_SYMBOL_GPL vmlinux 0x660f33f6 ethnl_cable_test_free EXPORT_SYMBOL_GPL vmlinux 0x661601de sprint_symbol EXPORT_SYMBOL_GPL vmlinux 0x66286585 to_software_node EXPORT_SYMBOL_GPL vmlinux 0x66316de7 uhci_reset_hc -EXPORT_SYMBOL_GPL vmlinux 0x66326cba perf_event_disable +EXPORT_SYMBOL_GPL vmlinux 0x663645cb devlink_region_snapshot_id_get EXPORT_SYMBOL_GPL vmlinux 0x6636c3c9 irq_set_vcpu_affinity EXPORT_SYMBOL_GPL vmlinux 0x663bb448 devlink_fmsg_obj_nest_end EXPORT_SYMBOL_GPL vmlinux 0x664068ef rtc_class_open @@ -15425,12 +15429,16 @@ EXPORT_SYMBOL_GPL vmlinux 0x6656ee49 page_reporting_register EXPORT_SYMBOL_GPL vmlinux 0x665afc13 dma_buf_get EXPORT_SYMBOL_GPL vmlinux 0x665e92a0 clk_set_duty_cycle +EXPORT_SYMBOL_GPL vmlinux 0x66617965 inet6_sk_rebuild_header EXPORT_SYMBOL_GPL vmlinux 0x66707ff0 fuse_conn_init +EXPORT_SYMBOL_GPL vmlinux 0x66755fe9 ping_queue_rcv_skb EXPORT_SYMBOL_GPL vmlinux 0x667f10bc tpm_get_timeouts EXPORT_SYMBOL_GPL vmlinux 0x668402aa crypto_put_default_rng EXPORT_SYMBOL_GPL vmlinux 0x66862686 ata_sas_slave_configure EXPORT_SYMBOL_GPL vmlinux 0x66893899 crypto_comp_compress EXPORT_SYMBOL_GPL vmlinux 0x668a0e83 usb_debug_root +EXPORT_SYMBOL_GPL vmlinux 0x6696a406 __SCK__tp_func_devlink_trap_report +EXPORT_SYMBOL_GPL vmlinux 0x66a339a7 fixed_phy_change_carrier EXPORT_SYMBOL_GPL vmlinux 0x66ae4727 mdio_bus_init EXPORT_SYMBOL_GPL vmlinux 0x66b26b2b clk_hw_unregister_divider EXPORT_SYMBOL_GPL vmlinux 0x66b97421 sfp_link_up @@ -15439,32 +15447,32 @@ EXPORT_SYMBOL_GPL vmlinux 0x66d8d001 thermal_cooling_device_register EXPORT_SYMBOL_GPL vmlinux 0x66ec7b9d sysfs_unmerge_group EXPORT_SYMBOL_GPL vmlinux 0x66f2ff62 to_nd_region +EXPORT_SYMBOL_GPL vmlinux 0x66faf6a6 ip6_datagram_connect EXPORT_SYMBOL_GPL vmlinux 0x6735d56e tcp_ca_get_name_by_key +EXPORT_SYMBOL_GPL vmlinux 0x674463cf device_property_read_string_array EXPORT_SYMBOL_GPL vmlinux 0x674b396a iommu_domain_alloc EXPORT_SYMBOL_GPL vmlinux 0x674ccc65 noop_direct_IO EXPORT_SYMBOL_GPL vmlinux 0x674d83d7 usb_get_status +EXPORT_SYMBOL_GPL vmlinux 0x675450ce skb_tstamp_tx EXPORT_SYMBOL_GPL vmlinux 0x6759bd00 __SCT__tp_func_rpm_idle EXPORT_SYMBOL_GPL vmlinux 0x677ed6ff regmap_mmio_attach_clk EXPORT_SYMBOL_GPL vmlinux 0x677f00fb debugfs_create_symlink +EXPORT_SYMBOL_GPL vmlinux 0x6784f8ae mptcp_subflow_request_sock_ops EXPORT_SYMBOL_GPL vmlinux 0x6790ebd3 mce_is_memory_error EXPORT_SYMBOL_GPL vmlinux 0x67955ce6 profile_hits -EXPORT_SYMBOL_GPL vmlinux 0x679c2d9a nvme_change_ctrl_state EXPORT_SYMBOL_GPL vmlinux 0x67a04659 __SCK__tp_func_mc_event EXPORT_SYMBOL_GPL vmlinux 0x67a8c55e iomap_releasepage -EXPORT_SYMBOL_GPL vmlinux 0x67b73f9f device_remove_groups +EXPORT_SYMBOL_GPL vmlinux 0x67bd92d9 __sock_recv_timestamp EXPORT_SYMBOL_GPL vmlinux 0x67be4a59 pci_msi_unmask_irq EXPORT_SYMBOL_GPL vmlinux 0x67c0b7e7 dw_pcie_ep_init EXPORT_SYMBOL_GPL vmlinux 0x67c41302 rio_mport_initialize -EXPORT_SYMBOL_GPL vmlinux 0x67c95b2c perf_event_create_kernel_counter EXPORT_SYMBOL_GPL vmlinux 0x67da9f7c sha512_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x67efbe33 __fib_lookup EXPORT_SYMBOL_GPL vmlinux 0x67f21151 thermal_cooling_device_unregister EXPORT_SYMBOL_GPL vmlinux 0x67f25e2b power_supply_get_drvdata EXPORT_SYMBOL_GPL vmlinux 0x68006cdd __SCK__tp_func_remove_device_from_group -EXPORT_SYMBOL_GPL vmlinux 0x681bcd80 nf_queue_nf_hook_drop EXPORT_SYMBOL_GPL vmlinux 0x681fdb21 __pm_runtime_suspend -EXPORT_SYMBOL_GPL vmlinux 0x682201f7 sk_psock_drop EXPORT_SYMBOL_GPL vmlinux 0x68242d43 devres_get -EXPORT_SYMBOL_GPL vmlinux 0x682ee665 fib_rules_unregister EXPORT_SYMBOL_GPL vmlinux 0x682ff057 ring_buffer_commit_overrun_cpu EXPORT_SYMBOL_GPL vmlinux 0x6839b0a4 sysfs_create_file_ns EXPORT_SYMBOL_GPL vmlinux 0x683d78bb phy_resolve_aneg_pause @@ -15475,81 +15483,80 @@ EXPORT_SYMBOL_GPL vmlinux 0x6878a97f ata_sff_irq_on EXPORT_SYMBOL_GPL vmlinux 0x6879fac9 dma_buf_pin EXPORT_SYMBOL_GPL vmlinux 0x68952493 rcu_note_context_switch +EXPORT_SYMBOL_GPL vmlinux 0x689afa10 vxlan_fdb_replay EXPORT_SYMBOL_GPL vmlinux 0x68af3f94 irqd_cfg +EXPORT_SYMBOL_GPL vmlinux 0x68ceedbd devlink_remote_reload_actions_performed EXPORT_SYMBOL_GPL vmlinux 0x68d7a995 irq_domain_create_legacy -EXPORT_SYMBOL_GPL vmlinux 0x68dbacdd spi_finalize_current_message -EXPORT_SYMBOL_GPL vmlinux 0x68e031d2 tcp_slow_start -EXPORT_SYMBOL_GPL vmlinux 0x69089dc0 spi_get_device_id EXPORT_SYMBOL_GPL vmlinux 0x690f585e phy_basic_ports_array +EXPORT_SYMBOL_GPL vmlinux 0x69168e6e init_pid_ns EXPORT_SYMBOL_GPL vmlinux 0x692f1659 blk_queue_set_zoned EXPORT_SYMBOL_GPL vmlinux 0x692fb21a dev_pm_qos_expose_latency_tolerance EXPORT_SYMBOL_GPL vmlinux 0x6958ae23 dax_get_by_host EXPORT_SYMBOL_GPL vmlinux 0x696340a5 __i2c_board_lock EXPORT_SYMBOL_GPL vmlinux 0x69637b2c __traceiter_powernv_throttle -EXPORT_SYMBOL_GPL vmlinux 0x69676aa4 perf_trace_run_bpf_submit +EXPORT_SYMBOL_GPL vmlinux 0x6967fb4a devlink_flash_update_status_notify EXPORT_SYMBOL_GPL vmlinux 0x696d7e0b l1tf_mitigation EXPORT_SYMBOL_GPL vmlinux 0x69701d41 nvdimm_flush EXPORT_SYMBOL_GPL vmlinux 0x697c5d0d tracing_snapshot_alloc EXPORT_SYMBOL_GPL vmlinux 0x698196fb devfreq_get_devfreq_by_phandle -EXPORT_SYMBOL_GPL vmlinux 0x6991173d spi_alloc_device EXPORT_SYMBOL_GPL vmlinux 0x69c34c3b devm_regulator_register -EXPORT_SYMBOL_GPL vmlinux 0x69ca99a6 perf_pmu_migrate_context EXPORT_SYMBOL_GPL vmlinux 0x69cf0632 mpi_fromstr -EXPORT_SYMBOL_GPL vmlinux 0x69cf876c addrconf_add_linklocal EXPORT_SYMBOL_GPL vmlinux 0x69e683de uuid_gen EXPORT_SYMBOL_GPL vmlinux 0x69ee2220 linear_range_get_selector_high EXPORT_SYMBOL_GPL vmlinux 0x69f9fa10 devm_kstrdup EXPORT_SYMBOL_GPL vmlinux 0x6a019b5e auxiliary_device_init EXPORT_SYMBOL_GPL vmlinux 0x6a1733eb iommu_group_unregister_notifier EXPORT_SYMBOL_GPL vmlinux 0x6a1fe862 device_remove_software_node +EXPORT_SYMBOL_GPL vmlinux 0x6a2e8757 fwnode_find_reference EXPORT_SYMBOL_GPL vmlinux 0x6a421062 memory_failure_queue EXPORT_SYMBOL_GPL vmlinux 0x6a460dc5 schedule_hrtimeout -EXPORT_SYMBOL_GPL vmlinux 0x6a491dd6 ip6_redirect EXPORT_SYMBOL_GPL vmlinux 0x6a4f623b mmu_notifier_synchronize EXPORT_SYMBOL_GPL vmlinux 0x6a571720 ata_dev_next +EXPORT_SYMBOL_GPL vmlinux 0x6a5e28a2 __skb_tstamp_tx EXPORT_SYMBOL_GPL vmlinux 0x6a5e2bde __cookie_v6_init_sequence EXPORT_SYMBOL_GPL vmlinux 0x6a7a6d8a sysfs_merge_group EXPORT_SYMBOL_GPL vmlinux 0x6a8441be cpci_hp_start EXPORT_SYMBOL_GPL vmlinux 0x6aac42a8 follow_pte -EXPORT_SYMBOL_GPL vmlinux 0x6abb3daa fib_rule_matchall EXPORT_SYMBOL_GPL vmlinux 0x6abbc027 dma_free_noncontiguous -EXPORT_SYMBOL_GPL vmlinux 0x6ad63522 iptunnel_xmit +EXPORT_SYMBOL_GPL vmlinux 0x6ad72620 inet_csk_addr2sockaddr EXPORT_SYMBOL_GPL vmlinux 0x6ad9ee89 blkcg_deactivate_policy +EXPORT_SYMBOL_GPL vmlinux 0x6af092d9 xfrm_local_error EXPORT_SYMBOL_GPL vmlinux 0x6affb503 rio_set_port_lockout -EXPORT_SYMBOL_GPL vmlinux 0x6b10f9df br_ip6_fragment +EXPORT_SYMBOL_GPL vmlinux 0x6b0cb285 ipv4_sk_update_pmtu EXPORT_SYMBOL_GPL vmlinux 0x6b198c77 led_colors -EXPORT_SYMBOL_GPL vmlinux 0x6b1db350 cgroup_get_from_path +EXPORT_SYMBOL_GPL vmlinux 0x6b1e5eaf spi_res_release EXPORT_SYMBOL_GPL vmlinux 0x6b1e7151 auxiliary_driver_unregister EXPORT_SYMBOL_GPL vmlinux 0x6b2b69f7 static_key_enable EXPORT_SYMBOL_GPL vmlinux 0x6b35a16b intel_scu_ipc_dev_get -EXPORT_SYMBOL_GPL vmlinux 0x6b39c5c5 device_match_any EXPORT_SYMBOL_GPL vmlinux 0x6b3ae022 acpi_os_unmap_iomem EXPORT_SYMBOL_GPL vmlinux 0x6b409042 pinctrl_utils_add_map_configs EXPORT_SYMBOL_GPL vmlinux 0x6b413c9b sfp_link_down EXPORT_SYMBOL_GPL vmlinux 0x6b46b41b phy_power_on +EXPORT_SYMBOL_GPL vmlinux 0x6b577b7a __spi_register_driver +EXPORT_SYMBOL_GPL vmlinux 0x6b5ede52 mptcp_pm_get_add_addr_signal_max EXPORT_SYMBOL_GPL vmlinux 0x6b72dab3 scsi_get_vpd_page EXPORT_SYMBOL_GPL vmlinux 0x6b74929b zap_vma_ptes EXPORT_SYMBOL_GPL vmlinux 0x6b790a95 irq_domain_update_bus_token EXPORT_SYMBOL_GPL vmlinux 0x6b7a4335 hyperv_cleanup EXPORT_SYMBOL_GPL vmlinux 0x6b81c38b power_supply_unreg_notifier EXPORT_SYMBOL_GPL vmlinux 0x6b83cfed usb_wakeup_notification -EXPORT_SYMBOL_GPL vmlinux 0x6b9983bd tcp_register_ulp EXPORT_SYMBOL_GPL vmlinux 0x6ba36c6a hwpoison_filter_flags_value EXPORT_SYMBOL_GPL vmlinux 0x6baa1e2a pci_store_saved_state -EXPORT_SYMBOL_GPL vmlinux 0x6bad9793 switchdev_port_attr_set +EXPORT_SYMBOL_GPL vmlinux 0x6bad6669 nexthop_for_each_fib6_nh EXPORT_SYMBOL_GPL vmlinux 0x6bcd9a55 serial8250_rpm_put_tx EXPORT_SYMBOL_GPL vmlinux 0x6bcdedc0 mpi_point_init EXPORT_SYMBOL_GPL vmlinux 0x6bcf33bd devm_gpiod_put +EXPORT_SYMBOL_GPL vmlinux 0x6bcf71ed rtnl_register_module EXPORT_SYMBOL_GPL vmlinux 0x6bd1aa56 stack_trace_save EXPORT_SYMBOL_GPL vmlinux 0x6bdef35c acpi_ec_mark_gpe_for_wake +EXPORT_SYMBOL_GPL vmlinux 0x6be31b4a bpf_prog_destroy EXPORT_SYMBOL_GPL vmlinux 0x6be3a96b hv_remove_vmbus_handler EXPORT_SYMBOL_GPL vmlinux 0x6c205008 mpi_print -EXPORT_SYMBOL_GPL vmlinux 0x6c27a567 __traceiter_kfree_skb EXPORT_SYMBOL_GPL vmlinux 0x6c3093ea regulator_bulk_unregister_supply_alias EXPORT_SYMBOL_GPL vmlinux 0x6c389761 acpi_bus_get_private_data EXPORT_SYMBOL_GPL vmlinux 0x6c3b612b acpi_ec_add_query_handler EXPORT_SYMBOL_GPL vmlinux 0x6c3f70e0 guid_gen -EXPORT_SYMBOL_GPL vmlinux 0x6c40cf16 tcp_unregister_ulp +EXPORT_SYMBOL_GPL vmlinux 0x6c47025b metadata_dst_alloc_percpu EXPORT_SYMBOL_GPL vmlinux 0x6c4b6684 reset_control_assert EXPORT_SYMBOL_GPL vmlinux 0x6c5ad0cd kmsg_dump_register EXPORT_SYMBOL_GPL vmlinux 0x6c654b5a event_triggers_post_call @@ -15562,9 +15569,7 @@ EXPORT_SYMBOL_GPL vmlinux 0x6cc5d4e1 ack_all_badblocks EXPORT_SYMBOL_GPL vmlinux 0x6cd346bc tpm1_do_selftest EXPORT_SYMBOL_GPL vmlinux 0x6ce02f3e icc_get -EXPORT_SYMBOL_GPL vmlinux 0x6cf45ebf inet6_csk_addr2sockaddr EXPORT_SYMBOL_GPL vmlinux 0x6cf873e1 hvc_instantiate -EXPORT_SYMBOL_GPL vmlinux 0x6cfb6b91 metadata_dst_alloc EXPORT_SYMBOL_GPL vmlinux 0x6d040d4d acpi_initialize_hp_context EXPORT_SYMBOL_GPL vmlinux 0x6d04891d inet_getpeer EXPORT_SYMBOL_GPL vmlinux 0x6d09843f copy_bpf_fprog_from_user @@ -15573,7 +15578,6 @@ EXPORT_SYMBOL_GPL vmlinux 0x6d26241c dax_layout_busy_page_range EXPORT_SYMBOL_GPL vmlinux 0x6d2e899d mce_usable_address EXPORT_SYMBOL_GPL vmlinux 0x6d2fc5a6 net_namespace_list -EXPORT_SYMBOL_GPL vmlinux 0x6d5d1c26 raw_unhash_sk EXPORT_SYMBOL_GPL vmlinux 0x6d60f665 __vfs_removexattr_noperm EXPORT_SYMBOL_GPL vmlinux 0x6d6644f8 ata_sff_thaw EXPORT_SYMBOL_GPL vmlinux 0x6d6fec1f ktime_mono_to_any @@ -15582,16 +15586,18 @@ EXPORT_SYMBOL_GPL vmlinux 0x6d8e5243 acpi_dev_get_property EXPORT_SYMBOL_GPL vmlinux 0x6d909a3a ata_cable_ignore EXPORT_SYMBOL_GPL vmlinux 0x6d937a73 sysfs_remove_file_from_group -EXPORT_SYMBOL_GPL vmlinux 0x6d93b28d fwnode_get_next_parent EXPORT_SYMBOL_GPL vmlinux 0x6dbaafd3 put_old_timespec32 EXPORT_SYMBOL_GPL vmlinux 0x6dbea6f5 reset_controller_unregister EXPORT_SYMBOL_GPL vmlinux 0x6dcdf6df sysfs_create_files EXPORT_SYMBOL_GPL vmlinux 0x6ddb35cf mbox_controller_unregister -EXPORT_SYMBOL_GPL vmlinux 0x6dececf4 __SCK__tp_func_pelt_se_tp +EXPORT_SYMBOL_GPL vmlinux 0x6de9ff95 find_get_pid +EXPORT_SYMBOL_GPL vmlinux 0x6dea42ab switchdev_handle_port_obj_add EXPORT_SYMBOL_GPL vmlinux 0x6df447d1 handle_fasteoi_irq +EXPORT_SYMBOL_GPL vmlinux 0x6dfcb617 sk_setup_caps EXPORT_SYMBOL_GPL vmlinux 0x6e00fcfb modify_ftrace_direct +EXPORT_SYMBOL_GPL vmlinux 0x6e0ba22f bpf_trace_run9 +EXPORT_SYMBOL_GPL vmlinux 0x6e17f75c crypto_register_alg EXPORT_SYMBOL_GPL vmlinux 0x6e19ed72 hwspin_lock_free -EXPORT_SYMBOL_GPL vmlinux 0x6e1b75ba __traceiter_pelt_dl_tp EXPORT_SYMBOL_GPL vmlinux 0x6e256885 md_run EXPORT_SYMBOL_GPL vmlinux 0x6e26b88c pm_generic_thaw EXPORT_SYMBOL_GPL vmlinux 0x6e3ff83a edac_device_alloc_index @@ -15599,42 +15605,45 @@ EXPORT_SYMBOL_GPL vmlinux 0x6e4bc056 spi_res_free EXPORT_SYMBOL_GPL vmlinux 0x6e59928e usb_anchor_urb EXPORT_SYMBOL_GPL vmlinux 0x6e59a57b pci_find_next_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0x6e613e90 perf_event_release_kernel EXPORT_SYMBOL_GPL vmlinux 0x6e63142b posix_clock_unregister +EXPORT_SYMBOL_GPL vmlinux 0x6e6334e8 devlink_trap_groups_unregister EXPORT_SYMBOL_GPL vmlinux 0x6e7943ec iommu_group_id EXPORT_SYMBOL_GPL vmlinux 0x6e84b507 tick_nohz_dep_set_task EXPORT_SYMBOL_GPL vmlinux 0x6e85b00b local_touch_nmi EXPORT_SYMBOL_GPL vmlinux 0x6e860c26 __cpuhp_state_remove_instance EXPORT_SYMBOL_GPL vmlinux 0x6e89a560 regmap_irq_chip_get_base EXPORT_SYMBOL_GPL vmlinux 0x6ea714ae fsverity_verify_page +EXPORT_SYMBOL_GPL vmlinux 0x6ebb29a7 bpf_trace_run12 EXPORT_SYMBOL_GPL vmlinux 0x6ebe366f ktime_get_mono_fast_ns -EXPORT_SYMBOL_GPL vmlinux 0x6ed087a4 nf_queue_entry_free EXPORT_SYMBOL_GPL vmlinux 0x6ee04bb2 dev_pm_opp_remove_all_dynamic EXPORT_SYMBOL_GPL vmlinux 0x6ee73622 crypto_aead_encrypt EXPORT_SYMBOL_GPL vmlinux 0x6ee8c94b sfp_get_module_eeprom EXPORT_SYMBOL_GPL vmlinux 0x6ef64c41 usb_acpi_set_power_state EXPORT_SYMBOL_GPL vmlinux 0x6ef6b54f ktime_get_boot_fast_ns +EXPORT_SYMBOL_GPL vmlinux 0x6ef8b0ba __SCK__tp_func_sched_update_nr_running_tp EXPORT_SYMBOL_GPL vmlinux 0x6f12560a get_old_timespec32 EXPORT_SYMBOL_GPL vmlinux 0x6f15694b usb_unanchor_urb EXPORT_SYMBOL_GPL vmlinux 0x6f16c9e2 crypto_shash_digest -EXPORT_SYMBOL_GPL vmlinux 0x6f2127e8 __dev_forward_skb -EXPORT_SYMBOL_GPL vmlinux 0x6f2b072f __rtnl_link_unregister EXPORT_SYMBOL_GPL vmlinux 0x6f31dbf1 usb_store_new_id EXPORT_SYMBOL_GPL vmlinux 0x6f503c9e ata_sff_dev_select EXPORT_SYMBOL_GPL vmlinux 0x6f5a8766 irq_domain_get_irq_data +EXPORT_SYMBOL_GPL vmlinux 0x6f5bf60c nf_hook_entries_insert_raw EXPORT_SYMBOL_GPL vmlinux 0x6f5eee74 usb_asmedia_modifyflowcontrol EXPORT_SYMBOL_GPL vmlinux 0x6f77b098 usb_find_alt_setting EXPORT_SYMBOL_GPL vmlinux 0x6f7e6040 irq_has_action +EXPORT_SYMBOL_GPL vmlinux 0x6f933802 devm_device_remove_group EXPORT_SYMBOL_GPL vmlinux 0x6f95bb84 sbitmap_queue_init_node EXPORT_SYMBOL_GPL vmlinux 0x6f9da560 ata_host_detach EXPORT_SYMBOL_GPL vmlinux 0x6f9e763b timecounter_read -EXPORT_SYMBOL_GPL vmlinux 0x6fbd7647 fwnode_property_get_reference_args EXPORT_SYMBOL_GPL vmlinux 0x6fcef6ab ring_buffer_reset EXPORT_SYMBOL_GPL vmlinux 0x6fcfe549 devm_phy_create +EXPORT_SYMBOL_GPL vmlinux 0x6fdbe93f crypto_spawn_tfm2 EXPORT_SYMBOL_GPL vmlinux 0x6ff607b6 crypto_get_default_rng EXPORT_SYMBOL_GPL vmlinux 0x6ff74a1f unregister_hw_breakpoint EXPORT_SYMBOL_GPL vmlinux 0x6ff837b2 ftrace_ops_set_global_filter EXPORT_SYMBOL_GPL vmlinux 0x6ffce680 x86_cpu_has_min_microcode_rev -EXPORT_SYMBOL_GPL vmlinux 0x7001b06b xfrm_dev_offload_ok +EXPORT_SYMBOL_GPL vmlinux 0x6ffe6c8d spi_mem_dtr_supports_op EXPORT_SYMBOL_GPL vmlinux 0x70029532 pci_destroy_slot EXPORT_SYMBOL_GPL vmlinux 0x7006586e iommu_get_group_resv_regions EXPORT_SYMBOL_GPL vmlinux 0x700b9d45 ata_do_dev_read_id @@ -15643,13 +15652,13 @@ EXPORT_SYMBOL_GPL vmlinux 0x70223264 ata_bmdma_port_start32 EXPORT_SYMBOL_GPL vmlinux 0x70235a4f dax_copy_from_iter EXPORT_SYMBOL_GPL vmlinux 0x7026d45a genphy_c45_read_status +EXPORT_SYMBOL_GPL vmlinux 0x702727cd net_selftest EXPORT_SYMBOL_GPL vmlinux 0x702bf592 synth_event_gen_cmd_array_start -EXPORT_SYMBOL_GPL vmlinux 0x7037e97b ethnl_cable_test_pulse -EXPORT_SYMBOL_GPL vmlinux 0x70431251 __traceiter_sched_update_nr_running_tp EXPORT_SYMBOL_GPL vmlinux 0x7055c56e __sbitmap_queue_get_shallow EXPORT_SYMBOL_GPL vmlinux 0x70576fee acpi_processor_ffh_cstate_probe EXPORT_SYMBOL_GPL vmlinux 0x7073c04f phy_10_100_features_array -EXPORT_SYMBOL_GPL vmlinux 0x707c3ecc __tracepoint_neigh_update_done +EXPORT_SYMBOL_GPL vmlinux 0x708aa18f xfrm_output_resume +EXPORT_SYMBOL_GPL vmlinux 0x70a570a0 crypto_stats_skcipher_decrypt EXPORT_SYMBOL_GPL vmlinux 0x70af34ed cpci_hp_register_controller EXPORT_SYMBOL_GPL vmlinux 0x70b817ee ata_host_alloc_pinfo EXPORT_SYMBOL_GPL vmlinux 0x70c2c7ea pids_cgrp_subsys_on_dfl_key @@ -15659,14 +15668,16 @@ EXPORT_SYMBOL_GPL vmlinux 0x70cf032f usb_hcd_irq EXPORT_SYMBOL_GPL vmlinux 0x70d10c34 led_set_brightness_nopm EXPORT_SYMBOL_GPL vmlinux 0x70d75e3d serial8250_do_get_mctrl +EXPORT_SYMBOL_GPL vmlinux 0x70e79a58 __strp_unpause EXPORT_SYMBOL_GPL vmlinux 0x70e7e73a fat_scan +EXPORT_SYMBOL_GPL vmlinux 0x70ec8d82 crypto_spawn_tfm EXPORT_SYMBOL_GPL vmlinux 0x70f18bfa usb_enable_autosuspend -EXPORT_SYMBOL_GPL vmlinux 0x70f34922 bpf_trace_run3 EXPORT_SYMBOL_GPL vmlinux 0x70fd63d3 devm_phy_destroy EXPORT_SYMBOL_GPL vmlinux 0x710c73b6 crypto_unregister_notifier EXPORT_SYMBOL_GPL vmlinux 0x71119650 tty_init_termios EXPORT_SYMBOL_GPL vmlinux 0x7112359a get_task_mm EXPORT_SYMBOL_GPL vmlinux 0x711aee67 firmware_kobj +EXPORT_SYMBOL_GPL vmlinux 0x7120419a crypto_dequeue_request EXPORT_SYMBOL_GPL vmlinux 0x71234cc6 virtqueue_get_avail_addr EXPORT_SYMBOL_GPL vmlinux 0x7129a6f4 osc_sb_native_usb4_support_confirmed EXPORT_SYMBOL_GPL vmlinux 0x716265c7 debugfs_initialized @@ -15675,19 +15686,17 @@ EXPORT_SYMBOL_GPL vmlinux 0x717355b8 sysfs_remove_file_ns EXPORT_SYMBOL_GPL vmlinux 0x717e8255 __SCK__tp_func_cpu_idle EXPORT_SYMBOL_GPL vmlinux 0x7181db30 atomic_notifier_chain_unregister -EXPORT_SYMBOL_GPL vmlinux 0x71916f1a devlink_param_value_changed EXPORT_SYMBOL_GPL vmlinux 0x71927925 gpiochip_generic_config EXPORT_SYMBOL_GPL vmlinux 0x719e17ff clk_notifier_unregister EXPORT_SYMBOL_GPL vmlinux 0x719e668c pcie_has_flr EXPORT_SYMBOL_GPL vmlinux 0x719fd587 debugfs_create_u32_array -EXPORT_SYMBOL_GPL vmlinux 0x71a398a2 nl_table +EXPORT_SYMBOL_GPL vmlinux 0x71a11128 pingv6_ops EXPORT_SYMBOL_GPL vmlinux 0x71abb9c6 acomp_request_free EXPORT_SYMBOL_GPL vmlinux 0x71b15008 lwtunnel_valid_encap_type EXPORT_SYMBOL_GPL vmlinux 0x71c059d8 __traceiter_map EXPORT_SYMBOL_GPL vmlinux 0x71c508bb gpiochip_populate_parent_fwspec_twocell +EXPORT_SYMBOL_GPL vmlinux 0x71c70c7e sched_set_fifo EXPORT_SYMBOL_GPL vmlinux 0x71c79e96 icc_provider_add -EXPORT_SYMBOL_GPL vmlinux 0x71cb19d3 crypto_stats_get -EXPORT_SYMBOL_GPL vmlinux 0x71e63c05 sk_msg_free EXPORT_SYMBOL_GPL vmlinux 0x71f6670b __cookie_v6_check EXPORT_SYMBOL_GPL vmlinux 0x71fbd5c0 pci_epc_mem_alloc_addr EXPORT_SYMBOL_GPL vmlinux 0x720265b8 mmu_interval_read_begin @@ -15695,61 +15704,60 @@ EXPORT_SYMBOL_GPL vmlinux 0x722171ae rio_unregister_scan EXPORT_SYMBOL_GPL vmlinux 0x72263973 edac_mc_free EXPORT_SYMBOL_GPL vmlinux 0x72279779 serial8250_modem_status -EXPORT_SYMBOL_GPL vmlinux 0x72380524 ip_icmp_error_rfc4884 +EXPORT_SYMBOL_GPL vmlinux 0x7238e7e4 ping_getfrag EXPORT_SYMBOL_GPL vmlinux 0x723baba6 md_start EXPORT_SYMBOL_GPL vmlinux 0x72498935 replace_page_cache_page -EXPORT_SYMBOL_GPL vmlinux 0x724f0343 ip6_dst_lookup EXPORT_SYMBOL_GPL vmlinux 0x725ecd4f rt_mutex_lock_interruptible +EXPORT_SYMBOL_GPL vmlinux 0x7263ab7c spi_sync_locked EXPORT_SYMBOL_GPL vmlinux 0x726933dc xhci_get_ep_ctx EXPORT_SYMBOL_GPL vmlinux 0x7270658f irq_set_chained_handler_and_data -EXPORT_SYMBOL_GPL vmlinux 0x72713673 lwtstate_free EXPORT_SYMBOL_GPL vmlinux 0x7274d2d3 tpm_try_get_ops EXPORT_SYMBOL_GPL vmlinux 0x7278d328 all_vm_events +EXPORT_SYMBOL_GPL vmlinux 0x727f656c lwtunnel_xmit EXPORT_SYMBOL_GPL vmlinux 0x72821b64 efivars_kobject EXPORT_SYMBOL_GPL vmlinux 0x7283161b percpu_ref_switch_to_percpu -EXPORT_SYMBOL_GPL vmlinux 0x729b7dd9 skb_complete_wifi_ack +EXPORT_SYMBOL_GPL vmlinux 0x729f668a aead_exit_geniv EXPORT_SYMBOL_GPL vmlinux 0x72a14362 ata_cable_80wire -EXPORT_SYMBOL_GPL vmlinux 0x72ab2788 ip6_sk_redirect +EXPORT_SYMBOL_GPL vmlinux 0x72a21442 xdp_do_redirect EXPORT_SYMBOL_GPL vmlinux 0x72abde21 usb_hcd_resume_root_hub EXPORT_SYMBOL_GPL vmlinux 0x72b41909 pin_get_name -EXPORT_SYMBOL_GPL vmlinux 0x72be5171 devm_phy_package_join EXPORT_SYMBOL_GPL vmlinux 0x72d01eba led_get_default_pattern EXPORT_SYMBOL_GPL vmlinux 0x72d267dc nvmem_del_cell_lookups EXPORT_SYMBOL_GPL vmlinux 0x72f5b739 sfp_get_module_eeprom_by_page EXPORT_SYMBOL_GPL vmlinux 0x72f6f079 vfio_group_get_external_user EXPORT_SYMBOL_GPL vmlinux 0x72fc5ae5 gpiochip_irq_domain_deactivate +EXPORT_SYMBOL_GPL vmlinux 0x730fb2b2 inet6_compat_ioctl EXPORT_SYMBOL_GPL vmlinux 0x7329ea6f tty_port_register_device EXPORT_SYMBOL_GPL vmlinux 0x7334b4e3 component_del EXPORT_SYMBOL_GPL vmlinux 0x7337bf6f dmaengine_desc_attach_metadata EXPORT_SYMBOL_GPL vmlinux 0x733ec33e __SCT__tp_func_fdb_delete -EXPORT_SYMBOL_GPL vmlinux 0x73442ed9 rtnl_af_register EXPORT_SYMBOL_GPL vmlinux 0x7363be86 usb_remove_hcd EXPORT_SYMBOL_GPL vmlinux 0x7363fb98 hwpoison_filter EXPORT_SYMBOL_GPL vmlinux 0x736c8960 md_stop_writes EXPORT_SYMBOL_GPL vmlinux 0x7381287f trace_handle_return EXPORT_SYMBOL_GPL vmlinux 0x738fe32b amd_get_nodes_per_socket EXPORT_SYMBOL_GPL vmlinux 0x73a48b4a ata_sff_std_ports -EXPORT_SYMBOL_GPL vmlinux 0x73b3ab6c get_net_ns_by_fd EXPORT_SYMBOL_GPL vmlinux 0x73c2554f __iowrite64_copy -EXPORT_SYMBOL_GPL vmlinux 0x73c560b4 ipv6_find_tlv EXPORT_SYMBOL_GPL vmlinux 0x73c5a844 ata_dev_set_feature EXPORT_SYMBOL_GPL vmlinux 0x73c9dfcc trace_event_buffer_lock_reserve EXPORT_SYMBOL_GPL vmlinux 0x73cc8631 oiap EXPORT_SYMBOL_GPL vmlinux 0x73eda86a syscon_node_to_regmap +EXPORT_SYMBOL_GPL vmlinux 0x73f3fed5 __inet_lookup_established EXPORT_SYMBOL_GPL vmlinux 0x73fa700f devm_intel_scu_ipc_dev_get EXPORT_SYMBOL_GPL vmlinux 0x7402cf06 pm_relax +EXPORT_SYMBOL_GPL vmlinux 0x741455b8 device_create_file EXPORT_SYMBOL_GPL vmlinux 0x741d5972 usb_submit_urb +EXPORT_SYMBOL_GPL vmlinux 0x74230f94 __tracepoint_devlink_hwerr EXPORT_SYMBOL_GPL vmlinux 0x743a165e ata_pack_xfermask EXPORT_SYMBOL_GPL vmlinux 0x743ec8a1 page_cache_ra_unbounded -EXPORT_SYMBOL_GPL vmlinux 0x7444a553 __ip_tunnel_change_mtu EXPORT_SYMBOL_GPL vmlinux 0x74457e56 apei_resources_fini EXPORT_SYMBOL_GPL vmlinux 0x7446cbb4 regulator_map_voltage_linear_range EXPORT_SYMBOL_GPL vmlinux 0x7452adff user_return_notifier_register -EXPORT_SYMBOL_GPL vmlinux 0x74617413 unix_peer_get +EXPORT_SYMBOL_GPL vmlinux 0x7468d456 crypto_register_instance EXPORT_SYMBOL_GPL vmlinux 0x746a7d4e rio_mport_get_feature EXPORT_SYMBOL_GPL vmlinux 0x746f6dd5 fat_setattr -EXPORT_SYMBOL_GPL vmlinux 0x74780093 __tracepoint_neigh_event_send_done EXPORT_SYMBOL_GPL vmlinux 0x7483b6c3 fork_usermode_driver +EXPORT_SYMBOL_GPL vmlinux 0x7485d142 perf_pmu_register EXPORT_SYMBOL_GPL vmlinux 0x748b07e0 devm_clk_notifier_register EXPORT_SYMBOL_GPL vmlinux 0x74aba672 blkg_prfill_rwstat EXPORT_SYMBOL_GPL vmlinux 0x74b5ea68 lcm_not_zero @@ -15757,71 +15765,63 @@ EXPORT_SYMBOL_GPL vmlinux 0x74baf17a tracing_is_on EXPORT_SYMBOL_GPL vmlinux 0x74c7bffa stack_trace_snprint EXPORT_SYMBOL_GPL vmlinux 0x74ca216a crypto_unregister_scomp -EXPORT_SYMBOL_GPL vmlinux 0x74da46a6 devlink_free EXPORT_SYMBOL_GPL vmlinux 0x74db7a35 dev_pm_domain_attach_by_id EXPORT_SYMBOL_GPL vmlinux 0x74e12fd3 pci_hp_add EXPORT_SYMBOL_GPL vmlinux 0x74e73871 housekeeping_overridden +EXPORT_SYMBOL_GPL vmlinux 0x75129281 device_for_each_child_reverse EXPORT_SYMBOL_GPL vmlinux 0x75133f6e visitor128 EXPORT_SYMBOL_GPL vmlinux 0x7521afb6 leave_mm EXPORT_SYMBOL_GPL vmlinux 0x7522f3ba irq_modify_status EXPORT_SYMBOL_GPL vmlinux 0x7529a282 mmu_notifier_get_locked EXPORT_SYMBOL_GPL vmlinux 0x754cccbb fscrypt_ioctl_get_policy_ex EXPORT_SYMBOL_GPL vmlinux 0x755197d9 trace_event_ignore_this_pid +EXPORT_SYMBOL_GPL vmlinux 0x7564d5ff bpf_offload_dev_match EXPORT_SYMBOL_GPL vmlinux 0x7564f31a devm_of_phy_provider_unregister EXPORT_SYMBOL_GPL vmlinux 0x75792186 get_xsave_addr -EXPORT_SYMBOL_GPL vmlinux 0x757bacfc __iptunnel_pull_header EXPORT_SYMBOL_GPL vmlinux 0x75900124 gpiochip_irq_domain_activate +EXPORT_SYMBOL_GPL vmlinux 0x759b17c5 nvme_setup_cmd EXPORT_SYMBOL_GPL vmlinux 0x759bfe36 btree_destroy EXPORT_SYMBOL_GPL vmlinux 0x75cbfb09 add_interrupt_randomness EXPORT_SYMBOL_GPL vmlinux 0x75cdbdfc regulator_is_enabled_regmap EXPORT_SYMBOL_GPL vmlinux 0x75d577ff pci_sriov_set_totalvfs EXPORT_SYMBOL_GPL vmlinux 0x75e17ef6 relay_close -EXPORT_SYMBOL_GPL vmlinux 0x75e557f3 __tracepoint_sched_overutilized_tp EXPORT_SYMBOL_GPL vmlinux 0x75e9c735 pci_ats_disabled EXPORT_SYMBOL_GPL vmlinux 0x75f0e875 xas_store EXPORT_SYMBOL_GPL vmlinux 0x75f886af regulator_get_hardware_vsel_register -EXPORT_SYMBOL_GPL vmlinux 0x76043ae9 ncsi_vlan_rx_kill_vid EXPORT_SYMBOL_GPL vmlinux 0x760e5705 debugfs_create_size_t EXPORT_SYMBOL_GPL vmlinux 0x760f90da acpi_pci_check_ejectable -EXPORT_SYMBOL_GPL vmlinux 0x7616931f __traceiter_pelt_rt_tp +EXPORT_SYMBOL_GPL vmlinux 0x761f9cd8 sk_msg_wait_data EXPORT_SYMBOL_GPL vmlinux 0x762640ab __SCT__tp_func_sched_cpu_capacity_tp EXPORT_SYMBOL_GPL vmlinux 0x762e872f ata_std_bios_param EXPORT_SYMBOL_GPL vmlinux 0x762fb5df iommu_group_add_device EXPORT_SYMBOL_GPL vmlinux 0x7636c117 rio_request_mport_dma -EXPORT_SYMBOL_GPL vmlinux 0x7651f384 devlink_resource_occ_get_unregister EXPORT_SYMBOL_GPL vmlinux 0x765aef53 rio_mport_write_config_32 EXPORT_SYMBOL_GPL vmlinux 0x765b83ad __pm_runtime_resume EXPORT_SYMBOL_GPL vmlinux 0x765c16f1 driver_unregister EXPORT_SYMBOL_GPL vmlinux 0x765f8830 __SCT__tp_func_neigh_event_send_dead -EXPORT_SYMBOL_GPL vmlinux 0x7665a1ad ethnl_cable_test_amplitude EXPORT_SYMBOL_GPL vmlinux 0x7665a95b idr_remove EXPORT_SYMBOL_GPL vmlinux 0x7665ee72 crypto_dh_decode_key -EXPORT_SYMBOL_GPL vmlinux 0x767bad40 ping_seq_stop -EXPORT_SYMBOL_GPL vmlinux 0x767d60f8 sfp_bus_add_upstream EXPORT_SYMBOL_GPL vmlinux 0x7681946c unregister_pm_notifier EXPORT_SYMBOL_GPL vmlinux 0x76868a6d fat_alloc_new_dir EXPORT_SYMBOL_GPL vmlinux 0x7687cc5d tpm_tis_core_init -EXPORT_SYMBOL_GPL vmlinux 0x76997759 spi_mem_dirmap_create EXPORT_SYMBOL_GPL vmlinux 0x769cefb5 percpu_ref_switch_to_atomic EXPORT_SYMBOL_GPL vmlinux 0x76a07271 dma_release_channel -EXPORT_SYMBOL_GPL vmlinux 0x76b5ccf3 device_move EXPORT_SYMBOL_GPL vmlinux 0x76ccf489 pm_clk_runtime_resume EXPORT_SYMBOL_GPL vmlinux 0x76d680f6 acpi_dev_resource_memory EXPORT_SYMBOL_GPL vmlinux 0x76d9b876 clk_set_rate EXPORT_SYMBOL_GPL vmlinux 0x76dc031e asm_exc_nmi_noist EXPORT_SYMBOL_GPL vmlinux 0x76ec0bcc iomap_dio_iopoll EXPORT_SYMBOL_GPL vmlinux 0x76eeeb0f sha384_zero_message_hash -EXPORT_SYMBOL_GPL vmlinux 0x770f06de ping_seq_next -EXPORT_SYMBOL_GPL vmlinux 0x771ff367 __traceiter_xdp_bulk_tx EXPORT_SYMBOL_GPL vmlinux 0x77222306 ring_buffer_read_page +EXPORT_SYMBOL_GPL vmlinux 0x7729129d __traceiter_sched_util_est_se_tp EXPORT_SYMBOL_GPL vmlinux 0x7729cbdd task_handoff_register EXPORT_SYMBOL_GPL vmlinux 0x7735678d __tracepoint_block_unplug EXPORT_SYMBOL_GPL vmlinux 0x773f2713 clk_hw_unregister_mux EXPORT_SYMBOL_GPL vmlinux 0x773fc012 pm_runtime_force_resume EXPORT_SYMBOL_GPL vmlinux 0x7743712e pci_epc_map_msi_irq -EXPORT_SYMBOL_GPL vmlinux 0x774bc13f rtnl_link_unregister EXPORT_SYMBOL_GPL vmlinux 0x77514e0a platform_unregister_drivers EXPORT_SYMBOL_GPL vmlinux 0x7757b51a clk_unregister +EXPORT_SYMBOL_GPL vmlinux 0x77580310 root_device_unregister EXPORT_SYMBOL_GPL vmlinux 0x7759d4c4 vp_modern_queue_address EXPORT_SYMBOL_GPL vmlinux 0x776acfa0 sysfs_remove_file_self EXPORT_SYMBOL_GPL vmlinux 0x778913e8 efivar_entry_add @@ -15830,28 +15830,31 @@ EXPORT_SYMBOL_GPL vmlinux 0x779c118c pci_reset_function EXPORT_SYMBOL_GPL vmlinux 0x77ae495d usb_speed_string EXPORT_SYMBOL_GPL vmlinux 0x77b340da task_user_regset_view -EXPORT_SYMBOL_GPL vmlinux 0x77d5bb82 devlink_region_snapshot_id_put +EXPORT_SYMBOL_GPL vmlinux 0x77d84cd8 netdev_set_default_ethtool_ops EXPORT_SYMBOL_GPL vmlinux 0x77dd0c10 clk_mux_determine_rate_flags +EXPORT_SYMBOL_GPL vmlinux 0x77e3d62f tcp_twsk_destructor EXPORT_SYMBOL_GPL vmlinux 0x77e75be3 sfp_bus_put EXPORT_SYMBOL_GPL vmlinux 0x77ecf68d memalloc_socks_key -EXPORT_SYMBOL_GPL vmlinux 0x77f515b9 device_find_child_by_name +EXPORT_SYMBOL_GPL vmlinux 0x77f69274 device_remove_properties +EXPORT_SYMBOL_GPL vmlinux 0x77f96559 fwnode_count_parents +EXPORT_SYMBOL_GPL vmlinux 0x77fd65c8 ip_route_output_tunnel EXPORT_SYMBOL_GPL vmlinux 0x78041b8f byte_rev_table EXPORT_SYMBOL_GPL vmlinux 0x780483ed pinctrl_put +EXPORT_SYMBOL_GPL vmlinux 0x780fa48a ethnl_cable_test_result EXPORT_SYMBOL_GPL vmlinux 0x781f83c5 device_wakeup_enable EXPORT_SYMBOL_GPL vmlinux 0x782adb74 hpet_rtc_interrupt EXPORT_SYMBOL_GPL vmlinux 0x783ab4e8 devm_phy_get EXPORT_SYMBOL_GPL vmlinux 0x784514c5 dw_pcie_host_init EXPORT_SYMBOL_GPL vmlinux 0x785a93b4 si_mem_available EXPORT_SYMBOL_GPL vmlinux 0x78604efd dev_pm_clear_wake_irq +EXPORT_SYMBOL_GPL vmlinux 0x78660f0e xfrm_get_translator EXPORT_SYMBOL_GPL vmlinux 0x787c882b lzo1x_1_compress EXPORT_SYMBOL_GPL vmlinux 0x787fc070 pci_add_dynid EXPORT_SYMBOL_GPL vmlinux 0x788bfbad ring_buffer_empty EXPORT_SYMBOL_GPL vmlinux 0x788c9aec devm_thermal_of_cooling_device_register EXPORT_SYMBOL_GPL vmlinux 0x789c73d9 rcu_cpu_stall_suppress_at_boot EXPORT_SYMBOL_GPL vmlinux 0x78a41087 gpiod_get_value_cansleep -EXPORT_SYMBOL_GPL vmlinux 0x78ac549d ping_err EXPORT_SYMBOL_GPL vmlinux 0x78b7eae0 pci_epf_destroy -EXPORT_SYMBOL_GPL vmlinux 0x78cb1813 proc_create_net_single EXPORT_SYMBOL_GPL vmlinux 0x78ddb76b dmi_match EXPORT_SYMBOL_GPL vmlinux 0x7907064a gpiochip_line_is_open_drain EXPORT_SYMBOL_GPL vmlinux 0x790be0b9 usb_bus_idr @@ -15860,7 +15863,6 @@ EXPORT_SYMBOL_GPL vmlinux 0x7918d817 memory_failure EXPORT_SYMBOL_GPL vmlinux 0x791f58d9 thermal_zone_device_unregister EXPORT_SYMBOL_GPL vmlinux 0x79345f89 shash_free_singlespawn_instance -EXPORT_SYMBOL_GPL vmlinux 0x793e4b93 pingv6_prot EXPORT_SYMBOL_GPL vmlinux 0x7944e0fc tracing_off EXPORT_SYMBOL_GPL vmlinux 0x79454cf8 ima_file_hash EXPORT_SYMBOL_GPL vmlinux 0x79470a2c TSS_authhmac @@ -15868,15 +15870,13 @@ EXPORT_SYMBOL_GPL vmlinux 0x798b7682 klist_prev EXPORT_SYMBOL_GPL vmlinux 0x7991fd8d crash_vmclear_loaded_vmcss EXPORT_SYMBOL_GPL vmlinux 0x79ae1c73 iommu_device_link -EXPORT_SYMBOL_GPL vmlinux 0x79ba8703 __traceiter_xdp_exception EXPORT_SYMBOL_GPL vmlinux 0x79bbd46b clk_register_fixed_rate EXPORT_SYMBOL_GPL vmlinux 0x79bc842c usb_anchor_suspend_wakeups -EXPORT_SYMBOL_GPL vmlinux 0x79c26a2b __traceiter_neigh_cleanup_and_release EXPORT_SYMBOL_GPL vmlinux 0x79cf1043 fpu_kernel_xstate_size +EXPORT_SYMBOL_GPL vmlinux 0x79d1415c device_get_child_node_count EXPORT_SYMBOL_GPL vmlinux 0x79daf4de __SCT__tp_func_tcp_send_reset EXPORT_SYMBOL_GPL vmlinux 0x79defbe1 kthread_should_park EXPORT_SYMBOL_GPL vmlinux 0x79e69460 intel_iommu_gfx_mapped -EXPORT_SYMBOL_GPL vmlinux 0x79eb669d inet_csk_route_child_sock EXPORT_SYMBOL_GPL vmlinux 0x79f2f1d6 driver_find_device EXPORT_SYMBOL_GPL vmlinux 0x79f4dab2 ata_noop_qc_prep EXPORT_SYMBOL_GPL vmlinux 0x79f697e4 lzorle1x_1_compress @@ -15888,8 +15888,10 @@ EXPORT_SYMBOL_GPL vmlinux 0x7a655f68 acpi_processor_claim_cst_control EXPORT_SYMBOL_GPL vmlinux 0x7a66b67a _copy_from_iter_flushcache EXPORT_SYMBOL_GPL vmlinux 0x7a73e605 wm831x_isinkv_values -EXPORT_SYMBOL_GPL vmlinux 0x7a786903 __rtnl_link_register +EXPORT_SYMBOL_GPL vmlinux 0x7a748a1b ndo_dflt_bridge_getlink +EXPORT_SYMBOL_GPL vmlinux 0x7a7d8840 xdp_rxq_info_is_reg EXPORT_SYMBOL_GPL vmlinux 0x7a81541b async_synchronize_cookie +EXPORT_SYMBOL_GPL vmlinux 0x7a86b241 perf_event_disable EXPORT_SYMBOL_GPL vmlinux 0x7a8d9194 regmap_async_complete_cb EXPORT_SYMBOL_GPL vmlinux 0x7a9406a5 handle_bad_irq EXPORT_SYMBOL_GPL vmlinux 0x7a944007 rcu_idle_enter @@ -15904,31 +15906,29 @@ EXPORT_SYMBOL_GPL vmlinux 0x7acf916c __tracepoint_map EXPORT_SYMBOL_GPL vmlinux 0x7ad02a41 asn1_encode_tag EXPORT_SYMBOL_GPL vmlinux 0x7ad1ded1 pinctrl_register_mappings +EXPORT_SYMBOL_GPL vmlinux 0x7ada8584 crypto_alloc_sync_skcipher EXPORT_SYMBOL_GPL vmlinux 0x7afcb7db __kprobe_event_add_fields -EXPORT_SYMBOL_GPL vmlinux 0x7b0b53ee devlink_reload_enable +EXPORT_SYMBOL_GPL vmlinux 0x7b107cc8 fwnode_graph_get_remote_port_parent EXPORT_SYMBOL_GPL vmlinux 0x7b178afe unlock_system_sleep -EXPORT_SYMBOL_GPL vmlinux 0x7b29269c nf_nat_hook +EXPORT_SYMBOL_GPL vmlinux 0x7b1a0cb8 dev_fill_metadata_dst EXPORT_SYMBOL_GPL vmlinux 0x7b342c7d acpi_gpiochip_request_interrupts EXPORT_SYMBOL_GPL vmlinux 0x7b50c459 acpi_get_first_physical_node EXPORT_SYMBOL_GPL vmlinux 0x7b5452b8 acpi_unregister_gsi -EXPORT_SYMBOL_GPL vmlinux 0x7b5658f3 fib6_new_table EXPORT_SYMBOL_GPL vmlinux 0x7b5a4926 sha1_zero_message_hash -EXPORT_SYMBOL_GPL vmlinux 0x7b64a920 __inet_twsk_schedule EXPORT_SYMBOL_GPL vmlinux 0x7b6c0bdd tty_set_ldisc EXPORT_SYMBOL_GPL vmlinux 0x7b6f9536 acpi_register_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0x7b7c1ce3 device_initialize EXPORT_SYMBOL_GPL vmlinux 0x7b839e39 __ata_ehi_push_desc EXPORT_SYMBOL_GPL vmlinux 0x7b8ea197 ethtool_params_from_link_mode EXPORT_SYMBOL_GPL vmlinux 0x7b9793a2 get_cpu_idle_time_us EXPORT_SYMBOL_GPL vmlinux 0x7bb045a7 __request_percpu_irq EXPORT_SYMBOL_GPL vmlinux 0x7bba4213 platform_get_irq -EXPORT_SYMBOL_GPL vmlinux 0x7bd00403 crypto_stats_akcipher_sign +EXPORT_SYMBOL_GPL vmlinux 0x7bc8886a fwnode_device_is_available EXPORT_SYMBOL_GPL vmlinux 0x7bf4e347 acpi_dev_remove_driver_gpios EXPORT_SYMBOL_GPL vmlinux 0x7c18dfbd rio_register_mport EXPORT_SYMBOL_GPL vmlinux 0x7c20b6a0 load_direct_gdt EXPORT_SYMBOL_GPL vmlinux 0x7c2270ed mctrl_gpio_free EXPORT_SYMBOL_GPL vmlinux 0x7c291e86 show_rcu_tasks_trace_gp_kthread -EXPORT_SYMBOL_GPL vmlinux 0x7c2be47e __SCK__tp_func_pelt_cfs_tp -EXPORT_SYMBOL_GPL vmlinux 0x7c30c172 find_get_pid EXPORT_SYMBOL_GPL vmlinux 0x7c3208b2 badblocks_set EXPORT_SYMBOL_GPL vmlinux 0x7c3cb860 sysfs_remove_group EXPORT_SYMBOL_GPL vmlinux 0x7c3d8a4b icc_bulk_put @@ -15937,27 +15937,26 @@ EXPORT_SYMBOL_GPL vmlinux 0x7c46c003 pci_create_slot EXPORT_SYMBOL_GPL vmlinux 0x7c4e38ce wm8997_aod EXPORT_SYMBOL_GPL vmlinux 0x7c5783f4 arizona_dev_init -EXPORT_SYMBOL_GPL vmlinux 0x7c5b9f28 xfer_to_guest_mode_handle_work -EXPORT_SYMBOL_GPL vmlinux 0x7c5f1bb0 nvme_cancel_admin_tagset EXPORT_SYMBOL_GPL vmlinux 0x7c5f3711 ioasid_unregister_allocator EXPORT_SYMBOL_GPL vmlinux 0x7c626556 list_lru_destroy +EXPORT_SYMBOL_GPL vmlinux 0x7c690f5b dst_cache_get_ip6 EXPORT_SYMBOL_GPL vmlinux 0x7c71cc4b platform_add_devices EXPORT_SYMBOL_GPL vmlinux 0x7c7671c3 ata_std_error_handler EXPORT_SYMBOL_GPL vmlinux 0x7c827347 tty_buffer_unlock_exclusive EXPORT_SYMBOL_GPL vmlinux 0x7c983a5d dmi_walk -EXPORT_SYMBOL_GPL vmlinux 0x7c9a6541 inet6_csk_xmit +EXPORT_SYMBOL_GPL vmlinux 0x7c9948fe ethnl_cable_test_alloc EXPORT_SYMBOL_GPL vmlinux 0x7c9a7371 clk_prepare EXPORT_SYMBOL_GPL vmlinux 0x7ca85256 ms_hyperv EXPORT_SYMBOL_GPL vmlinux 0x7cb723e0 regulator_set_pull_down_regmap EXPORT_SYMBOL_GPL vmlinux 0x7cb803de btree_grim_visitor EXPORT_SYMBOL_GPL vmlinux 0x7cbc4079 vmbus_sendpacket_pagebuffer EXPORT_SYMBOL_GPL vmlinux 0x7cbcb398 __clk_mux_determine_rate_closest -EXPORT_SYMBOL_GPL vmlinux 0x7cc7659d unix_inq_len EXPORT_SYMBOL_GPL vmlinux 0x7cceaf92 zs_pool_stats EXPORT_SYMBOL_GPL vmlinux 0x7cd52c82 iommu_group_get EXPORT_SYMBOL_GPL vmlinux 0x7cd6f042 cpufreq_get_current_driver EXPORT_SYMBOL_GPL vmlinux 0x7ceaf0d5 generic_handle_irq EXPORT_SYMBOL_GPL vmlinux 0x7ced5346 nd_region_dev +EXPORT_SYMBOL_GPL vmlinux 0x7cff9b44 device_match_fwnode EXPORT_SYMBOL_GPL vmlinux 0x7d00c65b nd_synchronize EXPORT_SYMBOL_GPL vmlinux 0x7d0e1d95 hv_setup_crash_handler EXPORT_SYMBOL_GPL vmlinux 0x7d1bb1d4 tnum_strn @@ -15966,7 +15965,6 @@ EXPORT_SYMBOL_GPL vmlinux 0x7d598b4e regulator_list_voltage_pickable_linear_range EXPORT_SYMBOL_GPL vmlinux 0x7d59dd46 pm_wq EXPORT_SYMBOL_GPL vmlinux 0x7d75a3af driver_create_file -EXPORT_SYMBOL_GPL vmlinux 0x7d9c875e mptcp_pm_get_subflows_max EXPORT_SYMBOL_GPL vmlinux 0x7da3d07e power_supply_register EXPORT_SYMBOL_GPL vmlinux 0x7da55281 do_unbind_con_driver EXPORT_SYMBOL_GPL vmlinux 0x7daa6c54 devm_mbox_controller_unregister @@ -15981,39 +15979,40 @@ EXPORT_SYMBOL_GPL vmlinux 0x7df45442 usb_control_msg_recv EXPORT_SYMBOL_GPL vmlinux 0x7df552f7 is_transparent_hugepage EXPORT_SYMBOL_GPL vmlinux 0x7e0175e8 __static_call_update -EXPORT_SYMBOL_GPL vmlinux 0x7e035753 nvme_kill_queues EXPORT_SYMBOL_GPL vmlinux 0x7e051c03 ata_port_abort EXPORT_SYMBOL_GPL vmlinux 0x7e16e42b irq_domain_xlate_twocell EXPORT_SYMBOL_GPL vmlinux 0x7e1bfd2e usb_set_configuration EXPORT_SYMBOL_GPL vmlinux 0x7e208435 pci_user_read_config_byte -EXPORT_SYMBOL_GPL vmlinux 0x7e2fbca6 __SCK__tp_func_pelt_dl_tp +EXPORT_SYMBOL_GPL vmlinux 0x7e3f20f1 ip6_dst_lookup EXPORT_SYMBOL_GPL vmlinux 0x7e497819 screen_glyph_unicode EXPORT_SYMBOL_GPL vmlinux 0x7e4bf26a regmap_get_raw_write_max +EXPORT_SYMBOL_GPL vmlinux 0x7e56301a cgroup_path_ns EXPORT_SYMBOL_GPL vmlinux 0x7e5db80b pstore_name_to_type EXPORT_SYMBOL_GPL vmlinux 0x7e5e6eec __irq_set_handler EXPORT_SYMBOL_GPL vmlinux 0x7e64181d usb_calc_bus_time EXPORT_SYMBOL_GPL vmlinux 0x7e64f893 regulator_set_ramp_delay_regmap -EXPORT_SYMBOL_GPL vmlinux 0x7e6962f4 dev_get_tstats64 EXPORT_SYMBOL_GPL vmlinux 0x7e7d464b xhci_add_endpoint EXPORT_SYMBOL_GPL vmlinux 0x7e7e3f58 ring_buffer_reset_cpu EXPORT_SYMBOL_GPL vmlinux 0x7e882c64 tpm_transmit_cmd EXPORT_SYMBOL_GPL vmlinux 0x7e8d8619 usb_anchor_empty +EXPORT_SYMBOL_GPL vmlinux 0x7e98f1d4 nfs_ssc_unregister EXPORT_SYMBOL_GPL vmlinux 0x7ea75c24 __wake_up_locked_key_bookmark EXPORT_SYMBOL_GPL vmlinux 0x7ea77adc devm_gpiod_put_array EXPORT_SYMBOL_GPL vmlinux 0x7ea79a79 rio_attach_device EXPORT_SYMBOL_GPL vmlinux 0x7eb808d0 add_cpu EXPORT_SYMBOL_GPL vmlinux 0x7ec5e658 trace_event_reg EXPORT_SYMBOL_GPL vmlinux 0x7ec814de inet_hashinfo_init -EXPORT_SYMBOL_GPL vmlinux 0x7ecbaa96 fwnode_get_phy_mode -EXPORT_SYMBOL_GPL vmlinux 0x7ece9ae1 udp_destruct_sock +EXPORT_SYMBOL_GPL vmlinux 0x7ee91f67 tcp_register_ulp EXPORT_SYMBOL_GPL vmlinux 0x7eea6b8b pcap_adc_async +EXPORT_SYMBOL_GPL vmlinux 0x7f0c1065 kobject_uevent_env EXPORT_SYMBOL_GPL vmlinux 0x7f1625cf noop_set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0x7f1b9d09 xfrm_audit_state_notfound_simple EXPORT_SYMBOL_GPL vmlinux 0x7f23f808 watchdog_unregister_device EXPORT_SYMBOL_GPL vmlinux 0x7f45b680 pci_epc_init_notify +EXPORT_SYMBOL_GPL vmlinux 0x7f4db68a net_ns_get_ownership EXPORT_SYMBOL_GPL vmlinux 0x7f5d5288 xhci_gen_setup -EXPORT_SYMBOL_GPL vmlinux 0x7f61edc0 spi_mem_supports_op +EXPORT_SYMBOL_GPL vmlinux 0x7f7c5dba inet_csk_update_pmtu EXPORT_SYMBOL_GPL vmlinux 0x7f7cbc64 ip_tunnel_need_metadata -EXPORT_SYMBOL_GPL vmlinux 0x7f8dc299 spi_take_timestamp_post EXPORT_SYMBOL_GPL vmlinux 0x7f943336 cdrom_read_tocentry EXPORT_SYMBOL_GPL vmlinux 0x7fa96509 erst_get_record_id_next EXPORT_SYMBOL_GPL vmlinux 0x7facbe01 nvdimm_kobj @@ -16021,15 +16020,15 @@ EXPORT_SYMBOL_GPL vmlinux 0x7fba95eb usb_hcd_pci_remove EXPORT_SYMBOL_GPL vmlinux 0x7fbb7166 pci_bus_resource_n EXPORT_SYMBOL_GPL vmlinux 0x7fbeac4a devfreq_event_disable_edev +EXPORT_SYMBOL_GPL vmlinux 0x7fbf7bbe devlink_alloc EXPORT_SYMBOL_GPL vmlinux 0x7fc88ae7 fat_free_clusters EXPORT_SYMBOL_GPL vmlinux 0x7fd3c701 icc_set_bw EXPORT_SYMBOL_GPL vmlinux 0x7fdae7b2 get_governor_parent_kobj -EXPORT_SYMBOL_GPL vmlinux 0x7fdbe949 device_for_each_child +EXPORT_SYMBOL_GPL vmlinux 0x7fe3b5ac ip6_push_pending_frames EXPORT_SYMBOL_GPL vmlinux 0x7fe48181 pci_cfg_access_trylock EXPORT_SYMBOL_GPL vmlinux 0x7fea3733 usb_reset_configuration EXPORT_SYMBOL_GPL vmlinux 0x7ff1d631 trace_get_event_file EXPORT_SYMBOL_GPL vmlinux 0x802f52db genphy_c45_read_lpa -EXPORT_SYMBOL_GPL vmlinux 0x8032ca54 switchdev_handle_port_attr_set EXPORT_SYMBOL_GPL vmlinux 0x803b7df4 compat_only_sysfs_link_entry_to_kobj EXPORT_SYMBOL_GPL vmlinux 0x805667cf devlink_fmsg_u64_put EXPORT_SYMBOL_GPL vmlinux 0x805ae8ef __clocksource_register_scale @@ -16039,36 +16038,35 @@ EXPORT_SYMBOL_GPL vmlinux 0x808a61c9 klp_enable_patch EXPORT_SYMBOL_GPL vmlinux 0x808a8088 handle_guest_split_lock EXPORT_SYMBOL_GPL vmlinux 0x808ec1a3 crypto_alg_tested -EXPORT_SYMBOL_GPL vmlinux 0x80907045 device_show_ulong EXPORT_SYMBOL_GPL vmlinux 0x80940922 phy_modify EXPORT_SYMBOL_GPL vmlinux 0x80a4974b bio_associate_blkg EXPORT_SYMBOL_GPL vmlinux 0x80b83aa1 scsi_host_block EXPORT_SYMBOL_GPL vmlinux 0x80bc2154 iomap_readpage EXPORT_SYMBOL_GPL vmlinux 0x80c11073 virtqueue_notify EXPORT_SYMBOL_GPL vmlinux 0x80c68137 nf_log_buf_close -EXPORT_SYMBOL_GPL vmlinux 0x80d114f5 set_cpus_allowed_ptr EXPORT_SYMBOL_GPL vmlinux 0x80d5e57a mpi_free EXPORT_SYMBOL_GPL vmlinux 0x80e40252 phy_set_media -EXPORT_SYMBOL_GPL vmlinux 0x80e47d01 crypto_grab_spawn EXPORT_SYMBOL_GPL vmlinux 0x80e6163f vga_default_device -EXPORT_SYMBOL_GPL vmlinux 0x80efbd56 __netdev_watchdog_up EXPORT_SYMBOL_GPL vmlinux 0x810b3aec device_bind_driver EXPORT_SYMBOL_GPL vmlinux 0x811a9999 usb_set_interface EXPORT_SYMBOL_GPL vmlinux 0x811dc334 usb_unregister_notify EXPORT_SYMBOL_GPL vmlinux 0x811f2671 __acpi_nfit_notify EXPORT_SYMBOL_GPL vmlinux 0x81221cad amd_nb_num EXPORT_SYMBOL_GPL vmlinux 0x8127575a devm_rtc_device_register +EXPORT_SYMBOL_GPL vmlinux 0x813a1e9b strp_stop EXPORT_SYMBOL_GPL vmlinux 0x813bbab1 regulator_map_voltage_iterate EXPORT_SYMBOL_GPL vmlinux 0x813cdf4a __free_iova EXPORT_SYMBOL_GPL vmlinux 0x813cf212 nvme_io_timeout EXPORT_SYMBOL_GPL vmlinux 0x814e2386 kcpustat_field EXPORT_SYMBOL_GPL vmlinux 0x815588a6 clk_enable +EXPORT_SYMBOL_GPL vmlinux 0x8155fe85 __traceiter_devlink_trap_report EXPORT_SYMBOL_GPL vmlinux 0x81579bec platform_bus_type EXPORT_SYMBOL_GPL vmlinux 0x815fda83 sed_ioctl EXPORT_SYMBOL_GPL vmlinux 0x8162c593 devm_kfree EXPORT_SYMBOL_GPL vmlinux 0x816a41ca cpufreq_update_limits EXPORT_SYMBOL_GPL vmlinux 0x817b99fe irq_chip_get_parent_state EXPORT_SYMBOL_GPL vmlinux 0x817dc8e4 __clk_determine_rate +EXPORT_SYMBOL_GPL vmlinux 0x817e782f __tracepoint_pelt_rt_tp EXPORT_SYMBOL_GPL vmlinux 0x8180cede asn1_encode_sequence EXPORT_SYMBOL_GPL vmlinux 0x8180db8a hwmon_device_unregister EXPORT_SYMBOL_GPL vmlinux 0x819843ba subsys_dev_iter_next @@ -16080,9 +16078,7 @@ EXPORT_SYMBOL_GPL vmlinux 0x81c2942d ata_dummy_port_info EXPORT_SYMBOL_GPL vmlinux 0x81c5a413 pm_generic_poweroff_late EXPORT_SYMBOL_GPL vmlinux 0x81cedf85 get_state_synchronize_srcu -EXPORT_SYMBOL_GPL vmlinux 0x81e20e64 fib_nl_delrule -EXPORT_SYMBOL_GPL vmlinux 0x81e483d9 ip6_push_pending_frames -EXPORT_SYMBOL_GPL vmlinux 0x81e51f01 bpf_prog_create +EXPORT_SYMBOL_GPL vmlinux 0x81e64969 skcipher_register_instance EXPORT_SYMBOL_GPL vmlinux 0x81f372a2 unregister_ftrace_export EXPORT_SYMBOL_GPL vmlinux 0x82092899 badrange_forget EXPORT_SYMBOL_GPL vmlinux 0x820e4978 dw_pcie_find_ext_capability @@ -16092,58 +16088,49 @@ EXPORT_SYMBOL_GPL vmlinux 0x8221bc7d pm_runtime_forbid EXPORT_SYMBOL_GPL vmlinux 0x82226c53 pinctrl_unregister_mappings EXPORT_SYMBOL_GPL vmlinux 0x8225c741 dma_get_any_slave_channel -EXPORT_SYMBOL_GPL vmlinux 0x822f6d17 devlink_param_driverinit_value_get -EXPORT_SYMBOL_GPL vmlinux 0x8236c1a0 nf_route EXPORT_SYMBOL_GPL vmlinux 0x823eae06 blocking_notifier_call_chain EXPORT_SYMBOL_GPL vmlinux 0x82664e95 usb_lock_device_for_reset +EXPORT_SYMBOL_GPL vmlinux 0x8268f6c0 device_rename EXPORT_SYMBOL_GPL vmlinux 0x826a00be syscon_regmap_lookup_by_phandle_args EXPORT_SYMBOL_GPL vmlinux 0x827e61f8 acpi_has_watchdog EXPORT_SYMBOL_GPL vmlinux 0x827ee64d pm_genpd_remove EXPORT_SYMBOL_GPL vmlinux 0x828a726f vfs_removexattr EXPORT_SYMBOL_GPL vmlinux 0x828e22f4 hrtimer_forward -EXPORT_SYMBOL_GPL vmlinux 0x829d5fda nf_checksum -EXPORT_SYMBOL_GPL vmlinux 0x82afcdc1 xfrm_local_error EXPORT_SYMBOL_GPL vmlinux 0x82d79b51 sysctl_vfs_cache_pressure EXPORT_SYMBOL_GPL vmlinux 0x82dc051a sata_scr_write_flush EXPORT_SYMBOL_GPL vmlinux 0x82f2d365 sysfs_create_group EXPORT_SYMBOL_GPL vmlinux 0x82fd370a __traceiter_xhci_dbg_quirks EXPORT_SYMBOL_GPL vmlinux 0x82ff4b95 clk_hw_unregister_fixed_factor EXPORT_SYMBOL_GPL vmlinux 0x8323165c dm_put -EXPORT_SYMBOL_GPL vmlinux 0x832d53c7 __spi_alloc_controller EXPORT_SYMBOL_GPL vmlinux 0x8335ca43 __SCT__tp_func_io_page_fault EXPORT_SYMBOL_GPL vmlinux 0x8339df73 klist_add_behind EXPORT_SYMBOL_GPL vmlinux 0x8349a895 nvmem_device_put EXPORT_SYMBOL_GPL vmlinux 0x8353dfff acpi_os_get_iomem EXPORT_SYMBOL_GPL vmlinux 0x8356c6af debugfs_create_file -EXPORT_SYMBOL_GPL vmlinux 0x836d93dd __traceiter_neigh_update -EXPORT_SYMBOL_GPL vmlinux 0x8372bf16 devlink_port_params_register EXPORT_SYMBOL_GPL vmlinux 0x838157de __SCK__tp_func_rpm_resume EXPORT_SYMBOL_GPL vmlinux 0x8386ac42 pci_find_next_capability EXPORT_SYMBOL_GPL vmlinux 0x8390129a nd_blk_region_provider_data -EXPORT_SYMBOL_GPL vmlinux 0x83b727d6 security_kernel_post_read_file -EXPORT_SYMBOL_GPL vmlinux 0x83c80014 put_device -EXPORT_SYMBOL_GPL vmlinux 0x83cb7f68 devlink_port_param_driverinit_value_get +EXPORT_SYMBOL_GPL vmlinux 0x839aed00 proc_create_net_data_write EXPORT_SYMBOL_GPL vmlinux 0x83ee2f9a pinctrl_utils_add_map_mux EXPORT_SYMBOL_GPL vmlinux 0x83f6de32 pcc_mbox_request_channel -EXPORT_SYMBOL_GPL vmlinux 0x84086ad2 udp_tunnel_notify_del_rx_port EXPORT_SYMBOL_GPL vmlinux 0x840ce7b6 scsi_target_block EXPORT_SYMBOL_GPL vmlinux 0x84106f36 devlink_trap_ctx_priv EXPORT_SYMBOL_GPL vmlinux 0x841431a0 wbc_account_cgroup_owner EXPORT_SYMBOL_GPL vmlinux 0x84153ad6 pm_generic_poweroff EXPORT_SYMBOL_GPL vmlinux 0x841c0610 crypto_grab_aead EXPORT_SYMBOL_GPL vmlinux 0x841f4c33 power_supply_get_by_name -EXPORT_SYMBOL_GPL vmlinux 0x8421651e ip6_local_out +EXPORT_SYMBOL_GPL vmlinux 0x8421a163 netlink_strict_get_check EXPORT_SYMBOL_GPL vmlinux 0x84264ced fs_umode_to_ftype EXPORT_SYMBOL_GPL vmlinux 0x842f046d usb_poison_anchored_urbs EXPORT_SYMBOL_GPL vmlinux 0x843d70ef acpi_is_root_bridge -EXPORT_SYMBOL_GPL vmlinux 0x843ffba5 sock_diag_check_cookie +EXPORT_SYMBOL_GPL vmlinux 0x843dae3c cgroup_get_from_path EXPORT_SYMBOL_GPL vmlinux 0x84403185 acpi_device_uevent_modalias EXPORT_SYMBOL_GPL vmlinux 0x8446527f __devm_regmap_init +EXPORT_SYMBOL_GPL vmlinux 0x844d367f sk_clear_memalloc EXPORT_SYMBOL_GPL vmlinux 0x84502a47 blk_status_to_errno EXPORT_SYMBOL_GPL vmlinux 0x845dbf3b scatterwalk_map_and_copy EXPORT_SYMBOL_GPL vmlinux 0x8462cb62 atapi_cmd_type EXPORT_SYMBOL_GPL vmlinux 0x84636eca iommu_map_atomic -EXPORT_SYMBOL_GPL vmlinux 0x8464ea11 switchdev_handle_port_obj_add EXPORT_SYMBOL_GPL vmlinux 0x84678725 __SCK__tp_func_xdp_exception EXPORT_SYMBOL_GPL vmlinux 0x8472e50d sysfs_change_owner EXPORT_SYMBOL_GPL vmlinux 0x8477ebe1 pci_epc_set_msi @@ -16153,10 +16140,11 @@ EXPORT_SYMBOL_GPL vmlinux 0x84902e22 rio_register_driver EXPORT_SYMBOL_GPL vmlinux 0x849caf0b irq_domain_create_hierarchy EXPORT_SYMBOL_GPL vmlinux 0x84a98a8c regmap_field_free +EXPORT_SYMBOL_GPL vmlinux 0x84b09b30 udp_tunnel_sock_release EXPORT_SYMBOL_GPL vmlinux 0x84b0b096 dev_pm_qos_add_ancestor_request EXPORT_SYMBOL_GPL vmlinux 0x84ba0aeb md_submit_discard_bio EXPORT_SYMBOL_GPL vmlinux 0x84bb9992 component_add_typed -EXPORT_SYMBOL_GPL vmlinux 0x84cb52ec spi_mem_driver_register_with_owner +EXPORT_SYMBOL_GPL vmlinux 0x84bf51a0 crypto_stats_kpp_generate_public_key EXPORT_SYMBOL_GPL vmlinux 0x84e4e5ad usb_sg_init EXPORT_SYMBOL_GPL vmlinux 0x84ef27f5 synth_event_add_fields EXPORT_SYMBOL_GPL vmlinux 0x84f298d6 fat_truncate_time @@ -16164,17 +16152,15 @@ EXPORT_SYMBOL_GPL vmlinux 0x8506baa8 clk_unregister_gate EXPORT_SYMBOL_GPL vmlinux 0x850bb6db devlink_health_reporter_destroy EXPORT_SYMBOL_GPL vmlinux 0x850edfbf pm_wakeup_ws_event +EXPORT_SYMBOL_GPL vmlinux 0x8517eeb3 netdev_rx_handler_register EXPORT_SYMBOL_GPL vmlinux 0x851e6003 usb_phy_roothub_calibrate EXPORT_SYMBOL_GPL vmlinux 0x8531d872 virtqueue_add_inbuf EXPORT_SYMBOL_GPL vmlinux 0x853ea4e1 tty_port_link_device -EXPORT_SYMBOL_GPL vmlinux 0x853fab8b tcf_dev_queue_xmit EXPORT_SYMBOL_GPL vmlinux 0x8540d7ac evm_inode_init_security EXPORT_SYMBOL_GPL vmlinux 0x85497f6d phy_optional_get EXPORT_SYMBOL_GPL vmlinux 0x854eaadb nvmem_cell_read_u32 EXPORT_SYMBOL_GPL vmlinux 0x85540ebc nvmem_cell_put -EXPORT_SYMBOL_GPL vmlinux 0x85769616 udp_init_sock EXPORT_SYMBOL_GPL vmlinux 0x857af739 xhci_shutdown -EXPORT_SYMBOL_GPL vmlinux 0x8583d23b inet6_hash EXPORT_SYMBOL_GPL vmlinux 0x85862277 ioasid_find EXPORT_SYMBOL_GPL vmlinux 0x8592d892 amd_register_ecc_decoder EXPORT_SYMBOL_GPL vmlinux 0x85935a61 acpi_dev_irq_flags @@ -16187,12 +16173,11 @@ EXPORT_SYMBOL_GPL vmlinux 0x85c54b61 efivar_validate EXPORT_SYMBOL_GPL vmlinux 0x85cd1357 invalidate_inode_pages2 EXPORT_SYMBOL_GPL vmlinux 0x85d7edfd hpet_set_periodic_freq -EXPORT_SYMBOL_GPL vmlinux 0x85e1926a rtnl_af_unregister -EXPORT_SYMBOL_GPL vmlinux 0x85f9889f __SCK__tp_func_sched_cpu_capacity_tp +EXPORT_SYMBOL_GPL vmlinux 0x85f8d20e spi_controller_dma_unmap_mem_op_data EXPORT_SYMBOL_GPL vmlinux 0x85faa95c fscrypt_symlink_getattr EXPORT_SYMBOL_GPL vmlinux 0x85fccfd4 dw_pcie_ep_linkup -EXPORT_SYMBOL_GPL vmlinux 0x85fdb628 inet_unhash EXPORT_SYMBOL_GPL vmlinux 0x86039ed8 __efivar_entry_iter +EXPORT_SYMBOL_GPL vmlinux 0x86072e4a sched_trace_rq_avg_irq EXPORT_SYMBOL_GPL vmlinux 0x86169f3e amd_smn_write EXPORT_SYMBOL_GPL vmlinux 0x861c0d82 vmbus_close EXPORT_SYMBOL_GPL vmlinux 0x862258db timecounter_init @@ -16202,7 +16187,6 @@ EXPORT_SYMBOL_GPL vmlinux 0x86700220 acpi_get_cpuid EXPORT_SYMBOL_GPL vmlinux 0x8671ae88 dma_get_slave_caps EXPORT_SYMBOL_GPL vmlinux 0x8677245d unregister_switchdev_blocking_notifier -EXPORT_SYMBOL_GPL vmlinux 0x86775051 tcp_is_ulp_esp EXPORT_SYMBOL_GPL vmlinux 0x8677f369 pvclock_get_pvti_cpu0_va EXPORT_SYMBOL_GPL vmlinux 0x867dcc63 platform_get_resource_byname EXPORT_SYMBOL_GPL vmlinux 0x868784cb __symbol_get @@ -16215,98 +16199,100 @@ EXPORT_SYMBOL_GPL vmlinux 0x86d99ed4 ata_pci_bmdma_init_one EXPORT_SYMBOL_GPL vmlinux 0x86dccf0c virtqueue_get_desc_addr EXPORT_SYMBOL_GPL vmlinux 0x86dda6ef rtm_getroute_parse_ip_proto -EXPORT_SYMBOL_GPL vmlinux 0x86e18ae0 __tracepoint_devlink_trap_report EXPORT_SYMBOL_GPL vmlinux 0x86efefa9 ata_host_suspend EXPORT_SYMBOL_GPL vmlinux 0x86f6b99d synchronize_rcu_expedited EXPORT_SYMBOL_GPL vmlinux 0x86f85114 net_dec_egress_queue -EXPORT_SYMBOL_GPL vmlinux 0x872d064b crypto_stats_rng_generate EXPORT_SYMBOL_GPL vmlinux 0x872d4f7c __SCT__tp_func_xdp_bulk_tx EXPORT_SYMBOL_GPL vmlinux 0x8735ed3d irq_set_affinity_notifier EXPORT_SYMBOL_GPL vmlinux 0x873631b3 restore_online_page_callback -EXPORT_SYMBOL_GPL vmlinux 0x87440d05 devlink_trap_groups_register EXPORT_SYMBOL_GPL vmlinux 0x8745e733 dm_suspended EXPORT_SYMBOL_GPL vmlinux 0x87539a57 tty_kopen_shared EXPORT_SYMBOL_GPL vmlinux 0x875582b7 nvmem_del_cell_table EXPORT_SYMBOL_GPL vmlinux 0x875f3c6b pm_generic_freeze EXPORT_SYMBOL_GPL vmlinux 0x875fd24f pci_epc_mem_free_addr +EXPORT_SYMBOL_GPL vmlinux 0x8765f27d phy_speed_down EXPORT_SYMBOL_GPL vmlinux 0x876fc660 regulator_get_current_limit EXPORT_SYMBOL_GPL vmlinux 0x8783dfd8 wbc_attach_and_unlock_inode -EXPORT_SYMBOL_GPL vmlinux 0x878f1583 __SCK__tp_func_neigh_cleanup_and_release -EXPORT_SYMBOL_GPL vmlinux 0x879ab09e skb_zerocopy_iter_stream -EXPORT_SYMBOL_GPL vmlinux 0x87af2020 phy_restart_aneg EXPORT_SYMBOL_GPL vmlinux 0x87b1ccfe led_set_brightness_sync EXPORT_SYMBOL_GPL vmlinux 0x87bd5385 devfreq_cooling_unregister -EXPORT_SYMBOL_GPL vmlinux 0x87c4fb2a netlink_has_listeners +EXPORT_SYMBOL_GPL vmlinux 0x87c0f74d ping_rcv EXPORT_SYMBOL_GPL vmlinux 0x87ce0be2 free_iova EXPORT_SYMBOL_GPL vmlinux 0x87d27d98 kthread_func -EXPORT_SYMBOL_GPL vmlinux 0x87d305b3 unregister_pernet_subsys +EXPORT_SYMBOL_GPL vmlinux 0x87e0ab58 __tracepoint_devlink_hwmsg EXPORT_SYMBOL_GPL vmlinux 0x87e64181 amd_nb_has_feature EXPORT_SYMBOL_GPL vmlinux 0x87f830de devm_regulator_unregister_supply_alias EXPORT_SYMBOL_GPL vmlinux 0x87fb805e kthread_unuse_mm EXPORT_SYMBOL_GPL vmlinux 0x8803de20 regulator_set_mode -EXPORT_SYMBOL_GPL vmlinux 0x880f4120 __SCK__tp_func_fdb_delete EXPORT_SYMBOL_GPL vmlinux 0x88128d5f devm_power_supply_register +EXPORT_SYMBOL_GPL vmlinux 0x881e17c0 spi_mem_dirmap_write EXPORT_SYMBOL_GPL vmlinux 0x8838c7b2 regmap_get_device EXPORT_SYMBOL_GPL vmlinux 0x885459ce __devm_clk_hw_register_divider EXPORT_SYMBOL_GPL vmlinux 0x885528a6 ring_buffer_discard_commit EXPORT_SYMBOL_GPL vmlinux 0x886a4ebd iommu_detach_device -EXPORT_SYMBOL_GPL vmlinux 0x88792ed5 __ndisc_fill_addr_option EXPORT_SYMBOL_GPL vmlinux 0x88840a41 power_supply_put_battery_info EXPORT_SYMBOL_GPL vmlinux 0x8886efd0 proc_mkdir_data EXPORT_SYMBOL_GPL vmlinux 0x888c5be5 irq_bypass_register_consumer +EXPORT_SYMBOL_GPL vmlinux 0x889fdffd nvme_start_queues EXPORT_SYMBOL_GPL vmlinux 0x88ab6fe3 kgdb_active EXPORT_SYMBOL_GPL vmlinux 0x88b4ae92 ring_buffer_normalize_time_stamp EXPORT_SYMBOL_GPL vmlinux 0x88b8fd3c inode_congested +EXPORT_SYMBOL_GPL vmlinux 0x88c0b2be strp_data_ready +EXPORT_SYMBOL_GPL vmlinux 0x88cce7d9 get_pid_task EXPORT_SYMBOL_GPL vmlinux 0x88d3b9d3 dax_finish_sync_fault EXPORT_SYMBOL_GPL vmlinux 0x88db5343 icc_link_create EXPORT_SYMBOL_GPL vmlinux 0x88e40de7 vmbus_free_ring EXPORT_SYMBOL_GPL vmlinux 0x88f2922f rio_local_get_device_id -EXPORT_SYMBOL_GPL vmlinux 0x88f2a118 udp6_lib_lookup EXPORT_SYMBOL_GPL vmlinux 0x88fd82ad pci_d3cold_enable EXPORT_SYMBOL_GPL vmlinux 0x8900ec72 regmap_noinc_read +EXPORT_SYMBOL_GPL vmlinux 0x890a0da7 strp_unpause EXPORT_SYMBOL_GPL vmlinux 0x890f4f97 __kprobe_event_gen_cmd_start EXPORT_SYMBOL_GPL vmlinux 0x890fa0fa btree_get_prev +EXPORT_SYMBOL_GPL vmlinux 0x8910a91f device_remove_file +EXPORT_SYMBOL_GPL vmlinux 0x8910d90d phy_package_join +EXPORT_SYMBOL_GPL vmlinux 0x8915db4c rtnl_af_unregister EXPORT_SYMBOL_GPL vmlinux 0x8924eb1e rcu_force_quiescent_state +EXPORT_SYMBOL_GPL vmlinux 0x892af9e7 __tracepoint_sched_util_est_cfs_tp EXPORT_SYMBOL_GPL vmlinux 0x892f9f04 __SCT__tp_func_devlink_hwerr EXPORT_SYMBOL_GPL vmlinux 0x8938ed77 get_user_pages_fast EXPORT_SYMBOL_GPL vmlinux 0x893abbdd devlink_fmsg_u32_pair_put EXPORT_SYMBOL_GPL vmlinux 0x8944ce02 ata_link_offline EXPORT_SYMBOL_GPL vmlinux 0x89485687 iommu_group_put +EXPORT_SYMBOL_GPL vmlinux 0x895a3ba8 spi_controller_dma_map_mem_op_data EXPORT_SYMBOL_GPL vmlinux 0x896a2ed5 irq_set_default_host -EXPORT_SYMBOL_GPL vmlinux 0x8980bafa sfp_add_phy EXPORT_SYMBOL_GPL vmlinux 0x8988d6f4 set_task_ioprio +EXPORT_SYMBOL_GPL vmlinux 0x89a3e5c5 netdev_rx_handler_unregister EXPORT_SYMBOL_GPL vmlinux 0x89ae7aa0 rsa_parse_pub_key EXPORT_SYMBOL_GPL vmlinux 0x89b44cf0 ata_ehi_clear_desc EXPORT_SYMBOL_GPL vmlinux 0x89bbafc6 usb_register_notify -EXPORT_SYMBOL_GPL vmlinux 0x89c07a2f devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL vmlinux 0x89c97fd9 proc_create_net_single EXPORT_SYMBOL_GPL vmlinux 0x89d39184 __lock_page_killable EXPORT_SYMBOL_GPL vmlinux 0x89d53d03 power_supply_external_power_changed EXPORT_SYMBOL_GPL vmlinux 0x89e340cf acpi_bus_get_ejd -EXPORT_SYMBOL_GPL vmlinux 0x89fe4a25 mptcp_token_get_sock EXPORT_SYMBOL_GPL vmlinux 0x8a069a8f shash_ahash_update EXPORT_SYMBOL_GPL vmlinux 0x8a240bff __xas_next EXPORT_SYMBOL_GPL vmlinux 0x8a26f06a pci_enable_sriov +EXPORT_SYMBOL_GPL vmlinux 0x8a285ab7 __SCK__tp_func_pelt_dl_tp EXPORT_SYMBOL_GPL vmlinux 0x8a294ae4 blk_mq_unfreeze_queue EXPORT_SYMBOL_GPL vmlinux 0x8a380109 wm831x_reg_lock EXPORT_SYMBOL_GPL vmlinux 0x8a3f84ba linear_range_get_selector_low EXPORT_SYMBOL_GPL vmlinux 0x8a3fe231 clk_hw_get_flags EXPORT_SYMBOL_GPL vmlinux 0x8a45a555 acpi_unregister_wakeup_handler +EXPORT_SYMBOL_GPL vmlinux 0x8a50915c bpf_prog_select_runtime EXPORT_SYMBOL_GPL vmlinux 0x8a52e41f power_supply_find_ocv2cap_table EXPORT_SYMBOL_GPL vmlinux 0x8a5b8285 devfreq_event_get_edev_by_phandle -EXPORT_SYMBOL_GPL vmlinux 0x8a628ae5 ip6_route_input_lookup EXPORT_SYMBOL_GPL vmlinux 0x8a62b81b sfp_upstream_stop EXPORT_SYMBOL_GPL vmlinux 0x8a687aaa debugfs_create_dir +EXPORT_SYMBOL_GPL vmlinux 0x8a6ee0f7 tcp_cong_avoid_ai EXPORT_SYMBOL_GPL vmlinux 0x8a72b6ad iommu_uapi_sva_unbind_gpasid EXPORT_SYMBOL_GPL vmlinux 0x8a7cb9c4 platform_thermal_package_rate_control EXPORT_SYMBOL_GPL vmlinux 0x8a7f7f0f efivar_entry_iter EXPORT_SYMBOL_GPL vmlinux 0x8a838ef6 intel_scu_ipc_dev_put EXPORT_SYMBOL_GPL vmlinux 0x8a83fb45 mpi_point_free_parts -EXPORT_SYMBOL_GPL vmlinux 0x8a8da991 ip_tunnel_encap_setup +EXPORT_SYMBOL_GPL vmlinux 0x8a98b480 do_xdp_generic EXPORT_SYMBOL_GPL vmlinux 0x8a9c70ed nvme_sec_submit -EXPORT_SYMBOL_GPL vmlinux 0x8aa7ee69 crypto_drop_spawn EXPORT_SYMBOL_GPL vmlinux 0x8abacc47 get_max_files EXPORT_SYMBOL_GPL vmlinux 0x8abdca8d __devm_intel_scu_ipc_register -EXPORT_SYMBOL_GPL vmlinux 0x8ad685cf spi_controller_dma_unmap_mem_op_data +EXPORT_SYMBOL_GPL vmlinux 0x8ad070d3 bpf_trace_run8 EXPORT_SYMBOL_GPL vmlinux 0x8add8999 iommu_fwspec_free EXPORT_SYMBOL_GPL vmlinux 0x8ae538a5 dma_get_slave_channel EXPORT_SYMBOL_GPL vmlinux 0x8aef446f devm_gpiod_get_array_optional @@ -16314,11 +16300,11 @@ EXPORT_SYMBOL_GPL vmlinux 0x8b149c36 clk_is_match EXPORT_SYMBOL_GPL vmlinux 0x8b1fd44e regulator_set_voltage_time_sel EXPORT_SYMBOL_GPL vmlinux 0x8b2cdd1a usb_pipe_type_check +EXPORT_SYMBOL_GPL vmlinux 0x8b2ce2e0 cn_add_callback EXPORT_SYMBOL_GPL vmlinux 0x8b30cc23 access_process_vm EXPORT_SYMBOL_GPL vmlinux 0x8b38348b clk_hw_register_fixed_factor EXPORT_SYMBOL_GPL vmlinux 0x8b5a3080 devm_hwmon_device_register_with_info EXPORT_SYMBOL_GPL vmlinux 0x8b79e38b icc_put -EXPORT_SYMBOL_GPL vmlinux 0x8b8d6839 ping_getfrag EXPORT_SYMBOL_GPL vmlinux 0x8b9200fd lookup_address EXPORT_SYMBOL_GPL vmlinux 0x8b92e24d virtqueue_poll EXPORT_SYMBOL_GPL vmlinux 0x8b95e6a2 __SCT__tp_func_pelt_irq_tp @@ -16332,11 +16318,11 @@ EXPORT_SYMBOL_GPL vmlinux 0x8bf872f2 unwind_next_frame EXPORT_SYMBOL_GPL vmlinux 0x8c0215f2 pm_system_wakeup EXPORT_SYMBOL_GPL vmlinux 0x8c03d20c destroy_workqueue -EXPORT_SYMBOL_GPL vmlinux 0x8c069912 tcp_enter_memory_pressure EXPORT_SYMBOL_GPL vmlinux 0x8c0702a4 vmf_insert_pfn_pud_prot -EXPORT_SYMBOL_GPL vmlinux 0x8c0772a9 ipv6_bpf_stub EXPORT_SYMBOL_GPL vmlinux 0x8c217275 pci_num_vf EXPORT_SYMBOL_GPL vmlinux 0x8c341c48 current_save_fsgs +EXPORT_SYMBOL_GPL vmlinux 0x8c38f71c fib_rules_seq_read +EXPORT_SYMBOL_GPL vmlinux 0x8c426ed6 ip_build_and_send_pkt EXPORT_SYMBOL_GPL vmlinux 0x8c4ac324 usb_create_hcd EXPORT_SYMBOL_GPL vmlinux 0x8c4fded2 sgx_virt_einit EXPORT_SYMBOL_GPL vmlinux 0x8c534753 da9052_disable_irq @@ -16346,40 +16332,41 @@ EXPORT_SYMBOL_GPL vmlinux 0x8c89e3b8 usb_phy_roothub_power_off EXPORT_SYMBOL_GPL vmlinux 0x8c8cc516 anon_transport_class_register EXPORT_SYMBOL_GPL vmlinux 0x8c9cfc80 iomap_finish_ioends -EXPORT_SYMBOL_GPL vmlinux 0x8ca3f683 skb_send_sock_locked +EXPORT_SYMBOL_GPL vmlinux 0x8ca1b4bf udp6_lib_lookup EXPORT_SYMBOL_GPL vmlinux 0x8ca6e7d1 bus_create_file -EXPORT_SYMBOL_GPL vmlinux 0x8ccf6776 skb_mpls_push EXPORT_SYMBOL_GPL vmlinux 0x8cdb0cb5 regmap_write_async EXPORT_SYMBOL_GPL vmlinux 0x8ceacd17 ata_sas_sync_probe +EXPORT_SYMBOL_GPL vmlinux 0x8cee7f30 validate_xmit_xfrm EXPORT_SYMBOL_GPL vmlinux 0x8cef8e46 usb_reset_endpoint +EXPORT_SYMBOL_GPL vmlinux 0x8cff2bbd crypto_inst_setname +EXPORT_SYMBOL_GPL vmlinux 0x8d0dfad9 devlink_sb_unregister EXPORT_SYMBOL_GPL vmlinux 0x8d1270b2 usb_alloc_urb -EXPORT_SYMBOL_GPL vmlinux 0x8d18fe41 tcp_reno_undo_cwnd EXPORT_SYMBOL_GPL vmlinux 0x8d1dcfc8 tty_buffer_lock_exclusive EXPORT_SYMBOL_GPL vmlinux 0x8d223840 regulator_bulk_force_disable EXPORT_SYMBOL_GPL vmlinux 0x8d22bb58 iommu_group_alloc EXPORT_SYMBOL_GPL vmlinux 0x8d2c03eb vmbus_allocate_mmio EXPORT_SYMBOL_GPL vmlinux 0x8d2fae52 init_user_ns EXPORT_SYMBOL_GPL vmlinux 0x8d3330b6 cpuacct_cgrp_subsys_enabled_key +EXPORT_SYMBOL_GPL vmlinux 0x8d52cb55 xfrm_dev_resume EXPORT_SYMBOL_GPL vmlinux 0x8d5ca5fb cpufreq_driver_fast_switch EXPORT_SYMBOL_GPL vmlinux 0x8d5ec6c2 ata_sff_wait_after_reset EXPORT_SYMBOL_GPL vmlinux 0x8d609757 devm_regmap_field_bulk_free -EXPORT_SYMBOL_GPL vmlinux 0x8d63374c fwnode_graph_get_port_parent EXPORT_SYMBOL_GPL vmlinux 0x8d71d963 devm_acpi_dma_controller_register +EXPORT_SYMBOL_GPL vmlinux 0x8d7270fb nfnl_ct_hook EXPORT_SYMBOL_GPL vmlinux 0x8d7e3373 hwpoison_filter_dev_major EXPORT_SYMBOL_GPL vmlinux 0x8d86c548 smpboot_unregister_percpu_thread EXPORT_SYMBOL_GPL vmlinux 0x8d88ee64 sbitmap_queue_wake_up -EXPORT_SYMBOL_GPL vmlinux 0x8d8d2f20 __xfrm_state_mtu -EXPORT_SYMBOL_GPL vmlinux 0x8dab35ae fixed_phy_unregister +EXPORT_SYMBOL_GPL vmlinux 0x8da1b332 sk_free_unlock_clone EXPORT_SYMBOL_GPL vmlinux 0x8dafdded lwtunnel_valid_encap_type_attr EXPORT_SYMBOL_GPL vmlinux 0x8db07a95 __efivar_entry_delete EXPORT_SYMBOL_GPL vmlinux 0x8db2b199 iommu_device_sysfs_remove EXPORT_SYMBOL_GPL vmlinux 0x8db937b3 dmaengine_desc_set_metadata_len EXPORT_SYMBOL_GPL vmlinux 0x8dd218b0 icc_bulk_disable EXPORT_SYMBOL_GPL vmlinux 0x8dd4567b parse_OID +EXPORT_SYMBOL_GPL vmlinux 0x8dd5ab0d get_net_ns_by_fd EXPORT_SYMBOL_GPL vmlinux 0x8dd99170 power_supply_am_i_supplied EXPORT_SYMBOL_GPL vmlinux 0x8dddc6e5 blk_mq_unquiesce_queue EXPORT_SYMBOL_GPL vmlinux 0x8de6817a acpi_dev_resource_address_space -EXPORT_SYMBOL_GPL vmlinux 0x8df4a3ec perf_event_read_value EXPORT_SYMBOL_GPL vmlinux 0x8dfa2e8a gpiod_set_raw_array_value EXPORT_SYMBOL_GPL vmlinux 0x8e036fd2 fsnotify_find_mark EXPORT_SYMBOL_GPL vmlinux 0x8e037c26 led_trigger_event @@ -16392,53 +16379,49 @@ EXPORT_SYMBOL_GPL vmlinux 0x8e649137 pci_cfg_access_unlock EXPORT_SYMBOL_GPL vmlinux 0x8e6b1a9e net_selftest_get_count EXPORT_SYMBOL_GPL vmlinux 0x8e6fa8b5 apei_exec_pre_map_gars -EXPORT_SYMBOL_GPL vmlinux 0x8e7e7135 spi_unregister_device EXPORT_SYMBOL_GPL vmlinux 0x8e92f7c4 static_key_slow_inc EXPORT_SYMBOL_GPL vmlinux 0x8e9d04eb crypto_register_kpp +EXPORT_SYMBOL_GPL vmlinux 0x8ea93132 skb_cow_data EXPORT_SYMBOL_GPL vmlinux 0x8ead800c user_free_preparse EXPORT_SYMBOL_GPL vmlinux 0x8eae7d96 blkdev_zone_mgmt -EXPORT_SYMBOL_GPL vmlinux 0x8eb34e60 espintcp_push_skb +EXPORT_SYMBOL_GPL vmlinux 0x8eb27f6d tcp_ca_openreq_child EXPORT_SYMBOL_GPL vmlinux 0x8ec28ac5 serial8250_em485_destroy EXPORT_SYMBOL_GPL vmlinux 0x8ec72436 transport_configure_device -EXPORT_SYMBOL_GPL vmlinux 0x8edd775a dst_blackhole_mtu EXPORT_SYMBOL_GPL vmlinux 0x8edf3a52 dev_pm_genpd_set_performance_state EXPORT_SYMBOL_GPL vmlinux 0x8eed0fa2 sbitmap_get_shallow EXPORT_SYMBOL_GPL vmlinux 0x8eee3399 dax_read_unlock EXPORT_SYMBOL_GPL vmlinux 0x8effb505 phy_gbit_features EXPORT_SYMBOL_GPL vmlinux 0x8f0748af rcu_expedite_gp +EXPORT_SYMBOL_GPL vmlinux 0x8f1862f1 crypto_type_has_alg EXPORT_SYMBOL_GPL vmlinux 0x8f1feb2d usb_poison_urb EXPORT_SYMBOL_GPL vmlinux 0x8f26a743 ata_port_wait_eh EXPORT_SYMBOL_GPL vmlinux 0x8f2eb429 kvm_arch_para_hints -EXPORT_SYMBOL_GPL vmlinux 0x8f2f1b08 device_get_match_data -EXPORT_SYMBOL_GPL vmlinux 0x8f3a7397 skcipher_walk_aead_decrypt -EXPORT_SYMBOL_GPL vmlinux 0x8f495f6a bpf_offload_dev_netdev_register EXPORT_SYMBOL_GPL vmlinux 0x8f67e42e acpi_device_get_match_data -EXPORT_SYMBOL_GPL vmlinux 0x8f6c4a59 tcp_get_syncookie_mss EXPORT_SYMBOL_GPL vmlinux 0x8f6cee77 __round_jiffies_relative EXPORT_SYMBOL_GPL vmlinux 0x8f74f0e6 debugfs_attr_read EXPORT_SYMBOL_GPL vmlinux 0x8f781556 irq_domain_associate EXPORT_SYMBOL_GPL vmlinux 0x8f786bee fs_umode_to_dtype EXPORT_SYMBOL_GPL vmlinux 0x8f7bd0a6 btree_init_mempool +EXPORT_SYMBOL_GPL vmlinux 0x8f7d43cc device_property_read_string EXPORT_SYMBOL_GPL vmlinux 0x8f801d8d rhashtable_destroy EXPORT_SYMBOL_GPL vmlinux 0x8f8a5712 debugfs_create_ulong +EXPORT_SYMBOL_GPL vmlinux 0x8f8d12e0 ethnl_cable_test_amplitude EXPORT_SYMBOL_GPL vmlinux 0x8f9ccddf led_trigger_remove +EXPORT_SYMBOL_GPL vmlinux 0x8fa1e7c6 devlink_port_health_reporter_create EXPORT_SYMBOL_GPL vmlinux 0x8fa9d9e8 __SCT__tp_func_xdp_exception EXPORT_SYMBOL_GPL vmlinux 0x8faa800d acpi_cpc_valid EXPORT_SYMBOL_GPL vmlinux 0x8fad082b rio_free_net EXPORT_SYMBOL_GPL vmlinux 0x8fb5a01a nd_blk_region_set_provider_data EXPORT_SYMBOL_GPL vmlinux 0x8fc12788 software_node_unregister_node_group EXPORT_SYMBOL_GPL vmlinux 0x8fc548f0 start_poll_synchronize_srcu -EXPORT_SYMBOL_GPL vmlinux 0x8fdadde4 nfs_ssc_client_tbl +EXPORT_SYMBOL_GPL vmlinux 0x8fdde808 tcp_done EXPORT_SYMBOL_GPL vmlinux 0x8ff60436 mpi_ec_add_points EXPORT_SYMBOL_GPL vmlinux 0x8ff76915 gpiochip_relres_irq EXPORT_SYMBOL_GPL vmlinux 0x8ffb1df7 acpi_get_psd_map EXPORT_SYMBOL_GPL vmlinux 0x9007d972 rhashtable_walk_peek -EXPORT_SYMBOL_GPL vmlinux 0x901c9a3a inet_hash_connect EXPORT_SYMBOL_GPL vmlinux 0x901ecf38 crypto_default_rng EXPORT_SYMBOL_GPL vmlinux 0x9024f443 mds_user_clear -EXPORT_SYMBOL_GPL vmlinux 0x90271118 housekeeping_affine EXPORT_SYMBOL_GPL vmlinux 0x903b627c list_lru_isolate_move -EXPORT_SYMBOL_GPL vmlinux 0x903b9dc2 fwnode_connection_find_match EXPORT_SYMBOL_GPL vmlinux 0x9042884b da9052_adc_read_temp EXPORT_SYMBOL_GPL vmlinux 0x904aaba2 usb_for_each_port EXPORT_SYMBOL_GPL vmlinux 0x90688bcd devlink_info_driver_name_put @@ -16447,27 +16430,28 @@ EXPORT_SYMBOL_GPL vmlinux 0x909dbea3 __pm_stay_awake EXPORT_SYMBOL_GPL vmlinux 0x90a9d8cc hv_is_hyperv_initialized EXPORT_SYMBOL_GPL vmlinux 0x90ad66b1 software_node_unregister_nodes -EXPORT_SYMBOL_GPL vmlinux 0x90bb5f9e fib_new_table EXPORT_SYMBOL_GPL vmlinux 0x90c0c93f devm_regulator_bulk_unregister_supply_alias EXPORT_SYMBOL_GPL vmlinux 0x90c8498c apei_exec_write_register EXPORT_SYMBOL_GPL vmlinux 0x90de0452 platform_thermal_package_notify EXPORT_SYMBOL_GPL vmlinux 0x90ea499e pinctrl_get_group_pins -EXPORT_SYMBOL_GPL vmlinux 0x90eae63b xdp_rxq_info_unreg_mem_model EXPORT_SYMBOL_GPL vmlinux 0x90eaee22 mm_account_pinned_pages EXPORT_SYMBOL_GPL vmlinux 0x90f98515 blkcg_root EXPORT_SYMBOL_GPL vmlinux 0x9105c10b devm_pinctrl_register_and_init EXPORT_SYMBOL_GPL vmlinux 0x9107d224 __SCT__tp_func_arm_event EXPORT_SYMBOL_GPL vmlinux 0x91125967 rio_request_dma -EXPORT_SYMBOL_GPL vmlinux 0x911e30eb crypto_stats_kpp_compute_shared_secret +EXPORT_SYMBOL_GPL vmlinux 0x911e2562 __traceiter_devlink_hwerr EXPORT_SYMBOL_GPL vmlinux 0x9125e3cc do_take_over_console +EXPORT_SYMBOL_GPL vmlinux 0x9126748e __tracepoint_neigh_cleanup_and_release EXPORT_SYMBOL_GPL vmlinux 0x9134f711 srcu_barrier EXPORT_SYMBOL_GPL vmlinux 0x913bcef6 irq_chip_unmask_parent EXPORT_SYMBOL_GPL vmlinux 0x913f1f81 pm_generic_restore_noirq EXPORT_SYMBOL_GPL vmlinux 0x91506f0f platform_msi_domain_free_irqs +EXPORT_SYMBOL_GPL vmlinux 0x916c4d1d crypto_unregister_template +EXPORT_SYMBOL_GPL vmlinux 0x916d11db bpf_map_inc_with_uref EXPORT_SYMBOL_GPL vmlinux 0x917d953b __SCT__tp_func_wbc_writepage EXPORT_SYMBOL_GPL vmlinux 0x91881295 serial8250_rx_chars -EXPORT_SYMBOL_GPL vmlinux 0x91887fe1 fwnode_get_name EXPORT_SYMBOL_GPL vmlinux 0x91955a9f start_poll_synchronize_rcu +EXPORT_SYMBOL_GPL vmlinux 0x91a55227 preempt_notifier_unregister EXPORT_SYMBOL_GPL vmlinux 0x91ae265a is_swiotlb_active EXPORT_SYMBOL_GPL vmlinux 0x91b774a1 mpi_scanval EXPORT_SYMBOL_GPL vmlinux 0x91b9a4ba e820__mapped_any @@ -16475,10 +16459,11 @@ EXPORT_SYMBOL_GPL vmlinux 0x91be1ffd pci_reset_function_locked EXPORT_SYMBOL_GPL vmlinux 0x91c6e5b0 pcap_to_irq EXPORT_SYMBOL_GPL vmlinux 0x91c8b5b5 mutex_lock_io -EXPORT_SYMBOL_GPL vmlinux 0x91d59399 device_create_with_groups EXPORT_SYMBOL_GPL vmlinux 0x91d839f9 usb_put_dev +EXPORT_SYMBOL_GPL vmlinux 0x91da0a88 ipv6_opt_accepted EXPORT_SYMBOL_GPL vmlinux 0x91ea8726 asn1_encode_boolean EXPORT_SYMBOL_GPL vmlinux 0x91f83baa rio_mport_read_config_8 +EXPORT_SYMBOL_GPL vmlinux 0x9200fb25 devlink_region_create EXPORT_SYMBOL_GPL vmlinux 0x920432b7 fsverity_file_open EXPORT_SYMBOL_GPL vmlinux 0x920cc389 visitorl EXPORT_SYMBOL_GPL vmlinux 0x920ee981 gpiod_set_debounce @@ -16486,23 +16471,27 @@ EXPORT_SYMBOL_GPL vmlinux 0x92295424 clk_register_gate EXPORT_SYMBOL_GPL vmlinux 0x9241b358 __static_key_slow_dec_deferred EXPORT_SYMBOL_GPL vmlinux 0x924c46f8 zs_unmap_object -EXPORT_SYMBOL_GPL vmlinux 0x92557cf6 devlink_params_register EXPORT_SYMBOL_GPL vmlinux 0x9268ef17 regulator_count_voltages -EXPORT_SYMBOL_GPL vmlinux 0x9283fcfb vtime_guest_exit +EXPORT_SYMBOL_GPL vmlinux 0x926a15a4 perf_event_update_userpage +EXPORT_SYMBOL_GPL vmlinux 0x92977bc9 ip6_datagram_recv_ctl EXPORT_SYMBOL_GPL vmlinux 0x92a1b63b fuse_dev_operations +EXPORT_SYMBOL_GPL vmlinux 0x92a331a9 devlink_dpipe_table_register EXPORT_SYMBOL_GPL vmlinux 0x92a7ab3e devm_bitmap_alloc EXPORT_SYMBOL_GPL vmlinux 0x92b146c1 transport_class_unregister +EXPORT_SYMBOL_GPL vmlinux 0x92b4abde nvme_wait_freeze EXPORT_SYMBOL_GPL vmlinux 0x92b8c78b hyperv_pcpu_output_arg EXPORT_SYMBOL_GPL vmlinux 0x92cda682 acpi_find_child_device EXPORT_SYMBOL_GPL vmlinux 0x92d31cfb fixed_phy_add EXPORT_SYMBOL_GPL vmlinux 0x92db8f68 do_trace_rcu_torture_read -EXPORT_SYMBOL_GPL vmlinux 0x92e18051 __SCK__tp_func_sched_util_est_cfs_tp EXPORT_SYMBOL_GPL vmlinux 0x92e8e9ab fsverity_enqueue_verify_work EXPORT_SYMBOL_GPL vmlinux 0x92fe20e2 regmap_reinit_cache -EXPORT_SYMBOL_GPL vmlinux 0x9303e8dc bpf_prog_get_type_dev +EXPORT_SYMBOL_GPL vmlinux 0x9304278d bpf_prog_alloc +EXPORT_SYMBOL_GPL vmlinux 0x9307990a fib_nh_common_init EXPORT_SYMBOL_GPL vmlinux 0x9315ba12 vfio_unregister_iommu_driver EXPORT_SYMBOL_GPL vmlinux 0x931bf961 crypto_get_default_null_skcipher +EXPORT_SYMBOL_GPL vmlinux 0x931e48bb __netpoll_cleanup EXPORT_SYMBOL_GPL vmlinux 0x931e74cc nvdimm_provider_data +EXPORT_SYMBOL_GPL vmlinux 0x9324e422 ping_seq_next EXPORT_SYMBOL_GPL vmlinux 0x93255b2b ring_buffer_lock_reserve EXPORT_SYMBOL_GPL vmlinux 0x932c8d7a linear_range_get_value_array EXPORT_SYMBOL_GPL vmlinux 0x932debee verify_signature @@ -16510,11 +16499,9 @@ EXPORT_SYMBOL_GPL vmlinux 0x933f75e0 usb_unlink_anchored_urbs EXPORT_SYMBOL_GPL vmlinux 0x935cf695 dev_pm_opp_get_max_transition_latency EXPORT_SYMBOL_GPL vmlinux 0x9384cd49 ata_tf_from_fis -EXPORT_SYMBOL_GPL vmlinux 0x93a698db bpf_verifier_log_write EXPORT_SYMBOL_GPL vmlinux 0x93c7edeb usb_find_common_endpoints EXPORT_SYMBOL_GPL vmlinux 0x93d27991 vp_modern_queue_vector EXPORT_SYMBOL_GPL vmlinux 0x93dc2586 pgprot_writethrough -EXPORT_SYMBOL_GPL vmlinux 0x93e75c28 nvme_alloc_request EXPORT_SYMBOL_GPL vmlinux 0x93edef07 devlink_health_report EXPORT_SYMBOL_GPL vmlinux 0x941a3d4f clk_hw_unregister_fixed_rate EXPORT_SYMBOL_GPL vmlinux 0x941f2aaa eventfd_ctx_put @@ -16522,20 +16509,26 @@ EXPORT_SYMBOL_GPL vmlinux 0x9425bb34 nvmem_dev_name EXPORT_SYMBOL_GPL vmlinux 0x942d1cf3 class_remove_file_ns EXPORT_SYMBOL_GPL vmlinux 0x9430b198 trace_dump_stack +EXPORT_SYMBOL_GPL vmlinux 0x9432791b device_for_each_child EXPORT_SYMBOL_GPL vmlinux 0x94544d11 platform_device_register +EXPORT_SYMBOL_GPL vmlinux 0x94549378 aead_geniv_alloc EXPORT_SYMBOL_GPL vmlinux 0x946dd559 sha224_zero_message_hash +EXPORT_SYMBOL_GPL vmlinux 0x94792047 mptcp_pm_get_local_addr_max EXPORT_SYMBOL_GPL vmlinux 0x947990fc efivar_entry_get EXPORT_SYMBOL_GPL vmlinux 0x947b40c6 cpu_smt_possible EXPORT_SYMBOL_GPL vmlinux 0x947c7aeb pci_set_cacheline_size EXPORT_SYMBOL_GPL vmlinux 0x94814a0a dev_pm_opp_detach_genpd -EXPORT_SYMBOL_GPL vmlinux 0x9493fb02 nexthop_select_path +EXPORT_SYMBOL_GPL vmlinux 0x94899e44 addrconf_prefix_rcv_add_addr EXPORT_SYMBOL_GPL vmlinux 0x949b5176 devlink_region_snapshot_create EXPORT_SYMBOL_GPL vmlinux 0x949f7342 __alloc_percpu -EXPORT_SYMBOL_GPL vmlinux 0x94b1e12d __strp_unpause +EXPORT_SYMBOL_GPL vmlinux 0x94a854ea devlink_free +EXPORT_SYMBOL_GPL vmlinux 0x94b97a1c task_active_pid_ns EXPORT_SYMBOL_GPL vmlinux 0x94ba7a4e tpm_put_ops EXPORT_SYMBOL_GPL vmlinux 0x94c4e6be irq_chip_set_parent_state EXPORT_SYMBOL_GPL vmlinux 0x94e52fd3 led_trigger_set_default EXPORT_SYMBOL_GPL vmlinux 0x94ef4d05 cpci_hp_stop +EXPORT_SYMBOL_GPL vmlinux 0x94f25bcb inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0x94f62dec __traceiter_pelt_cfs_tp EXPORT_SYMBOL_GPL vmlinux 0x9504df26 irq_wake_thread EXPORT_SYMBOL_GPL vmlinux 0x950eddd9 of_phy_get EXPORT_SYMBOL_GPL vmlinux 0x9514f883 phy_select_page @@ -16543,11 +16536,10 @@ EXPORT_SYMBOL_GPL vmlinux 0x952664c5 do_exit EXPORT_SYMBOL_GPL vmlinux 0x953e1b9e ktime_get_real_seconds EXPORT_SYMBOL_GPL vmlinux 0x9542c697 rio_mport_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0x9555bbd1 bpf_prog_get_type_dev EXPORT_SYMBOL_GPL vmlinux 0x955b0e2e kthread_worker_fn EXPORT_SYMBOL_GPL vmlinux 0x955ed34f sata_async_notification EXPORT_SYMBOL_GPL vmlinux 0x95609b26 context_tracking_key -EXPORT_SYMBOL_GPL vmlinux 0x956335de mdiobus_modify -EXPORT_SYMBOL_GPL vmlinux 0x956a1542 xfrm_audit_policy_add EXPORT_SYMBOL_GPL vmlinux 0x956ac400 ring_buffer_dropped_events_cpu EXPORT_SYMBOL_GPL vmlinux 0x956c4d51 irq_chip_retrigger_hierarchy EXPORT_SYMBOL_GPL vmlinux 0x956ce058 securityfs_remove @@ -16555,29 +16547,31 @@ EXPORT_SYMBOL_GPL vmlinux 0x958df3ac zs_free EXPORT_SYMBOL_GPL vmlinux 0x9593ef31 register_ftrace_export EXPORT_SYMBOL_GPL vmlinux 0x9595b53f devm_pm_opp_set_clkname -EXPORT_SYMBOL_GPL vmlinux 0x95a10893 switchdev_port_obj_del +EXPORT_SYMBOL_GPL vmlinux 0x95a90bb7 ip_valid_fib_dump_req EXPORT_SYMBOL_GPL vmlinux 0x95aab456 blk_mq_pci_map_queues -EXPORT_SYMBOL_GPL vmlinux 0x95ae1a46 ip6_pol_route EXPORT_SYMBOL_GPL vmlinux 0x95b6a8a8 ata_host_activate EXPORT_SYMBOL_GPL vmlinux 0x95bc9078 btree_free EXPORT_SYMBOL_GPL vmlinux 0x95bea8b9 shmem_truncate_range +EXPORT_SYMBOL_GPL vmlinux 0x95bebba9 devlink_resource_occ_get_register +EXPORT_SYMBOL_GPL vmlinux 0x95bf60d2 tcp_rate_check_app_limited +EXPORT_SYMBOL_GPL vmlinux 0x95d8a11f ip_md_tunnel_xmit EXPORT_SYMBOL_GPL vmlinux 0x95e31a6b kthread_cancel_work_sync +EXPORT_SYMBOL_GPL vmlinux 0x95e912e5 __SCK__tp_func_fdb_delete +EXPORT_SYMBOL_GPL vmlinux 0x95ece7b8 bpf_prog_inc EXPORT_SYMBOL_GPL vmlinux 0x95ef1ccc dmi_memdev_size EXPORT_SYMBOL_GPL vmlinux 0x95fd2e18 rio_add_device EXPORT_SYMBOL_GPL vmlinux 0x961286e0 ring_buffer_read_events_cpu EXPORT_SYMBOL_GPL vmlinux 0x9615b005 hv_map_ioapic_interrupt EXPORT_SYMBOL_GPL vmlinux 0x9621d738 alarm_start_relative EXPORT_SYMBOL_GPL vmlinux 0x962c8ae1 usb_kill_anchored_urbs -EXPORT_SYMBOL_GPL vmlinux 0x963ad06e device_destroy EXPORT_SYMBOL_GPL vmlinux 0x9640a1b7 crypto_hash_walk_first EXPORT_SYMBOL_GPL vmlinux 0x964d9345 regmap_attach_dev -EXPORT_SYMBOL_GPL vmlinux 0x96505169 mptcp_token_iter_next EXPORT_SYMBOL_GPL vmlinux 0x96554810 register_keyboard_notifier EXPORT_SYMBOL_GPL vmlinux 0x968588c5 component_unbind_all EXPORT_SYMBOL_GPL vmlinux 0x968f9a23 efivar_entry_iter_begin EXPORT_SYMBOL_GPL vmlinux 0x96a2d0b7 blk_queue_flag_test_and_set EXPORT_SYMBOL_GPL vmlinux 0x96b42289 ata_port_pbar_desc -EXPORT_SYMBOL_GPL vmlinux 0x96c6d613 sk_msg_zerocopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0x96c6ac1e spi_mem_exec_op EXPORT_SYMBOL_GPL vmlinux 0x96ecd878 pci_epc_mem_init EXPORT_SYMBOL_GPL vmlinux 0x96f1442b wm5110_irq EXPORT_SYMBOL_GPL vmlinux 0x96f51631 syscon_regmap_lookup_by_phandle_optional @@ -16585,7 +16579,6 @@ EXPORT_SYMBOL_GPL vmlinux 0x9714e0bb ktime_get_raw EXPORT_SYMBOL_GPL vmlinux 0x9719bcfd pmc_atom_read EXPORT_SYMBOL_GPL vmlinux 0x971b87bc pci_epf_type_add_cfs -EXPORT_SYMBOL_GPL vmlinux 0x9720f593 bpf_sk_storage_diag_put EXPORT_SYMBOL_GPL vmlinux 0x9734652e tpm_tis_remove EXPORT_SYMBOL_GPL vmlinux 0x973bb12b blk_mq_sched_try_insert_merge EXPORT_SYMBOL_GPL vmlinux 0x975519c1 asymmetric_key_id_same @@ -16593,37 +16586,33 @@ EXPORT_SYMBOL_GPL vmlinux 0x97623558 xas_create_range EXPORT_SYMBOL_GPL vmlinux 0x97663037 poll_state_synchronize_srcu EXPORT_SYMBOL_GPL vmlinux 0x977be5c7 klist_iter_init_node -EXPORT_SYMBOL_GPL vmlinux 0x9786c601 __SCK__tp_func_br_fdb_update EXPORT_SYMBOL_GPL vmlinux 0x97936645 tpm_default_chip EXPORT_SYMBOL_GPL vmlinux 0x979e6c2c platform_device_unregister EXPORT_SYMBOL_GPL vmlinux 0x979f9410 efivars_register EXPORT_SYMBOL_GPL vmlinux 0x97bcdc61 dma_request_chan EXPORT_SYMBOL_GPL vmlinux 0x97be44f4 usb_deregister_device_driver EXPORT_SYMBOL_GPL vmlinux 0x97c540d7 agp_add_bridge +EXPORT_SYMBOL_GPL vmlinux 0x97caa0e9 __traceiter_fib6_table_lookup +EXPORT_SYMBOL_GPL vmlinux 0x97d93986 sched_trace_rq_avg_rt EXPORT_SYMBOL_GPL vmlinux 0x97de2b83 debug_locks_silent EXPORT_SYMBOL_GPL vmlinux 0x97e7f902 trace_vbprintk EXPORT_SYMBOL_GPL vmlinux 0x97ee16dd fuse_dev_fiq_ops EXPORT_SYMBOL_GPL vmlinux 0x97f6edd8 bdi_dev_name -EXPORT_SYMBOL_GPL vmlinux 0x97f87c15 security_kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0x97fd156d fwnode_handle_put +EXPORT_SYMBOL_GPL vmlinux 0x97ff1e2d is_skb_forwardable EXPORT_SYMBOL_GPL vmlinux 0x982ec7f9 phy_set_mode_ext EXPORT_SYMBOL_GPL vmlinux 0x98324258 fsverity_ioctl_enable EXPORT_SYMBOL_GPL vmlinux 0x9833bc0c hvc_kick EXPORT_SYMBOL_GPL vmlinux 0x98503a63 mpi_alloc -EXPORT_SYMBOL_GPL vmlinux 0x9853c0c6 of_css EXPORT_SYMBOL_GPL vmlinux 0x985453e1 lease_unregister_notifier -EXPORT_SYMBOL_GPL vmlinux 0x986cbb61 raw_hash_sk EXPORT_SYMBOL_GPL vmlinux 0x9875be68 serial8250_do_set_divisor EXPORT_SYMBOL_GPL vmlinux 0x9879932b crypto_register_notifier -EXPORT_SYMBOL_GPL vmlinux 0x988ced1c spi_res_alloc EXPORT_SYMBOL_GPL vmlinux 0x989074ff kmsg_dump_reason_str EXPORT_SYMBOL_GPL vmlinux 0x9896e1b3 shake_page EXPORT_SYMBOL_GPL vmlinux 0x989d4150 pinctrl_dev_get_name EXPORT_SYMBOL_GPL vmlinux 0x98b142fa blk_fill_rwbs -EXPORT_SYMBOL_GPL vmlinux 0x98b48a14 devlink_resources_unregister EXPORT_SYMBOL_GPL vmlinux 0x98bf74ff __pci_epc_create -EXPORT_SYMBOL_GPL vmlinux 0x98c26571 __inet_inherit_port -EXPORT_SYMBOL_GPL vmlinux 0x98c96bfa dst_blackhole_redirect -EXPORT_SYMBOL_GPL vmlinux 0x98d50c6f __udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0x98ce4ed8 udp_abort EXPORT_SYMBOL_GPL vmlinux 0x98e0e438 iomap_writepages EXPORT_SYMBOL_GPL vmlinux 0x98ee62b2 ring_buffer_record_disable_cpu EXPORT_SYMBOL_GPL vmlinux 0x98f13437 fuse_sync_release @@ -16632,20 +16621,25 @@ EXPORT_SYMBOL_GPL vmlinux 0x98fa1e20 dm_get_reserved_rq_based_ios EXPORT_SYMBOL_GPL vmlinux 0x98fcfe54 usb_unpoison_urb EXPORT_SYMBOL_GPL vmlinux 0x990ae905 uprobe_register +EXPORT_SYMBOL_GPL vmlinux 0x991a440e skb_zerocopy_iter_stream EXPORT_SYMBOL_GPL vmlinux 0x992a0037 dax_writeback_mapping_range EXPORT_SYMBOL_GPL vmlinux 0x993bdcb1 __traceiter_rpm_suspend EXPORT_SYMBOL_GPL vmlinux 0x9940fe1d dev_dax_probe EXPORT_SYMBOL_GPL vmlinux 0x99430ba2 acpi_get_phys_id +EXPORT_SYMBOL_GPL vmlinux 0x994502df dev_fwnode +EXPORT_SYMBOL_GPL vmlinux 0x9947b692 tcp_abort +EXPORT_SYMBOL_GPL vmlinux 0x994813c0 spi_unregister_controller EXPORT_SYMBOL_GPL vmlinux 0x995d1071 prof_on -EXPORT_SYMBOL_GPL vmlinux 0x99646b83 l3mdev_link_scope_lookup EXPORT_SYMBOL_GPL vmlinux 0x9968aacb __audit_log_nfcfg EXPORT_SYMBOL_GPL vmlinux 0x9976cbda trace_put_event_file -EXPORT_SYMBOL_GPL vmlinux 0x9981cbab device_show_bool +EXPORT_SYMBOL_GPL vmlinux 0x997b97b4 sfp_register_socket EXPORT_SYMBOL_GPL vmlinux 0x998d79d6 x509_decode_time +EXPORT_SYMBOL_GPL vmlinux 0x9999a05f device_set_of_node_from_dev +EXPORT_SYMBOL_GPL vmlinux 0x99c3c424 xfrm_dev_state_add EXPORT_SYMBOL_GPL vmlinux 0x99cd9a1e devm_reset_controller_register EXPORT_SYMBOL_GPL vmlinux 0x99df1ab3 blk_steal_bios EXPORT_SYMBOL_GPL vmlinux 0x99e22a61 debugfs_create_regset32 -EXPORT_SYMBOL_GPL vmlinux 0x99e91138 skb_complete_tx_timestamp +EXPORT_SYMBOL_GPL vmlinux 0x99eb0ae5 __SCK__tp_func_pelt_se_tp EXPORT_SYMBOL_GPL vmlinux 0x99f018c4 nvmem_cell_read EXPORT_SYMBOL_GPL vmlinux 0x99f2d00a sysfs_emit_at EXPORT_SYMBOL_GPL vmlinux 0x9a0746cb __traceiter_block_rq_remap @@ -16655,13 +16649,10 @@ EXPORT_SYMBOL_GPL vmlinux 0x9a2f415c devm_kmalloc EXPORT_SYMBOL_GPL vmlinux 0x9a31f37a request_firmware_direct EXPORT_SYMBOL_GPL vmlinux 0x9a40b941 nvdimm_name -EXPORT_SYMBOL_GPL vmlinux 0x9a4b7053 clean_acked_data_enable EXPORT_SYMBOL_GPL vmlinux 0x9a53460c phy_set_speed EXPORT_SYMBOL_GPL vmlinux 0x9a58dd2d trace_print_bitmask_seq EXPORT_SYMBOL_GPL vmlinux 0x9a5b5f21 wakeup_source_create EXPORT_SYMBOL_GPL vmlinux 0x9a6f2918 rio_route_get_entry -EXPORT_SYMBOL_GPL vmlinux 0x9a815479 ip_tunnel_uninit -EXPORT_SYMBOL_GPL vmlinux 0x9a82918a devlink_trap_policers_register EXPORT_SYMBOL_GPL vmlinux 0x9a87c5eb vmbus_alloc_ring EXPORT_SYMBOL_GPL vmlinux 0x9a89966f virtio_config_changed EXPORT_SYMBOL_GPL vmlinux 0x9a899d41 pci_max_pasids @@ -16671,18 +16662,20 @@ EXPORT_SYMBOL_GPL vmlinux 0x9aaac699 dev_pm_opp_cpumask_remove_table EXPORT_SYMBOL_GPL vmlinux 0x9ab1c616 wm8997_irq EXPORT_SYMBOL_GPL vmlinux 0x9ac11b74 suspend_set_ops +EXPORT_SYMBOL_GPL vmlinux 0x9ac8aea3 fixed_phy_register_with_gpiod EXPORT_SYMBOL_GPL vmlinux 0x9ad7f319 thermal_zone_device_disable EXPORT_SYMBOL_GPL vmlinux 0x9aeacb87 ring_buffer_iter_empty EXPORT_SYMBOL_GPL vmlinux 0x9af49514 icc_bulk_set_bw -EXPORT_SYMBOL_GPL vmlinux 0x9b12044b spi_mem_get_name +EXPORT_SYMBOL_GPL vmlinux 0x9b0f89c9 raw_seq_stop EXPORT_SYMBOL_GPL vmlinux 0x9b1894f4 usb_autopm_put_interface_async EXPORT_SYMBOL_GPL vmlinux 0x9b311235 mbox_chan_txdone +EXPORT_SYMBOL_GPL vmlinux 0x9b4121e1 spi_mem_driver_unregister EXPORT_SYMBOL_GPL vmlinux 0x9b4185b8 icc_set_tag EXPORT_SYMBOL_GPL vmlinux 0x9b555c8c pm_suspend_default_s2idle +EXPORT_SYMBOL_GPL vmlinux 0x9b57a5a1 aead_init_geniv EXPORT_SYMBOL_GPL vmlinux 0x9b5b9f0f crypto_shash_setkey EXPORT_SYMBOL_GPL vmlinux 0x9b6509cd clk_bulk_get_optional EXPORT_SYMBOL_GPL vmlinux 0x9b698c42 ioasid_set_data -EXPORT_SYMBOL_GPL vmlinux 0x9b6dcd32 __sock_recv_wifi_status EXPORT_SYMBOL_GPL vmlinux 0x9b6ec967 ring_buffer_size EXPORT_SYMBOL_GPL vmlinux 0x9b7468c8 dw_pcie_ep_init_notify EXPORT_SYMBOL_GPL vmlinux 0x9b7a73af devm_hwspin_lock_free @@ -16698,28 +16691,29 @@ EXPORT_SYMBOL_GPL vmlinux 0x9ba6b9fd vmbus_establish_gpadl EXPORT_SYMBOL_GPL vmlinux 0x9bad141d hv_hypercall_pg EXPORT_SYMBOL_GPL vmlinux 0x9bb77285 pm_generic_freeze_noirq +EXPORT_SYMBOL_GPL vmlinux 0x9bc8750d phy_driver_is_genphy_10g EXPORT_SYMBOL_GPL vmlinux 0x9bc9ac59 dw_pcie_host_deinit EXPORT_SYMBOL_GPL vmlinux 0x9bcf9f7d housekeeping_enabled -EXPORT_SYMBOL_GPL vmlinux 0x9bd6c756 __SCK__tp_func_kfree_skb -EXPORT_SYMBOL_GPL vmlinux 0x9bd8633f device_property_read_u8_array +EXPORT_SYMBOL_GPL vmlinux 0x9bdf30a3 sched_trace_cfs_rq_avg EXPORT_SYMBOL_GPL vmlinux 0x9be30d27 mhp_get_pluggable_range EXPORT_SYMBOL_GPL vmlinux 0x9bece81b mpi_cmp_ui EXPORT_SYMBOL_GPL vmlinux 0x9bfb7eed serial8250_rpm_get EXPORT_SYMBOL_GPL vmlinux 0x9c02acdb fwnode_get_named_gpiod +EXPORT_SYMBOL_GPL vmlinux 0x9c2fc63e vtime_guest_exit EXPORT_SYMBOL_GPL vmlinux 0x9c48e256 dm_internal_suspend_fast EXPORT_SYMBOL_GPL vmlinux 0x9c5682ca fscrypt_ioctl_get_key_status -EXPORT_SYMBOL_GPL vmlinux 0x9c56b463 netdev_walk_all_lower_dev_rcu EXPORT_SYMBOL_GPL vmlinux 0x9c59fa41 pci_set_pcie_reset_state EXPORT_SYMBOL_GPL vmlinux 0x9c6febfc add_uevent_var EXPORT_SYMBOL_GPL vmlinux 0x9c74062a invalidate_inode_pages2_range +EXPORT_SYMBOL_GPL vmlinux 0x9c752214 perf_pmu_migrate_context EXPORT_SYMBOL_GPL vmlinux 0x9c78d562 thermal_zone_device_register EXPORT_SYMBOL_GPL vmlinux 0x9c803020 usb_phy_roothub_power_on EXPORT_SYMBOL_GPL vmlinux 0x9c8b9b50 pci_pr3_present EXPORT_SYMBOL_GPL vmlinux 0x9ca480cc clk_gate_is_enabled -EXPORT_SYMBOL_GPL vmlinux 0x9cb2dd57 nexthop_find_by_id EXPORT_SYMBOL_GPL vmlinux 0x9cbd1bb2 devm_nvmem_register EXPORT_SYMBOL_GPL vmlinux 0x9cc407c7 dev_attr_link_power_management_policy EXPORT_SYMBOL_GPL vmlinux 0x9cc4f70a register_pm_notifier +EXPORT_SYMBOL_GPL vmlinux 0x9cc89e4d nvme_remove_namespaces EXPORT_SYMBOL_GPL vmlinux 0x9ccdabfd dax_iomap_rw EXPORT_SYMBOL_GPL vmlinux 0x9ce70374 usb_hcd_start_port_resume EXPORT_SYMBOL_GPL vmlinux 0x9ce809cf pci_epc_set_bar @@ -16729,53 +16723,47 @@ EXPORT_SYMBOL_GPL vmlinux 0x9d0e5f20 blk_ksm_is_superset EXPORT_SYMBOL_GPL vmlinux 0x9d14205c cr4_read_shadow EXPORT_SYMBOL_GPL vmlinux 0x9d1fb9e8 acpi_subsys_suspend_late -EXPORT_SYMBOL_GPL vmlinux 0x9d224ff3 ip6_datagram_send_ctl EXPORT_SYMBOL_GPL vmlinux 0x9d25b307 crypto_unregister_scomps EXPORT_SYMBOL_GPL vmlinux 0x9d4894c8 x2apic_mode EXPORT_SYMBOL_GPL vmlinux 0x9d4e7bcb get_device_system_crosststamp -EXPORT_SYMBOL_GPL vmlinux 0x9d532545 xdp_return_frame_bulk EXPORT_SYMBOL_GPL vmlinux 0x9d5d9e9e exportfs_encode_inode_fh +EXPORT_SYMBOL_GPL vmlinux 0x9d5f26f7 __traceiter_xdp_bulk_tx EXPORT_SYMBOL_GPL vmlinux 0x9d638c8e wm831x_set_bits EXPORT_SYMBOL_GPL vmlinux 0x9d671820 kthread_flush_work +EXPORT_SYMBOL_GPL vmlinux 0x9d76b5d8 dst_cache_set_ip4 EXPORT_SYMBOL_GPL vmlinux 0x9d7962e1 tpm_chip_unregister EXPORT_SYMBOL_GPL vmlinux 0x9d8da317 dev_pm_qos_hide_latency_limit EXPORT_SYMBOL_GPL vmlinux 0x9d911759 relay_reset EXPORT_SYMBOL_GPL vmlinux 0x9d9a1908 tty_ldisc_receive_buf EXPORT_SYMBOL_GPL vmlinux 0x9da97fc6 pci_write_msi_msg -EXPORT_SYMBOL_GPL vmlinux 0x9dc087cc sk_set_memalloc EXPORT_SYMBOL_GPL vmlinux 0x9dd21ab7 ata_sas_port_init EXPORT_SYMBOL_GPL vmlinux 0x9dd79b23 usb_autopm_get_interface -EXPORT_SYMBOL_GPL vmlinux 0x9ddef906 __raw_v6_lookup -EXPORT_SYMBOL_GPL vmlinux 0x9de90f75 netlink_add_tap EXPORT_SYMBOL_GPL vmlinux 0x9dfbfb94 devm_clk_bulk_get_optional -EXPORT_SYMBOL_GPL vmlinux 0x9dfe9623 nvme_disable_ctrl EXPORT_SYMBOL_GPL vmlinux 0x9e005e6f cppc_get_perf_caps EXPORT_SYMBOL_GPL vmlinux 0x9e0db4bf pm_generic_runtime_resume -EXPORT_SYMBOL_GPL vmlinux 0x9e0ffe74 fw_devlink_purge_absent_suppliers -EXPORT_SYMBOL_GPL vmlinux 0x9e144487 __SCK__tp_func_neigh_event_send_done +EXPORT_SYMBOL_GPL vmlinux 0x9e32f129 __tracepoint_sched_cpu_capacity_tp +EXPORT_SYMBOL_GPL vmlinux 0x9e45a33c skb_morph EXPORT_SYMBOL_GPL vmlinux 0x9e472f5f snmp_fold_field -EXPORT_SYMBOL_GPL vmlinux 0x9e538364 perf_event_period -EXPORT_SYMBOL_GPL vmlinux 0x9e5da401 mptcp_pm_get_local_addr_max -EXPORT_SYMBOL_GPL vmlinux 0x9e639cd1 device_register EXPORT_SYMBOL_GPL vmlinux 0x9e68cf93 crypto_rng_reset -EXPORT_SYMBOL_GPL vmlinux 0x9e699553 sched_trace_rq_cpu_capacity EXPORT_SYMBOL_GPL vmlinux 0x9e72aade ata_sas_port_stop +EXPORT_SYMBOL_GPL vmlinux 0x9e733aa2 ptp_parse_header +EXPORT_SYMBOL_GPL vmlinux 0x9e7e9001 addrconf_add_linklocal +EXPORT_SYMBOL_GPL vmlinux 0x9e87d67b nvme_get_features +EXPORT_SYMBOL_GPL vmlinux 0x9e92f0a6 call_switchdev_blocking_notifiers +EXPORT_SYMBOL_GPL vmlinux 0x9e9e2f63 spi_split_transfers_maxsize EXPORT_SYMBOL_GPL vmlinux 0x9eacb54c phy_configure +EXPORT_SYMBOL_GPL vmlinux 0x9eb35edc fixed_phy_unregister EXPORT_SYMBOL_GPL vmlinux 0x9eb93380 clk_hw_register EXPORT_SYMBOL_GPL vmlinux 0x9ebc28a2 rio_alloc_net EXPORT_SYMBOL_GPL vmlinux 0x9ebe8a87 pinctrl_remove_gpio_range -EXPORT_SYMBOL_GPL vmlinux 0x9ebffaa5 devlink_flash_update_timeout_notify EXPORT_SYMBOL_GPL vmlinux 0x9ed554b3 unregister_keyboard_notifier -EXPORT_SYMBOL_GPL vmlinux 0x9ede707e crypto_remove_spawns -EXPORT_SYMBOL_GPL vmlinux 0x9ee7e97c bpf_trace_run10 +EXPORT_SYMBOL_GPL vmlinux 0x9ee647f6 __inet_inherit_port EXPORT_SYMBOL_GPL vmlinux 0x9eebdde7 mpi_point_new -EXPORT_SYMBOL_GPL vmlinux 0x9ef11f4b skb_to_sgvec_nomark EXPORT_SYMBOL_GPL vmlinux 0x9ef254da hv_pkt_iter_close EXPORT_SYMBOL_GPL vmlinux 0x9ef94a99 sata_scr_write EXPORT_SYMBOL_GPL vmlinux 0x9f059759 fb_deferred_io_cleanup EXPORT_SYMBOL_GPL vmlinux 0x9f1db685 dw_pcie_write_dbi EXPORT_SYMBOL_GPL vmlinux 0x9f223fe4 __tracepoint_xdp_exception -EXPORT_SYMBOL_GPL vmlinux 0x9f2aef13 nvme_wait_freeze_timeout EXPORT_SYMBOL_GPL vmlinux 0x9f3756f8 wm8997_i2c_regmap EXPORT_SYMBOL_GPL vmlinux 0x9f4c4aa0 spi_delay_to_ns EXPORT_SYMBOL_GPL vmlinux 0x9f61d2c7 fwnode_create_software_node @@ -16789,27 +16777,22 @@ EXPORT_SYMBOL_GPL vmlinux 0x9fc2794c free_vm_area EXPORT_SYMBOL_GPL vmlinux 0x9fcc9d9a __kthread_init_worker EXPORT_SYMBOL_GPL vmlinux 0x9fce80db fb_notifier_call_chain -EXPORT_SYMBOL_GPL vmlinux 0x9fd223b7 nvme_stop_queues -EXPORT_SYMBOL_GPL vmlinux 0x9fdb56e1 spi_async_locked EXPORT_SYMBOL_GPL vmlinux 0x9fdc398d acpi_dev_gpio_irq_get_by EXPORT_SYMBOL_GPL vmlinux 0x9fdd58aa devm_gpiod_get EXPORT_SYMBOL_GPL vmlinux 0x9fe899b7 get_cpu_idle_time EXPORT_SYMBOL_GPL vmlinux 0x9fe8aefe ahash_register_instance EXPORT_SYMBOL_GPL vmlinux 0x9fe939e1 mpi_powm EXPORT_SYMBOL_GPL vmlinux 0x9ff6ebfe regmap_field_read -EXPORT_SYMBOL_GPL vmlinux 0x9ffd1a5d __regmap_init_spi EXPORT_SYMBOL_GPL vmlinux 0xa00fdca6 __audit_inode_child EXPORT_SYMBOL_GPL vmlinux 0xa01a8d9b nd_cmd_bus_desc EXPORT_SYMBOL_GPL vmlinux 0xa02bcfda sata_pmp_qc_defer_cmd_switch EXPORT_SYMBOL_GPL vmlinux 0xa03d42f0 ata_host_alloc EXPORT_SYMBOL_GPL vmlinux 0xa04f945a cpus_read_lock EXPORT_SYMBOL_GPL vmlinux 0xa0677ef9 kobject_init_and_add -EXPORT_SYMBOL_GPL vmlinux 0xa0739674 rtnl_link_register EXPORT_SYMBOL_GPL vmlinux 0xa080c5e5 smp_call_function_single_async EXPORT_SYMBOL_GPL vmlinux 0xa090478a arch_has_restricted_virtio_memory_access EXPORT_SYMBOL_GPL vmlinux 0xa096b2f1 devm_clk_unregister EXPORT_SYMBOL_GPL vmlinux 0xa0a4b3b7 edac_pci_handle_pe -EXPORT_SYMBOL_GPL vmlinux 0xa0a7d49e __mdiobus_modify_changed EXPORT_SYMBOL_GPL vmlinux 0xa0ba7626 tpm_pm_suspend EXPORT_SYMBOL_GPL vmlinux 0xa0bab9fb md_kick_rdev_from_array EXPORT_SYMBOL_GPL vmlinux 0xa0bf0236 usb_hcd_is_primary_hcd @@ -16820,10 +16803,11 @@ EXPORT_SYMBOL_GPL vmlinux 0xa0e671d8 __SCT__tp_func_sched_update_nr_running_tp EXPORT_SYMBOL_GPL vmlinux 0xa0f0c298 blk_queue_max_discard_segments EXPORT_SYMBOL_GPL vmlinux 0xa10594c2 pm_generic_resume_noirq -EXPORT_SYMBOL_GPL vmlinux 0xa126b9de crypto_stats_kpp_generate_public_key EXPORT_SYMBOL_GPL vmlinux 0xa145a243 __SCK__tp_func_block_split EXPORT_SYMBOL_GPL vmlinux 0xa14800fe wakeup_sources_walk_next +EXPORT_SYMBOL_GPL vmlinux 0xa14d34de bpf_prog_create EXPORT_SYMBOL_GPL vmlinux 0xa156a1f2 erst_get_record_id_end +EXPORT_SYMBOL_GPL vmlinux 0xa157dd65 udp_tunnel_push_rx_port EXPORT_SYMBOL_GPL vmlinux 0xa1691b63 xas_find_marked EXPORT_SYMBOL_GPL vmlinux 0xa16deb13 sbitmap_resize EXPORT_SYMBOL_GPL vmlinux 0xa18bcd10 cpufreq_generic_attr @@ -16836,41 +16820,44 @@ EXPORT_SYMBOL_GPL vmlinux 0xa1d53d96 cpufreq_freq_transition_begin EXPORT_SYMBOL_GPL vmlinux 0xa1d6a1fa devm_add_action EXPORT_SYMBOL_GPL vmlinux 0xa1d6c4f6 ata_sff_hsm_move +EXPORT_SYMBOL_GPL vmlinux 0xa1d8c5a0 security_inode_setattr EXPORT_SYMBOL_GPL vmlinux 0xa1dc80da ata_cable_40wire EXPORT_SYMBOL_GPL vmlinux 0xa1ed9c8b add_hwgenerator_randomness +EXPORT_SYMBOL_GPL vmlinux 0xa1fd6174 sk_set_peek_off EXPORT_SYMBOL_GPL vmlinux 0xa2016d6c edac_device_free_ctl_info +EXPORT_SYMBOL_GPL vmlinux 0xa20a8d68 spi_mem_supports_op EXPORT_SYMBOL_GPL vmlinux 0xa20d01ba __trace_bprintk +EXPORT_SYMBOL_GPL vmlinux 0xa224261f crypto_remove_spawns EXPORT_SYMBOL_GPL vmlinux 0xa23d1b7f pinctrl_pm_select_sleep_state +EXPORT_SYMBOL_GPL vmlinux 0xa23df0e1 device_find_child_by_name EXPORT_SYMBOL_GPL vmlinux 0xa248c755 debugfs_create_x8 -EXPORT_SYMBOL_GPL vmlinux 0xa259ddec crypto_stats_rng_seed EXPORT_SYMBOL_GPL vmlinux 0xa2613c69 efivar_entry_find EXPORT_SYMBOL_GPL vmlinux 0xa26d9b4f workqueue_congested -EXPORT_SYMBOL_GPL vmlinux 0xa27ed96b __devm_regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xa27edd1e __skb_get_hash_symmetric +EXPORT_SYMBOL_GPL vmlinux 0xa2893c22 bpf_verifier_log_write EXPORT_SYMBOL_GPL vmlinux 0xa297f611 iomap_set_page_dirty EXPORT_SYMBOL_GPL vmlinux 0xa2a7aa1d fuse_send_init +EXPORT_SYMBOL_GPL vmlinux 0xa2b4dc8e mptcp_get_reset_option EXPORT_SYMBOL_GPL vmlinux 0xa2b99209 alarm_start EXPORT_SYMBOL_GPL vmlinux 0xa2baac55 usb_disable_xhci_ports EXPORT_SYMBOL_GPL vmlinux 0xa2baca21 fat_dir_empty +EXPORT_SYMBOL_GPL vmlinux 0xa2def670 iptunnel_metadata_reply EXPORT_SYMBOL_GPL vmlinux 0xa2e1b3ef trace_printk_init_buffers -EXPORT_SYMBOL_GPL vmlinux 0xa2e2373b fwnode_property_read_u8_array EXPORT_SYMBOL_GPL vmlinux 0xa2e2df45 ata_sas_async_probe +EXPORT_SYMBOL_GPL vmlinux 0xa2f41f8a l3mdev_master_ifindex_rcu EXPORT_SYMBOL_GPL vmlinux 0xa2f7487f hv_is_hibernation_supported EXPORT_SYMBOL_GPL vmlinux 0xa2fde1c1 tpm_chip_stop EXPORT_SYMBOL_GPL vmlinux 0xa2feac58 devm_hwmon_device_unregister -EXPORT_SYMBOL_GPL vmlinux 0xa3102690 spi_busnum_to_master EXPORT_SYMBOL_GPL vmlinux 0xa3109abc dw8250_setup_port EXPORT_SYMBOL_GPL vmlinux 0xa311192f pci_bridge_secondary_bus_reset +EXPORT_SYMBOL_GPL vmlinux 0xa321b20e metadata_dst_free_percpu EXPORT_SYMBOL_GPL vmlinux 0xa322af73 irq_find_mapping -EXPORT_SYMBOL_GPL vmlinux 0xa3291519 __nf_ip6_route -EXPORT_SYMBOL_GPL vmlinux 0xa32ed555 ip_valid_fib_dump_req EXPORT_SYMBOL_GPL vmlinux 0xa346c506 dm_path_uevent -EXPORT_SYMBOL_GPL vmlinux 0xa348b656 cgroup_get_from_fd EXPORT_SYMBOL_GPL vmlinux 0xa35836d0 tty_set_termios EXPORT_SYMBOL_GPL vmlinux 0xa3596ffd add_page_wait_queue -EXPORT_SYMBOL_GPL vmlinux 0xa35cda24 nvme_shutdown_ctrl EXPORT_SYMBOL_GPL vmlinux 0xa36f50fb is_binary_blacklisted -EXPORT_SYMBOL_GPL vmlinux 0xa36f8844 strp_unpause EXPORT_SYMBOL_GPL vmlinux 0xa38602cd drain_workqueue +EXPORT_SYMBOL_GPL vmlinux 0xa387d16b ip6_pol_route EXPORT_SYMBOL_GPL vmlinux 0xa389a49a profile_event_register EXPORT_SYMBOL_GPL vmlinux 0xa38a9f71 get_itimerspec64 EXPORT_SYMBOL_GPL vmlinux 0xa38de225 ata_std_postreset @@ -16882,16 +16869,17 @@ EXPORT_SYMBOL_GPL vmlinux 0xa3ece414 freezer_cgrp_subsys_enabled_key EXPORT_SYMBOL_GPL vmlinux 0xa3f12f69 __crypto_xor EXPORT_SYMBOL_GPL vmlinux 0xa3f27e8e gpiod_to_chip -EXPORT_SYMBOL_GPL vmlinux 0xa3f95cec __tracepoint_neigh_timer_handler EXPORT_SYMBOL_GPL vmlinux 0xa3fff01f __of_phy_provider_register EXPORT_SYMBOL_GPL vmlinux 0xa4031b7f sfp_parse_port EXPORT_SYMBOL_GPL vmlinux 0xa40aa687 tty_buffer_space_avail EXPORT_SYMBOL_GPL vmlinux 0xa410a295 devlink_region_destroy EXPORT_SYMBOL_GPL vmlinux 0xa4163515 crypto_shash_finup EXPORT_SYMBOL_GPL vmlinux 0xa41b951f fsnotify +EXPORT_SYMBOL_GPL vmlinux 0xa41bd466 fwnode_property_match_string EXPORT_SYMBOL_GPL vmlinux 0xa41c5934 ata_sff_softreset EXPORT_SYMBOL_GPL vmlinux 0xa4330e0d regcache_cache_only EXPORT_SYMBOL_GPL vmlinux 0xa44a1307 interval_tree_iter_first +EXPORT_SYMBOL_GPL vmlinux 0xa44c8504 xfrm_unregister_translator EXPORT_SYMBOL_GPL vmlinux 0xa452c297 hpet_mask_rtc_irq_bit EXPORT_SYMBOL_GPL vmlinux 0xa45a3173 cpufreq_enable_fast_switch EXPORT_SYMBOL_GPL vmlinux 0xa45c7b90 stack_trace_print @@ -16899,30 +16887,30 @@ EXPORT_SYMBOL_GPL vmlinux 0xa462d5a6 __SCT__tp_func_sched_overutilized_tp EXPORT_SYMBOL_GPL vmlinux 0xa46dba03 ata_do_set_mode EXPORT_SYMBOL_GPL vmlinux 0xa48196c8 kdb_poll_idx -EXPORT_SYMBOL_GPL vmlinux 0xa48542b7 msg_zerocopy_put_abort +EXPORT_SYMBOL_GPL vmlinux 0xa484dd41 __tracepoint_neigh_event_send_done EXPORT_SYMBOL_GPL vmlinux 0xa49c3e55 fixup_user_fault EXPORT_SYMBOL_GPL vmlinux 0xa4ab7c1c ring_buffer_overruns EXPORT_SYMBOL_GPL vmlinux 0xa4b07fe7 ring_buffer_change_overwrite EXPORT_SYMBOL_GPL vmlinux 0xa4c00324 asn1_encode_octet_string -EXPORT_SYMBOL_GPL vmlinux 0xa4c56840 crypto_stats_compress EXPORT_SYMBOL_GPL vmlinux 0xa4d6091c blkdev_nr_zones -EXPORT_SYMBOL_GPL vmlinux 0xa4d9d15e spi_bus_lock -EXPORT_SYMBOL_GPL vmlinux 0xa4dd547f crypto_skcipher_setkey -EXPORT_SYMBOL_GPL vmlinux 0xa4ea46d3 fixed_phy_change_carrier EXPORT_SYMBOL_GPL vmlinux 0xa4eb5793 sbitmap_weight +EXPORT_SYMBOL_GPL vmlinux 0xa4f94e02 lwtunnel_output +EXPORT_SYMBOL_GPL vmlinux 0xa4fce3bc raw_seq_next EXPORT_SYMBOL_GPL vmlinux 0xa4fe2fd0 memremap_pages EXPORT_SYMBOL_GPL vmlinux 0xa507c41e regulator_unregister -EXPORT_SYMBOL_GPL vmlinux 0xa52b4006 bpf_prog_free +EXPORT_SYMBOL_GPL vmlinux 0xa515ead0 ip6_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xa52d5f0c __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xa52f7225 sched_trace_rq_avg_dl EXPORT_SYMBOL_GPL vmlinux 0xa531471e clk_save_context EXPORT_SYMBOL_GPL vmlinux 0xa536c9e5 __tracepoint_unmap EXPORT_SYMBOL_GPL vmlinux 0xa536fb46 iommu_present +EXPORT_SYMBOL_GPL vmlinux 0xa53900d2 crypto_stats_skcipher_encrypt EXPORT_SYMBOL_GPL vmlinux 0xa53d95d3 devm_gpio_free EXPORT_SYMBOL_GPL vmlinux 0xa540c017 usb_hcd_pci_probe EXPORT_SYMBOL_GPL vmlinux 0xa5460823 noop_backing_dev_info EXPORT_SYMBOL_GPL vmlinux 0xa5538f83 eventfd_ctx_fileget -EXPORT_SYMBOL_GPL vmlinux 0xa5588ec4 inet_hash EXPORT_SYMBOL_GPL vmlinux 0xa5635e0a bus_register_notifier -EXPORT_SYMBOL_GPL vmlinux 0xa571013d sched_trace_rq_nr_running +EXPORT_SYMBOL_GPL vmlinux 0xa5999720 skcipher_walk_done EXPORT_SYMBOL_GPL vmlinux 0xa5b2d285 iommu_dev_feature_enabled EXPORT_SYMBOL_GPL vmlinux 0xa5b7a429 cs47l24_spi_regmap EXPORT_SYMBOL_GPL vmlinux 0xa5bda8a1 efi_capsule_supported @@ -16931,8 +16919,7 @@ EXPORT_SYMBOL_GPL vmlinux 0xa5e5d95d pci_epf_create EXPORT_SYMBOL_GPL vmlinux 0xa5e9aad4 irq_gc_set_wake EXPORT_SYMBOL_GPL vmlinux 0xa5efbf4c async_synchronize_full -EXPORT_SYMBOL_GPL vmlinux 0xa6289430 device_store_bool -EXPORT_SYMBOL_GPL vmlinux 0xa63e54af msg_zerocopy_alloc +EXPORT_SYMBOL_GPL vmlinux 0xa5f6489f device_get_next_child_node EXPORT_SYMBOL_GPL vmlinux 0xa646e852 devfreq_event_set_event EXPORT_SYMBOL_GPL vmlinux 0xa64b536f iomap_file_buffered_write EXPORT_SYMBOL_GPL vmlinux 0xa6512d3e em_dev_unregister_perf_domain @@ -16944,52 +16931,59 @@ EXPORT_SYMBOL_GPL vmlinux 0xa6b06f65 ata_sff_queue_work EXPORT_SYMBOL_GPL vmlinux 0xa6b21ef2 dpm_suspend_end EXPORT_SYMBOL_GPL vmlinux 0xa6b222c9 policy_has_boost_freq -EXPORT_SYMBOL_GPL vmlinux 0xa6b537ed security_inode_setattr EXPORT_SYMBOL_GPL vmlinux 0xa6ba238f blk_trace_remove -EXPORT_SYMBOL_GPL vmlinux 0xa6bc667b nvme_delete_ctrl +EXPORT_SYMBOL_GPL vmlinux 0xa6bd673a bpf_event_output EXPORT_SYMBOL_GPL vmlinux 0xa6c17a9d clk_hw_is_enabled EXPORT_SYMBOL_GPL vmlinux 0xa6ca1c1a pm_runtime_suspended_time +EXPORT_SYMBOL_GPL vmlinux 0xa6cedbfd tcp_unregister_congestion_control EXPORT_SYMBOL_GPL vmlinux 0xa6cf780c clk_hw_register_composite +EXPORT_SYMBOL_GPL vmlinux 0xa6d148f1 ipv6_stub EXPORT_SYMBOL_GPL vmlinux 0xa6e08f7f dm_post_suspending EXPORT_SYMBOL_GPL vmlinux 0xa6e1a69d kick_all_cpus_sync -EXPORT_SYMBOL_GPL vmlinux 0xa6f0df9a __tracepoint_neigh_cleanup_and_release EXPORT_SYMBOL_GPL vmlinux 0xa6fd4884 vmbus_driver_unregister EXPORT_SYMBOL_GPL vmlinux 0xa709c835 fib6_info_destroy_rcu EXPORT_SYMBOL_GPL vmlinux 0xa7127da7 mce_unregister_injector_chain EXPORT_SYMBOL_GPL vmlinux 0xa72bcd08 debugfs_create_bool EXPORT_SYMBOL_GPL vmlinux 0xa731f387 nl_table_lock +EXPORT_SYMBOL_GPL vmlinux 0xa7359035 espintcp_push_skb +EXPORT_SYMBOL_GPL vmlinux 0xa7411a6b ip6_input EXPORT_SYMBOL_GPL vmlinux 0xa752b56c __rio_local_read_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xa768ba4c __traceiter_neigh_cleanup_and_release EXPORT_SYMBOL_GPL vmlinux 0xa76e4eda anon_transport_class_unregister EXPORT_SYMBOL_GPL vmlinux 0xa78252e2 kthread_data EXPORT_SYMBOL_GPL vmlinux 0xa78cff71 __fsnotify_inode_delete +EXPORT_SYMBOL_GPL vmlinux 0xa7933c28 netdev_walk_all_upper_dev_rcu +EXPORT_SYMBOL_GPL vmlinux 0xa7a1cc22 device_match_name EXPORT_SYMBOL_GPL vmlinux 0xa7b5c3c8 regulator_suspend_enable -EXPORT_SYMBOL_GPL vmlinux 0xa7c1d486 preempt_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa7c526c9 security_inode_mkdir EXPORT_SYMBOL_GPL vmlinux 0xa7c6a0bd ata_sff_data_xfer -EXPORT_SYMBOL_GPL vmlinux 0xa7c8a04a skcipher_walk_aead_encrypt EXPORT_SYMBOL_GPL vmlinux 0xa7cba284 housekeeping_any_cpu EXPORT_SYMBOL_GPL vmlinux 0xa7d34101 genphy_c45_pma_suspend EXPORT_SYMBOL_GPL vmlinux 0xa7e2fa58 cpufreq_register_governor +EXPORT_SYMBOL_GPL vmlinux 0xa7e49d99 iptunnel_handle_offloads EXPORT_SYMBOL_GPL vmlinux 0xa7e4fbae mctrl_gpio_init -EXPORT_SYMBOL_GPL vmlinux 0xa80bdc12 nvme_init_ctrl_finish +EXPORT_SYMBOL_GPL vmlinux 0xa7e5974d l3mdev_table_lookup_register EXPORT_SYMBOL_GPL vmlinux 0xa810460d edac_device_del_device -EXPORT_SYMBOL_GPL vmlinux 0xa81e5510 ping_common_sendmsg EXPORT_SYMBOL_GPL vmlinux 0xa82743f6 nvdimm_clear_poison EXPORT_SYMBOL_GPL vmlinux 0xa82e9760 kernfs_find_and_get_ns EXPORT_SYMBOL_GPL vmlinux 0xa82ed301 pm_runtime_no_callbacks -EXPORT_SYMBOL_GPL vmlinux 0xa833b497 devlink_port_type_eth_set +EXPORT_SYMBOL_GPL vmlinux 0xa83fbca9 ping_common_sendmsg +EXPORT_SYMBOL_GPL vmlinux 0xa846e7dd fwnode_property_read_u64_array EXPORT_SYMBOL_GPL vmlinux 0xa84b101c devm_kasprintf EXPORT_SYMBOL_GPL vmlinux 0xa851973a raw_notifier_call_chain +EXPORT_SYMBOL_GPL vmlinux 0xa851bf38 nexthop_find_by_id EXPORT_SYMBOL_GPL vmlinux 0xa86a6c47 mmu_notifier_unregister +EXPORT_SYMBOL_GPL vmlinux 0xa880ae5f xdp_rxq_info_unreg_mem_model EXPORT_SYMBOL_GPL vmlinux 0xa883cd85 usb_register_driver EXPORT_SYMBOL_GPL vmlinux 0xa890a402 rtc_update_irq_enable +EXPORT_SYMBOL_GPL vmlinux 0xa89cb54e ping_err EXPORT_SYMBOL_GPL vmlinux 0xa89d102f set_online_page_callback EXPORT_SYMBOL_GPL vmlinux 0xa8b3cac2 vmbus_send_modifychannel -EXPORT_SYMBOL_GPL vmlinux 0xa8b9cb4e device_get_child_node_count +EXPORT_SYMBOL_GPL vmlinux 0xa8c6774c bpf_trace_run1 +EXPORT_SYMBOL_GPL vmlinux 0xa8c85e0e bpf_preload_ops EXPORT_SYMBOL_GPL vmlinux 0xa8d35250 thermal_zone_get_offset -EXPORT_SYMBOL_GPL vmlinux 0xa8e7fc28 __SCK__tp_func_tcp_send_reset EXPORT_SYMBOL_GPL vmlinux 0xa8ea4dd0 ftrace_set_filter_ip EXPORT_SYMBOL_GPL vmlinux 0xa8ec506d wm831x_reg_write -EXPORT_SYMBOL_GPL vmlinux 0xa8edf7b0 __ip6_local_out EXPORT_SYMBOL_GPL vmlinux 0xa8f772b3 iommu_register_device_fault_handler EXPORT_SYMBOL_GPL vmlinux 0xa9024c7e xhci_init_driver EXPORT_SYMBOL_GPL vmlinux 0xa90e53f1 firmware_request_nowarn @@ -16998,80 +16992,81 @@ EXPORT_SYMBOL_GPL vmlinux 0xa930b9e6 pci_msi_prepare EXPORT_SYMBOL_GPL vmlinux 0xa9320d27 ktime_get_seconds EXPORT_SYMBOL_GPL vmlinux 0xa9330783 crypto_alloc_ahash +EXPORT_SYMBOL_GPL vmlinux 0xa93f569b find_vpid EXPORT_SYMBOL_GPL vmlinux 0xa953eafd regulator_is_enabled EXPORT_SYMBOL_GPL vmlinux 0xa96e8b4e hv_setup_vmbus_handler EXPORT_SYMBOL_GPL vmlinux 0xa97088a9 ata_link_online -EXPORT_SYMBOL_GPL vmlinux 0xa9739306 dev_forward_skb EXPORT_SYMBOL_GPL vmlinux 0xa9854364 umc_normaddr_to_sysaddr EXPORT_SYMBOL_GPL vmlinux 0xa98750f2 fsnotify_alloc_user_group EXPORT_SYMBOL_GPL vmlinux 0xa99cfeba class_create_file_ns EXPORT_SYMBOL_GPL vmlinux 0xa99ef899 devlink_fmsg_bool_pair_put +EXPORT_SYMBOL_GPL vmlinux 0xa9a256d7 __mdiobus_modify_changed EXPORT_SYMBOL_GPL vmlinux 0xa9a4d30e ftrace_set_notrace -EXPORT_SYMBOL_GPL vmlinux 0xa9afe68c skb_mpls_dec_ttl +EXPORT_SYMBOL_GPL vmlinux 0xa9a7be34 lwtunnel_encap_add_ops EXPORT_SYMBOL_GPL vmlinux 0xa9b06585 usb_enable_intel_xhci_ports EXPORT_SYMBOL_GPL vmlinux 0xa9b55539 wm5102_spi_regmap EXPORT_SYMBOL_GPL vmlinux 0xa9d8e249 pci_intx EXPORT_SYMBOL_GPL vmlinux 0xa9d905a5 ata_sff_exec_command EXPORT_SYMBOL_GPL vmlinux 0xa9d9493e devm_gpiod_get_optional EXPORT_SYMBOL_GPL vmlinux 0xa9e18049 task_handoff_unregister -EXPORT_SYMBOL_GPL vmlinux 0xa9e5a604 device_property_present EXPORT_SYMBOL_GPL vmlinux 0xa9e68bcc relay_file_operations -EXPORT_SYMBOL_GPL vmlinux 0xa9e9eff6 __SCK__tp_func_sched_util_est_se_tp EXPORT_SYMBOL_GPL vmlinux 0xaa0a7138 devm_clk_hw_get_clk +EXPORT_SYMBOL_GPL vmlinux 0xaa1d79a2 br_fdb_test_addr_hook +EXPORT_SYMBOL_GPL vmlinux 0xaa2306e1 bpf_trace_run5 EXPORT_SYMBOL_GPL vmlinux 0xaa230f88 perf_unregister_guest_info_callbacks EXPORT_SYMBOL_GPL vmlinux 0xaa290afa umd_cleanup_helper +EXPORT_SYMBOL_GPL vmlinux 0xaa2be2f0 __SCK__tp_func_napi_poll EXPORT_SYMBOL_GPL vmlinux 0xaa2c9f30 fat_attach EXPORT_SYMBOL_GPL vmlinux 0xaa3a1894 fscrypt_ioctl_remove_key_all_users EXPORT_SYMBOL_GPL vmlinux 0xaa3e65dc pci_disable_sriov EXPORT_SYMBOL_GPL vmlinux 0xaa511fb7 ata_sff_lost_interrupt EXPORT_SYMBOL_GPL vmlinux 0xaa51ca82 rio_request_outb_mbox -EXPORT_SYMBOL_GPL vmlinux 0xaa55b907 device_add_groups -EXPORT_SYMBOL_GPL vmlinux 0xaa623b0a crypto_unregister_templates +EXPORT_SYMBOL_GPL vmlinux 0xaa637854 udp_tunnel_nic_ops EXPORT_SYMBOL_GPL vmlinux 0xaa6578c6 ata_port_desc EXPORT_SYMBOL_GPL vmlinux 0xaa6a50f9 __static_key_deferred_flush EXPORT_SYMBOL_GPL vmlinux 0xaa73078e crypto_aead_setauthsize EXPORT_SYMBOL_GPL vmlinux 0xaa766686 platform_device_alloc EXPORT_SYMBOL_GPL vmlinux 0xaa8558e9 ptdump_walk_pgd_level_debugfs -EXPORT_SYMBOL_GPL vmlinux 0xaa89087b task_cgroup_path -EXPORT_SYMBOL_GPL vmlinux 0xaa8e7711 ping_close EXPORT_SYMBOL_GPL vmlinux 0xaa8f7be3 gpiod_set_raw_value_cansleep +EXPORT_SYMBOL_GPL vmlinux 0xaa935a22 sock_diag_save_cookie +EXPORT_SYMBOL_GPL vmlinux 0xaaa2373b vtime_guest_enter EXPORT_SYMBOL_GPL vmlinux 0xaaa918c9 ftrace_dump EXPORT_SYMBOL_GPL vmlinux 0xaac46722 tty_ldisc_flush EXPORT_SYMBOL_GPL vmlinux 0xaade88b2 arizona_dev_exit EXPORT_SYMBOL_GPL vmlinux 0xaaf3dbab __inode_attach_wb +EXPORT_SYMBOL_GPL vmlinux 0xaaff884f inet_csk_reqsk_queue_hash_add EXPORT_SYMBOL_GPL vmlinux 0xab00d0e4 tcp_orphan_count EXPORT_SYMBOL_GPL vmlinux 0xab02d0aa pm_runtime_set_memalloc_noio +EXPORT_SYMBOL_GPL vmlinux 0xab17e6fd __udp6_lib_lookup EXPORT_SYMBOL_GPL vmlinux 0xab1cb3be pm_runtime_enable EXPORT_SYMBOL_GPL vmlinux 0xab1e0e93 hv_setup_kexec_handler -EXPORT_SYMBOL_GPL vmlinux 0xab26ed66 dev_fill_metadata_dst EXPORT_SYMBOL_GPL vmlinux 0xab48ca14 fsverity_cleanup_inode EXPORT_SYMBOL_GPL vmlinux 0xab546139 platform_get_irq_byname +EXPORT_SYMBOL_GPL vmlinux 0xab54974c __devm_regmap_init_spi EXPORT_SYMBOL_GPL vmlinux 0xab56433e register_kprobes EXPORT_SYMBOL_GPL vmlinux 0xab74660c to_nvdimm -EXPORT_SYMBOL_GPL vmlinux 0xab847965 ip_route_output_key_hash +EXPORT_SYMBOL_GPL vmlinux 0xab7eb737 devm_device_add_groups +EXPORT_SYMBOL_GPL vmlinux 0xab8e285b __udp_enqueue_schedule_skb EXPORT_SYMBOL_GPL vmlinux 0xab905591 __fscrypt_prepare_rename EXPORT_SYMBOL_GPL vmlinux 0xab9bd884 perf_register_guest_info_callbacks EXPORT_SYMBOL_GPL vmlinux 0xab9d1eb8 __vring_new_virtqueue -EXPORT_SYMBOL_GPL vmlinux 0xaba6db7d lwtunnel_cmp_encap EXPORT_SYMBOL_GPL vmlinux 0xabc298d0 intel_scu_ipc_unregister EXPORT_SYMBOL_GPL vmlinux 0xabc640f3 list_lru_isolate -EXPORT_SYMBOL_GPL vmlinux 0xabd3f828 fwnode_get_next_child_node EXPORT_SYMBOL_GPL vmlinux 0xabd8279c scsi_autopm_put_device EXPORT_SYMBOL_GPL vmlinux 0xabf03fc3 __SCT__tp_func_xhci_dbg_quirks -EXPORT_SYMBOL_GPL vmlinux 0xac005f69 alloc_skb_for_msg EXPORT_SYMBOL_GPL vmlinux 0xac0dfd33 scsi_autopm_get_device EXPORT_SYMBOL_GPL vmlinux 0xac232fbe ata_sff_tf_load EXPORT_SYMBOL_GPL vmlinux 0xac242cde fuse_conn_get -EXPORT_SYMBOL_GPL vmlinux 0xac274a6e crypto_stats_akcipher_encrypt EXPORT_SYMBOL_GPL vmlinux 0xac301df0 dev_pm_opp_get_freq EXPORT_SYMBOL_GPL vmlinux 0xac365fda md_rdev_clear EXPORT_SYMBOL_GPL vmlinux 0xac38ecbc dev_pm_opp_register_set_opp_helper -EXPORT_SYMBOL_GPL vmlinux 0xac396ffa ipv6_recv_error EXPORT_SYMBOL_GPL vmlinux 0xac41bed9 mddev_init_writes_pending EXPORT_SYMBOL_GPL vmlinux 0xac4acbe9 vp_modern_get_num_queues EXPORT_SYMBOL_GPL vmlinux 0xac4bae10 sysfs_add_link_to_group +EXPORT_SYMBOL_GPL vmlinux 0xac5212bb register_net_sysctl EXPORT_SYMBOL_GPL vmlinux 0xac74e920 ksm_madvise EXPORT_SYMBOL_GPL vmlinux 0xac91dae9 usb_alloc_dev +EXPORT_SYMBOL_GPL vmlinux 0xaca8aafd __spi_alloc_controller EXPORT_SYMBOL_GPL vmlinux 0xacb4d88c clk_rate_exclusive_put EXPORT_SYMBOL_GPL vmlinux 0xacb68524 virtio_add_status EXPORT_SYMBOL_GPL vmlinux 0xacc6272a regcache_sync_region @@ -17084,26 +17079,23 @@ EXPORT_SYMBOL_GPL vmlinux 0xad119db3 gov_attr_set_get EXPORT_SYMBOL_GPL vmlinux 0xad23f67b usb_control_msg_send EXPORT_SYMBOL_GPL vmlinux 0xad3fea6f ata_sff_check_status -EXPORT_SYMBOL_GPL vmlinux 0xad45ead7 mptcp_subflow_request_sock_ops EXPORT_SYMBOL_GPL vmlinux 0xad4c7f04 usb_bulk_msg EXPORT_SYMBOL_GPL vmlinux 0xad4e6259 remove_cpu EXPORT_SYMBOL_GPL vmlinux 0xad5737fc efivar_init EXPORT_SYMBOL_GPL vmlinux 0xad5ddb88 virtqueue_add_sgs EXPORT_SYMBOL_GPL vmlinux 0xad5f0017 perf_trace_buf_alloc EXPORT_SYMBOL_GPL vmlinux 0xad645234 register_switchdev_notifier -EXPORT_SYMBOL_GPL vmlinux 0xad75140a tcp_sendmsg_locked EXPORT_SYMBOL_GPL vmlinux 0xad7984c7 of_phy_put EXPORT_SYMBOL_GPL vmlinux 0xad7fedd7 __clk_hw_register_fixed_rate -EXPORT_SYMBOL_GPL vmlinux 0xad8af384 phy_driver_is_genphy_10g +EXPORT_SYMBOL_GPL vmlinux 0xad81518d crypto_skcipher_encrypt EXPORT_SYMBOL_GPL vmlinux 0xada2e454 cpufreq_dbs_governor_start EXPORT_SYMBOL_GPL vmlinux 0xada30a47 regulator_sync_voltage EXPORT_SYMBOL_GPL vmlinux 0xada38766 dst_cache_destroy EXPORT_SYMBOL_GPL vmlinux 0xadb9ef51 thermal_of_cooling_device_register EXPORT_SYMBOL_GPL vmlinux 0xadd395e4 dma_get_merge_boundary EXPORT_SYMBOL_GPL vmlinux 0xadd8d3bb dm_per_bio_data -EXPORT_SYMBOL_GPL vmlinux 0xadd932c2 perf_event_addr_filters_sync +EXPORT_SYMBOL_GPL vmlinux 0xadd9938b __root_device_register EXPORT_SYMBOL_GPL vmlinux 0xaddbafa5 input_ff_upload -EXPORT_SYMBOL_GPL vmlinux 0xade72cf6 tcp_leave_memory_pressure EXPORT_SYMBOL_GPL vmlinux 0xadfc7f7f ata_sas_port_destroy EXPORT_SYMBOL_GPL vmlinux 0xae1051b0 net_cls_cgrp_subsys_enabled_key EXPORT_SYMBOL_GPL vmlinux 0xae2ab781 gpiod_get_array_value_cansleep @@ -17113,10 +17105,10 @@ EXPORT_SYMBOL_GPL vmlinux 0xae39f80e dst_cache_init EXPORT_SYMBOL_GPL vmlinux 0xae3c5ec1 vma_kernel_pagesize EXPORT_SYMBOL_GPL vmlinux 0xae40dc01 regulator_bulk_free -EXPORT_SYMBOL_GPL vmlinux 0xae5d9f89 __inet_lookup_established -EXPORT_SYMBOL_GPL vmlinux 0xae68a4da __netpoll_setup +EXPORT_SYMBOL_GPL vmlinux 0xae6322f0 skb_pull_rcsum +EXPORT_SYMBOL_GPL vmlinux 0xae68f7b7 inet_unhash EXPORT_SYMBOL_GPL vmlinux 0xae69b1c1 usermodehelper_read_unlock -EXPORT_SYMBOL_GPL vmlinux 0xae7aae07 inet_csk_reqsk_queue_hash_add +EXPORT_SYMBOL_GPL vmlinux 0xae71598c devlink_port_unregister EXPORT_SYMBOL_GPL vmlinux 0xae7c231d mpi_cmp EXPORT_SYMBOL_GPL vmlinux 0xae7d42d7 pm_runtime_barrier EXPORT_SYMBOL_GPL vmlinux 0xae7e45af regmap_field_bulk_alloc @@ -17124,63 +17116,56 @@ EXPORT_SYMBOL_GPL vmlinux 0xae85573c ata_sas_queuecmd EXPORT_SYMBOL_GPL vmlinux 0xae93e75f phy_modify_changed EXPORT_SYMBOL_GPL vmlinux 0xae96ae4e pci_find_ht_capability +EXPORT_SYMBOL_GPL vmlinux 0xae9d1f72 crypto_grab_spawn EXPORT_SYMBOL_GPL vmlinux 0xae9d30ed usb_block_urb EXPORT_SYMBOL_GPL vmlinux 0xaea01966 __nvdimm_create EXPORT_SYMBOL_GPL vmlinux 0xaeb0d67c dma_buf_end_cpu_access -EXPORT_SYMBOL_GPL vmlinux 0xaeba06fe sock_diag_register -EXPORT_SYMBOL_GPL vmlinux 0xaec46055 nvme_get_features EXPORT_SYMBOL_GPL vmlinux 0xaecba4c0 rdev_get_drvdata -EXPORT_SYMBOL_GPL vmlinux 0xaecc69ef inet6_destroy_sock EXPORT_SYMBOL_GPL vmlinux 0xaeccaa03 dev_attr_sw_activity EXPORT_SYMBOL_GPL vmlinux 0xaeda5b4b dev_pm_set_dedicated_wake_irq -EXPORT_SYMBOL_GPL vmlinux 0xaeda795d nvme_submit_sync_cmd EXPORT_SYMBOL_GPL vmlinux 0xaeee8386 __device_reset -EXPORT_SYMBOL_GPL vmlinux 0xaf06c8db crypto_skcipher_encrypt EXPORT_SYMBOL_GPL vmlinux 0xaf076aec nd_fletcher64 EXPORT_SYMBOL_GPL vmlinux 0xaf0b6ba7 blkg_rwstat_init EXPORT_SYMBOL_GPL vmlinux 0xaf0fb70f fscrypt_ioctl_add_key -EXPORT_SYMBOL_GPL vmlinux 0xaf175388 espintcp_queue_out +EXPORT_SYMBOL_GPL vmlinux 0xaf249759 crypto_register_templates +EXPORT_SYMBOL_GPL vmlinux 0xaf269ff8 sfp_bus_add_upstream EXPORT_SYMBOL_GPL vmlinux 0xaf29bf7e dev_pm_disable_wake_irq -EXPORT_SYMBOL_GPL vmlinux 0xaf3055be spi_mem_exec_op EXPORT_SYMBOL_GPL vmlinux 0xaf4014ff usb_amd_quirk_pll_check -EXPORT_SYMBOL_GPL vmlinux 0xaf4ea47d perf_event_sysfs_show -EXPORT_SYMBOL_GPL vmlinux 0xaf580f91 skb_gso_validate_network_len EXPORT_SYMBOL_GPL vmlinux 0xaf74d8f9 irq_setup_alt_chip EXPORT_SYMBOL_GPL vmlinux 0xaf74e068 __tracepoint_block_bio_complete EXPORT_SYMBOL_GPL vmlinux 0xaf793668 __alloc_percpu_gfp EXPORT_SYMBOL_GPL vmlinux 0xaf822722 fat_time_unix2fat +EXPORT_SYMBOL_GPL vmlinux 0xaf852684 spi_take_timestamp_post EXPORT_SYMBOL_GPL vmlinux 0xaf852873 cpuidle_register_device EXPORT_SYMBOL_GPL vmlinux 0xafa666cb __tracepoint_suspend_resume -EXPORT_SYMBOL_GPL vmlinux 0xafb42de1 perf_pmu_unregister -EXPORT_SYMBOL_GPL vmlinux 0xafc8ebb4 __netpoll_cleanup EXPORT_SYMBOL_GPL vmlinux 0xafddd545 ata_id_c_string EXPORT_SYMBOL_GPL vmlinux 0xafe7004f scsi_eh_ready_devs EXPORT_SYMBOL_GPL vmlinux 0xafecbefd fscrypt_show_test_dummy_encryption EXPORT_SYMBOL_GPL vmlinux 0xaff283c3 mmput EXPORT_SYMBOL_GPL vmlinux 0xaff6c361 cpufreq_cpu_put EXPORT_SYMBOL_GPL vmlinux 0xb006cdf8 devm_request_pci_bus_resources -EXPORT_SYMBOL_GPL vmlinux 0xb0282037 sched_set_fifo EXPORT_SYMBOL_GPL vmlinux 0xb028a42a pm_generic_suspend_late -EXPORT_SYMBOL_GPL vmlinux 0xb02c429c pskb_put EXPORT_SYMBOL_GPL vmlinux 0xb030e4e6 edac_device_handle_ue_count EXPORT_SYMBOL_GPL vmlinux 0xb032ce3c rio_lock_device +EXPORT_SYMBOL_GPL vmlinux 0xb0404aa2 fwnode_get_named_child_node EXPORT_SYMBOL_GPL vmlinux 0xb04f96f9 fb_deferred_io_init -EXPORT_SYMBOL_GPL vmlinux 0xb052e552 sk_msg_free_partial EXPORT_SYMBOL_GPL vmlinux 0xb0558fd8 pm_genpd_init EXPORT_SYMBOL_GPL vmlinux 0xb05e6118 encrypt_blob EXPORT_SYMBOL_GPL vmlinux 0xb060ffdb ata_host_register +EXPORT_SYMBOL_GPL vmlinux 0xb06727fd crypto_stats_akcipher_verify EXPORT_SYMBOL_GPL vmlinux 0xb0747ed2 rcu_cpu_stall_suppress EXPORT_SYMBOL_GPL vmlinux 0xb077e70a clk_unprepare EXPORT_SYMBOL_GPL vmlinux 0xb07aef57 filemap_read EXPORT_SYMBOL_GPL vmlinux 0xb07b79f0 cpufreq_freq_attr_scaling_boost_freqs -EXPORT_SYMBOL_GPL vmlinux 0xb093fa05 udp_abort EXPORT_SYMBOL_GPL vmlinux 0xb09e84a9 file_ra_state_init EXPORT_SYMBOL_GPL vmlinux 0xb0a9ecae devres_close_group EXPORT_SYMBOL_GPL vmlinux 0xb0b85f47 ring_buffer_iter_reset EXPORT_SYMBOL_GPL vmlinux 0xb0ce845d tracepoint_probe_unregister EXPORT_SYMBOL_GPL vmlinux 0xb0d1469e iommu_aux_detach_device EXPORT_SYMBOL_GPL vmlinux 0xb0d1656c gpio_free_array +EXPORT_SYMBOL_GPL vmlinux 0xb0d64749 switchdev_port_obj_add EXPORT_SYMBOL_GPL vmlinux 0xb0e78085 uart_try_toggle_sysrq +EXPORT_SYMBOL_GPL vmlinux 0xb0ebdb32 free_fib_info EXPORT_SYMBOL_GPL vmlinux 0xb0f4aa2f led_trigger_register EXPORT_SYMBOL_GPL vmlinux 0xb0f8647e pm_generic_runtime_suspend EXPORT_SYMBOL_GPL vmlinux 0xb0fbb722 clk_fractional_divider_ops @@ -17191,15 +17176,23 @@ EXPORT_SYMBOL_GPL vmlinux 0xb11d9000 tty_dev_name_to_number EXPORT_SYMBOL_GPL vmlinux 0xb123803f iommu_get_dma_strict EXPORT_SYMBOL_GPL vmlinux 0xb1260be1 scsi_mode_select +EXPORT_SYMBOL_GPL vmlinux 0xb12ee06f lwtstate_free +EXPORT_SYMBOL_GPL vmlinux 0xb12eee06 ip6_datagram_connect_v6_only +EXPORT_SYMBOL_GPL vmlinux 0xb12fcd24 vxlan_fdb_find_uc +EXPORT_SYMBOL_GPL vmlinux 0xb14beb50 l3mdev_link_scope_lookup EXPORT_SYMBOL_GPL vmlinux 0xb152bfb3 phy_get EXPORT_SYMBOL_GPL vmlinux 0xb15e381c class_dev_iter_init +EXPORT_SYMBOL_GPL vmlinux 0xb160515e sk_msg_free EXPORT_SYMBOL_GPL vmlinux 0xb1647fc2 devlink_info_version_running_put EXPORT_SYMBOL_GPL vmlinux 0xb16cfa9a msi_desc_to_pci_sysdata EXPORT_SYMBOL_GPL vmlinux 0xb1714ed6 clockevent_delta2ns EXPORT_SYMBOL_GPL vmlinux 0xb1787d6d register_virtio_device EXPORT_SYMBOL_GPL vmlinux 0xb17954e5 rio_route_clr_table +EXPORT_SYMBOL_GPL vmlinux 0xb17a7267 device_get_dma_attr +EXPORT_SYMBOL_GPL vmlinux 0xb182b3f7 netdev_walk_all_lower_dev_rcu EXPORT_SYMBOL_GPL vmlinux 0xb18429eb suspend_device_irqs EXPORT_SYMBOL_GPL vmlinux 0xb19aa588 dma_buf_mmap +EXPORT_SYMBOL_GPL vmlinux 0xb1aec917 netlink_add_tap EXPORT_SYMBOL_GPL vmlinux 0xb1bed25d dpm_resume_start EXPORT_SYMBOL_GPL vmlinux 0xb1e25684 __trace_bputs EXPORT_SYMBOL_GPL vmlinux 0xb1eaa8cc iomap_dio_rw @@ -17210,21 +17203,22 @@ EXPORT_SYMBOL_GPL vmlinux 0xb2405efc secure_tcp_seq EXPORT_SYMBOL_GPL vmlinux 0xb2503e85 wakeup_source_remove EXPORT_SYMBOL_GPL vmlinux 0xb2554ec0 pci_sriov_get_totalvfs +EXPORT_SYMBOL_GPL vmlinux 0xb25b2565 __SCK__tp_func_neigh_event_send_done EXPORT_SYMBOL_GPL vmlinux 0xb25c506d edac_mc_handle_error +EXPORT_SYMBOL_GPL vmlinux 0xb25dea92 __SCK__tp_func_sched_util_est_se_tp EXPORT_SYMBOL_GPL vmlinux 0xb260ee35 trace_define_field EXPORT_SYMBOL_GPL vmlinux 0xb26a1add elfcorehdr_addr EXPORT_SYMBOL_GPL vmlinux 0xb2754c80 fuse_dev_alloc_install -EXPORT_SYMBOL_GPL vmlinux 0xb27eaf4a __traceiter_neigh_update_done EXPORT_SYMBOL_GPL vmlinux 0xb283a543 dma_buf_begin_cpu_access +EXPORT_SYMBOL_GPL vmlinux 0xb284e7aa inet6_lookup_listener EXPORT_SYMBOL_GPL vmlinux 0xb28506d0 pci_load_and_free_saved_state -EXPORT_SYMBOL_GPL vmlinux 0xb287e0b8 fwnode_graph_get_remote_port -EXPORT_SYMBOL_GPL vmlinux 0xb2920f01 kill_device EXPORT_SYMBOL_GPL vmlinux 0xb29533ee zs_malloc EXPORT_SYMBOL_GPL vmlinux 0xb29f6311 dw_pcie_read_dbi EXPORT_SYMBOL_GPL vmlinux 0xb2a7a5d9 kernfs_path_from_node EXPORT_SYMBOL_GPL vmlinux 0xb2bc30f3 pinctrl_utils_reserve_map EXPORT_SYMBOL_GPL vmlinux 0xb2c1732e rcu_gp_set_torture_wait EXPORT_SYMBOL_GPL vmlinux 0xb2ca5b2f mmu_notifier_range_update_to_read_only +EXPORT_SYMBOL_GPL vmlinux 0xb2d1e247 sfp_bus_find_fwnode EXPORT_SYMBOL_GPL vmlinux 0xb2de4cf2 clk_gate_ops EXPORT_SYMBOL_GPL vmlinux 0xb2e764e8 suspend_valid_only_mem EXPORT_SYMBOL_GPL vmlinux 0xb2fb8b6a devm_hwspin_lock_register @@ -17233,19 +17227,21 @@ EXPORT_SYMBOL_GPL vmlinux 0xb3253ed9 hpet_rtc_timer_init EXPORT_SYMBOL_GPL vmlinux 0xb32b569e nvmem_cell_read_variable_le_u32 EXPORT_SYMBOL_GPL vmlinux 0xb32fe2c5 __tracepoint_io_page_fault -EXPORT_SYMBOL_GPL vmlinux 0xb3324513 nvme_cancel_request EXPORT_SYMBOL_GPL vmlinux 0xb3351c6c rhashtable_walk_next EXPORT_SYMBOL_GPL vmlinux 0xb343c9d3 pci_stop_and_remove_bus_device_locked EXPORT_SYMBOL_GPL vmlinux 0xb34b275e pci_epf_unbind EXPORT_SYMBOL_GPL vmlinux 0xb3558806 sysfs_create_groups +EXPORT_SYMBOL_GPL vmlinux 0xb3ac9b69 nvme_stop_keep_alive +EXPORT_SYMBOL_GPL vmlinux 0xb3b29f54 perf_event_create_kernel_counter EXPORT_SYMBOL_GPL vmlinux 0xb3c38b51 mddev_init EXPORT_SYMBOL_GPL vmlinux 0xb3d2b57a tty_perform_flush EXPORT_SYMBOL_GPL vmlinux 0xb3e6e60a __traceiter_sched_overutilized_tp -EXPORT_SYMBOL_GPL vmlinux 0xb3ebc065 ndo_dflt_bridge_getlink -EXPORT_SYMBOL_GPL vmlinux 0xb4015f3f devlink_traps_register +EXPORT_SYMBOL_GPL vmlinux 0xb3f998fb lwtunnel_state_alloc EXPORT_SYMBOL_GPL vmlinux 0xb4054bcc __tracepoint_detach_device_from_domain +EXPORT_SYMBOL_GPL vmlinux 0xb40f01fe xfrm_output EXPORT_SYMBOL_GPL vmlinux 0xb41b4ed7 evict_inodes EXPORT_SYMBOL_GPL vmlinux 0xb42caf75 phy_pm_runtime_forbid +EXPORT_SYMBOL_GPL vmlinux 0xb42f48d7 nf_queue EXPORT_SYMBOL_GPL vmlinux 0xb432acc2 gpiod_get_optional EXPORT_SYMBOL_GPL vmlinux 0xb43884ea fsnotify_put_group EXPORT_SYMBOL_GPL vmlinux 0xb4395bea crypto_unregister_rngs @@ -17253,13 +17249,15 @@ EXPORT_SYMBOL_GPL vmlinux 0xb4429b64 acpi_dev_resource_ext_address_space EXPORT_SYMBOL_GPL vmlinux 0xb44e18ea audit_enabled EXPORT_SYMBOL_GPL vmlinux 0xb44eceb1 synth_event_create +EXPORT_SYMBOL_GPL vmlinux 0xb451cd0f crypto_alg_extsize EXPORT_SYMBOL_GPL vmlinux 0xb4794e6c is_nvdimm_sync +EXPORT_SYMBOL_GPL vmlinux 0xb4876d67 net_ns_type_operations EXPORT_SYMBOL_GPL vmlinux 0xb488acdb blk_mq_free_request EXPORT_SYMBOL_GPL vmlinux 0xb48f0638 software_node_register EXPORT_SYMBOL_GPL vmlinux 0xb4907ab4 pci_hp_destroy -EXPORT_SYMBOL_GPL vmlinux 0xb499164d lwtunnel_fill_encap EXPORT_SYMBOL_GPL vmlinux 0xb4a0bb31 rio_release_inb_pwrite EXPORT_SYMBOL_GPL vmlinux 0xb4b97c90 pvclock_gtod_register_notifier +EXPORT_SYMBOL_GPL vmlinux 0xb4d09387 mptcp_pm_get_subflows_max EXPORT_SYMBOL_GPL vmlinux 0xb4d49f8b rio_release_outb_dbell EXPORT_SYMBOL_GPL vmlinux 0xb4d53b19 __traceiter_add_device_to_group EXPORT_SYMBOL_GPL vmlinux 0xb4ea7cf7 kgdb_connected @@ -17270,28 +17268,27 @@ EXPORT_SYMBOL_GPL vmlinux 0xb501b2df nd_cmd_dimm_desc EXPORT_SYMBOL_GPL vmlinux 0xb508e79a mbox_flush EXPORT_SYMBOL_GPL vmlinux 0xb510c250 raw_v4_hashinfo -EXPORT_SYMBOL_GPL vmlinux 0xb5132cb1 crypto_unregister_algs EXPORT_SYMBOL_GPL vmlinux 0xb51fbd64 edac_op_state EXPORT_SYMBOL_GPL vmlinux 0xb520eb79 btree_merge -EXPORT_SYMBOL_GPL vmlinux 0xb5244215 tcp_sendpage_locked EXPORT_SYMBOL_GPL vmlinux 0xb54f446d serial8250_em485_stop_tx +EXPORT_SYMBOL_GPL vmlinux 0xb553dace skcipher_walk_virt EXPORT_SYMBOL_GPL vmlinux 0xb563be3c __traceiter_rpm_return_int EXPORT_SYMBOL_GPL vmlinux 0xb576cf73 regulator_set_load -EXPORT_SYMBOL_GPL vmlinux 0xb5993dce l3mdev_fib_table_rcu -EXPORT_SYMBOL_GPL vmlinux 0xb59a220f bpf_trace_run4 EXPORT_SYMBOL_GPL vmlinux 0xb5a0c605 kthread_flush_worker -EXPORT_SYMBOL_GPL vmlinux 0xb5a52cff aead_exit_geniv EXPORT_SYMBOL_GPL vmlinux 0xb5a8c226 acpi_gsi_to_irq EXPORT_SYMBOL_GPL vmlinux 0xb5b2f798 bio_end_io_acct_remapped +EXPORT_SYMBOL_GPL vmlinux 0xb5d98b95 tcp_leave_memory_pressure EXPORT_SYMBOL_GPL vmlinux 0xb5e52c77 kern_mount -EXPORT_SYMBOL_GPL vmlinux 0xb60bbf8f bpf_prog_destroy +EXPORT_SYMBOL_GPL vmlinux 0xb5f09eb8 __tracepoint_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xb5f88dcc __traceiter_neigh_event_send_done +EXPORT_SYMBOL_GPL vmlinux 0xb5fb827e __tcp_send_ack EXPORT_SYMBOL_GPL vmlinux 0xb6125d20 pkcs7_get_content_data EXPORT_SYMBOL_GPL vmlinux 0xb6134399 ata_common_sdev_attrs EXPORT_SYMBOL_GPL vmlinux 0xb6238181 virtqueue_kick_prepare EXPORT_SYMBOL_GPL vmlinux 0xb623a7ec disable_kprobe EXPORT_SYMBOL_GPL vmlinux 0xb6261484 register_die_notifier EXPORT_SYMBOL_GPL vmlinux 0xb62a9321 fb_deferred_io_fsync -EXPORT_SYMBOL_GPL vmlinux 0xb630e87b sk_msg_trim +EXPORT_SYMBOL_GPL vmlinux 0xb6319567 device_property_read_u32_array EXPORT_SYMBOL_GPL vmlinux 0xb6337258 dw_pcie_ep_init_complete EXPORT_SYMBOL_GPL vmlinux 0xb633dc20 pci_iov_virtfn_devfn EXPORT_SYMBOL_GPL vmlinux 0xb6357e53 cpuidle_enable_device @@ -17301,21 +17298,23 @@ EXPORT_SYMBOL_GPL vmlinux 0xb655f91b pci_epc_get_next_free_bar EXPORT_SYMBOL_GPL vmlinux 0xb669275d __tracepoint_remove_device_from_group EXPORT_SYMBOL_GPL vmlinux 0xb6787346 sfp_unregister_socket +EXPORT_SYMBOL_GPL vmlinux 0xb67ae321 device_register EXPORT_SYMBOL_GPL vmlinux 0xb6879cc9 srcu_notifier_call_chain EXPORT_SYMBOL_GPL vmlinux 0xb6888188 klp_shadow_get_or_alloc -EXPORT_SYMBOL_GPL vmlinux 0xb68b27f1 ip6_append_data EXPORT_SYMBOL_GPL vmlinux 0xb6940ffd devm_pm_opp_set_supported_hw EXPORT_SYMBOL_GPL vmlinux 0xb698719b __traceiter_attach_device_to_domain +EXPORT_SYMBOL_GPL vmlinux 0xb69ce0e1 nvme_kill_queues EXPORT_SYMBOL_GPL vmlinux 0xb6a6e763 class_unregister EXPORT_SYMBOL_GPL vmlinux 0xb6af2db1 tty_get_icount -EXPORT_SYMBOL_GPL vmlinux 0xb6c143d4 skb_zerocopy +EXPORT_SYMBOL_GPL vmlinux 0xb6c1d9d1 devlink_params_unpublish +EXPORT_SYMBOL_GPL vmlinux 0xb6c4b007 crypto_unregister_templates EXPORT_SYMBOL_GPL vmlinux 0xb6c5e614 acpi_processor_evaluate_cst EXPORT_SYMBOL_GPL vmlinux 0xb6dcfd7f devm_fwnode_gpiod_get_index EXPORT_SYMBOL_GPL vmlinux 0xb6e4efee __SCK__tp_func_rpm_suspend EXPORT_SYMBOL_GPL vmlinux 0xb6e6d99d clk_disable +EXPORT_SYMBOL_GPL vmlinux 0xb6e75cf8 sched_set_normal EXPORT_SYMBOL_GPL vmlinux 0xb6ede950 devm_gpiochip_add_data_with_key EXPORT_SYMBOL_GPL vmlinux 0xb7141b88 ata_sff_drain_fifo -EXPORT_SYMBOL_GPL vmlinux 0xb71ee7da __SCK__tp_func_sched_update_nr_running_tp EXPORT_SYMBOL_GPL vmlinux 0xb725cde6 xhci_suspend EXPORT_SYMBOL_GPL vmlinux 0xb7329c06 clk_set_phase EXPORT_SYMBOL_GPL vmlinux 0xb73713d7 nvmem_add_cell_lookups @@ -17323,14 +17322,12 @@ EXPORT_SYMBOL_GPL vmlinux 0xb7469df8 device_add_software_node EXPORT_SYMBOL_GPL vmlinux 0xb74c31cd wwan_remove_port EXPORT_SYMBOL_GPL vmlinux 0xb75041d1 hv_stimer_legacy_init -EXPORT_SYMBOL_GPL vmlinux 0xb7533900 udp_bpf_update_proto EXPORT_SYMBOL_GPL vmlinux 0xb761318b sev_active EXPORT_SYMBOL_GPL vmlinux 0xb7722611 sata_link_resume EXPORT_SYMBOL_GPL vmlinux 0xb783ca45 pci_hp_create_module_link EXPORT_SYMBOL_GPL vmlinux 0xb78e2a3c reset_control_get_count EXPORT_SYMBOL_GPL vmlinux 0xb7a387fc synchronize_rcu_tasks_rude EXPORT_SYMBOL_GPL vmlinux 0xb7a5dac8 __tracepoint_block_rq_remap -EXPORT_SYMBOL_GPL vmlinux 0xb7b03943 __tracepoint_br_fdb_update EXPORT_SYMBOL_GPL vmlinux 0xb7bfc71e devm_gpio_request_one EXPORT_SYMBOL_GPL vmlinux 0xb7c69a63 unregister_vmap_purge_notifier EXPORT_SYMBOL_GPL vmlinux 0xb7ca8ebe phy_check_downshift @@ -17340,11 +17337,14 @@ EXPORT_SYMBOL_GPL vmlinux 0xb7d5d3ab alloc_dax_region EXPORT_SYMBOL_GPL vmlinux 0xb7d63539 ata_msleep EXPORT_SYMBOL_GPL vmlinux 0xb7d7c12e hpet_set_alarm_time +EXPORT_SYMBOL_GPL vmlinux 0xb7dde6b6 inet6_csk_update_pmtu +EXPORT_SYMBOL_GPL vmlinux 0xb7eed979 netdev_walk_all_lower_dev EXPORT_SYMBOL_GPL vmlinux 0xb7f3a61b gpiochip_line_is_persistent EXPORT_SYMBOL_GPL vmlinux 0xb7f73ef8 xas_init_marks EXPORT_SYMBOL_GPL vmlinux 0xb7f990e9 rht_bucket_nested EXPORT_SYMBOL_GPL vmlinux 0xb81aa619 dev_pm_opp_get_required_pstate EXPORT_SYMBOL_GPL vmlinux 0xb8273d0b __wake_up_sync +EXPORT_SYMBOL_GPL vmlinux 0xb8275c7e sock_diag_register EXPORT_SYMBOL_GPL vmlinux 0xb8283b6d ata_sff_port_intr EXPORT_SYMBOL_GPL vmlinux 0xb831a1ee virtqueue_enable_cb EXPORT_SYMBOL_GPL vmlinux 0xb847585f is_hash_blacklisted @@ -17358,19 +17358,21 @@ EXPORT_SYMBOL_GPL vmlinux 0xb88903dd rio_route_add_entry EXPORT_SYMBOL_GPL vmlinux 0xb88bc47e arch_apei_report_mem_error EXPORT_SYMBOL_GPL vmlinux 0xb88dbfce irq_set_irqchip_state -EXPORT_SYMBOL_GPL vmlinux 0xb892dad9 __SCK__tp_func_neigh_update +EXPORT_SYMBOL_GPL vmlinux 0xb88e9afe skb_gso_validate_network_len EXPORT_SYMBOL_GPL vmlinux 0xb894afd8 serial8250_tx_chars EXPORT_SYMBOL_GPL vmlinux 0xb89b4e9e led_set_brightness +EXPORT_SYMBOL_GPL vmlinux 0xb89c7032 sock_gen_put EXPORT_SYMBOL_GPL vmlinux 0xb89e69b1 jump_label_update_timeout EXPORT_SYMBOL_GPL vmlinux 0xb8afbe7e inverse_translate EXPORT_SYMBOL_GPL vmlinux 0xb8b2b1f7 mce_register_decode_chain -EXPORT_SYMBOL_GPL vmlinux 0xb8b2c078 tcp_bpf_update_proto EXPORT_SYMBOL_GPL vmlinux 0xb8cd3a7f nf_logger_put +EXPORT_SYMBOL_GPL vmlinux 0xb8cec4ad sk_msg_return EXPORT_SYMBOL_GPL vmlinux 0xb8f11603 idr_alloc EXPORT_SYMBOL_GPL vmlinux 0xb8f539eb phy_pm_runtime_put EXPORT_SYMBOL_GPL vmlinux 0xb8fe44ef regcache_sync EXPORT_SYMBOL_GPL vmlinux 0xb902f5e7 irq_chip_request_resources_parent EXPORT_SYMBOL_GPL vmlinux 0xb9074c21 register_asymmetric_key_parser +EXPORT_SYMBOL_GPL vmlinux 0xb907893a dst_blackhole_redirect EXPORT_SYMBOL_GPL vmlinux 0xb912560d static_key_disable EXPORT_SYMBOL_GPL vmlinux 0xb91e0414 dev_pm_opp_add EXPORT_SYMBOL_GPL vmlinux 0xb93f6249 serial8250_do_startup @@ -17378,14 +17380,15 @@ EXPORT_SYMBOL_GPL vmlinux 0xb961eafb relay_switch_subbuf EXPORT_SYMBOL_GPL vmlinux 0xb9681621 xdp_do_flush EXPORT_SYMBOL_GPL vmlinux 0xb969c861 __phy_modify +EXPORT_SYMBOL_GPL vmlinux 0xb96fb0b5 vxlan_dev_create EXPORT_SYMBOL_GPL vmlinux 0xb9852d11 __traceiter_mc_event EXPORT_SYMBOL_GPL vmlinux 0xb9893daf clk_gate_restore_context EXPORT_SYMBOL_GPL vmlinux 0xb98bb315 phy_gbit_fibre_features EXPORT_SYMBOL_GPL vmlinux 0xb98d65c0 genphy_c45_read_pma EXPORT_SYMBOL_GPL vmlinux 0xb98e4da0 fuse_get_unique EXPORT_SYMBOL_GPL vmlinux 0xb9a6bf80 ata_qc_get_active -EXPORT_SYMBOL_GPL vmlinux 0xb9b35197 inet_csk_clone_lock EXPORT_SYMBOL_GPL vmlinux 0xb9b9df41 usb_amd_dev_put +EXPORT_SYMBOL_GPL vmlinux 0xb9bfacf1 setup_udp_tunnel_sock EXPORT_SYMBOL_GPL vmlinux 0xb9c06d2a vfio_device_put EXPORT_SYMBOL_GPL vmlinux 0xb9c16f51 hv_max_vp_index EXPORT_SYMBOL_GPL vmlinux 0xb9c425de register_syscore_ops @@ -17400,20 +17403,16 @@ EXPORT_SYMBOL_GPL vmlinux 0xba12f31f scsi_bus_type EXPORT_SYMBOL_GPL vmlinux 0xba220db7 __wake_up_sync_key EXPORT_SYMBOL_GPL vmlinux 0xba2b7f64 cpufreq_generic_get -EXPORT_SYMBOL_GPL vmlinux 0xba516265 xfrm_dev_resume +EXPORT_SYMBOL_GPL vmlinux 0xba2fdeff nvme_try_sched_reset EXPORT_SYMBOL_GPL vmlinux 0xba5b8316 pcie_aspm_enabled EXPORT_SYMBOL_GPL vmlinux 0xba6a1261 pinconf_generic_dump_config EXPORT_SYMBOL_GPL vmlinux 0xba786486 pci_epc_clear_bar -EXPORT_SYMBOL_GPL vmlinux 0xba885d18 sk_msg_return_zero EXPORT_SYMBOL_GPL vmlinux 0xba95c0ed usb_ep0_reinit -EXPORT_SYMBOL_GPL vmlinux 0xba95fdac fwnode_property_present EXPORT_SYMBOL_GPL vmlinux 0xba984d9b acpi_ec_remove_query_handler -EXPORT_SYMBOL_GPL vmlinux 0xba985e3d bpf_prog_sub EXPORT_SYMBOL_GPL vmlinux 0xba9d7267 regulator_set_voltage_time -EXPORT_SYMBOL_GPL vmlinux 0xbab70c8c sched_trace_rq_avg_irq EXPORT_SYMBOL_GPL vmlinux 0xbabbd516 handle_untracked_irq EXPORT_SYMBOL_GPL vmlinux 0xbac5fc68 power_supply_property_is_writeable -EXPORT_SYMBOL_GPL vmlinux 0xbad1b297 fwnode_property_read_u64_array +EXPORT_SYMBOL_GPL vmlinux 0xbadeb504 bpf_trace_run6 EXPORT_SYMBOL_GPL vmlinux 0xbae2e209 blk_add_driver_data EXPORT_SYMBOL_GPL vmlinux 0xbae55cb5 pci_common_swizzle EXPORT_SYMBOL_GPL vmlinux 0xbaf22757 kvfree_call_rcu @@ -17421,41 +17420,48 @@ EXPORT_SYMBOL_GPL vmlinux 0xbaf6850c fsnotify_wait_marks_destroyed EXPORT_SYMBOL_GPL vmlinux 0xbaf9d785 __tss_limit_invalid EXPORT_SYMBOL_GPL vmlinux 0xbb0ab47b debug_locks +EXPORT_SYMBOL_GPL vmlinux 0xbb0db8a7 ip_fib_metrics_init EXPORT_SYMBOL_GPL vmlinux 0xbb1b6571 blk_trace_startstop -EXPORT_SYMBOL_GPL vmlinux 0xbb324053 device_create +EXPORT_SYMBOL_GPL vmlinux 0xbb27a540 dst_cache_get_ip4 EXPORT_SYMBOL_GPL vmlinux 0xbb3520ef rtc_initialize_alarm EXPORT_SYMBOL_GPL vmlinux 0xbb3e4b08 devm_irq_alloc_generic_chip -EXPORT_SYMBOL_GPL vmlinux 0xbb47acad ping_rcv EXPORT_SYMBOL_GPL vmlinux 0xbb55fbb8 tpm_chip_start EXPORT_SYMBOL_GPL vmlinux 0xbb5d2e92 thermal_zone_device_update EXPORT_SYMBOL_GPL vmlinux 0xbb613a66 posix_acl_default_xattr_handler EXPORT_SYMBOL_GPL vmlinux 0xbb68821d simple_attr_open EXPORT_SYMBOL_GPL vmlinux 0xbb6a3cbd devlink_fmsg_arr_pair_nest_start EXPORT_SYMBOL_GPL vmlinux 0xbb6f025a asymmetric_key_generate_id +EXPORT_SYMBOL_GPL vmlinux 0xbb70761f task_cgroup_path EXPORT_SYMBOL_GPL vmlinux 0xbb70fbd1 acpi_create_platform_device EXPORT_SYMBOL_GPL vmlinux 0xbb7195a5 xdp_warn -EXPORT_SYMBOL_GPL vmlinux 0xbb74cee5 inet_twsk_alloc +EXPORT_SYMBOL_GPL vmlinux 0xbb75101c spi_controller_suspend EXPORT_SYMBOL_GPL vmlinux 0xbb93eec5 ioasid_alloc EXPORT_SYMBOL_GPL vmlinux 0xbb9d1873 gpiod_get_direction +EXPORT_SYMBOL_GPL vmlinux 0xbbb296a7 spi_finalize_current_transfer EXPORT_SYMBOL_GPL vmlinux 0xbbb46847 dma_resv_wait_timeout_rcu EXPORT_SYMBOL_GPL vmlinux 0xbbb98859 edid_info EXPORT_SYMBOL_GPL vmlinux 0xbbbd9555 usb_set_device_state EXPORT_SYMBOL_GPL vmlinux 0xbbcb1fad xhci_check_bandwidth EXPORT_SYMBOL_GPL vmlinux 0xbbf4dfbe phy_basic_t1_features EXPORT_SYMBOL_GPL vmlinux 0xbc135be6 devm_nvmem_cell_get +EXPORT_SYMBOL_GPL vmlinux 0xbc155fc8 nvme_fail_nonready_command EXPORT_SYMBOL_GPL vmlinux 0xbc1af7c9 elv_rqhash_add +EXPORT_SYMBOL_GPL vmlinux 0xbc1f5cb4 spi_get_device_id EXPORT_SYMBOL_GPL vmlinux 0xbc211166 gpiod_to_irq EXPORT_SYMBOL_GPL vmlinux 0xbc268041 devm_clk_bulk_get +EXPORT_SYMBOL_GPL vmlinux 0xbc36cec7 __traceiter_sched_util_est_cfs_tp EXPORT_SYMBOL_GPL vmlinux 0xbc3f2cb0 timecounter_cyc2time EXPORT_SYMBOL_GPL vmlinux 0xbc4e24bb copy_mc_to_kernel +EXPORT_SYMBOL_GPL vmlinux 0xbc591344 udp_tunnel_xmit_skb EXPORT_SYMBOL_GPL vmlinux 0xbc60dc37 cpufreq_show_cpus +EXPORT_SYMBOL_GPL vmlinux 0xbc61dd7c device_property_present EXPORT_SYMBOL_GPL vmlinux 0xbc6bec66 free_percpu_irq EXPORT_SYMBOL_GPL vmlinux 0xbc6e1343 usb_disable_autosuspend EXPORT_SYMBOL_GPL vmlinux 0xbc766637 check_move_unevictable_pages EXPORT_SYMBOL_GPL vmlinux 0xbc9b8588 ehci_cf_port_reset_rwsem -EXPORT_SYMBOL_GPL vmlinux 0xbcab3c3a devlink_dpipe_table_register EXPORT_SYMBOL_GPL vmlinux 0xbcad02a1 rio_get_comptag EXPORT_SYMBOL_GPL vmlinux 0xbcb838a1 amd_flush_garts +EXPORT_SYMBOL_GPL vmlinux 0xbcbe9107 strp_init EXPORT_SYMBOL_GPL vmlinux 0xbcc0e8f4 phy_remove_lookup EXPORT_SYMBOL_GPL vmlinux 0xbcc15e75 ktime_get_coarse_with_offset EXPORT_SYMBOL_GPL vmlinux 0xbccb800d shmem_file_setup @@ -17466,7 +17472,8 @@ EXPORT_SYMBOL_GPL vmlinux 0xbce63670 intel_pinctrl_probe_by_hid EXPORT_SYMBOL_GPL vmlinux 0xbcf1f0e6 zs_create_pool EXPORT_SYMBOL_GPL vmlinux 0xbd09b836 user_read -EXPORT_SYMBOL_GPL vmlinux 0xbd28ffaa fib_alias_hw_flags_set +EXPORT_SYMBOL_GPL vmlinux 0xbd18326f device_show_int +EXPORT_SYMBOL_GPL vmlinux 0xbd3959b6 fwnode_get_phy_mode EXPORT_SYMBOL_GPL vmlinux 0xbd3fe1e3 disable_hardirq EXPORT_SYMBOL_GPL vmlinux 0xbd5a9fee blk_ksm_init EXPORT_SYMBOL_GPL vmlinux 0xbd7aaaee add_memory @@ -17475,52 +17482,49 @@ EXPORT_SYMBOL_GPL vmlinux 0xbd8ed678 genphy_c45_aneg_done EXPORT_SYMBOL_GPL vmlinux 0xbd99e873 __SCT__tp_func_cpu_idle EXPORT_SYMBOL_GPL vmlinux 0xbd9a1350 gov_attr_set_put -EXPORT_SYMBOL_GPL vmlinux 0xbda2485d task_active_pid_ns EXPORT_SYMBOL_GPL vmlinux 0xbda6cbb5 shmem_zero_setup EXPORT_SYMBOL_GPL vmlinux 0xbdac013b perf_aux_output_begin EXPORT_SYMBOL_GPL vmlinux 0xbdaeebe6 dma_vunmap_noncontiguous EXPORT_SYMBOL_GPL vmlinux 0xbdb01623 apply_to_page_range EXPORT_SYMBOL_GPL vmlinux 0xbdb07b60 sysfs_update_groups EXPORT_SYMBOL_GPL vmlinux 0xbdb2217d hv_is_isolation_supported +EXPORT_SYMBOL_GPL vmlinux 0xbdbe3089 sock_diag_destroy EXPORT_SYMBOL_GPL vmlinux 0xbdce3ca3 gpiod_get_index -EXPORT_SYMBOL_GPL vmlinux 0xbdd6a48b security_inode_create EXPORT_SYMBOL_GPL vmlinux 0xbde0f362 blk_ksm_reprogram_all_keys EXPORT_SYMBOL_GPL vmlinux 0xbde80bb1 generic_fh_to_dentry -EXPORT_SYMBOL_GPL vmlinux 0xbe0155da skb_zerocopy_headlen EXPORT_SYMBOL_GPL vmlinux 0xbe0fe7ea ima_inode_hash +EXPORT_SYMBOL_GPL vmlinux 0xbe1127ce device_remove_bin_file EXPORT_SYMBOL_GPL vmlinux 0xbe1d3e16 nvmem_cell_read_u16 +EXPORT_SYMBOL_GPL vmlinux 0xbe27076c set_secondary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xbe2cdb25 xfrm_dev_offload_ok EXPORT_SYMBOL_GPL vmlinux 0xbe302a9f anon_inode_getfd EXPORT_SYMBOL_GPL vmlinux 0xbe35b9cb cpci_hp_unregister_bus -EXPORT_SYMBOL_GPL vmlinux 0xbe3652fa crypto_unregister_instance EXPORT_SYMBOL_GPL vmlinux 0xbe495874 regmap_raw_write EXPORT_SYMBOL_GPL vmlinux 0xbe498f2a wait_on_page_writeback -EXPORT_SYMBOL_GPL vmlinux 0xbe4a4052 fib_table_lookup EXPORT_SYMBOL_GPL vmlinux 0xbe5bacc7 dma_buf_export EXPORT_SYMBOL_GPL vmlinux 0xbe5c888b crypto_chain +EXPORT_SYMBOL_GPL vmlinux 0xbe66be41 task_cputime_adjusted EXPORT_SYMBOL_GPL vmlinux 0xbe687e88 wake_up_all_idle_cpus EXPORT_SYMBOL_GPL vmlinux 0xbe6d43d7 ioasid_put EXPORT_SYMBOL_GPL vmlinux 0xbe6f49ee icc_link_destroy +EXPORT_SYMBOL_GPL vmlinux 0xbe750c98 __netif_set_xps_queue EXPORT_SYMBOL_GPL vmlinux 0xbe9656b3 n_tty_inherit_ops EXPORT_SYMBOL_GPL vmlinux 0xbe9a83d5 dw_pcie_write EXPORT_SYMBOL_GPL vmlinux 0xbea1073c led_stop_software_blink EXPORT_SYMBOL_GPL vmlinux 0xbea5b8c1 irq_alloc_generic_chip EXPORT_SYMBOL_GPL vmlinux 0xbea5ff1e static_key_initialized -EXPORT_SYMBOL_GPL vmlinux 0xbeb34758 udp_tunnel_push_rx_port EXPORT_SYMBOL_GPL vmlinux 0xbeb7eec5 virtio_finalize_features +EXPORT_SYMBOL_GPL vmlinux 0xbec2c891 dev_err_probe EXPORT_SYMBOL_GPL vmlinux 0xbec66c3a __apei_exec_run EXPORT_SYMBOL_GPL vmlinux 0xbed1febc __blk_req_zone_write_unlock -EXPORT_SYMBOL_GPL vmlinux 0xbed7e9df ethnl_cable_test_finished -EXPORT_SYMBOL_GPL vmlinux 0xbee6dde9 __pneigh_lookup EXPORT_SYMBOL_GPL vmlinux 0xbef2b5bf pci_status_get_and_clear_errors EXPORT_SYMBOL_GPL vmlinux 0xbef72821 pcie_flr EXPORT_SYMBOL_GPL vmlinux 0xbf041102 register_vt_notifier -EXPORT_SYMBOL_GPL vmlinux 0xbf0a10fe device_remove_bin_file +EXPORT_SYMBOL_GPL vmlinux 0xbf14ad6b udp_init_sock EXPORT_SYMBOL_GPL vmlinux 0xbf165dec __SCT__tp_func_pelt_se_tp +EXPORT_SYMBOL_GPL vmlinux 0xbf1c2a6a vxlan_fdb_clear_offload EXPORT_SYMBOL_GPL vmlinux 0xbf2fdd0c intel_pinctrl_get_soc_data EXPORT_SYMBOL_GPL vmlinux 0xbf6c9235 platform_msi_domain_alloc_irqs -EXPORT_SYMBOL_GPL vmlinux 0xbf7a7b2d __SCK__tp_func_fib6_table_lookup -EXPORT_SYMBOL_GPL vmlinux 0xbf815430 __traceiter_sched_cpu_capacity_tp -EXPORT_SYMBOL_GPL vmlinux 0xbf8a6f71 device_property_read_u32_array EXPORT_SYMBOL_GPL vmlinux 0xbfa89a0a badblocks_show EXPORT_SYMBOL_GPL vmlinux 0xbfbc5434 pciserial_resume_ports EXPORT_SYMBOL_GPL vmlinux 0xbfc2297f __tracepoint_rpm_idle @@ -17530,18 +17534,18 @@ EXPORT_SYMBOL_GPL vmlinux 0xbff4a95d iomap_bmap EXPORT_SYMBOL_GPL vmlinux 0xbffde8ec compat_alloc_user_space EXPORT_SYMBOL_GPL vmlinux 0xc0071181 ata_eh_analyze_ncq_error -EXPORT_SYMBOL_GPL vmlinux 0xc01c54a5 devlink_region_snapshot_id_get EXPORT_SYMBOL_GPL vmlinux 0xc0207e8d dev_pm_qos_hide_latency_tolerance -EXPORT_SYMBOL_GPL vmlinux 0xc032f431 sched_trace_rq_avg_rt -EXPORT_SYMBOL_GPL vmlinux 0xc0671464 crypto_register_template +EXPORT_SYMBOL_GPL vmlinux 0xc06ae456 __xdp_build_skb_from_frame EXPORT_SYMBOL_GPL vmlinux 0xc06d1e02 gpiochip_irqchip_irq_valid EXPORT_SYMBOL_GPL vmlinux 0xc06f03ae __fscrypt_inode_uses_inline_crypto +EXPORT_SYMBOL_GPL vmlinux 0xc07a4798 nf_queue_entry_get_refs +EXPORT_SYMBOL_GPL vmlinux 0xc0841425 ping_seq_stop +EXPORT_SYMBOL_GPL vmlinux 0xc086bf95 nvme_stop_ctrl EXPORT_SYMBOL_GPL vmlinux 0xc08bbce6 irq_get_percpu_devid_partition EXPORT_SYMBOL_GPL vmlinux 0xc090c376 net_selftest_get_strings +EXPORT_SYMBOL_GPL vmlinux 0xc097154c xdp_return_frame EXPORT_SYMBOL_GPL vmlinux 0xc0993129 serial8250_rpm_get_tx EXPORT_SYMBOL_GPL vmlinux 0xc0a1e73f dm_table_device_name -EXPORT_SYMBOL_GPL vmlinux 0xc0a4ef3c ip_tunnel_ioctl -EXPORT_SYMBOL_GPL vmlinux 0xc0a8c23e __traceiter_pelt_irq_tp EXPORT_SYMBOL_GPL vmlinux 0xc0a96e14 rcu_gp_is_expedited EXPORT_SYMBOL_GPL vmlinux 0xc0ce4ff5 debugfs_create_file_unsafe EXPORT_SYMBOL_GPL vmlinux 0xc0d18b50 acpi_driver_match_device @@ -17559,15 +17563,14 @@ EXPORT_SYMBOL_GPL vmlinux 0xc1249cc8 __SCK__tp_func_powernv_throttle EXPORT_SYMBOL_GPL vmlinux 0xc12614f7 devm_gpio_request EXPORT_SYMBOL_GPL vmlinux 0xc132e00f vfs_cancel_lock -EXPORT_SYMBOL_GPL vmlinux 0xc155f0e4 spi_res_add +EXPORT_SYMBOL_GPL vmlinux 0xc1479ce5 xfrm_audit_policy_add EXPORT_SYMBOL_GPL vmlinux 0xc16ced89 handle_level_irq EXPORT_SYMBOL_GPL vmlinux 0xc1743430 cpuidle_disable_device EXPORT_SYMBOL_GPL vmlinux 0xc17515d7 usb_hcds_loaded EXPORT_SYMBOL_GPL vmlinux 0xc17e9946 usb_show_dynids EXPORT_SYMBOL_GPL vmlinux 0xc18cdf36 amd_df_indirect_read EXPORT_SYMBOL_GPL vmlinux 0xc18f77fb dev_pm_opp_set_sharing_cpus -EXPORT_SYMBOL_GPL vmlinux 0xc1af57a2 fixed_phy_register -EXPORT_SYMBOL_GPL vmlinux 0xc1b1db68 device_del +EXPORT_SYMBOL_GPL vmlinux 0xc19d5c5c fib_rule_matchall EXPORT_SYMBOL_GPL vmlinux 0xc1b2c1f4 mbox_controller_register EXPORT_SYMBOL_GPL vmlinux 0xc1b45290 rio_dma_prep_xfer EXPORT_SYMBOL_GPL vmlinux 0xc1b6a4dc cpufreq_dbs_governor_init @@ -17577,16 +17580,14 @@ EXPORT_SYMBOL_GPL vmlinux 0xc2033d9f amd_get_highest_perf EXPORT_SYMBOL_GPL vmlinux 0xc20cf83e vfio_iommu_group_get EXPORT_SYMBOL_GPL vmlinux 0xc21196aa dma_mmap_pages -EXPORT_SYMBOL_GPL vmlinux 0xc2209f76 __root_device_register +EXPORT_SYMBOL_GPL vmlinux 0xc211b8d5 nvme_complete_async_event EXPORT_SYMBOL_GPL vmlinux 0xc22a3091 vm_unmap_aliases EXPORT_SYMBOL_GPL vmlinux 0xc22eeb53 gpiod_direction_input EXPORT_SYMBOL_GPL vmlinux 0xc22ef1d0 devres_release -EXPORT_SYMBOL_GPL vmlinux 0xc235712a inet_ctl_sock_create EXPORT_SYMBOL_GPL vmlinux 0xc23601c1 __SCT__tp_func_pelt_cfs_tp EXPORT_SYMBOL_GPL vmlinux 0xc257452f exportfs_encode_fh EXPORT_SYMBOL_GPL vmlinux 0xc25b8971 hv_remove_crash_handler EXPORT_SYMBOL_GPL vmlinux 0xc2692173 wakeup_sources_read_lock -EXPORT_SYMBOL_GPL vmlinux 0xc2728ddd phy_start_machine EXPORT_SYMBOL_GPL vmlinux 0xc2733cba devm_rtc_nvmem_register EXPORT_SYMBOL_GPL vmlinux 0xc280fb46 kdb_register EXPORT_SYMBOL_GPL vmlinux 0xc287d96a kvm_set_posted_intr_wakeup_handler @@ -17597,38 +17598,41 @@ EXPORT_SYMBOL_GPL vmlinux 0xc2a814db tcp_memory_pressure EXPORT_SYMBOL_GPL vmlinux 0xc2abaf20 nd_blk_region_to_dimm EXPORT_SYMBOL_GPL vmlinux 0xc2b0f4d5 pci_vpd_find_tag +EXPORT_SYMBOL_GPL vmlinux 0xc2b371d7 pid_vnr EXPORT_SYMBOL_GPL vmlinux 0xc2b546cd genphy_c45_loopback EXPORT_SYMBOL_GPL vmlinux 0xc2bc1a23 iommu_sva_unbind_gpasid EXPORT_SYMBOL_GPL vmlinux 0xc2c1c427 perf_event_cgrp_subsys_on_dfl_key -EXPORT_SYMBOL_GPL vmlinux 0xc2d0fbd5 sk_msg_alloc +EXPORT_SYMBOL_GPL vmlinux 0xc2c98617 devlink_port_type_ib_set +EXPORT_SYMBOL_GPL vmlinux 0xc2dc1faa nf_ipv6_ops EXPORT_SYMBOL_GPL vmlinux 0xc2de27ca hest_disable EXPORT_SYMBOL_GPL vmlinux 0xc2efc3ef __dma_request_channel -EXPORT_SYMBOL_GPL vmlinux 0xc3014b39 spi_sync_locked +EXPORT_SYMBOL_GPL vmlinux 0xc2f8c9cb crypto_drop_spawn EXPORT_SYMBOL_GPL vmlinux 0xc3329c64 apic +EXPORT_SYMBOL_GPL vmlinux 0xc3399419 nvme_init_ctrl EXPORT_SYMBOL_GPL vmlinux 0xc341ae6d zs_map_object EXPORT_SYMBOL_GPL vmlinux 0xc3468639 inode_dax EXPORT_SYMBOL_GPL vmlinux 0xc34a93b7 hwspin_lock_get_id EXPORT_SYMBOL_GPL vmlinux 0xc34ecbae nvmem_device_get EXPORT_SYMBOL_GPL vmlinux 0xc35bc602 driver_find EXPORT_SYMBOL_GPL vmlinux 0xc3805cd1 fs_ftype_to_dtype +EXPORT_SYMBOL_GPL vmlinux 0xc394c16c skb_complete_wifi_ack EXPORT_SYMBOL_GPL vmlinux 0xc39a9889 nvdimm_cmd_mask EXPORT_SYMBOL_GPL vmlinux 0xc39ef3c1 acpi_processor_get_performance_info EXPORT_SYMBOL_GPL vmlinux 0xc3bca1f1 blkdev_report_zones EXPORT_SYMBOL_GPL vmlinux 0xc3c03335 usb_disable_lpm EXPORT_SYMBOL_GPL vmlinux 0xc3c4c6cc hash_algo_name EXPORT_SYMBOL_GPL vmlinux 0xc3cb2108 syscon_regmap_lookup_by_phandle +EXPORT_SYMBOL_GPL vmlinux 0xc3cc3526 mptcp_token_iter_next EXPORT_SYMBOL_GPL vmlinux 0xc3ceacde firmware_request_cache -EXPORT_SYMBOL_GPL vmlinux 0xc3d5b839 nvme_stop_ctrl +EXPORT_SYMBOL_GPL vmlinux 0xc3d8dd26 xfrm_put_translator EXPORT_SYMBOL_GPL vmlinux 0xc3de65ff ring_buffer_bytes_cpu EXPORT_SYMBOL_GPL vmlinux 0xc3e8f2d0 regulator_get_init_drvdata -EXPORT_SYMBOL_GPL vmlinux 0xc3e9b604 dst_cache_set_ip4 EXPORT_SYMBOL_GPL vmlinux 0xc3ea5305 iommu_default_passthrough +EXPORT_SYMBOL_GPL vmlinux 0xc3f65322 crypto_stats_compress +EXPORT_SYMBOL_GPL vmlinux 0xc3fb5eae l3mdev_update_flow EXPORT_SYMBOL_GPL vmlinux 0xc401b0cc devm_nvmem_device_put -EXPORT_SYMBOL_GPL vmlinux 0xc4049f39 sfp_register_socket EXPORT_SYMBOL_GPL vmlinux 0xc404aa17 fsnotify_init_mark EXPORT_SYMBOL_GPL vmlinux 0xc406b301 fat_fill_super -EXPORT_SYMBOL_GPL vmlinux 0xc4175379 perf_tp_event -EXPORT_SYMBOL_GPL vmlinux 0xc4201136 sched_trace_rq_avg_dl EXPORT_SYMBOL_GPL vmlinux 0xc421047e bus_get_kset EXPORT_SYMBOL_GPL vmlinux 0xc426c51f klp_shadow_free_all EXPORT_SYMBOL_GPL vmlinux 0xc428068d sata_deb_timing_long @@ -17646,9 +17650,10 @@ EXPORT_SYMBOL_GPL vmlinux 0xc46dc6ca debugfs_create_x64 EXPORT_SYMBOL_GPL vmlinux 0xc46ec128 dev_pm_qos_add_notifier EXPORT_SYMBOL_GPL vmlinux 0xc474e7e0 crypto_mod_put -EXPORT_SYMBOL_GPL vmlinux 0xc47a373a udp4_hwcsum +EXPORT_SYMBOL_GPL vmlinux 0xc481b750 fwnode_get_parent EXPORT_SYMBOL_GPL vmlinux 0xc486bddf devfreq_event_enable_edev EXPORT_SYMBOL_GPL vmlinux 0xc48b7ccf ata_mode_string +EXPORT_SYMBOL_GPL vmlinux 0xc48d9844 ethnl_cable_test_step EXPORT_SYMBOL_GPL vmlinux 0xc4913442 vfio_group_put_external_user EXPORT_SYMBOL_GPL vmlinux 0xc4a31146 rdma_cgrp_subsys_on_dfl_key EXPORT_SYMBOL_GPL vmlinux 0xc4a6560d gpiod_get_array_value @@ -17658,18 +17663,20 @@ EXPORT_SYMBOL_GPL vmlinux 0xc4d022cb __SCT__tp_func_napi_poll EXPORT_SYMBOL_GPL vmlinux 0xc4d0f146 mddev_unlock EXPORT_SYMBOL_GPL vmlinux 0xc4d1b8e6 __rio_local_write_config_16 +EXPORT_SYMBOL_GPL vmlinux 0xc4d7d9a2 crypto_enqueue_request_head EXPORT_SYMBOL_GPL vmlinux 0xc4dfb4ff usb_hub_release_port EXPORT_SYMBOL_GPL vmlinux 0xc4e1d501 fat_add_entries EXPORT_SYMBOL_GPL vmlinux 0xc4e5b14b __traceiter_block_rq_insert EXPORT_SYMBOL_GPL vmlinux 0xc4e5e4cb pci_iomap_wc +EXPORT_SYMBOL_GPL vmlinux 0xc4ede74f sched_trace_rq_cpu_capacity EXPORT_SYMBOL_GPL vmlinux 0xc4f0da12 ktime_get_with_offset EXPORT_SYMBOL_GPL vmlinux 0xc50dca33 __SCT__tp_func_neigh_cleanup_and_release EXPORT_SYMBOL_GPL vmlinux 0xc50e4ead pci_user_read_config_dword -EXPORT_SYMBOL_GPL vmlinux 0xc50fb4ee mptcp_pm_get_add_addr_accept_max EXPORT_SYMBOL_GPL vmlinux 0xc512626a __supported_pte_mask EXPORT_SYMBOL_GPL vmlinux 0xc5156bf3 fanout_mutex EXPORT_SYMBOL_GPL vmlinux 0xc51e9e67 blk_trace_setup -EXPORT_SYMBOL_GPL vmlinux 0xc54f98af ping_hash +EXPORT_SYMBOL_GPL vmlinux 0xc5224e38 skb_to_sgvec_nomark +EXPORT_SYMBOL_GPL vmlinux 0xc5337636 phy_driver_is_genphy EXPORT_SYMBOL_GPL vmlinux 0xc552e785 __kthread_should_park EXPORT_SYMBOL_GPL vmlinux 0xc55430b8 nvdimm_security_setup_events EXPORT_SYMBOL_GPL vmlinux 0xc55940a0 dma_buf_vunmap @@ -17679,30 +17686,34 @@ EXPORT_SYMBOL_GPL vmlinux 0xc575c737 debug_locks_off EXPORT_SYMBOL_GPL vmlinux 0xc5777fca linear_range_get_selector_low_array EXPORT_SYMBOL_GPL vmlinux 0xc58a3ee6 icc_node_destroy +EXPORT_SYMBOL_GPL vmlinux 0xc599623e inet_ehash_nolisten EXPORT_SYMBOL_GPL vmlinux 0xc59ec814 acpi_nfit_ctl EXPORT_SYMBOL_GPL vmlinux 0xc5a5c678 uart_parse_earlycon EXPORT_SYMBOL_GPL vmlinux 0xc5ac0fbc dev_pm_opp_remove_table EXPORT_SYMBOL_GPL vmlinux 0xc5ac61a2 nvmem_cell_read_variable_le_u64 +EXPORT_SYMBOL_GPL vmlinux 0xc5b5928f bpf_trace_run3 EXPORT_SYMBOL_GPL vmlinux 0xc5b7ab00 ata_host_resume -EXPORT_SYMBOL_GPL vmlinux 0xc5bdaf4c bpf_prog_create_from_user EXPORT_SYMBOL_GPL vmlinux 0xc5c5d384 clk_register_divider_table +EXPORT_SYMBOL_GPL vmlinux 0xc5c8c3e1 spi_new_device EXPORT_SYMBOL_GPL vmlinux 0xc5cb53dd edac_device_alloc_ctl_info EXPORT_SYMBOL_GPL vmlinux 0xc5d29ff9 wm5110_patch EXPORT_SYMBOL_GPL vmlinux 0xc5def61e wm831x_auxadc_read_uv EXPORT_SYMBOL_GPL vmlinux 0xc5e65375 __dax_driver_register -EXPORT_SYMBOL_GPL vmlinux 0xc5fd3688 br_fdb_test_addr_hook -EXPORT_SYMBOL_GPL vmlinux 0xc600d19a __SCK__tp_func_neigh_timer_handler +EXPORT_SYMBOL_GPL vmlinux 0xc5fcb1af rtnl_put_cacheinfo EXPORT_SYMBOL_GPL vmlinux 0xc604ab28 __SCT__tp_func_kfree_skb EXPORT_SYMBOL_GPL vmlinux 0xc608c6a9 irq_chip_eoi_parent -EXPORT_SYMBOL_GPL vmlinux 0xc60e764c devlink_net EXPORT_SYMBOL_GPL vmlinux 0xc6127612 class_interface_register EXPORT_SYMBOL_GPL vmlinux 0xc617f82c unregister_oom_notifier +EXPORT_SYMBOL_GPL vmlinux 0xc61d2491 skb_copy_ubufs +EXPORT_SYMBOL_GPL vmlinux 0xc62af6f5 crypto_stats_kpp_set_secret EXPORT_SYMBOL_GPL vmlinux 0xc6451643 __bio_try_merge_page +EXPORT_SYMBOL_GPL vmlinux 0xc6571d65 dst_blackhole_mtu EXPORT_SYMBOL_GPL vmlinux 0xc66781af debugfs_create_u32 EXPORT_SYMBOL_GPL vmlinux 0xc66b77b1 iommu_group_set_iommudata EXPORT_SYMBOL_GPL vmlinux 0xc672a391 irq_work_sync EXPORT_SYMBOL_GPL vmlinux 0xc6779093 ring_buffer_record_enable EXPORT_SYMBOL_GPL vmlinux 0xc6779c3f debugfs_create_x16 +EXPORT_SYMBOL_GPL vmlinux 0xc67825a4 sk_detach_filter EXPORT_SYMBOL_GPL vmlinux 0xc683da81 set_memory_decrypted EXPORT_SYMBOL_GPL vmlinux 0xc697b0f7 nvmem_device_read EXPORT_SYMBOL_GPL vmlinux 0xc69b7ee5 zs_destroy_pool @@ -17714,29 +17725,27 @@ EXPORT_SYMBOL_GPL vmlinux 0xc6ecb010 __intel_scu_ipc_register EXPORT_SYMBOL_GPL vmlinux 0xc6eec8f5 clk_divider_ops EXPORT_SYMBOL_GPL vmlinux 0xc7061ef3 iova_cache_put -EXPORT_SYMBOL_GPL vmlinux 0xc7172654 crypto_enqueue_request_head EXPORT_SYMBOL_GPL vmlinux 0xc71e64a9 snmp_get_cpu_field EXPORT_SYMBOL_GPL vmlinux 0xc72ba605 ata_sff_freeze EXPORT_SYMBOL_GPL vmlinux 0xc73160ce tty_register_device_attr -EXPORT_SYMBOL_GPL vmlinux 0xc7394bf1 fwnode_property_read_string_array EXPORT_SYMBOL_GPL vmlinux 0xc752d6b4 blk_mq_complete_request_remote EXPORT_SYMBOL_GPL vmlinux 0xc76f8048 __sbitmap_queue_get EXPORT_SYMBOL_GPL vmlinux 0xc7856e74 __wake_up_locked_sync_key EXPORT_SYMBOL_GPL vmlinux 0xc79c894b usb_autopm_put_interface +EXPORT_SYMBOL_GPL vmlinux 0xc79cadb0 __traceiter_napi_poll EXPORT_SYMBOL_GPL vmlinux 0xc7a1840e llist_add_batch -EXPORT_SYMBOL_GPL vmlinux 0xc7a6c3ed devlink_traps_unregister EXPORT_SYMBOL_GPL vmlinux 0xc7a7e770 clk_bulk_enable EXPORT_SYMBOL_GPL vmlinux 0xc7b6b03c tpm_is_tpm2 EXPORT_SYMBOL_GPL vmlinux 0xc7dfb5aa rio_enable_rx_tx_port -EXPORT_SYMBOL_GPL vmlinux 0xc7e11215 dst_cache_get_ip4 EXPORT_SYMBOL_GPL vmlinux 0xc7e64fc2 asn1_encode_integer EXPORT_SYMBOL_GPL vmlinux 0xc7e9e3ec rio_release_inb_dbell EXPORT_SYMBOL_GPL vmlinux 0xc7f6752b hv_pkt_iter_first EXPORT_SYMBOL_GPL vmlinux 0xc7fa4aa9 kobj_ns_drop +EXPORT_SYMBOL_GPL vmlinux 0xc8016848 ip_tunnel_dellink +EXPORT_SYMBOL_GPL vmlinux 0xc80ed08c nvme_start_ctrl EXPORT_SYMBOL_GPL vmlinux 0xc811cd43 platform_device_add EXPORT_SYMBOL_GPL vmlinux 0xc82c721f klist_remove EXPORT_SYMBOL_GPL vmlinux 0xc8325028 trace_event_raw_init -EXPORT_SYMBOL_GPL vmlinux 0xc8365c1d __udp_enqueue_schedule_skb EXPORT_SYMBOL_GPL vmlinux 0xc839c1ce trace_seq_to_user EXPORT_SYMBOL_GPL vmlinux 0xc83fc3f8 irq_gc_mask_set_bit EXPORT_SYMBOL_GPL vmlinux 0xc83ff7a1 hrtimer_sleeper_start_expires @@ -17750,80 +17759,80 @@ EXPORT_SYMBOL_GPL vmlinux 0xc87e487a sched_clock_idle_sleep_event EXPORT_SYMBOL_GPL vmlinux 0xc87fb025 xas_get_mark EXPORT_SYMBOL_GPL vmlinux 0xc88d2288 __reset_control_bulk_get -EXPORT_SYMBOL_GPL vmlinux 0xc8a1d390 get_net_ns -EXPORT_SYMBOL_GPL vmlinux 0xc8a8a75a fib_nl_newrule -EXPORT_SYMBOL_GPL vmlinux 0xc8c0c8f5 l3mdev_master_upper_ifindex_by_index_rcu +EXPORT_SYMBOL_GPL vmlinux 0xc8918307 lwtunnel_input EXPORT_SYMBOL_GPL vmlinux 0xc8cc5692 arizona_clk32k_disable -EXPORT_SYMBOL_GPL vmlinux 0xc8d5d67d spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xc8d0e8ac fwnode_graph_get_endpoint_by_id EXPORT_SYMBOL_GPL vmlinux 0xc8ddd5b5 kstrdup_quotable +EXPORT_SYMBOL_GPL vmlinux 0xc8e1f898 skb_mpls_update_lse EXPORT_SYMBOL_GPL vmlinux 0xc8ed326c regulator_list_voltage_table -EXPORT_SYMBOL_GPL vmlinux 0xc8eff8cb device_initialize EXPORT_SYMBOL_GPL vmlinux 0xc8f6dafd gpiod_count EXPORT_SYMBOL_GPL vmlinux 0xc8fdc6eb cpufreq_driver_resolve_freq -EXPORT_SYMBOL_GPL vmlinux 0xc908e56a bpf_trace_run5 +EXPORT_SYMBOL_GPL vmlinux 0xc900dab4 __traceiter_pelt_se_tp EXPORT_SYMBOL_GPL vmlinux 0xc918cae6 ata_sas_port_start EXPORT_SYMBOL_GPL vmlinux 0xc91ee1b5 __SCT__tp_func_mc_event EXPORT_SYMBOL_GPL vmlinux 0xc91fdf58 percpu_ref_is_zero +EXPORT_SYMBOL_GPL vmlinux 0xc925e303 security_inode_create EXPORT_SYMBOL_GPL vmlinux 0xc9345c0f digsig_verify -EXPORT_SYMBOL_GPL vmlinux 0xc9386995 register_pernet_subsys EXPORT_SYMBOL_GPL vmlinux 0xc93d4c50 dm_noflush_suspending EXPORT_SYMBOL_GPL vmlinux 0xc93e10f9 crypto_register_aeads EXPORT_SYMBOL_GPL vmlinux 0xc93ee1e7 usb_phy_roothub_init EXPORT_SYMBOL_GPL vmlinux 0xc94f1a95 devm_pm_opp_register_set_opp_helper -EXPORT_SYMBOL_GPL vmlinux 0xc94f8a9a xdp_rxq_info_unreg EXPORT_SYMBOL_GPL vmlinux 0xc950cf7e watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xc952d95b skb_partial_csum_set EXPORT_SYMBOL_GPL vmlinux 0xc9561772 fb_destroy_modelist EXPORT_SYMBOL_GPL vmlinux 0xc9641b48 visitor32 +EXPORT_SYMBOL_GPL vmlinux 0xc97b15ef ip6_datagram_release_cb EXPORT_SYMBOL_GPL vmlinux 0xc97d0ae9 __regmap_init EXPORT_SYMBOL_GPL vmlinux 0xc9827693 __bpf_call_base EXPORT_SYMBOL_GPL vmlinux 0xc98cd1bc __blkg_prfill_u64 -EXPORT_SYMBOL_GPL vmlinux 0xc98daf26 xdp_rxq_info_reg EXPORT_SYMBOL_GPL vmlinux 0xc991c03f __SCK__tp_func_nvme_sq -EXPORT_SYMBOL_GPL vmlinux 0xc99b4a8d nf_checksum_partial EXPORT_SYMBOL_GPL vmlinux 0xc9a4b416 copy_to_user_nofault EXPORT_SYMBOL_GPL vmlinux 0xc9b306a7 acpi_kobj +EXPORT_SYMBOL_GPL vmlinux 0xc9bb6b6b ip_tunnel_init_net EXPORT_SYMBOL_GPL vmlinux 0xc9c273b6 transport_setup_device EXPORT_SYMBOL_GPL vmlinux 0xc9c3f176 hpet_register_irq_handler EXPORT_SYMBOL_GPL vmlinux 0xc9cf057f mmu_notifier_put EXPORT_SYMBOL_GPL vmlinux 0xc9da815c open_related_ns -EXPORT_SYMBOL_GPL vmlinux 0xc9de77c4 devlink_trap_policers_unregister EXPORT_SYMBOL_GPL vmlinux 0xc9ec4e21 free_percpu EXPORT_SYMBOL_GPL vmlinux 0xc9ee3f5f kstrdup_quotable_file EXPORT_SYMBOL_GPL vmlinux 0xc9f0ba7c acpi_dev_suspend EXPORT_SYMBOL_GPL vmlinux 0xc9f67b55 rio_request_outb_dbell EXPORT_SYMBOL_GPL vmlinux 0xc9f76129 bd_link_disk_holder +EXPORT_SYMBOL_GPL vmlinux 0xc9f9898a spi_add_device EXPORT_SYMBOL_GPL vmlinux 0xca0212ba fscrypt_get_symlink EXPORT_SYMBOL_GPL vmlinux 0xca321cfe acpi_get_pci_dev -EXPORT_SYMBOL_GPL vmlinux 0xca44eb16 ip6_dst_lookup_tunnel EXPORT_SYMBOL_GPL vmlinux 0xca467318 hibernation_set_ops EXPORT_SYMBOL_GPL vmlinux 0xca496b03 devm_pm_opp_attach_genpd +EXPORT_SYMBOL_GPL vmlinux 0xca4ad23f spi_mem_get_name EXPORT_SYMBOL_GPL vmlinux 0xca6aae84 ata_scsi_queuecmd EXPORT_SYMBOL_GPL vmlinux 0xca7a060b acpi_dev_add_driver_gpios EXPORT_SYMBOL_GPL vmlinux 0xca7aa896 transport_class_register EXPORT_SYMBOL_GPL vmlinux 0xca7d8764 kthread_freezable_should_stop +EXPORT_SYMBOL_GPL vmlinux 0xca956646 __SCK__tp_func_kfree_skb EXPORT_SYMBOL_GPL vmlinux 0xca9a1d5e ring_buffer_free -EXPORT_SYMBOL_GPL vmlinux 0xca9ccfd7 udp_sock_create6 EXPORT_SYMBOL_GPL vmlinux 0xca9cfb95 mnt_want_write EXPORT_SYMBOL_GPL vmlinux 0xcaa68533 cpu_has_xfeatures -EXPORT_SYMBOL_GPL vmlinux 0xcaac17df __raw_v4_lookup EXPORT_SYMBOL_GPL vmlinux 0xcab7b089 dev_pm_qos_update_user_latency_tolerance EXPORT_SYMBOL_GPL vmlinux 0xcabe04de cpuidle_resume_and_unlock +EXPORT_SYMBOL_GPL vmlinux 0xcacf45c8 bpf_prog_put EXPORT_SYMBOL_GPL vmlinux 0xcad8aa38 tty_release_struct EXPORT_SYMBOL_GPL vmlinux 0xcadc23ca devm_memremap_pages EXPORT_SYMBOL_GPL vmlinux 0xcaddef53 gpiochip_find EXPORT_SYMBOL_GPL vmlinux 0xcade2d80 blk_mq_quiesce_queue EXPORT_SYMBOL_GPL vmlinux 0xcae3e99c vfio_iommu_group_put EXPORT_SYMBOL_GPL vmlinux 0xcaea29b0 register_ftrace_function -EXPORT_SYMBOL_GPL vmlinux 0xcaea750c __traceiter_br_fdb_external_learn_add +EXPORT_SYMBOL_GPL vmlinux 0xcaf10270 l3mdev_fib_table_rcu EXPORT_SYMBOL_GPL vmlinux 0xcaf32dfa ata_sff_prereset EXPORT_SYMBOL_GPL vmlinux 0xcb174c41 cpci_hp_unregister_controller EXPORT_SYMBOL_GPL vmlinux 0xcb19bd43 pci_epc_raise_irq EXPORT_SYMBOL_GPL vmlinux 0xcb1d17d3 pci_find_ext_capability EXPORT_SYMBOL_GPL vmlinux 0xcb2a50d2 regmap_field_alloc EXPORT_SYMBOL_GPL vmlinux 0xcb2bfe2b nvmem_register_notifier -EXPORT_SYMBOL_GPL vmlinux 0xcb3e8243 devlink_flash_update_status_notify EXPORT_SYMBOL_GPL vmlinux 0xcb4cfa25 ata_scsi_unlock_native_capacity +EXPORT_SYMBOL_GPL vmlinux 0xcb51bc42 spi_mem_driver_register_with_owner EXPORT_SYMBOL_GPL vmlinux 0xcb561441 mem_dump_obj +EXPORT_SYMBOL_GPL vmlinux 0xcb61cacc __traceiter_neigh_update +EXPORT_SYMBOL_GPL vmlinux 0xcb6b7cfb do_tcp_sendpages EXPORT_SYMBOL_GPL vmlinux 0xcb71d00a phy_resolve_aneg_linkmode EXPORT_SYMBOL_GPL vmlinux 0xcb78058f pinctrl_dev_get_devname EXPORT_SYMBOL_GPL vmlinux 0xcb7d1a71 ata_sff_pause @@ -17833,29 +17842,27 @@ EXPORT_SYMBOL_GPL vmlinux 0xcb970751 stop_machine EXPORT_SYMBOL_GPL vmlinux 0xcbb1c581 od_register_powersave_bias_handler EXPORT_SYMBOL_GPL vmlinux 0xcbb46ca0 misc_cg_set_capacity -EXPORT_SYMBOL_GPL vmlinux 0xcbc0d210 bpf_trace_run6 +EXPORT_SYMBOL_GPL vmlinux 0xcbd2f399 unix_outq_len +EXPORT_SYMBOL_GPL vmlinux 0xcbde5ba5 skcipher_alloc_instance_simple EXPORT_SYMBOL_GPL vmlinux 0xcbe56bc2 zs_get_total_pages -EXPORT_SYMBOL_GPL vmlinux 0xcbed099e skb_zerocopy_iter_dgram -EXPORT_SYMBOL_GPL vmlinux 0xcc12c9ad dst_cache_get +EXPORT_SYMBOL_GPL vmlinux 0xcc1543c6 sch_frag_xmit_hook EXPORT_SYMBOL_GPL vmlinux 0xcc1aee0d ata_pci_shutdown_one EXPORT_SYMBOL_GPL vmlinux 0xcc2268a1 iommu_aux_get_pasid -EXPORT_SYMBOL_GPL vmlinux 0xcc2c905f dev_err_probe EXPORT_SYMBOL_GPL vmlinux 0xcc2dbfd8 irq_domain_check_msi_remap EXPORT_SYMBOL_GPL vmlinux 0xcc312197 clk_mux_ops EXPORT_SYMBOL_GPL vmlinux 0xcc39c03e nvmem_unregister +EXPORT_SYMBOL_GPL vmlinux 0xcc4f0e11 spi_register_controller EXPORT_SYMBOL_GPL vmlinux 0xcc537585 pinctrl_find_and_add_gpio_range -EXPORT_SYMBOL_GPL vmlinux 0xcc5c5d1a devlink_dpipe_table_resource_set EXPORT_SYMBOL_GPL vmlinux 0xcc6daa75 pci_user_write_config_dword EXPORT_SYMBOL_GPL vmlinux 0xcc7bd686 scsi_flush_work -EXPORT_SYMBOL_GPL vmlinux 0xcc8a706e __tracepoint_pelt_rt_tp EXPORT_SYMBOL_GPL vmlinux 0xcc9268fc hwpoison_filter_enable EXPORT_SYMBOL_GPL vmlinux 0xcc92cf8a wakeup_source_register EXPORT_SYMBOL_GPL vmlinux 0xcc935375 walk_iomem_res_desc EXPORT_SYMBOL_GPL vmlinux 0xcca30475 regmap_parse_val +EXPORT_SYMBOL_GPL vmlinux 0xcca9982a skb_mpls_dec_ttl EXPORT_SYMBOL_GPL vmlinux 0xccb764fd user_destroy EXPORT_SYMBOL_GPL vmlinux 0xccb783b3 gov_update_cpu_data EXPORT_SYMBOL_GPL vmlinux 0xccbd142e unregister_acpi_bus_type -EXPORT_SYMBOL_GPL vmlinux 0xccc4b8e0 ethnl_cable_test_step EXPORT_SYMBOL_GPL vmlinux 0xcccfb2fa sata_deb_timing_hotplug EXPORT_SYMBOL_GPL vmlinux 0xccd86806 ata_id_string EXPORT_SYMBOL_GPL vmlinux 0xccea4e34 perf_get_x86_pmu_capability @@ -17863,20 +17870,23 @@ EXPORT_SYMBOL_GPL vmlinux 0xccf52bc9 sfp_upstream_start EXPORT_SYMBOL_GPL vmlinux 0xccf5c01b dev_pm_opp_put_supported_hw EXPORT_SYMBOL_GPL vmlinux 0xccfcbf73 iommu_unregister_device_fault_handler -EXPORT_SYMBOL_GPL vmlinux 0xccfd7aa3 validate_xmit_xfrm EXPORT_SYMBOL_GPL vmlinux 0xcd0149ff icc_disable +EXPORT_SYMBOL_GPL vmlinux 0xcd07c179 fib4_rule_default +EXPORT_SYMBOL_GPL vmlinux 0xcd0f7344 rcuwait_wake_up +EXPORT_SYMBOL_GPL vmlinux 0xcd233936 ethnl_cable_test_pulse EXPORT_SYMBOL_GPL vmlinux 0xcd24e146 hash_digest_size +EXPORT_SYMBOL_GPL vmlinux 0xcd2d475e udp4_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xcd3a5daf ncsi_vlan_rx_add_vid EXPORT_SYMBOL_GPL vmlinux 0xcd3b35c2 blk_queue_write_cache EXPORT_SYMBOL_GPL vmlinux 0xcd3e5c7c acpi_release_memory EXPORT_SYMBOL_GPL vmlinux 0xcd42718e linear_hugepage_index EXPORT_SYMBOL_GPL vmlinux 0xcd5ca85f tps65912_device_init EXPORT_SYMBOL_GPL vmlinux 0xcd6891f2 add_to_page_cache_lru -EXPORT_SYMBOL_GPL vmlinux 0xcd6d6ecc xdp_return_frame EXPORT_SYMBOL_GPL vmlinux 0xcd6f2dc9 nf_log_buf_add EXPORT_SYMBOL_GPL vmlinux 0xcd70f31d kthread_cancel_delayed_work_sync EXPORT_SYMBOL_GPL vmlinux 0xcd7572b0 clk_register_fixed_factor +EXPORT_SYMBOL_GPL vmlinux 0xcd76e7e9 sk_msg_memcopy_from_iter EXPORT_SYMBOL_GPL vmlinux 0xcd792850 gpiod_get_raw_value -EXPORT_SYMBOL_GPL vmlinux 0xcd7b0f6b ip6_datagram_release_cb EXPORT_SYMBOL_GPL vmlinux 0xcd7b86f2 irq_chip_set_wake_parent EXPORT_SYMBOL_GPL vmlinux 0xcd81a945 switch_fpu_return EXPORT_SYMBOL_GPL vmlinux 0xcd830419 phy_power_off @@ -17887,7 +17897,9 @@ EXPORT_SYMBOL_GPL vmlinux 0xcd9cd2ff wakeme_after_rcu EXPORT_SYMBOL_GPL vmlinux 0xcd9db523 page_mkclean EXPORT_SYMBOL_GPL vmlinux 0xcda7bd61 posix_clock_register +EXPORT_SYMBOL_GPL vmlinux 0xcdaf00f8 xfrm_state_afinfo_get_rcu EXPORT_SYMBOL_GPL vmlinux 0xcdb6adcc ras_userspace_consumers +EXPORT_SYMBOL_GPL vmlinux 0xcdbb401f phy_package_leave EXPORT_SYMBOL_GPL vmlinux 0xcdc8d262 dma_async_device_channel_register EXPORT_SYMBOL_GPL vmlinux 0xcdca3691 nr_irqs EXPORT_SYMBOL_GPL vmlinux 0xcdd061fd bus_remove_file @@ -17898,59 +17910,58 @@ EXPORT_SYMBOL_GPL vmlinux 0xcdff3945 tpm_send EXPORT_SYMBOL_GPL vmlinux 0xce2c6d01 gpiod_set_raw_value EXPORT_SYMBOL_GPL vmlinux 0xce3251b3 dev_pm_opp_set_supported_hw +EXPORT_SYMBOL_GPL vmlinux 0xce55e746 crypto_register_skciphers +EXPORT_SYMBOL_GPL vmlinux 0xce5f648c device_create_with_groups EXPORT_SYMBOL_GPL vmlinux 0xce69974a pci_platform_power_transition EXPORT_SYMBOL_GPL vmlinux 0xce6db656 rcu_is_watching EXPORT_SYMBOL_GPL vmlinux 0xce6ecda9 rio_request_inb_dbell -EXPORT_SYMBOL_GPL vmlinux 0xce76e5b7 inet6_compat_ioctl +EXPORT_SYMBOL_GPL vmlinux 0xce87166a xfrm_register_translator +EXPORT_SYMBOL_GPL vmlinux 0xce9202a4 nvme_stop_queues EXPORT_SYMBOL_GPL vmlinux 0xcea1ef63 power_supply_class -EXPORT_SYMBOL_GPL vmlinux 0xcea496c8 nfs42_ssc_unregister EXPORT_SYMBOL_GPL vmlinux 0xceaaf242 wwan_port_rx EXPORT_SYMBOL_GPL vmlinux 0xceb1f126 mpi_read_raw_data EXPORT_SYMBOL_GPL vmlinux 0xceb66bec sched_clock_cpu EXPORT_SYMBOL_GPL vmlinux 0xceb74e2b mm_kobj EXPORT_SYMBOL_GPL vmlinux 0xcec4b545 led_blink_set_oneshot -EXPORT_SYMBOL_GPL vmlinux 0xced85cd0 bpf_prog_add EXPORT_SYMBOL_GPL vmlinux 0xcee1641c kgdb_unregister_nmi_console EXPORT_SYMBOL_GPL vmlinux 0xcee7f4c9 subsys_find_device_by_id EXPORT_SYMBOL_GPL vmlinux 0xceed8318 ibft_addr EXPORT_SYMBOL_GPL vmlinux 0xcefeee5b regulator_suspend_disable EXPORT_SYMBOL_GPL vmlinux 0xcf02ab71 __SCT__tp_func_block_rq_remap EXPORT_SYMBOL_GPL vmlinux 0xcf0a9318 acpi_is_pnp_device +EXPORT_SYMBOL_GPL vmlinux 0xcf1466e3 crypto_stats_kpp_compute_shared_secret EXPORT_SYMBOL_GPL vmlinux 0xcf30283f kgdb_unregister_io_module -EXPORT_SYMBOL_GPL vmlinux 0xcf3ec111 sk_clone_lock +EXPORT_SYMBOL_GPL vmlinux 0xcf3d99db __SCK__tp_func_sched_cpu_capacity_tp EXPORT_SYMBOL_GPL vmlinux 0xcf4cfb31 rio_pw_enable +EXPORT_SYMBOL_GPL vmlinux 0xcf876b0e fwnode_graph_get_remote_port EXPORT_SYMBOL_GPL vmlinux 0xcf9a4f18 mctrl_gpio_init_noauto -EXPORT_SYMBOL_GPL vmlinux 0xcfa2ab6a ncsi_stop_dev -EXPORT_SYMBOL_GPL vmlinux 0xcfaa0a69 rtnl_put_cacheinfo +EXPORT_SYMBOL_GPL vmlinux 0xcfa12e67 bpf_trace_run7 +EXPORT_SYMBOL_GPL vmlinux 0xcfa1b37d __SCK__tp_func_neigh_event_send_dead +EXPORT_SYMBOL_GPL vmlinux 0xcfbed11a ethtool_set_ethtool_phy_ops EXPORT_SYMBOL_GPL vmlinux 0xcfc15f4b rht_bucket_nested_insert +EXPORT_SYMBOL_GPL vmlinux 0xcfc44ac2 devlink_traps_register EXPORT_SYMBOL_GPL vmlinux 0xcfc5108a devlink_fmsg_u8_pair_put EXPORT_SYMBOL_GPL vmlinux 0xcfc7b4e4 rcu_barrier_tasks_trace EXPORT_SYMBOL_GPL vmlinux 0xcfd30d71 acpi_os_map_memory -EXPORT_SYMBOL_GPL vmlinux 0xcfd487fe pktgen_xfrm_outer_mode_output -EXPORT_SYMBOL_GPL vmlinux 0xcfeccec6 __tracepoint_sched_update_nr_running_tp EXPORT_SYMBOL_GPL vmlinux 0xcfed2861 ata_platform_remove_one EXPORT_SYMBOL_GPL vmlinux 0xd0177a65 acrn_setup_intr_handler -EXPORT_SYMBOL_GPL vmlinux 0xd03a6cb8 skb_gso_validate_mac_len EXPORT_SYMBOL_GPL vmlinux 0xd03eaf4c schedule_hrtimeout_range +EXPORT_SYMBOL_GPL vmlinux 0xd0622f41 l3mdev_ifindex_lookup_by_table_id EXPORT_SYMBOL_GPL vmlinux 0xd06524ba raw_notifier_chain_unregister EXPORT_SYMBOL_GPL vmlinux 0xd067d3c5 system_freezable_power_efficient_wq -EXPORT_SYMBOL_GPL vmlinux 0xd0691a5c __SCK__tp_func_devlink_hwerr -EXPORT_SYMBOL_GPL vmlinux 0xd06ab663 spi_get_next_queued_message EXPORT_SYMBOL_GPL vmlinux 0xd08cb47f irq_domain_set_hwirq_and_chip EXPORT_SYMBOL_GPL vmlinux 0xd09911a6 acpi_dev_get_irq_type -EXPORT_SYMBOL_GPL vmlinux 0xd09f2b3b devlink_dpipe_action_put EXPORT_SYMBOL_GPL vmlinux 0xd0a710c5 vring_new_virtqueue -EXPORT_SYMBOL_GPL vmlinux 0xd0ba9329 skb_splice_bits EXPORT_SYMBOL_GPL vmlinux 0xd0bfe1d8 blk_execute_rq_nowait EXPORT_SYMBOL_GPL vmlinux 0xd0c05159 emergency_restart EXPORT_SYMBOL_GPL vmlinux 0xd0cab9fd mmu_interval_notifier_insert EXPORT_SYMBOL_GPL vmlinux 0xd0d156e9 __rht_bucket_nested EXPORT_SYMBOL_GPL vmlinux 0xd0d3f0a4 gen_pool_avail EXPORT_SYMBOL_GPL vmlinux 0xd0db0f12 run_dax -EXPORT_SYMBOL_GPL vmlinux 0xd0dc9076 devlink_port_unregister EXPORT_SYMBOL_GPL vmlinux 0xd0df12ba __SCT__tp_func_powernv_throttle EXPORT_SYMBOL_GPL vmlinux 0xd0e23e97 rio_unmap_inb_region EXPORT_SYMBOL_GPL vmlinux 0xd0e6c031 ata_bmdma_port_intr +EXPORT_SYMBOL_GPL vmlinux 0xd0eb70c5 inet_hash EXPORT_SYMBOL_GPL vmlinux 0xd0ef2dbe __traceiter_block_bio_remap EXPORT_SYMBOL_GPL vmlinux 0xd0f43b7e power_supply_get_battery_info EXPORT_SYMBOL_GPL vmlinux 0xd101c548 pci_sriov_configure_simple @@ -17963,71 +17974,61 @@ EXPORT_SYMBOL_GPL vmlinux 0xd159586c net_prio_cgrp_subsys_enabled_key EXPORT_SYMBOL_GPL vmlinux 0xd15a240a bpf_redirect_info EXPORT_SYMBOL_GPL vmlinux 0xd163f9f2 __set_page_dirty +EXPORT_SYMBOL_GPL vmlinux 0xd165afa6 tcp_unregister_ulp EXPORT_SYMBOL_GPL vmlinux 0xd170134f dm_bio_from_per_bio_data EXPORT_SYMBOL_GPL vmlinux 0xd17c5ae2 pinctrl_dev_get_drvdata EXPORT_SYMBOL_GPL vmlinux 0xd17d2a22 phy_basic_features EXPORT_SYMBOL_GPL vmlinux 0xd180aca2 regmap_update_bits_base EXPORT_SYMBOL_GPL vmlinux 0xd187bfbe device_release_driver EXPORT_SYMBOL_GPL vmlinux 0xd18ad3e3 acpi_pci_find_root +EXPORT_SYMBOL_GPL vmlinux 0xd18c794b devlink_dpipe_headers_register EXPORT_SYMBOL_GPL vmlinux 0xd198c0a1 usb_ifnum_to_if -EXPORT_SYMBOL_GPL vmlinux 0xd1c4acbe devlink_port_attrs_pci_pf_set +EXPORT_SYMBOL_GPL vmlinux 0xd1a2b00d ip_tunnel_init EXPORT_SYMBOL_GPL vmlinux 0xd1cac7bf unregister_ftrace_direct EXPORT_SYMBOL_GPL vmlinux 0xd1cbc23c add_timer_on EXPORT_SYMBOL_GPL vmlinux 0xd1d8cdce devm_of_phy_get EXPORT_SYMBOL_GPL vmlinux 0xd1e7cd25 usb_root_hub_lost_power EXPORT_SYMBOL_GPL vmlinux 0xd1e9b2ad __SCT__tp_func_rpm_resume -EXPORT_SYMBOL_GPL vmlinux 0xd1ebfb39 mptcp_get_reset_option EXPORT_SYMBOL_GPL vmlinux 0xd1f2eee2 nf_logger_find_get EXPORT_SYMBOL_GPL vmlinux 0xd2066270 regcache_mark_dirty EXPORT_SYMBOL_GPL vmlinux 0xd20c66ab __SCT__tp_func_sched_util_est_se_tp EXPORT_SYMBOL_GPL vmlinux 0xd217e9e6 trace_set_clr_event EXPORT_SYMBOL_GPL vmlinux 0xd21b61bd async_schedule_node_domain +EXPORT_SYMBOL_GPL vmlinux 0xd2257081 device_move EXPORT_SYMBOL_GPL vmlinux 0xd2348307 devres_open_group -EXPORT_SYMBOL_GPL vmlinux 0xd2363b64 device_dma_supported -EXPORT_SYMBOL_GPL vmlinux 0xd24caa5f netlink_strict_get_check EXPORT_SYMBOL_GPL vmlinux 0xd24d4933 icc_node_del EXPORT_SYMBOL_GPL vmlinux 0xd24e9e8c klist_init +EXPORT_SYMBOL_GPL vmlinux 0xd256634d sk_msg_clone EXPORT_SYMBOL_GPL vmlinux 0xd260af0d ring_buffer_write EXPORT_SYMBOL_GPL vmlinux 0xd27386d7 blk_ksm_register EXPORT_SYMBOL_GPL vmlinux 0xd273b1b1 __round_jiffies_up_relative EXPORT_SYMBOL_GPL vmlinux 0xd27a6eaf nd_cmd_out_size -EXPORT_SYMBOL_GPL vmlinux 0xd2907f88 bpf_trace_run1 EXPORT_SYMBOL_GPL vmlinux 0xd29f8e6f vmbus_set_chn_rescind_callback -EXPORT_SYMBOL_GPL vmlinux 0xd2a7541f device_property_read_string EXPORT_SYMBOL_GPL vmlinux 0xd2b10a05 ata_timing_find_mode EXPORT_SYMBOL_GPL vmlinux 0xd2b97978 usb_amd_pt_check_port EXPORT_SYMBOL_GPL vmlinux 0xd2ba7759 usb_disable_ltm EXPORT_SYMBOL_GPL vmlinux 0xd2bd362f vmbus_sendpacket_mpb_desc EXPORT_SYMBOL_GPL vmlinux 0xd2c39c49 pinctrl_find_gpio_range_from_pin_nolock +EXPORT_SYMBOL_GPL vmlinux 0xd2c42236 skb_mpls_pop EXPORT_SYMBOL_GPL vmlinux 0xd2ce9863 dma_alloc_pages -EXPORT_SYMBOL_GPL vmlinux 0xd2d23e7f inet6_lookup_listener -EXPORT_SYMBOL_GPL vmlinux 0xd2d5d255 __traceiter_sched_util_est_cfs_tp EXPORT_SYMBOL_GPL vmlinux 0xd2e04e77 tpm_pcr_read -EXPORT_SYMBOL_GPL vmlinux 0xd2e7b8cc xfrm_audit_state_delete EXPORT_SYMBOL_GPL vmlinux 0xd3037f1b __get_task_comm EXPORT_SYMBOL_GPL vmlinux 0xd305e9cd ata_pci_sff_prepare_host EXPORT_SYMBOL_GPL vmlinux 0xd306ebb5 pci_user_write_config_byte EXPORT_SYMBOL_GPL vmlinux 0xd31a2ac5 ring_buffer_oldest_event_ts -EXPORT_SYMBOL_GPL vmlinux 0xd31db7fe call_switchdev_notifiers +EXPORT_SYMBOL_GPL vmlinux 0xd31afaef iptunnel_xmit EXPORT_SYMBOL_GPL vmlinux 0xd320ebaf pci_epc_get_first_free_bar EXPORT_SYMBOL_GPL vmlinux 0xd323a8ac tty_port_default_client_ops -EXPORT_SYMBOL_GPL vmlinux 0xd3270648 sk_psock_msg_verdict EXPORT_SYMBOL_GPL vmlinux 0xd32c6253 dev_pm_opp_put_opp_table -EXPORT_SYMBOL_GPL vmlinux 0xd32e9c61 spi_take_timestamp_pre -EXPORT_SYMBOL_GPL vmlinux 0xd336790d ip_tunnel_delete_nets -EXPORT_SYMBOL_GPL vmlinux 0xd342ff48 inet6_csk_update_pmtu EXPORT_SYMBOL_GPL vmlinux 0xd36760ef __usb_get_extra_descriptor -EXPORT_SYMBOL_GPL vmlinux 0xd36e3c9b skb_scrub_packet EXPORT_SYMBOL_GPL vmlinux 0xd3752c27 atomic_notifier_call_chain EXPORT_SYMBOL_GPL vmlinux 0xd389f6a7 blkcg_policy_unregister -EXPORT_SYMBOL_GPL vmlinux 0xd38a8e29 iptunnel_handle_offloads EXPORT_SYMBOL_GPL vmlinux 0xd38b4851 pinctrl_pm_select_default_state EXPORT_SYMBOL_GPL vmlinux 0xd38debfd serial8250_set_defaults EXPORT_SYMBOL_GPL vmlinux 0xd3925e36 pinctrl_add_gpio_ranges EXPORT_SYMBOL_GPL vmlinux 0xd39c26cc blk_mq_quiesce_queue_nowait EXPORT_SYMBOL_GPL vmlinux 0xd39e9848 put_itimerspec64 EXPORT_SYMBOL_GPL vmlinux 0xd3ad09f3 devm_regmap_add_irq_chip_fwnode -EXPORT_SYMBOL_GPL vmlinux 0xd3bb5268 devlink_trap_groups_unregister EXPORT_SYMBOL_GPL vmlinux 0xd3bbeb58 devres_destroy EXPORT_SYMBOL_GPL vmlinux 0xd3bfa753 usb_bus_idr_lock EXPORT_SYMBOL_GPL vmlinux 0xd3c7c8e0 dmaengine_unmap_put @@ -18038,10 +18039,12 @@ EXPORT_SYMBOL_GPL vmlinux 0xd403c2be led_trigger_unregister EXPORT_SYMBOL_GPL vmlinux 0xd41aec08 ata_qc_complete EXPORT_SYMBOL_GPL vmlinux 0xd41bee02 md_stop +EXPORT_SYMBOL_GPL vmlinux 0xd41d5ee5 devlink_port_param_driverinit_value_set EXPORT_SYMBOL_GPL vmlinux 0xd426dbc4 erst_get_record_count EXPORT_SYMBOL_GPL vmlinux 0xd42f1d4e show_rcu_tasks_rude_gp_kthread EXPORT_SYMBOL_GPL vmlinux 0xd4396a29 fscrypt_mergeable_bio_bh EXPORT_SYMBOL_GPL vmlinux 0xd43a39a6 __tracepoint_rpm_return_int +EXPORT_SYMBOL_GPL vmlinux 0xd43f6acd tcp_set_state EXPORT_SYMBOL_GPL vmlinux 0xd4404350 __SCT__tp_func_block_split EXPORT_SYMBOL_GPL vmlinux 0xd4445a95 regulator_map_voltage_linear EXPORT_SYMBOL_GPL vmlinux 0xd445cb7d devm_namespace_disable @@ -18049,17 +18052,17 @@ EXPORT_SYMBOL_GPL vmlinux 0xd45434ee admin_timeout EXPORT_SYMBOL_GPL vmlinux 0xd45560af usb_hcd_map_urb_for_dma EXPORT_SYMBOL_GPL vmlinux 0xd457c71e of_devfreq_cooling_register_power -EXPORT_SYMBOL_GPL vmlinux 0xd45fa081 xfrm_dev_state_add +EXPORT_SYMBOL_GPL vmlinux 0xd461fa8f inet_send_prepare +EXPORT_SYMBOL_GPL vmlinux 0xd46a046d devm_spi_mem_dirmap_destroy EXPORT_SYMBOL_GPL vmlinux 0xd46af5ef cppc_get_perf_ctrs +EXPORT_SYMBOL_GPL vmlinux 0xd47374da crypto_unregister_algs EXPORT_SYMBOL_GPL vmlinux 0xd49e46dd acpi_cppc_processor_probe EXPORT_SYMBOL_GPL vmlinux 0xd4b6157e devlink_health_reporter_recovery_done EXPORT_SYMBOL_GPL vmlinux 0xd4b9a616 reset_control_bulk_put EXPORT_SYMBOL_GPL vmlinux 0xd4c14632 system_unbound_wq EXPORT_SYMBOL_GPL vmlinux 0xd4c1e116 nvdimm_badblocks_populate -EXPORT_SYMBOL_GPL vmlinux 0xd4df57b2 fwnode_property_match_string EXPORT_SYMBOL_GPL vmlinux 0xd4e60669 serial8250_do_set_ldisc EXPORT_SYMBOL_GPL vmlinux 0xd4e6d7e0 linear_range_get_value -EXPORT_SYMBOL_GPL vmlinux 0xd4ee1522 proc_create_net_single_write EXPORT_SYMBOL_GPL vmlinux 0xd4f39d49 virtqueue_disable_cb EXPORT_SYMBOL_GPL vmlinux 0xd4f6ea35 gpiod_unexport EXPORT_SYMBOL_GPL vmlinux 0xd5098708 __efivar_entry_get @@ -18068,64 +18071,66 @@ EXPORT_SYMBOL_GPL vmlinux 0xd5301b2c linear_range_get_max_value EXPORT_SYMBOL_GPL vmlinux 0xd5315f9c pci_generic_config_write EXPORT_SYMBOL_GPL vmlinux 0xd53c67b3 unregister_net_sysctl_table +EXPORT_SYMBOL_GPL vmlinux 0xd53edee3 perf_event_read_value +EXPORT_SYMBOL_GPL vmlinux 0xd54e1a0e __tracepoint_kfree_skb +EXPORT_SYMBOL_GPL vmlinux 0xd5510c93 espintcp_queue_out +EXPORT_SYMBOL_GPL vmlinux 0xd55a1a55 __traceiter_br_fdb_update EXPORT_SYMBOL_GPL vmlinux 0xd55ad93b iommu_group_get_iommudata EXPORT_SYMBOL_GPL vmlinux 0xd55ed7db public_key_subtype EXPORT_SYMBOL_GPL vmlinux 0xd567d671 __traceiter_remove_device_from_group +EXPORT_SYMBOL_GPL vmlinux 0xd5725ae2 devlink_net_set EXPORT_SYMBOL_GPL vmlinux 0xd5793cdb genphy_c45_read_mdix EXPORT_SYMBOL_GPL vmlinux 0xd57fbd31 hwrng_unregister EXPORT_SYMBOL_GPL vmlinux 0xd5860dde ata_sff_postreset EXPORT_SYMBOL_GPL vmlinux 0xd58bbbcb nvme_delete_wq EXPORT_SYMBOL_GPL vmlinux 0xd5922c75 dma_free_pages -EXPORT_SYMBOL_GPL vmlinux 0xd5979a08 fwnode_graph_get_remote_port_parent EXPORT_SYMBOL_GPL vmlinux 0xd59a1587 linkmode_resolve_pause EXPORT_SYMBOL_GPL vmlinux 0xd59a8223 regmap_add_irq_chip_fwnode -EXPORT_SYMBOL_GPL vmlinux 0xd59ae6de proc_create_net_data -EXPORT_SYMBOL_GPL vmlinux 0xd5a67059 nexthop_for_each_fib6_nh -EXPORT_SYMBOL_GPL vmlinux 0xd5ae3726 bpf_prog_inc_not_zero +EXPORT_SYMBOL_GPL vmlinux 0xd5b5c335 device_store_int +EXPORT_SYMBOL_GPL vmlinux 0xd5b7ea7d ipv6_proxy_select_ident EXPORT_SYMBOL_GPL vmlinux 0xd5bfdd1b nvdimm_bus_register EXPORT_SYMBOL_GPL vmlinux 0xd5c5bbb6 crypto_unregister_aeads -EXPORT_SYMBOL_GPL vmlinux 0xd5ce44a6 ip4_datagram_release_cb EXPORT_SYMBOL_GPL vmlinux 0xd5f3bb7b set_memory_encrypted EXPORT_SYMBOL_GPL vmlinux 0xd5f74263 set_capacity_and_notify EXPORT_SYMBOL_GPL vmlinux 0xd5fb695f edac_pci_alloc_ctl_info EXPORT_SYMBOL_GPL vmlinux 0xd5fd680e __SCK__tp_func_add_device_to_group -EXPORT_SYMBOL_GPL vmlinux 0xd606032a ip_tunnel_setup EXPORT_SYMBOL_GPL vmlinux 0xd60d76ea iomap_readahead +EXPORT_SYMBOL_GPL vmlinux 0xd61a796e ipv4_redirect +EXPORT_SYMBOL_GPL vmlinux 0xd6235bf7 nvme_submit_sync_cmd +EXPORT_SYMBOL_GPL vmlinux 0xd631d0d1 ncsi_start_dev EXPORT_SYMBOL_GPL vmlinux 0xd63d32ca tpm2_flush_context EXPORT_SYMBOL_GPL vmlinux 0xd64b76ab percpu_free_rwsem EXPORT_SYMBOL_GPL vmlinux 0xd64d6ec9 dma_request_chan_by_mask EXPORT_SYMBOL_GPL vmlinux 0xd64ed259 __memcat_p -EXPORT_SYMBOL_GPL vmlinux 0xd65f073c ncsi_register_dev EXPORT_SYMBOL_GPL vmlinux 0xd66299d6 ata_qc_complete_multiple EXPORT_SYMBOL_GPL vmlinux 0xd66e35f3 phy_validate EXPORT_SYMBOL_GPL vmlinux 0xd67364f7 eventfd_ctx_fdget EXPORT_SYMBOL_GPL vmlinux 0xd681727f acpi_device_fwnode_ops -EXPORT_SYMBOL_GPL vmlinux 0xd6928aa4 devlink_is_reload_failed +EXPORT_SYMBOL_GPL vmlinux 0xd69457c0 bpf_map_put EXPORT_SYMBOL_GPL vmlinux 0xd698fabf misc_cg_uncharge EXPORT_SYMBOL_GPL vmlinux 0xd6a0cc03 debugfs_create_devm_seqfile EXPORT_SYMBOL_GPL vmlinux 0xd6ad324b relay_open EXPORT_SYMBOL_GPL vmlinux 0xd6b35818 usb_hcd_amd_remote_wakeup_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd6ba5a34 ping_init_sock EXPORT_SYMBOL_GPL vmlinux 0xd6c6b8ea gpiochip_enable_irq EXPORT_SYMBOL_GPL vmlinux 0xd6cb7610 iommu_page_response -EXPORT_SYMBOL_GPL vmlinux 0xd6ced052 mptcp_pm_get_add_addr_signal_max EXPORT_SYMBOL_GPL vmlinux 0xd6d38e51 sata_scr_valid EXPORT_SYMBOL_GPL vmlinux 0xd6d70b86 crypto_alloc_tfm_node EXPORT_SYMBOL_GPL vmlinux 0xd6f16828 regmap_noinc_write EXPORT_SYMBOL_GPL vmlinux 0xd6f8fa73 pci_msi_create_irq_domain -EXPORT_SYMBOL_GPL vmlinux 0xd6fe9926 crypto_register_skcipher EXPORT_SYMBOL_GPL vmlinux 0xd6feefa5 agp_num_entries EXPORT_SYMBOL_GPL vmlinux 0xd7028722 usb_hcd_pci_shutdown -EXPORT_SYMBOL_GPL vmlinux 0xd725fdaf xfrm_audit_state_notfound EXPORT_SYMBOL_GPL vmlinux 0xd7269c64 osc_sb_native_usb4_control EXPORT_SYMBOL_GPL vmlinux 0xd7293ffc percpu_ref_reinit EXPORT_SYMBOL_GPL vmlinux 0xd729c248 crypto_destroy_tfm +EXPORT_SYMBOL_GPL vmlinux 0xd72fb72b lwtunnel_cmp_encap EXPORT_SYMBOL_GPL vmlinux 0xd7376d4a sysfs_rename_link_ns EXPORT_SYMBOL_GPL vmlinux 0xd7399d2a efivar_entry_iter_end +EXPORT_SYMBOL_GPL vmlinux 0xd73e0dd6 inet_twsk_put EXPORT_SYMBOL_GPL vmlinux 0xd74dc678 dma_buf_attach EXPORT_SYMBOL_GPL vmlinux 0xd75b20aa rsa_parse_priv_key -EXPORT_SYMBOL_GPL vmlinux 0xd763055f __nvme_submit_sync_cmd EXPORT_SYMBOL_GPL vmlinux 0xd7658e65 virtqueue_enable_cb_delayed -EXPORT_SYMBOL_GPL vmlinux 0xd7688055 devlink_port_params_unregister +EXPORT_SYMBOL_GPL vmlinux 0xd7683700 unregister_pernet_device EXPORT_SYMBOL_GPL vmlinux 0xd768e985 regulator_has_full_constraints EXPORT_SYMBOL_GPL vmlinux 0xd76c8795 devfreq_event_remove_edev EXPORT_SYMBOL_GPL vmlinux 0xd76e5592 dma_buf_map_attachment @@ -18133,57 +18138,59 @@ EXPORT_SYMBOL_GPL vmlinux 0xd77fdb93 irq_chip_ack_parent EXPORT_SYMBOL_GPL vmlinux 0xd780e265 smp_ops EXPORT_SYMBOL_GPL vmlinux 0xd78a9532 pinctrl_select_default_state -EXPORT_SYMBOL_GPL vmlinux 0xd78ca3d9 bpf_prog_put EXPORT_SYMBOL_GPL vmlinux 0xd78e997c pinctrl_pm_select_idle_state -EXPORT_SYMBOL_GPL vmlinux 0xd79b207e devlink_unregister -EXPORT_SYMBOL_GPL vmlinux 0xd79b4e63 inet6_sk_rebuild_header EXPORT_SYMBOL_GPL vmlinux 0xd7ad17e0 ata_sff_dev_classify EXPORT_SYMBOL_GPL vmlinux 0xd7b5dfee xas_split EXPORT_SYMBOL_GPL vmlinux 0xd7bcf297 pinctrl_add_gpio_range -EXPORT_SYMBOL_GPL vmlinux 0xd7c96f91 bpf_map_inc_with_uref EXPORT_SYMBOL_GPL vmlinux 0xd7cea889 edac_mod_work +EXPORT_SYMBOL_GPL vmlinux 0xd7d48e42 devlink_trap_policers_unregister EXPORT_SYMBOL_GPL vmlinux 0xd7d7f2a7 devlink_port_health_reporter_destroy EXPORT_SYMBOL_GPL vmlinux 0xd7f0a77a acpi_subsys_restore_early EXPORT_SYMBOL_GPL vmlinux 0xd7f9d8f9 thermal_zone_bind_cooling_device EXPORT_SYMBOL_GPL vmlinux 0xd80972fd vmbus_open +EXPORT_SYMBOL_GPL vmlinux 0xd81ddb6d __SCK__tp_func_br_fdb_update +EXPORT_SYMBOL_GPL vmlinux 0xd8259115 __SCK__tp_func_sched_util_est_cfs_tp EXPORT_SYMBOL_GPL vmlinux 0xd827ab35 gpiod_toggle_active_low EXPORT_SYMBOL_GPL vmlinux 0xd82e719e regmap_raw_read EXPORT_SYMBOL_GPL vmlinux 0xd830eef8 __clk_hw_register_mux EXPORT_SYMBOL_GPL vmlinux 0xd83a7b0f device_attach EXPORT_SYMBOL_GPL vmlinux 0xd84d35bd dax_read_lock EXPORT_SYMBOL_GPL vmlinux 0xd8505382 blk_ksm_destroy -EXPORT_SYMBOL_GPL vmlinux 0xd854fd4c devlink_dpipe_entry_ctx_prepare EXPORT_SYMBOL_GPL vmlinux 0xd85b83ec kernel_kobj +EXPORT_SYMBOL_GPL vmlinux 0xd861044f fwnode_connection_find_match EXPORT_SYMBOL_GPL vmlinux 0xd87fc0a0 usb_amd_prefetch_quirk +EXPORT_SYMBOL_GPL vmlinux 0xd88e4b5f nf_checksum EXPORT_SYMBOL_GPL vmlinux 0xd8bcc32d get_cpu_device +EXPORT_SYMBOL_GPL vmlinux 0xd8c67742 clean_acked_data_disable EXPORT_SYMBOL_GPL vmlinux 0xd8d065dd hv_stimer_alloc EXPORT_SYMBOL_GPL vmlinux 0xd8d68ab1 dmi_memdev_type EXPORT_SYMBOL_GPL vmlinux 0xd8f9fd16 sata_pmp_error_handler EXPORT_SYMBOL_GPL vmlinux 0xd8fbb14d net_cls_cgrp_subsys_on_dfl_key EXPORT_SYMBOL_GPL vmlinux 0xd9136e47 __tracepoint_block_split EXPORT_SYMBOL_GPL vmlinux 0xd919806a amd_cache_northbridges -EXPORT_SYMBOL_GPL vmlinux 0xd91a0f64 strp_data_ready EXPORT_SYMBOL_GPL vmlinux 0xd91dbd1f xdp_alloc_skb_bulk EXPORT_SYMBOL_GPL vmlinux 0xd928a525 vp_modern_get_queue_size EXPORT_SYMBOL_GPL vmlinux 0xd92ef192 security_kernel_post_load_data EXPORT_SYMBOL_GPL vmlinux 0xd92f0791 leds_list_lock -EXPORT_SYMBOL_GPL vmlinux 0xd9391370 nvme_unfreeze +EXPORT_SYMBOL_GPL vmlinux 0xd936d8a6 fwnode_get_next_available_child_node EXPORT_SYMBOL_GPL vmlinux 0xd93a5cb1 efivar_variable_is_removable EXPORT_SYMBOL_GPL vmlinux 0xd93e1d48 usb_hcd_unmap_urb_for_dma -EXPORT_SYMBOL_GPL vmlinux 0xd94042ac device_match_of_node EXPORT_SYMBOL_GPL vmlinux 0xd953ec9b dev_pm_domain_attach +EXPORT_SYMBOL_GPL vmlinux 0xd95c4fa9 tcp_register_congestion_control EXPORT_SYMBOL_GPL vmlinux 0xd96564bc sdev_evt_send +EXPORT_SYMBOL_GPL vmlinux 0xd9659de6 br_ip6_fragment EXPORT_SYMBOL_GPL vmlinux 0xd96babb4 interval_tree_iter_next +EXPORT_SYMBOL_GPL vmlinux 0xd97e4b59 __tracepoint_neigh_event_send_dead EXPORT_SYMBOL_GPL vmlinux 0xd9916c3a idr_alloc_u32 +EXPORT_SYMBOL_GPL vmlinux 0xd9bb091b device_unregister EXPORT_SYMBOL_GPL vmlinux 0xd9d33153 crypto_ahash_final EXPORT_SYMBOL_GPL vmlinux 0xd9e24457 ring_buffer_peek +EXPORT_SYMBOL_GPL vmlinux 0xd9e9c0bc xfrm_audit_state_notfound EXPORT_SYMBOL_GPL vmlinux 0xd9f3da0a blockdev_superblock -EXPORT_SYMBOL_GPL vmlinux 0xd9f48873 skb_pull_rcsum EXPORT_SYMBOL_GPL vmlinux 0xd9f937a9 enable_kprobe EXPORT_SYMBOL_GPL vmlinux 0xd9ff2172 ezx_pcap_write EXPORT_SYMBOL_GPL vmlinux 0xda0947de kmsg_dump_unregister EXPORT_SYMBOL_GPL vmlinux 0xda0c0e95 ata_std_sched_eh -EXPORT_SYMBOL_GPL vmlinux 0xda13cf82 set_secondary_fwnode EXPORT_SYMBOL_GPL vmlinux 0xda14ddfa debugfs_create_atomic_t EXPORT_SYMBOL_GPL vmlinux 0xda17db93 pci_enable_pcie_error_reporting EXPORT_SYMBOL_GPL vmlinux 0xda1f78ee clear_hv_tscchange_cb @@ -18192,17 +18199,18 @@ EXPORT_SYMBOL_GPL vmlinux 0xda2a190a dw_pcie_own_conf_map_bus EXPORT_SYMBOL_GPL vmlinux 0xda320d31 sfp_module_start EXPORT_SYMBOL_GPL vmlinux 0xda372b84 pm_clk_remove +EXPORT_SYMBOL_GPL vmlinux 0xda3a8edc ipv4_sk_redirect EXPORT_SYMBOL_GPL vmlinux 0xda3b5051 cpufreq_unregister_governor +EXPORT_SYMBOL_GPL vmlinux 0xda4268c7 nf_checksum_partial EXPORT_SYMBOL_GPL vmlinux 0xda53f77f crypto_grab_ahash EXPORT_SYMBOL_GPL vmlinux 0xda768f19 __SCK__tp_func_map EXPORT_SYMBOL_GPL vmlinux 0xda7912d4 freq_qos_add_request -EXPORT_SYMBOL_GPL vmlinux 0xda7e594d nvme_uninit_ctrl -EXPORT_SYMBOL_GPL vmlinux 0xda7f3900 fib_rules_lookup EXPORT_SYMBOL_GPL vmlinux 0xda8c71f4 __auxiliary_driver_register EXPORT_SYMBOL_GPL vmlinux 0xda8e1302 software_node_find_by_name EXPORT_SYMBOL_GPL vmlinux 0xdaa06dc1 acpi_lpat_raw_to_temp EXPORT_SYMBOL_GPL vmlinux 0xdaa265c7 dev_pm_opp_find_freq_floor EXPORT_SYMBOL_GPL vmlinux 0xdaa55805 ata_pci_remove_one +EXPORT_SYMBOL_GPL vmlinux 0xdaafd05b device_store_ulong EXPORT_SYMBOL_GPL vmlinux 0xdab5a1eb interval_tree_insert EXPORT_SYMBOL_GPL vmlinux 0xdab6e8c7 iomap_migrate_page EXPORT_SYMBOL_GPL vmlinux 0xdae5913d sg_scsi_ioctl @@ -18210,61 +18218,63 @@ EXPORT_SYMBOL_GPL vmlinux 0xdaf4c372 mmu_interval_notifier_insert_locked EXPORT_SYMBOL_GPL vmlinux 0xdaf4dfb3 fb_mode_option EXPORT_SYMBOL_GPL vmlinux 0xdaf5c16e __cookie_v4_check +EXPORT_SYMBOL_GPL vmlinux 0xdafc79c7 sk_msg_zerocopy_from_iter +EXPORT_SYMBOL_GPL vmlinux 0xdb150e64 xdp_rxq_info_unused EXPORT_SYMBOL_GPL vmlinux 0xdb226582 securityfs_create_symlink EXPORT_SYMBOL_GPL vmlinux 0xdb241149 ata_bmdma_port_ops EXPORT_SYMBOL_GPL vmlinux 0xdb2596ad fuse_free_conn EXPORT_SYMBOL_GPL vmlinux 0xdb2930de pci_create_root_bus +EXPORT_SYMBOL_GPL vmlinux 0xdb36623d __fl6_sock_lookup EXPORT_SYMBOL_GPL vmlinux 0xdb446a73 fwnode_remove_software_node EXPORT_SYMBOL_GPL vmlinux 0xdb504151 devres_find EXPORT_SYMBOL_GPL vmlinux 0xdb52b9fc pinctrl_force_default +EXPORT_SYMBOL_GPL vmlinux 0xdb5522bc devlink_resource_occ_get_unregister EXPORT_SYMBOL_GPL vmlinux 0xdb5c91cf pm_runtime_set_autosuspend_delay EXPORT_SYMBOL_GPL vmlinux 0xdb62dc67 __SCT__tp_func_map EXPORT_SYMBOL_GPL vmlinux 0xdb63a944 acpi_lpat_get_conversion_table -EXPORT_SYMBOL_GPL vmlinux 0xdb6a0147 net_ns_type_operations EXPORT_SYMBOL_GPL vmlinux 0xdb6f68f2 dev_pm_opp_set_rate -EXPORT_SYMBOL_GPL vmlinux 0xdb80e0aa sk_msg_free_nocharge EXPORT_SYMBOL_GPL vmlinux 0xdb82f71f sbitmap_init_node EXPORT_SYMBOL_GPL vmlinux 0xdb8a1b3f usermodehelper_read_trylock EXPORT_SYMBOL_GPL vmlinux 0xdb915c05 rtc_set_time +EXPORT_SYMBOL_GPL vmlinux 0xdb95f56e udp_cmsg_send +EXPORT_SYMBOL_GPL vmlinux 0xdb96fabc skb_scrub_packet EXPORT_SYMBOL_GPL vmlinux 0xdba0e344 machine_check_poll EXPORT_SYMBOL_GPL vmlinux 0xdbabcd75 crypto_aes_set_key EXPORT_SYMBOL_GPL vmlinux 0xdbb1a8ba cpu_subsys EXPORT_SYMBOL_GPL vmlinux 0xdbb3a299 __fsnotify_parent -EXPORT_SYMBOL_GPL vmlinux 0xdbbf11c5 nvme_complete_rq +EXPORT_SYMBOL_GPL vmlinux 0xdbbd286e devlink_is_reload_failed EXPORT_SYMBOL_GPL vmlinux 0xdbd07571 regulator_set_soft_start_regmap -EXPORT_SYMBOL_GPL vmlinux 0xdbd22b36 nvme_setup_cmd EXPORT_SYMBOL_GPL vmlinux 0xdbdb0e8b request_any_context_irq EXPORT_SYMBOL_GPL vmlinux 0xdbdb55d4 pci_get_dsn EXPORT_SYMBOL_GPL vmlinux 0xdbe92154 devm_init_badblocks EXPORT_SYMBOL_GPL vmlinux 0xdbeb2e17 dev_pm_qos_update_request EXPORT_SYMBOL_GPL vmlinux 0xdbf0c8f8 dev_pm_opp_get_opp_count -EXPORT_SYMBOL_GPL vmlinux 0xdbf7087f cgrp_dfl_root EXPORT_SYMBOL_GPL vmlinux 0xdbf7cb70 mpi_get_nbits EXPORT_SYMBOL_GPL vmlinux 0xdc02eb39 dmi_available +EXPORT_SYMBOL_GPL vmlinux 0xdc061da2 skcipher_walk_complete +EXPORT_SYMBOL_GPL vmlinux 0xdc0646e8 __inet_twsk_schedule EXPORT_SYMBOL_GPL vmlinux 0xdc06c939 regulator_set_voltage_rdev EXPORT_SYMBOL_GPL vmlinux 0xdc09d878 crypto_shash_final EXPORT_SYMBOL_GPL vmlinux 0xdc15b149 gpiod_set_array_value_cansleep -EXPORT_SYMBOL_GPL vmlinux 0xdc16a0c5 ping_unhash +EXPORT_SYMBOL_GPL vmlinux 0xdc238a27 sched_trace_cfs_rq_path EXPORT_SYMBOL_GPL vmlinux 0xdc2b71eb irq_domain_free_irqs_common EXPORT_SYMBOL_GPL vmlinux 0xdc45a5db edac_stop_work EXPORT_SYMBOL_GPL vmlinux 0xdc4fa513 ata_bmdma_qc_issue -EXPORT_SYMBOL_GPL vmlinux 0xdc5182f8 crypto_register_alg EXPORT_SYMBOL_GPL vmlinux 0xdc547178 crypto_mod_get EXPORT_SYMBOL_GPL vmlinux 0xdc575353 ata_timing_compute EXPORT_SYMBOL_GPL vmlinux 0xdc5ed741 synth_event_trace_array EXPORT_SYMBOL_GPL vmlinux 0xdc6596fa irq_set_parent EXPORT_SYMBOL_GPL vmlinux 0xdc6699cb acpi_dev_free_resource_list +EXPORT_SYMBOL_GPL vmlinux 0xdc6aae1a devm_device_add_group EXPORT_SYMBOL_GPL vmlinux 0xdc7df67f apei_exec_ctx_init EXPORT_SYMBOL_GPL vmlinux 0xdc825d6c usb_amd_quirk_pll_disable EXPORT_SYMBOL_GPL vmlinux 0xdc836a19 devm_acpi_dma_controller_free EXPORT_SYMBOL_GPL vmlinux 0xdc841b74 misc_cgrp_subsys_enabled_key -EXPORT_SYMBOL_GPL vmlinux 0xdc909f19 fwnode_graph_get_remote_endpoint -EXPORT_SYMBOL_GPL vmlinux 0xdc9258e6 __tracepoint_devlink_hwerr EXPORT_SYMBOL_GPL vmlinux 0xdc97af2e syscore_suspend EXPORT_SYMBOL_GPL vmlinux 0xdc9fa232 raw_notifier_chain_register -EXPORT_SYMBOL_GPL vmlinux 0xdca6248d sched_set_normal EXPORT_SYMBOL_GPL vmlinux 0xdcb4bd91 public_key_verify_signature EXPORT_SYMBOL_GPL vmlinux 0xdcbc3a4a __phy_modify_mmd +EXPORT_SYMBOL_GPL vmlinux 0xdcc94f71 bpf_prog_create_from_user EXPORT_SYMBOL_GPL vmlinux 0xdcc952b0 __devm_clk_hw_register_mux EXPORT_SYMBOL_GPL vmlinux 0xdccd51b5 genphy_c45_an_disable_aneg EXPORT_SYMBOL_GPL vmlinux 0xdce45896 blk_queue_zone_write_granularity @@ -18272,39 +18282,42 @@ EXPORT_SYMBOL_GPL vmlinux 0xdd0762df set_worker_desc EXPORT_SYMBOL_GPL vmlinux 0xdd084d7c devm_gpiod_get_index_optional EXPORT_SYMBOL_GPL vmlinux 0xdd0da668 kernel_read_file +EXPORT_SYMBOL_GPL vmlinux 0xdd158055 __tracepoint_fib6_table_lookup EXPORT_SYMBOL_GPL vmlinux 0xdd2213ac debugfs_create_blob -EXPORT_SYMBOL_GPL vmlinux 0xdd27aeac sock_diag_unregister_inet_compat EXPORT_SYMBOL_GPL vmlinux 0xdd391eff profile_event_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdd3ff1ac fwnode_property_read_u8_array EXPORT_SYMBOL_GPL vmlinux 0xdd467887 pm_generic_suspend EXPORT_SYMBOL_GPL vmlinux 0xdd46ca40 anon_inode_getfd_secure EXPORT_SYMBOL_GPL vmlinux 0xdd626ee3 fuse_len_args EXPORT_SYMBOL_GPL vmlinux 0xdd6ddcec __traceiter_error_report_end -EXPORT_SYMBOL_GPL vmlinux 0xdd71b8b0 ncsi_unregister_dev EXPORT_SYMBOL_GPL vmlinux 0xdd853582 uart_console_device EXPORT_SYMBOL_GPL vmlinux 0xdd9344a7 acpi_subsys_suspend_noirq +EXPORT_SYMBOL_GPL vmlinux 0xdd9c4e18 spi_setup +EXPORT_SYMBOL_GPL vmlinux 0xdd9cf8e3 skb_zerocopy_headlen EXPORT_SYMBOL_GPL vmlinux 0xddbeeecc pci_lock_rescan_remove +EXPORT_SYMBOL_GPL vmlinux 0xddcf8a35 register_pernet_subsys EXPORT_SYMBOL_GPL vmlinux 0xddd184aa regmap_field_update_bits_base EXPORT_SYMBOL_GPL vmlinux 0xddd60988 get_dev_pagemap EXPORT_SYMBOL_GPL vmlinux 0xddd60f0f pciserial_init_ports -EXPORT_SYMBOL_GPL vmlinux 0xddda4a63 __traceiter_sched_util_est_se_tp EXPORT_SYMBOL_GPL vmlinux 0xdde920a3 gpiochip_request_own_desc EXPORT_SYMBOL_GPL vmlinux 0xddfb6939 generic_device_group EXPORT_SYMBOL_GPL vmlinux 0xde043b99 __alloc_pages_bulk EXPORT_SYMBOL_GPL vmlinux 0xde09a94d xas_find -EXPORT_SYMBOL_GPL vmlinux 0xde0bfb35 __traceiter_neigh_timer_handler EXPORT_SYMBOL_GPL vmlinux 0xde2729df pm_clk_create EXPORT_SYMBOL_GPL vmlinux 0xde3a115a crypto_unregister_acomps EXPORT_SYMBOL_GPL vmlinux 0xde541b2b regmap_get_val_endian EXPORT_SYMBOL_GPL vmlinux 0xde69572e usb_get_from_anchor EXPORT_SYMBOL_GPL vmlinux 0xde6f1851 TSS_checkhmac1 EXPORT_SYMBOL_GPL vmlinux 0xde78f12a tty_mode_ioctl -EXPORT_SYMBOL_GPL vmlinux 0xde7927e8 nf_queue_entry_get_refs EXPORT_SYMBOL_GPL vmlinux 0xde8845d1 ata_dummy_port_ops EXPORT_SYMBOL_GPL vmlinux 0xde97fec2 irq_domain_associate_many EXPORT_SYMBOL_GPL vmlinux 0xdea6dae1 usb_hcd_poll_rh_status +EXPORT_SYMBOL_GPL vmlinux 0xdead7342 sched_trace_cfs_rq_cpu EXPORT_SYMBOL_GPL vmlinux 0xdeba13c5 devm_hwrng_unregister EXPORT_SYMBOL_GPL vmlinux 0xdebd01e4 wbt_disable_default EXPORT_SYMBOL_GPL vmlinux 0xdebfa2d6 ata_pci_sff_activate_host +EXPORT_SYMBOL_GPL vmlinux 0xdec409e3 xfrm_audit_state_add +EXPORT_SYMBOL_GPL vmlinux 0xdecf5538 skb_zerocopy_iter_dgram EXPORT_SYMBOL_GPL vmlinux 0xdee5840c __traceiter_block_unplug EXPORT_SYMBOL_GPL vmlinux 0xdee91d3a gpiod_set_consumer_name EXPORT_SYMBOL_GPL vmlinux 0xdefb9304 vfio_device_get_from_dev @@ -18314,33 +18327,36 @@ EXPORT_SYMBOL_GPL vmlinux 0xdf118daf iommu_map_sg EXPORT_SYMBOL_GPL vmlinux 0xdf16d44b dev_pm_domain_detach EXPORT_SYMBOL_GPL vmlinux 0xdf1882af dbgp_reset_prep +EXPORT_SYMBOL_GPL vmlinux 0xdf1c39d8 crypto_skcipher_setkey EXPORT_SYMBOL_GPL vmlinux 0xdf2738bb cpu_cgrp_subsys_enabled_key -EXPORT_SYMBOL_GPL vmlinux 0xdf3e7503 fib_rules_dump -EXPORT_SYMBOL_GPL vmlinux 0xdf4551fe devlink_dpipe_headers_unregister +EXPORT_SYMBOL_GPL vmlinux 0xdf3abe66 __traceiter_neigh_timer_handler +EXPORT_SYMBOL_GPL vmlinux 0xdf6e608f dev_forward_skb EXPORT_SYMBOL_GPL vmlinux 0xdf7f8d1a led_trigger_register_simple EXPORT_SYMBOL_GPL vmlinux 0xdf9208c0 alloc_workqueue EXPORT_SYMBOL_GPL vmlinux 0xdf9de962 nvdimm_bus_unregister EXPORT_SYMBOL_GPL vmlinux 0xdfac6dd6 hvc_alloc +EXPORT_SYMBOL_GPL vmlinux 0xdfc1b86d bpf_prog_inc_not_zero EXPORT_SYMBOL_GPL vmlinux 0xdfc204ac dev_pm_opp_find_level_exact EXPORT_SYMBOL_GPL vmlinux 0xdfc732c1 dev_pm_qos_hide_flags -EXPORT_SYMBOL_GPL vmlinux 0xdfc9e64e ip6_sk_update_pmtu EXPORT_SYMBOL_GPL vmlinux 0xdfcb6c90 mctrl_gpio_set EXPORT_SYMBOL_GPL vmlinux 0xdfccc301 vp_modern_set_queue_enable +EXPORT_SYMBOL_GPL vmlinux 0xdfd1f69f spi_mem_dirmap_read +EXPORT_SYMBOL_GPL vmlinux 0xdfd7f414 fib_nl_newrule EXPORT_SYMBOL_GPL vmlinux 0xdfd9b351 create_signature -EXPORT_SYMBOL_GPL vmlinux 0xdfddc290 udp_tunnel_drop_rx_port EXPORT_SYMBOL_GPL vmlinux 0xdfe2dbda edac_pci_handle_npe EXPORT_SYMBOL_GPL vmlinux 0xdfe446c8 dev_pm_opp_attach_genpd EXPORT_SYMBOL_GPL vmlinux 0xdffed7ac devm_watchdog_register_device +EXPORT_SYMBOL_GPL vmlinux 0xe00703de __regmap_init_spi +EXPORT_SYMBOL_GPL vmlinux 0xe0270682 crypto_stats_init EXPORT_SYMBOL_GPL vmlinux 0xe02c727e dev_pm_qos_expose_latency_limit EXPORT_SYMBOL_GPL vmlinux 0xe0322dc8 crypto_create_tfm_node -EXPORT_SYMBOL_GPL vmlinux 0xe0357c30 l3mdev_table_lookup_register EXPORT_SYMBOL_GPL vmlinux 0xe036fe05 dev_pm_opp_init_cpufreq_table EXPORT_SYMBOL_GPL vmlinux 0xe03fa5f6 irqchip_fwnode_ops EXPORT_SYMBOL_GPL vmlinux 0xe04c78db __SCT__tp_func_neigh_event_send_done -EXPORT_SYMBOL_GPL vmlinux 0xe04e5dac bpf_map_inc EXPORT_SYMBOL_GPL vmlinux 0xe05e2f85 nexthop_free_rcu EXPORT_SYMBOL_GPL vmlinux 0xe0653895 pci_aer_clear_nonfatal_status EXPORT_SYMBOL_GPL vmlinux 0xe089cfcc agp_memory_reserved +EXPORT_SYMBOL_GPL vmlinux 0xe0a43072 phy_speed_up EXPORT_SYMBOL_GPL vmlinux 0xe0b1c103 clk_set_max_rate EXPORT_SYMBOL_GPL vmlinux 0xe0c08ff9 list_lru_count_one EXPORT_SYMBOL_GPL vmlinux 0xe0c77bb5 mce_notify_irq @@ -18350,14 +18366,15 @@ EXPORT_SYMBOL_GPL vmlinux 0xe109add1 __devm_alloc_percpu EXPORT_SYMBOL_GPL vmlinux 0xe10cd6ad erst_get_record_id_begin EXPORT_SYMBOL_GPL vmlinux 0xe124e0cc regmap_bulk_read -EXPORT_SYMBOL_GPL vmlinux 0xe14d1b49 inet_csk_get_port -EXPORT_SYMBOL_GPL vmlinux 0xe154a2d9 crypto_type_has_alg +EXPORT_SYMBOL_GPL vmlinux 0xe12f592c proc_create_net_single_write EXPORT_SYMBOL_GPL vmlinux 0xe155bd89 pci_epc_stop EXPORT_SYMBOL_GPL vmlinux 0xe15f04fc scsi_host_unblock EXPORT_SYMBOL_GPL vmlinux 0xe16bea84 subsys_interface_unregister EXPORT_SYMBOL_GPL vmlinux 0xe17131c5 dev_attr_em_message EXPORT_SYMBOL_GPL vmlinux 0xe1775ee7 dm_get_reserved_bio_based_ios +EXPORT_SYMBOL_GPL vmlinux 0xe1782ca8 fixed_phy_set_link_update EXPORT_SYMBOL_GPL vmlinux 0xe17f9d1a genphy_c45_pma_resume +EXPORT_SYMBOL_GPL vmlinux 0xe18c2fba __udp4_lib_lookup EXPORT_SYMBOL_GPL vmlinux 0xe19c0f01 fscrypt_set_context EXPORT_SYMBOL_GPL vmlinux 0xe1a16d03 fsl_mc_device_group EXPORT_SYMBOL_GPL vmlinux 0xe1a563fd rcu_read_unlock_trace_special @@ -18368,61 +18385,58 @@ EXPORT_SYMBOL_GPL vmlinux 0xe1bd6c99 rio_init_mports EXPORT_SYMBOL_GPL vmlinux 0xe1c63523 blk_ksm_get_slot_idx EXPORT_SYMBOL_GPL vmlinux 0xe1e54c78 regulator_set_bypass_regmap -EXPORT_SYMBOL_GPL vmlinux 0xe1e82bac __tracepoint_neigh_update -EXPORT_SYMBOL_GPL vmlinux 0xe1fbcc7b devlink_param_driverinit_value_set -EXPORT_SYMBOL_GPL vmlinux 0xe1fc3a39 find_vpid EXPORT_SYMBOL_GPL vmlinux 0xe1ff6bb2 get_cached_msi_msg EXPORT_SYMBOL_GPL vmlinux 0xe21e70bc rhashtable_walk_stop EXPORT_SYMBOL_GPL vmlinux 0xe2221035 gpiochip_unlock_as_irq EXPORT_SYMBOL_GPL vmlinux 0xe22494fa alloc_dax +EXPORT_SYMBOL_GPL vmlinux 0xe227c854 ip6_dst_lookup_tunnel EXPORT_SYMBOL_GPL vmlinux 0xe233762a input_event_from_user EXPORT_SYMBOL_GPL vmlinux 0xe237322c uart_insert_char -EXPORT_SYMBOL_GPL vmlinux 0xe251116c ip_route_output_flow +EXPORT_SYMBOL_GPL vmlinux 0xe24bd046 devlink_port_attrs_pci_pf_set EXPORT_SYMBOL_GPL vmlinux 0xe25124dc kthread_queue_work EXPORT_SYMBOL_GPL vmlinux 0xe2529659 devm_hwspin_lock_unregister EXPORT_SYMBOL_GPL vmlinux 0xe2573250 dw_pcie_setup_rc EXPORT_SYMBOL_GPL vmlinux 0xe2598a19 wakeup_source_unregister EXPORT_SYMBOL_GPL vmlinux 0xe25d23f3 blocking_notifier_call_chain_robust +EXPORT_SYMBOL_GPL vmlinux 0xe260d00d ip6_sk_update_pmtu EXPORT_SYMBOL_GPL vmlinux 0xe26774b7 of_icc_get_by_index EXPORT_SYMBOL_GPL vmlinux 0xe26d510e tty_port_register_device_attr_serdev +EXPORT_SYMBOL_GPL vmlinux 0xe26efaed __xfrm_state_mtu EXPORT_SYMBOL_GPL vmlinux 0xe271f20c __SCT__tp_func_pelt_rt_tp +EXPORT_SYMBOL_GPL vmlinux 0xe27437db nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0xe275020a xdp_attachment_setup EXPORT_SYMBOL_GPL vmlinux 0xe2828f47 sync_page_io EXPORT_SYMBOL_GPL vmlinux 0xe283bc93 fsverity_ioctl_read_metadata -EXPORT_SYMBOL_GPL vmlinux 0xe284ce84 devm_device_add_group EXPORT_SYMBOL_GPL vmlinux 0xe28c943d ata_acpi_cbl_80wire EXPORT_SYMBOL_GPL vmlinux 0xe2947b40 blk_revalidate_disk_zones EXPORT_SYMBOL_GPL vmlinux 0xe295c0ff is_hpet_enabled EXPORT_SYMBOL_GPL vmlinux 0xe29623fa show_class_attr_string -EXPORT_SYMBOL_GPL vmlinux 0xe2a879af lwtunnel_build_state EXPORT_SYMBOL_GPL vmlinux 0xe2abadcb dm_table_set_type -EXPORT_SYMBOL_GPL vmlinux 0xe2ae7f93 seg6_do_srh_encap EXPORT_SYMBOL_GPL vmlinux 0xe2af713c __SCK__tp_func_cpu_frequency EXPORT_SYMBOL_GPL vmlinux 0xe2b3207a unregister_switchdev_notifier -EXPORT_SYMBOL_GPL vmlinux 0xe2c3c3af __traceiter_fdb_delete -EXPORT_SYMBOL_GPL vmlinux 0xe2cdb165 sched_trace_cfs_rq_avg +EXPORT_SYMBOL_GPL vmlinux 0xe2bf6611 fwnode_property_get_reference_args EXPORT_SYMBOL_GPL vmlinux 0xe2ce2b4d evm_set_key EXPORT_SYMBOL_GPL vmlinux 0xe2da9ef4 usb_urb_ep_type_check EXPORT_SYMBOL_GPL vmlinux 0xe2f0cf4f dmaengine_desc_get_metadata_ptr EXPORT_SYMBOL_GPL vmlinux 0xe3007095 gov_attr_set_init EXPORT_SYMBOL_GPL vmlinux 0xe30ef25c vc_scrolldelta_helper EXPORT_SYMBOL_GPL vmlinux 0xe31315a4 spi_delay_exec +EXPORT_SYMBOL_GPL vmlinux 0xe31796f2 skcipher_walk_aead_decrypt EXPORT_SYMBOL_GPL vmlinux 0xe31af897 x509_free_certificate -EXPORT_SYMBOL_GPL vmlinux 0xe3332684 spi_new_device EXPORT_SYMBOL_GPL vmlinux 0xe338c5ac inet_hashinfo2_init_mod EXPORT_SYMBOL_GPL vmlinux 0xe33b06de clk_hw_get_parent_index +EXPORT_SYMBOL_GPL vmlinux 0xe3442443 cookie_tcp_reqsk_alloc EXPORT_SYMBOL_GPL vmlinux 0xe3447c33 usb_alloc_streams EXPORT_SYMBOL_GPL vmlinux 0xe3493a2d dm_internal_suspend_noflush EXPORT_SYMBOL_GPL vmlinux 0xe3505373 regulator_unregister_notifier +EXPORT_SYMBOL_GPL vmlinux 0xe3551e0d spi_bus_unlock EXPORT_SYMBOL_GPL vmlinux 0xe3571e18 acpi_dma_request_slave_chan_by_index EXPORT_SYMBOL_GPL vmlinux 0xe36793b7 iommu_aux_attach_device EXPORT_SYMBOL_GPL vmlinux 0xe36d9d55 blk_queue_can_use_dma_map_merging -EXPORT_SYMBOL_GPL vmlinux 0xe37b9d5d device_show_int EXPORT_SYMBOL_GPL vmlinux 0xe3948ff4 acpi_walk_dep_device_list EXPORT_SYMBOL_GPL vmlinux 0xe397caf5 seq_buf_printf EXPORT_SYMBOL_GPL vmlinux 0xe39d0794 usb_phy_roothub_exit -EXPORT_SYMBOL_GPL vmlinux 0xe3a13258 __tracepoint_sched_cpu_capacity_tp EXPORT_SYMBOL_GPL vmlinux 0xe3b09712 kprobe_event_delete -EXPORT_SYMBOL_GPL vmlinux 0xe3b15f66 crypto_register_templates EXPORT_SYMBOL_GPL vmlinux 0xe3bc7fd4 hpet_unregister_irq_handler EXPORT_SYMBOL_GPL vmlinux 0xe3c2e391 __SCK__tp_func_attach_device_to_domain EXPORT_SYMBOL_GPL vmlinux 0xe3ca332b devm_clk_hw_register_fixed_factor @@ -18431,27 +18445,26 @@ EXPORT_SYMBOL_GPL vmlinux 0xe3e7527e virtqueue_kick EXPORT_SYMBOL_GPL vmlinux 0xe3e88acb __get_current_cr3_fast EXPORT_SYMBOL_GPL vmlinux 0xe3e95af3 pci_cfg_access_lock -EXPORT_SYMBOL_GPL vmlinux 0xe3eed29f __SCK__tp_func_neigh_event_send_dead EXPORT_SYMBOL_GPL vmlinux 0xe3f199c9 transport_remove_device EXPORT_SYMBOL_GPL vmlinux 0xe3fde01f iomap_swapfile_activate +EXPORT_SYMBOL_GPL vmlinux 0xe4024a71 ip6_flush_pending_frames EXPORT_SYMBOL_GPL vmlinux 0xe4055e2b unregister_virtio_device EXPORT_SYMBOL_GPL vmlinux 0xe40bb23e devlink_health_reporter_priv EXPORT_SYMBOL_GPL vmlinux 0xe423c224 phy_put EXPORT_SYMBOL_GPL vmlinux 0xe4248980 cper_estatus_print EXPORT_SYMBOL_GPL vmlinux 0xe42c9ffb ata_wait_register EXPORT_SYMBOL_GPL vmlinux 0xe4309905 syscore_resume -EXPORT_SYMBOL_GPL vmlinux 0xe430d872 spi_replace_transfers EXPORT_SYMBOL_GPL vmlinux 0xe43267a0 crypto_alloc_base EXPORT_SYMBOL_GPL vmlinux 0xe4340312 md_bitmap_resize EXPORT_SYMBOL_GPL vmlinux 0xe442e428 regulator_disable_regmap EXPORT_SYMBOL_GPL vmlinux 0xe459d6f6 vp_modern_get_features -EXPORT_SYMBOL_GPL vmlinux 0xe468e674 fwnode_graph_get_next_endpoint +EXPORT_SYMBOL_GPL vmlinux 0xe465726d xfer_to_guest_mode_handle_work EXPORT_SYMBOL_GPL vmlinux 0xe48611ac trace_clock_global +EXPORT_SYMBOL_GPL vmlinux 0xe4877a15 inet_csk_route_req EXPORT_SYMBOL_GPL vmlinux 0xe48a97ff clone_private_mount EXPORT_SYMBOL_GPL vmlinux 0xe48c7786 dma_buf_put EXPORT_SYMBOL_GPL vmlinux 0xe48ce6b8 md_find_rdev_nr_rcu EXPORT_SYMBOL_GPL vmlinux 0xe4971ade tracing_alloc_snapshot -EXPORT_SYMBOL_GPL vmlinux 0xe49c2bec bpf_trace_run8 EXPORT_SYMBOL_GPL vmlinux 0xe4a54232 blk_mq_freeze_queue_wait EXPORT_SYMBOL_GPL vmlinux 0xe4b064f9 pcie_link_speed EXPORT_SYMBOL_GPL vmlinux 0xe4b818c3 phy_speed_to_str @@ -18459,42 +18472,44 @@ EXPORT_SYMBOL_GPL vmlinux 0xe4cf8be4 screen_glyph EXPORT_SYMBOL_GPL vmlinux 0xe4e48b12 swphy_validate_state EXPORT_SYMBOL_GPL vmlinux 0xe4e94ffe fscrypt_set_bio_crypt_ctx_bh -EXPORT_SYMBOL_GPL vmlinux 0xe4f339e8 l3mdev_master_ifindex_rcu EXPORT_SYMBOL_GPL vmlinux 0xe5056b76 ata_port_freeze EXPORT_SYMBOL_GPL vmlinux 0xe52670d5 splice_to_pipe EXPORT_SYMBOL_GPL vmlinux 0xe53cb5ed nvmem_cell_get EXPORT_SYMBOL_GPL vmlinux 0xe53d86c5 pcie_bus_configure_settings EXPORT_SYMBOL_GPL vmlinux 0xe54c1d4d trace_array_destroy EXPORT_SYMBOL_GPL vmlinux 0xe572662b bpfilter_umh_cleanup -EXPORT_SYMBOL_GPL vmlinux 0xe577bc21 raw_abort +EXPORT_SYMBOL_GPL vmlinux 0xe57c5444 devlink_dpipe_table_counter_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe57d82f0 perf_event_pause EXPORT_SYMBOL_GPL vmlinux 0xe5883bd9 class_compat_unregister -EXPORT_SYMBOL_GPL vmlinux 0xe591bdf9 sk_detach_filter EXPORT_SYMBOL_GPL vmlinux 0xe59f25e3 iomap_seek_data EXPORT_SYMBOL_GPL vmlinux 0xe5b0037e ata_scsi_slave_config +EXPORT_SYMBOL_GPL vmlinux 0xe5b13362 inet_csk_listen_start EXPORT_SYMBOL_GPL vmlinux 0xe5c02b64 freq_qos_remove_request EXPORT_SYMBOL_GPL vmlinux 0xe5c47bb9 fsnotify_alloc_group +EXPORT_SYMBOL_GPL vmlinux 0xe5c8371d crypto_stats_aead_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xe5dc7797 spi_mem_dirmap_destroy EXPORT_SYMBOL_GPL vmlinux 0xe5de7a6f pci_walk_bus EXPORT_SYMBOL_GPL vmlinux 0xe5e8b5c6 vmbus_are_subchannels_present EXPORT_SYMBOL_GPL vmlinux 0xe5f73406 hyperv_write_cfg_blk EXPORT_SYMBOL_GPL vmlinux 0xe600898e devm_pinctrl_unregister -EXPORT_SYMBOL_GPL vmlinux 0xe603a125 __tracepoint_br_fdb_add EXPORT_SYMBOL_GPL vmlinux 0xe60632a9 edac_queue_work EXPORT_SYMBOL_GPL vmlinux 0xe609ea36 vfio_virqfd_disable EXPORT_SYMBOL_GPL vmlinux 0xe60a5e8d pids_cgrp_subsys_enabled_key -EXPORT_SYMBOL_GPL vmlinux 0xe60b6208 devlink_port_attrs_set EXPORT_SYMBOL_GPL vmlinux 0xe616418f vp_modern_set_features EXPORT_SYMBOL_GPL vmlinux 0xe628bb9f phy_fibre_port_array +EXPORT_SYMBOL_GPL vmlinux 0xe628cc1e __inet_lookup_listener +EXPORT_SYMBOL_GPL vmlinux 0xe6337208 devlink_dpipe_entry_ctx_append EXPORT_SYMBOL_GPL vmlinux 0xe636bb8c devm_request_free_mem_region EXPORT_SYMBOL_GPL vmlinux 0xe6382ace mnt_drop_write -EXPORT_SYMBOL_GPL vmlinux 0xe641b7b8 peernet2id_alloc EXPORT_SYMBOL_GPL vmlinux 0xe64ad8ea unregister_nmi_handler EXPORT_SYMBOL_GPL vmlinux 0xe65000ca hwspin_lock_request_specific EXPORT_SYMBOL_GPL vmlinux 0xe6590ddb user_update EXPORT_SYMBOL_GPL vmlinux 0xe661c968 rdev_clear_badblocks +EXPORT_SYMBOL_GPL vmlinux 0xe68783ec sock_diag_register_inet_compat EXPORT_SYMBOL_GPL vmlinux 0xe68d335c regulator_bulk_register_supply_alias EXPORT_SYMBOL_GPL vmlinux 0xe6a242d9 __srcu_read_lock EXPORT_SYMBOL_GPL vmlinux 0xe6a257f1 divider_round_rate_parent -EXPORT_SYMBOL_GPL vmlinux 0xe6a9a16a ip6_sk_dst_lookup_flow +EXPORT_SYMBOL_GPL vmlinux 0xe6a58580 ip6_route_output_flags_noref EXPORT_SYMBOL_GPL vmlinux 0xe6b8ffcb cpufreq_dbs_governor_exit EXPORT_SYMBOL_GPL vmlinux 0xe6e40502 rcu_get_gp_seq EXPORT_SYMBOL_GPL vmlinux 0xe6f083d6 ata_pci_bmdma_clear_simplex @@ -18503,27 +18518,29 @@ EXPORT_SYMBOL_GPL vmlinux 0xe6f5e6f5 xas_clear_mark EXPORT_SYMBOL_GPL vmlinux 0xe6f83837 acpi_bus_attach_private_data EXPORT_SYMBOL_GPL vmlinux 0xe700d767 reset_control_bulk_deassert -EXPORT_SYMBOL_GPL vmlinux 0xe70c6e82 addrconf_prefix_rcv_add_addr +EXPORT_SYMBOL_GPL vmlinux 0xe70674c2 nvme_unfreeze EXPORT_SYMBOL_GPL vmlinux 0xe7232e0f user_return_notifier_unregister EXPORT_SYMBOL_GPL vmlinux 0xe73c171f usb_hub_clear_tt_buffer EXPORT_SYMBOL_GPL vmlinux 0xe740b58a hv_vp_assist_page -EXPORT_SYMBOL_GPL vmlinux 0xe740cf87 devm_device_remove_groups -EXPORT_SYMBOL_GPL vmlinux 0xe7438457 __traceiter_br_fdb_add EXPORT_SYMBOL_GPL vmlinux 0xe74ac502 pci_epc_destroy EXPORT_SYMBOL_GPL vmlinux 0xe753b68d devlink_fmsg_arr_pair_nest_end EXPORT_SYMBOL_GPL vmlinux 0xe75bcdc6 devfreq_event_is_enabled +EXPORT_SYMBOL_GPL vmlinux 0xe76459dd fib6_rule_default EXPORT_SYMBOL_GPL vmlinux 0xe7655d8f power_supply_changed EXPORT_SYMBOL_GPL vmlinux 0xe769232e sprint_symbol_no_offset EXPORT_SYMBOL_GPL vmlinux 0xe76fc554 pci_stop_root_bus EXPORT_SYMBOL_GPL vmlinux 0xe7740fa4 wm831x_auxadc_read EXPORT_SYMBOL_GPL vmlinux 0xe7742c02 phy_create_lookup +EXPORT_SYMBOL_GPL vmlinux 0xe77e477d __raw_v6_lookup EXPORT_SYMBOL_GPL vmlinux 0xe783e261 sysfs_emit EXPORT_SYMBOL_GPL vmlinux 0xe78ed429 gpiod_export_link EXPORT_SYMBOL_GPL vmlinux 0xe791df1f rcu_nocb_cpu_deoffload EXPORT_SYMBOL_GPL vmlinux 0xe79bf0c4 klp_shadow_get EXPORT_SYMBOL_GPL vmlinux 0xe7a9e1e9 devm_nvmem_device_get +EXPORT_SYMBOL_GPL vmlinux 0xe7b65f82 ip_tunnel_changelink EXPORT_SYMBOL_GPL vmlinux 0xe7c82219 pm_runtime_force_suspend EXPORT_SYMBOL_GPL vmlinux 0xe7d6d2d4 filter_match_preds +EXPORT_SYMBOL_GPL vmlinux 0xe7df0353 xdp_return_frame_rx_napi EXPORT_SYMBOL_GPL vmlinux 0xe7e6e774 __rio_local_read_config_32 EXPORT_SYMBOL_GPL vmlinux 0xe7e73984 acpi_subsys_suspend EXPORT_SYMBOL_GPL vmlinux 0xe7eee3d5 __cookie_v4_init_sequence @@ -18533,46 +18550,41 @@ EXPORT_SYMBOL_GPL vmlinux 0xe808a67c dev_pm_opp_put_prop_name EXPORT_SYMBOL_GPL vmlinux 0xe818b32b ata_bmdma_interrupt EXPORT_SYMBOL_GPL vmlinux 0xe8199ff8 sbitmap_del_wait_queue -EXPORT_SYMBOL_GPL vmlinux 0xe823f104 root_device_unregister EXPORT_SYMBOL_GPL vmlinux 0xe82c3211 ata_sff_qc_fill_rtf +EXPORT_SYMBOL_GPL vmlinux 0xe83a7755 udp_tunnel_notify_del_rx_port EXPORT_SYMBOL_GPL vmlinux 0xe83eba32 itlb_multihit_kvm_mitigation -EXPORT_SYMBOL_GPL vmlinux 0xe847cd67 dst_cache_get_ip6 -EXPORT_SYMBOL_GPL vmlinux 0xe84bc909 get_pid_task +EXPORT_SYMBOL_GPL vmlinux 0xe84d8422 skb_mpls_push EXPORT_SYMBOL_GPL vmlinux 0xe84e7bf8 vfs_fallocate EXPORT_SYMBOL_GPL vmlinux 0xe84f6e5c pciserial_remove_ports EXPORT_SYMBOL_GPL vmlinux 0xe84fae25 tpm2_probe -EXPORT_SYMBOL_GPL vmlinux 0xe85c82c2 nvme_init_ctrl EXPORT_SYMBOL_GPL vmlinux 0xe861a0ed pci_hp_remove_module_link EXPORT_SYMBOL_GPL vmlinux 0xe862c4b7 dpm_suspend_start -EXPORT_SYMBOL_GPL vmlinux 0xe8644a90 bpf_map_inc_not_zero EXPORT_SYMBOL_GPL vmlinux 0xe875c661 __clocksource_update_freq_scale EXPORT_SYMBOL_GPL vmlinux 0xe8874a05 irq_work_queue +EXPORT_SYMBOL_GPL vmlinux 0xe899fde9 spi_get_next_queued_message EXPORT_SYMBOL_GPL vmlinux 0xe89e576b genphy_c45_check_and_restart_aneg EXPORT_SYMBOL_GPL vmlinux 0xe89f0af8 __tracepoint_powernv_throttle -EXPORT_SYMBOL_GPL vmlinux 0xe8a3be5a crypto_dequeue_request EXPORT_SYMBOL_GPL vmlinux 0xe8a54199 pci_disable_rom EXPORT_SYMBOL_GPL vmlinux 0xe8a7954f usb_free_urb -EXPORT_SYMBOL_GPL vmlinux 0xe8c4f2a4 vxlan_fdb_find_uc +EXPORT_SYMBOL_GPL vmlinux 0xe8bf93d3 netdev_is_rx_handler_busy EXPORT_SYMBOL_GPL vmlinux 0xe8d04b06 bsg_job_put EXPORT_SYMBOL_GPL vmlinux 0xe8d6b46e usb_hcd_unmap_urb_setup_for_dma EXPORT_SYMBOL_GPL vmlinux 0xe8e235c8 arch_static_call_transform EXPORT_SYMBOL_GPL vmlinux 0xe8e957e7 __SCK__tp_func_xhci_dbg_quirks -EXPORT_SYMBOL_GPL vmlinux 0xe90ae64b devm_spi_mem_dirmap_destroy -EXPORT_SYMBOL_GPL vmlinux 0xe90c3244 nvme_cleanup_cmd EXPORT_SYMBOL_GPL vmlinux 0xe911df29 eventfd_ctx_do_read -EXPORT_SYMBOL_GPL vmlinux 0xe9307eef fwnode_property_read_string EXPORT_SYMBOL_GPL vmlinux 0xe93e49c3 devres_free -EXPORT_SYMBOL_GPL vmlinux 0xe93f04c4 skb_append_pagefrags +EXPORT_SYMBOL_GPL vmlinux 0xe94092a5 __tracepoint_tcp_send_reset +EXPORT_SYMBOL_GPL vmlinux 0xe94608e6 sk_psock_init +EXPORT_SYMBOL_GPL vmlinux 0xe9538228 device_create EXPORT_SYMBOL_GPL vmlinux 0xe95c5ae4 pm_genpd_add_subdomain -EXPORT_SYMBOL_GPL vmlinux 0xe97d333c inet_csk_listen_start -EXPORT_SYMBOL_GPL vmlinux 0xe99dee0e xdp_build_skb_from_frame +EXPORT_SYMBOL_GPL vmlinux 0xe9880ef1 skcipher_walk_async EXPORT_SYMBOL_GPL vmlinux 0xe9b15bb5 sysfs_create_link EXPORT_SYMBOL_GPL vmlinux 0xe9ce931a kvm_para_available EXPORT_SYMBOL_GPL vmlinux 0xe9d1b7cf irq_to_pcap EXPORT_SYMBOL_GPL vmlinux 0xe9edde4f devres_add EXPORT_SYMBOL_GPL vmlinux 0xe9fadf16 __SCT__tp_func_neigh_update_done EXPORT_SYMBOL_GPL vmlinux 0xea018bbb mpi_test_bit -EXPORT_SYMBOL_GPL vmlinux 0xea09e1fd spi_write_then_read +EXPORT_SYMBOL_GPL vmlinux 0xea060aa0 ip_tunnel_setup EXPORT_SYMBOL_GPL vmlinux 0xea124bd1 gcd EXPORT_SYMBOL_GPL vmlinux 0xea1ff413 fsnotify_add_mark EXPORT_SYMBOL_GPL vmlinux 0xea22617d sysfs_remove_files @@ -18581,95 +18593,97 @@ EXPORT_SYMBOL_GPL vmlinux 0xea57b1fa uhci_check_and_reset_hc EXPORT_SYMBOL_GPL vmlinux 0xea5a44b0 tty_get_pgrp EXPORT_SYMBOL_GPL vmlinux 0xea631262 pinctrl_get +EXPORT_SYMBOL_GPL vmlinux 0xea650b79 spi_mem_default_supports_op EXPORT_SYMBOL_GPL vmlinux 0xea6c9c8b debugfs_create_file_size -EXPORT_SYMBOL_GPL vmlinux 0xea6f063a init_dummy_netdev EXPORT_SYMBOL_GPL vmlinux 0xea862b66 led_set_brightness_nosleep EXPORT_SYMBOL_GPL vmlinux 0xea8d9475 wm5102_i2c_regmap -EXPORT_SYMBOL_GPL vmlinux 0xea9f4972 tcp_twsk_destructor EXPORT_SYMBOL_GPL vmlinux 0xeaacd4a5 devm_clk_register -EXPORT_SYMBOL_GPL vmlinux 0xeac1615a tcp_bpf_sendmsg_redir +EXPORT_SYMBOL_GPL vmlinux 0xeab37f2f device_link_add EXPORT_SYMBOL_GPL vmlinux 0xeac3988b irq_create_of_mapping +EXPORT_SYMBOL_GPL vmlinux 0xeac57e66 inet_csk_listen_stop EXPORT_SYMBOL_GPL vmlinux 0xead3e41b __traceiter_cpu_frequency EXPORT_SYMBOL_GPL vmlinux 0xead54924 mctrl_gpio_to_gpiod EXPORT_SYMBOL_GPL vmlinux 0xead5c8e5 clk_bulk_prepare -EXPORT_SYMBOL_GPL vmlinux 0xeadb384d nvme_set_queue_count EXPORT_SYMBOL_GPL vmlinux 0xeae0e84c regmap_write EXPORT_SYMBOL_GPL vmlinux 0xeae0f496 clean_acked_data_flush EXPORT_SYMBOL_GPL vmlinux 0xeae3ddc4 bus_find_device -EXPORT_SYMBOL_GPL vmlinux 0xeafb220e inet_csk_update_pmtu -EXPORT_SYMBOL_GPL vmlinux 0xeb06102f __devm_spi_alloc_controller +EXPORT_SYMBOL_GPL vmlinux 0xeb065e96 bpf_trace_run11 EXPORT_SYMBOL_GPL vmlinux 0xeb26fb96 regulator_disable_deferred +EXPORT_SYMBOL_GPL vmlinux 0xeb3ab45c bpf_prog_sub EXPORT_SYMBOL_GPL vmlinux 0xeb3ac06b fat_update_time EXPORT_SYMBOL_GPL vmlinux 0xeb483850 __vfs_removexattr_locked +EXPORT_SYMBOL_GPL vmlinux 0xeb4840b7 device_change_owner EXPORT_SYMBOL_GPL vmlinux 0xeb5ae04b perf_msr_probe +EXPORT_SYMBOL_GPL vmlinux 0xeb65483e devlink_param_driverinit_value_set +EXPORT_SYMBOL_GPL vmlinux 0xeb6727bb perf_event_period +EXPORT_SYMBOL_GPL vmlinux 0xeb808e77 devlink_reload_disable EXPORT_SYMBOL_GPL vmlinux 0xeb90b5df tps65912_device_exit +EXPORT_SYMBOL_GPL vmlinux 0xeb915367 metadata_dst_alloc EXPORT_SYMBOL_GPL vmlinux 0xeb9375e6 devm_hwrng_register EXPORT_SYMBOL_GPL vmlinux 0xeb94536f x86_platform EXPORT_SYMBOL_GPL vmlinux 0xeb969a45 nvdimm_bus_add_badrange EXPORT_SYMBOL_GPL vmlinux 0xebae5ba4 __trace_note_message +EXPORT_SYMBOL_GPL vmlinux 0xebb2be6c devlink_resource_size_get EXPORT_SYMBOL_GPL vmlinux 0xebbd9a49 blkcg_root_css EXPORT_SYMBOL_GPL vmlinux 0xebc4f4d1 fscrypt_ioctl_get_nonce EXPORT_SYMBOL_GPL vmlinux 0xebc9a09f lock_system_sleep EXPORT_SYMBOL_GPL vmlinux 0xebd26b6e iommu_device_sysfs_add EXPORT_SYMBOL_GPL vmlinux 0xebd4cc11 mctrl_gpio_enable_ms EXPORT_SYMBOL_GPL vmlinux 0xebdb2e38 ata_host_init -EXPORT_SYMBOL_GPL vmlinux 0xebf0320c device_remove_file EXPORT_SYMBOL_GPL vmlinux 0xec1069ea clk_hw_unregister EXPORT_SYMBOL_GPL vmlinux 0xec19a5b0 tty_buffer_set_limit EXPORT_SYMBOL_GPL vmlinux 0xec1cd85f pci_pri_supported +EXPORT_SYMBOL_GPL vmlinux 0xec1d9500 skb_complete_tx_timestamp EXPORT_SYMBOL_GPL vmlinux 0xec27754a usb_hcd_link_urb_to_ep EXPORT_SYMBOL_GPL vmlinux 0xec40ea1b platform_get_irq_byname_optional -EXPORT_SYMBOL_GPL vmlinux 0xec41392e perf_event_release_kernel EXPORT_SYMBOL_GPL vmlinux 0xec4422d3 of_pm_clk_add_clk EXPORT_SYMBOL_GPL vmlinux 0xec46bd8c __tracepoint_rpm_resume EXPORT_SYMBOL_GPL vmlinux 0xec5668f6 dax_zero_page_range +EXPORT_SYMBOL_GPL vmlinux 0xec59267b crypto_stats_ahash_update EXPORT_SYMBOL_GPL vmlinux 0xec5ad73b trace_seq_bitmask EXPORT_SYMBOL_GPL vmlinux 0xec774acb cpufreq_frequency_table_verify EXPORT_SYMBOL_GPL vmlinux 0xec788566 acpi_target_system_state -EXPORT_SYMBOL_GPL vmlinux 0xec842ae6 phy_driver_is_genphy -EXPORT_SYMBOL_GPL vmlinux 0xeca46e39 nvme_remove_namespaces -EXPORT_SYMBOL_GPL vmlinux 0xeca964ef task_cls_state +EXPORT_SYMBOL_GPL vmlinux 0xecac4a46 __SCK__tp_func_tcp_send_reset EXPORT_SYMBOL_GPL vmlinux 0xecb5790a __bdev_dax_supported -EXPORT_SYMBOL_GPL vmlinux 0xecbeb9d7 udp_tunnel_xmit_skb EXPORT_SYMBOL_GPL vmlinux 0xecc334a0 edac_device_add_device -EXPORT_SYMBOL_GPL vmlinux 0xeccd0f2e nd_tbl +EXPORT_SYMBOL_GPL vmlinux 0xece10fb9 skb_segment EXPORT_SYMBOL_GPL vmlinux 0xeceb8009 __pm_runtime_set_status EXPORT_SYMBOL_GPL vmlinux 0xecfb2d7a serial8250_rx_dma_flush +EXPORT_SYMBOL_GPL vmlinux 0xed0b87b9 sched_set_fifo_low +EXPORT_SYMBOL_GPL vmlinux 0xed0d151f tcp_get_syncookie_mss EXPORT_SYMBOL_GPL vmlinux 0xed2130c2 gpiod_direction_output EXPORT_SYMBOL_GPL vmlinux 0xed29543d umd_unload_blob EXPORT_SYMBOL_GPL vmlinux 0xed3c42d6 memunmap_pages +EXPORT_SYMBOL_GPL vmlinux 0xed437529 xdp_convert_zc_to_xdp_frame EXPORT_SYMBOL_GPL vmlinux 0xed53f1dd serial8250_update_uartclk EXPORT_SYMBOL_GPL vmlinux 0xed60c66b nvdimm_bus_check_dimm_count EXPORT_SYMBOL_GPL vmlinux 0xed66a140 sysfs_remove_bin_file EXPORT_SYMBOL_GPL vmlinux 0xed7c7b91 raw_v6_hashinfo +EXPORT_SYMBOL_GPL vmlinux 0xed84638f crypto_unregister_skciphers EXPORT_SYMBOL_GPL vmlinux 0xed86aee8 blk_abort_request -EXPORT_SYMBOL_GPL vmlinux 0xed9a9b6c devlink_params_publish EXPORT_SYMBOL_GPL vmlinux 0xed9c22d1 clk_hw_register_fractional_divider -EXPORT_SYMBOL_GPL vmlinux 0xeda2e2df task_cputime_adjusted -EXPORT_SYMBOL_GPL vmlinux 0xeda816a4 unix_outq_len -EXPORT_SYMBOL_GPL vmlinux 0xedaa95af xfrm_output_resume -EXPORT_SYMBOL_GPL vmlinux 0xedbacce5 tun_get_socket EXPORT_SYMBOL_GPL vmlinux 0xedc829a1 __page_file_index EXPORT_SYMBOL_GPL vmlinux 0xedd092d5 power_supply_notifier EXPORT_SYMBOL_GPL vmlinux 0xede98ec5 intel_pt_validate_hw_cap EXPORT_SYMBOL_GPL vmlinux 0xede9a09a btree_lookup +EXPORT_SYMBOL_GPL vmlinux 0xedeab71e spi_res_add EXPORT_SYMBOL_GPL vmlinux 0xeded8e48 tty_port_unregister_device +EXPORT_SYMBOL_GPL vmlinux 0xedf1003b __tracepoint_fdb_delete +EXPORT_SYMBOL_GPL vmlinux 0xee0874cb crypto_stats_akcipher_encrypt +EXPORT_SYMBOL_GPL vmlinux 0xee0a1257 raw_abort EXPORT_SYMBOL_GPL vmlinux 0xee13e697 set_personality_ia32 EXPORT_SYMBOL_GPL vmlinux 0xee147cb8 usb_get_hcd EXPORT_SYMBOL_GPL vmlinux 0xee153962 clk_hw_get_parent_by_index EXPORT_SYMBOL_GPL vmlinux 0xee1c0faf pci_ioremap_wc_bar EXPORT_SYMBOL_GPL vmlinux 0xee38ef57 register_switchdev_blocking_notifier -EXPORT_SYMBOL_GPL vmlinux 0xee412d80 fib6_check_nexthop -EXPORT_SYMBOL_GPL vmlinux 0xee49c003 bpf_trace_run12 EXPORT_SYMBOL_GPL vmlinux 0xee4c5f5b dev_pm_opp_set_regulators EXPORT_SYMBOL_GPL vmlinux 0xee4d2dae ata_sff_port_ops EXPORT_SYMBOL_GPL vmlinux 0xee518148 kmsg_dump_get_buffer EXPORT_SYMBOL_GPL vmlinux 0xee6b71c4 syscon_regmap_lookup_by_compatible EXPORT_SYMBOL_GPL vmlinux 0xee6c633a devices_cgrp_subsys_on_dfl_key -EXPORT_SYMBOL_GPL vmlinux 0xee6d8a0c __skb_get_hash_symmetric EXPORT_SYMBOL_GPL vmlinux 0xee78cd81 __auxiliary_device_add EXPORT_SYMBOL_GPL vmlinux 0xee85c499 blkg_rwstat_recursive_sum -EXPORT_SYMBOL_GPL vmlinux 0xeebac26c xfrm_audit_state_replay_overflow +EXPORT_SYMBOL_GPL vmlinux 0xeebea28c nfs_ssc_register EXPORT_SYMBOL_GPL vmlinux 0xeed0cea4 kernel_read_file_from_fd EXPORT_SYMBOL_GPL vmlinux 0xeed90855 regmap_get_raw_read_max EXPORT_SYMBOL_GPL vmlinux 0xeedd987e phy_10gbit_features_array @@ -18677,6 +18691,7 @@ EXPORT_SYMBOL_GPL vmlinux 0xeeea0b29 vmbus_recvpacket_raw EXPORT_SYMBOL_GPL vmlinux 0xeef0ec43 cpufreq_policy_transition_delay_us EXPORT_SYMBOL_GPL vmlinux 0xeef2cf99 synth_event_trace +EXPORT_SYMBOL_GPL vmlinux 0xeefaf625 get_net_ns EXPORT_SYMBOL_GPL vmlinux 0xeefcbac9 init_uts_ns EXPORT_SYMBOL_GPL vmlinux 0xef061c54 pm_wakeup_dev_event EXPORT_SYMBOL_GPL vmlinux 0xef0df9f2 page_endio @@ -18685,9 +18700,10 @@ EXPORT_SYMBOL_GPL vmlinux 0xef29fcdd clk_bulk_put EXPORT_SYMBOL_GPL vmlinux 0xef34bf3e hrtimer_active EXPORT_SYMBOL_GPL vmlinux 0xef464c28 getboottime64 -EXPORT_SYMBOL_GPL vmlinux 0xef4691b1 strp_check_rcv -EXPORT_SYMBOL_GPL vmlinux 0xef5b7d1a ip6_route_output_flags_noref +EXPORT_SYMBOL_GPL vmlinux 0xef4e8eb7 set_primary_fwnode +EXPORT_SYMBOL_GPL vmlinux 0xef60fd7e crypto_stats_get EXPORT_SYMBOL_GPL vmlinux 0xef664fbc clk_hw_round_rate +EXPORT_SYMBOL_GPL vmlinux 0xef673540 yield_to EXPORT_SYMBOL_GPL vmlinux 0xef6c3f70 round_jiffies_up_relative EXPORT_SYMBOL_GPL vmlinux 0xef70eb7e ring_buffer_iter_advance EXPORT_SYMBOL_GPL vmlinux 0xef744bb5 sbitmap_queue_clear @@ -18699,45 +18715,39 @@ EXPORT_SYMBOL_GPL vmlinux 0xefa2c27d register_tracepoint_module_notifier EXPORT_SYMBOL_GPL vmlinux 0xefa92604 irq_chip_release_resources_parent EXPORT_SYMBOL_GPL vmlinux 0xefbe5535 usb_kill_urb -EXPORT_SYMBOL_GPL vmlinux 0xefd51d53 devlink_dpipe_headers_register -EXPORT_SYMBOL_GPL vmlinux 0xefdc6f94 bpf_offload_dev_create EXPORT_SYMBOL_GPL vmlinux 0xefeafcf1 edac_has_mcs -EXPORT_SYMBOL_GPL vmlinux 0xf012aadd udp_cmsg_send EXPORT_SYMBOL_GPL vmlinux 0xf0223e95 scsi_dh_attached_handler_name EXPORT_SYMBOL_GPL vmlinux 0xf04429b4 acpi_bus_get_status_handle EXPORT_SYMBOL_GPL vmlinux 0xf044ca09 srcutorture_get_gp_data EXPORT_SYMBOL_GPL vmlinux 0xf04c28ed uart_handle_dcd_change EXPORT_SYMBOL_GPL vmlinux 0xf05a52fe asn1_encode_oid EXPORT_SYMBOL_GPL vmlinux 0xf05fbf09 pci_pio_to_address +EXPORT_SYMBOL_GPL vmlinux 0xf063bcfa fwnode_graph_get_port_parent EXPORT_SYMBOL_GPL vmlinux 0xf0696401 acpi_pci_detect_ejectable -EXPORT_SYMBOL_GPL vmlinux 0xf07da6a2 fib_nexthop_info EXPORT_SYMBOL_GPL vmlinux 0xf08050c4 rhashtable_walk_start_check EXPORT_SYMBOL_GPL vmlinux 0xf0855ffc devm_clk_bulk_get_all EXPORT_SYMBOL_GPL vmlinux 0xf0910075 sfp_bus_del_upstream EXPORT_SYMBOL_GPL vmlinux 0xf094b1f8 shmem_file_setup_with_mnt -EXPORT_SYMBOL_GPL vmlinux 0xf0990030 skb_mpls_update_lse +EXPORT_SYMBOL_GPL vmlinux 0xf096ed79 nf_hook_entries_delete_raw EXPORT_SYMBOL_GPL vmlinux 0xf0a0c69d init_iova_domain EXPORT_SYMBOL_GPL vmlinux 0xf0ac8f14 bd_unlink_disk_holder EXPORT_SYMBOL_GPL vmlinux 0xf0b540e8 sysfs_group_change_owner -EXPORT_SYMBOL_GPL vmlinux 0xf0c349c6 sk_clear_memalloc -EXPORT_SYMBOL_GPL vmlinux 0xf0cb0ce4 __dev_change_net_namespace +EXPORT_SYMBOL_GPL vmlinux 0xf0be2ff9 bpf_map_inc +EXPORT_SYMBOL_GPL vmlinux 0xf0be6258 fwnode_get_nth_parent +EXPORT_SYMBOL_GPL vmlinux 0xf0cb587a device_dma_supported EXPORT_SYMBOL_GPL vmlinux 0xf0cff11e __tracepoint_error_report_end EXPORT_SYMBOL_GPL vmlinux 0xf0d478c7 list_lru_add EXPORT_SYMBOL_GPL vmlinux 0xf0e6e34c dev_pm_opp_get_voltage EXPORT_SYMBOL_GPL vmlinux 0xf0f152c0 bus_set_iommu +EXPORT_SYMBOL_GPL vmlinux 0xf0fa60c1 nvme_wait_reset EXPORT_SYMBOL_GPL vmlinux 0xf0fc70d8 __devm_pci_epc_create EXPORT_SYMBOL_GPL vmlinux 0xf0fc822f ata_sas_tport_delete -EXPORT_SYMBOL_GPL vmlinux 0xf100224d ip_tunnel_init_net -EXPORT_SYMBOL_GPL vmlinux 0xf1050ea2 cn_add_callback -EXPORT_SYMBOL_GPL vmlinux 0xf116fc60 devlink_net_set EXPORT_SYMBOL_GPL vmlinux 0xf11edb9c dev_pm_opp_set_clkname EXPORT_SYMBOL_GPL vmlinux 0xf11ef296 platform_bus +EXPORT_SYMBOL_GPL vmlinux 0xf11f2d56 ptp_classify_raw EXPORT_SYMBOL_GPL vmlinux 0xf1215fff thermal_zone_get_zone_by_name EXPORT_SYMBOL_GPL vmlinux 0xf12cf631 to_nd_desc -EXPORT_SYMBOL_GPL vmlinux 0xf13bd42c nf_ct_hook -EXPORT_SYMBOL_GPL vmlinux 0xf15c0ca7 xfrm_output -EXPORT_SYMBOL_GPL vmlinux 0xf16a49d1 skb_consume_udp -EXPORT_SYMBOL_GPL vmlinux 0xf176f91f spi_register_controller +EXPORT_SYMBOL_GPL vmlinux 0xf143c876 call_switchdev_notifiers EXPORT_SYMBOL_GPL vmlinux 0xf184d189 kernel_power_off EXPORT_SYMBOL_GPL vmlinux 0xf18d1396 posix_acl_create EXPORT_SYMBOL_GPL vmlinux 0xf19bf93b badblocks_exit @@ -18747,15 +18757,16 @@ EXPORT_SYMBOL_GPL vmlinux 0xf1cd8929 kvm_read_and_reset_apf_flags EXPORT_SYMBOL_GPL vmlinux 0xf1da5d18 x86_vector_domain EXPORT_SYMBOL_GPL vmlinux 0xf1dc4db1 dax_inode -EXPORT_SYMBOL_GPL vmlinux 0xf1e739e5 nvme_host_path_error EXPORT_SYMBOL_GPL vmlinux 0xf1e82492 fuse_do_ioctl EXPORT_SYMBOL_GPL vmlinux 0xf20ac107 kernfs_notify +EXPORT_SYMBOL_GPL vmlinux 0xf20def98 fib_add_nexthop EXPORT_SYMBOL_GPL vmlinux 0xf20f6903 pm_stay_awake EXPORT_SYMBOL_GPL vmlinux 0xf21dd276 sbitmap_queue_show EXPORT_SYMBOL_GPL vmlinux 0xf21e1f9b disable_percpu_irq EXPORT_SYMBOL_GPL vmlinux 0xf22747a9 regulator_get_error_flags EXPORT_SYMBOL_GPL vmlinux 0xf231c91c dev_attr_ncq_prio_enable EXPORT_SYMBOL_GPL vmlinux 0xf2366dd1 free_io_pgtable_ops +EXPORT_SYMBOL_GPL vmlinux 0xf2572154 __SCK__tp_func_devlink_hwmsg EXPORT_SYMBOL_GPL vmlinux 0xf25a5905 vfio_group_iommu_domain EXPORT_SYMBOL_GPL vmlinux 0xf262dc38 irq_find_matching_fwspec EXPORT_SYMBOL_GPL vmlinux 0xf272a189 blk_mq_debugfs_rq_show @@ -18765,23 +18776,23 @@ EXPORT_SYMBOL_GPL vmlinux 0xf2a8ca86 sysfs_unbreak_active_protection EXPORT_SYMBOL_GPL vmlinux 0xf2b33cb7 memory_cgrp_subsys_on_dfl_key EXPORT_SYMBOL_GPL vmlinux 0xf2dc83e7 platform_get_resource -EXPORT_SYMBOL_GPL vmlinux 0xf2dce7e9 register_net_sysctl +EXPORT_SYMBOL_GPL vmlinux 0xf2f7851e devm_spi_mem_dirmap_create EXPORT_SYMBOL_GPL vmlinux 0xf30a5502 cpufreq_enable_boost_support EXPORT_SYMBOL_GPL vmlinux 0xf311e156 key_being_used_for EXPORT_SYMBOL_GPL vmlinux 0xf31632e0 ezx_pcap_read EXPORT_SYMBOL_GPL vmlinux 0xf31b3fd1 workqueue_set_max_active +EXPORT_SYMBOL_GPL vmlinux 0xf31e3deb device_del EXPORT_SYMBOL_GPL vmlinux 0xf32bd8d6 software_node_fwnode -EXPORT_SYMBOL_GPL vmlinux 0xf32e87fd device_remove_file_self EXPORT_SYMBOL_GPL vmlinux 0xf331236f btree_geo32 EXPORT_SYMBOL_GPL vmlinux 0xf34f1106 kthread_unpark EXPORT_SYMBOL_GPL vmlinux 0xf352023f memory_cgrp_subsys_enabled_key -EXPORT_SYMBOL_GPL vmlinux 0xf35821a9 ip6_input -EXPORT_SYMBOL_GPL vmlinux 0xf35c53af lwtunnel_output +EXPORT_SYMBOL_GPL vmlinux 0xf36f1205 tcp_reno_undo_cwnd EXPORT_SYMBOL_GPL vmlinux 0xf370538c usb_match_one_id EXPORT_SYMBOL_GPL vmlinux 0xf3795d00 devfreq_event_get_edev_count EXPORT_SYMBOL_GPL vmlinux 0xf3797506 mpi_ec_deinit EXPORT_SYMBOL_GPL vmlinux 0xf3808cb1 get_state_synchronize_rcu EXPORT_SYMBOL_GPL vmlinux 0xf392221b dma_async_device_channel_unregister +EXPORT_SYMBOL_GPL vmlinux 0xf3a66447 get_net_ns_by_pid EXPORT_SYMBOL_GPL vmlinux 0xf3b451ca kdb_poll_funcs EXPORT_SYMBOL_GPL vmlinux 0xf3b5265c bsg_job_done EXPORT_SYMBOL_GPL vmlinux 0xf3b95d79 btree_remove @@ -18794,26 +18805,28 @@ EXPORT_SYMBOL_GPL vmlinux 0xf3e10a55 scsi_host_complete_all_commands EXPORT_SYMBOL_GPL vmlinux 0xf3f31393 dma_vmap_noncontiguous EXPORT_SYMBOL_GPL vmlinux 0xf3f63960 pci_epc_multi_mem_init -EXPORT_SYMBOL_GPL vmlinux 0xf427b153 spi_mem_dirmap_write EXPORT_SYMBOL_GPL vmlinux 0xf43860f6 dev_pm_domain_set EXPORT_SYMBOL_GPL vmlinux 0xf44aaaac pm_clk_remove_clk EXPORT_SYMBOL_GPL vmlinux 0xf4548ef5 crypto_find_alg +EXPORT_SYMBOL_GPL vmlinux 0xf45551df fwnode_get_next_parent EXPORT_SYMBOL_GPL vmlinux 0xf4689d50 linkmode_set_pause +EXPORT_SYMBOL_GPL vmlinux 0xf46c0dea nvme_reset_ctrl +EXPORT_SYMBOL_GPL vmlinux 0xf475c3fa devlink_params_register EXPORT_SYMBOL_GPL vmlinux 0xf47654df irq_check_status_bit EXPORT_SYMBOL_GPL vmlinux 0xf484772f icc_node_create -EXPORT_SYMBOL_GPL vmlinux 0xf49daeb9 devlink_port_health_reporter_create +EXPORT_SYMBOL_GPL vmlinux 0xf489a62a ip6_update_pmtu EXPORT_SYMBOL_GPL vmlinux 0xf49ef71a gpiod_get_raw_value_cansleep EXPORT_SYMBOL_GPL vmlinux 0xf4af35c2 rcu_gp_is_normal -EXPORT_SYMBOL_GPL vmlinux 0xf4b93a96 __tracepoint_sched_util_est_cfs_tp EXPORT_SYMBOL_GPL vmlinux 0xf4bcd2e9 scsi_dh_activate EXPORT_SYMBOL_GPL vmlinux 0xf4cd9f8f reset_control_bulk_release EXPORT_SYMBOL_GPL vmlinux 0xf4e35e28 sbitmap_prepare_to_wait EXPORT_SYMBOL_GPL vmlinux 0xf4f69d1f clk_hw_unregister_gate EXPORT_SYMBOL_GPL vmlinux 0xf4fabb1a debugfs_lookup -EXPORT_SYMBOL_GPL vmlinux 0xf51f403b __udp6_lib_lookup +EXPORT_SYMBOL_GPL vmlinux 0xf522c5fd fwnode_property_present EXPORT_SYMBOL_GPL vmlinux 0xf5255fd7 pci_device_is_present EXPORT_SYMBOL_GPL vmlinux 0xf5291f59 class_dev_iter_next EXPORT_SYMBOL_GPL vmlinux 0xf539a156 usb_wakeup_enabled_descendants +EXPORT_SYMBOL_GPL vmlinux 0xf542ec28 inet_hash_connect EXPORT_SYMBOL_GPL vmlinux 0xf548988d put_iova_domain EXPORT_SYMBOL_GPL vmlinux 0xf54bd49b lcm EXPORT_SYMBOL_GPL vmlinux 0xf54f346c wakeup_sources_walk_start @@ -18821,38 +18834,31 @@ EXPORT_SYMBOL_GPL vmlinux 0xf553318d cpuidle_pause_and_lock EXPORT_SYMBOL_GPL vmlinux 0xf5607147 acpi_dev_pm_attach EXPORT_SYMBOL_GPL vmlinux 0xf5641acb watchdog_set_last_hw_keepalive -EXPORT_SYMBOL_GPL vmlinux 0xf57359b2 nfs_ssc_register EXPORT_SYMBOL_GPL vmlinux 0xf57bf846 usb_driver_release_interface -EXPORT_SYMBOL_GPL vmlinux 0xf5908663 xdp_rxq_info_unused EXPORT_SYMBOL_GPL vmlinux 0xf590d6c7 __SCK__tp_func_non_standard_event EXPORT_SYMBOL_GPL vmlinux 0xf5a1573f dev_pm_genpd_suspend EXPORT_SYMBOL_GPL vmlinux 0xf5a3ba99 linear_range_values_in_range EXPORT_SYMBOL_GPL vmlinux 0xf5a691cd invalidate_bh_lrus -EXPORT_SYMBOL_GPL vmlinux 0xf5b0f690 switchdev_handle_port_obj_del EXPORT_SYMBOL_GPL vmlinux 0xf5b859cf unregister_ftrace_function EXPORT_SYMBOL_GPL vmlinux 0xf5c786a7 md_rdev_init -EXPORT_SYMBOL_GPL vmlinux 0xf5d5448b vxlan_fdb_replay EXPORT_SYMBOL_GPL vmlinux 0xf5d6e5c6 __cpufreq_driver_target EXPORT_SYMBOL_GPL vmlinux 0xf5d73e4a device_init_wakeup EXPORT_SYMBOL_GPL vmlinux 0xf5ddb182 __bio_crypt_clone -EXPORT_SYMBOL_GPL vmlinux 0xf5de083e sk_msg_wait_data EXPORT_SYMBOL_GPL vmlinux 0xf5e8f0e5 devres_alloc_node EXPORT_SYMBOL_GPL vmlinux 0xf5f370e0 async_schedule_node EXPORT_SYMBOL_GPL vmlinux 0xf5fbd938 cgroup_attach_task_all +EXPORT_SYMBOL_GPL vmlinux 0xf60c5f9b fwnode_graph_get_remote_node EXPORT_SYMBOL_GPL vmlinux 0xf60dc45f subsys_system_register -EXPORT_SYMBOL_GPL vmlinux 0xf611ae61 spi_add_device EXPORT_SYMBOL_GPL vmlinux 0xf617801a dev_pm_opp_get_level EXPORT_SYMBOL_GPL vmlinux 0xf6192bde serial8250_em485_config -EXPORT_SYMBOL_GPL vmlinux 0xf61ae18c ipv4_sk_redirect EXPORT_SYMBOL_GPL vmlinux 0xf61da7e6 ata_ehi_push_desc EXPORT_SYMBOL_GPL vmlinux 0xf6230e49 fpregs_mark_activate EXPORT_SYMBOL_GPL vmlinux 0xf62ac0d2 arizona_free_irq EXPORT_SYMBOL_GPL vmlinux 0xf64aaa25 alarm_init -EXPORT_SYMBOL_GPL vmlinux 0xf64c4e6c inet_csk_route_req EXPORT_SYMBOL_GPL vmlinux 0xf654adbb dma_need_sync EXPORT_SYMBOL_GPL vmlinux 0xf663ee2f pcap_adc_sync +EXPORT_SYMBOL_GPL vmlinux 0xf67cb0ab xfrm_audit_state_icvfail EXPORT_SYMBOL_GPL vmlinux 0xf67f9d73 fuse_conn_destroy -EXPORT_SYMBOL_GPL vmlinux 0xf684ed97 __nvme_check_ready EXPORT_SYMBOL_GPL vmlinux 0xf6a28554 region_intersects EXPORT_SYMBOL_GPL vmlinux 0xf6aee611 irq_chip_enable_parent EXPORT_SYMBOL_GPL vmlinux 0xf6b7bca0 kobject_rename @@ -18871,14 +18877,12 @@ EXPORT_SYMBOL_GPL vmlinux 0xf74bb274 mod_delayed_work_on EXPORT_SYMBOL_GPL vmlinux 0xf74e7c93 jump_label_rate_limit EXPORT_SYMBOL_GPL vmlinux 0xf75897cc rio_mport_chk_dev_access -EXPORT_SYMBOL_GPL vmlinux 0xf75bf1fa switchdev_port_obj_add EXPORT_SYMBOL_GPL vmlinux 0xf767ca35 fixed_percpu_data -EXPORT_SYMBOL_GPL vmlinux 0xf768e22c __tracepoint_sched_util_est_se_tp EXPORT_SYMBOL_GPL vmlinux 0xf76bb3da amd_iommu_is_attach_deferred -EXPORT_SYMBOL_GPL vmlinux 0xf77a17f3 xfrm_state_afinfo_get_rcu EXPORT_SYMBOL_GPL vmlinux 0xf782fb07 percpu_ref_switch_to_atomic_sync EXPORT_SYMBOL_GPL vmlinux 0xf78819a5 nvdimm_region_notify EXPORT_SYMBOL_GPL vmlinux 0xf788b6ce sbitmap_bitmap_show +EXPORT_SYMBOL_GPL vmlinux 0xf78a6296 tun_get_socket EXPORT_SYMBOL_GPL vmlinux 0xf795916a __traceiter_wbc_writepage EXPORT_SYMBOL_GPL vmlinux 0xf7afb369 btree_init EXPORT_SYMBOL_GPL vmlinux 0xf7b97a05 regmap_field_bulk_free @@ -18886,22 +18890,27 @@ EXPORT_SYMBOL_GPL vmlinux 0xf7c31b91 __pci_epf_register_driver EXPORT_SYMBOL_GPL vmlinux 0xf7ca03f2 usb_intf_get_dma_device EXPORT_SYMBOL_GPL vmlinux 0xf7d41e0c noop_invalidatepage +EXPORT_SYMBOL_GPL vmlinux 0xf7d5020e __SCK__tp_func_neigh_cleanup_and_release EXPORT_SYMBOL_GPL vmlinux 0xf7d961d8 clk_hw_unregister_composite EXPORT_SYMBOL_GPL vmlinux 0xf7dfc779 genphy_c45_config_aneg EXPORT_SYMBOL_GPL vmlinux 0xf81a585c blk_ksm_init_passthrough +EXPORT_SYMBOL_GPL vmlinux 0xf81ae3e1 spi_res_alloc EXPORT_SYMBOL_GPL vmlinux 0xf81ec77b tty_port_tty_wakeup EXPORT_SYMBOL_GPL vmlinux 0xf82f3657 work_on_cpu +EXPORT_SYMBOL_GPL vmlinux 0xf83c62cd rtnl_af_register +EXPORT_SYMBOL_GPL vmlinux 0xf85c92c9 crypto_alloc_skcipher +EXPORT_SYMBOL_GPL vmlinux 0xf85fa5fc fwnode_get_next_child_node EXPORT_SYMBOL_GPL vmlinux 0xf85ff0d1 driver_remove_file EXPORT_SYMBOL_GPL vmlinux 0xf86e8983 vmbus_connection +EXPORT_SYMBOL_GPL vmlinux 0xf87760cf put_device EXPORT_SYMBOL_GPL vmlinux 0xf881cecd load_fixmap_gdt EXPORT_SYMBOL_GPL vmlinux 0xf8a55add __fat_fs_error +EXPORT_SYMBOL_GPL vmlinux 0xf8ac3d7e raw_unhash_sk EXPORT_SYMBOL_GPL vmlinux 0xf8aca425 iommu_sva_get_pasid -EXPORT_SYMBOL_GPL vmlinux 0xf8bfcff9 __xdp_build_skb_from_frame +EXPORT_SYMBOL_GPL vmlinux 0xf8af10fd perf_event_refresh EXPORT_SYMBOL_GPL vmlinux 0xf8e0acc1 acomp_request_alloc EXPORT_SYMBOL_GPL vmlinux 0xf8e1209a regulator_list_hardware_vsel -EXPORT_SYMBOL_GPL vmlinux 0xf8e12f05 crypto_stats_akcipher_decrypt EXPORT_SYMBOL_GPL vmlinux 0xf8e1c84d pci_set_host_bridge_release -EXPORT_SYMBOL_GPL vmlinux 0xf8e7acba ip6_datagram_recv_ctl EXPORT_SYMBOL_GPL vmlinux 0xf8e871b9 usb_deregister_dev EXPORT_SYMBOL_GPL vmlinux 0xf8f3a0fb ata_ratelimit EXPORT_SYMBOL_GPL vmlinux 0xf8fe3986 pat_pfn_immune_to_uc_mtrr @@ -18911,31 +18920,32 @@ EXPORT_SYMBOL_GPL vmlinux 0xf920683d sysfs_update_group EXPORT_SYMBOL_GPL vmlinux 0xf921de1e __page_file_mapping EXPORT_SYMBOL_GPL vmlinux 0xf92c6caa of_clk_hw_register -EXPORT_SYMBOL_GPL vmlinux 0xf92f17d5 sock_diag_destroy EXPORT_SYMBOL_GPL vmlinux 0xf93ac1c3 rio_unregister_mport +EXPORT_SYMBOL_GPL vmlinux 0xf9518bd4 nvme_init_ctrl_finish EXPORT_SYMBOL_GPL vmlinux 0xf95322f4 kthread_parkme EXPORT_SYMBOL_GPL vmlinux 0xf955e9c5 bprintf +EXPORT_SYMBOL_GPL vmlinux 0xf95be77d get_device EXPORT_SYMBOL_GPL vmlinux 0xf95c7503 gpiochip_add_pin_range +EXPORT_SYMBOL_GPL vmlinux 0xf977757c ip_icmp_error_rfc4884 EXPORT_SYMBOL_GPL vmlinux 0xf9920b5c usb_hcd_check_unlink_urb EXPORT_SYMBOL_GPL vmlinux 0xf9a054b5 __round_jiffies EXPORT_SYMBOL_GPL vmlinux 0xf9d9df01 mbox_client_peek_data EXPORT_SYMBOL_GPL vmlinux 0xf9e299c1 regulator_register EXPORT_SYMBOL_GPL vmlinux 0xf9ed8e83 blk_rq_unprep_clone EXPORT_SYMBOL_GPL vmlinux 0xf9f647e4 em_dev_register_perf_domain +EXPORT_SYMBOL_GPL vmlinux 0xfa13ef25 devlink_region_snapshot_id_put EXPORT_SYMBOL_GPL vmlinux 0xfa1d846e regmap_test_bits EXPORT_SYMBOL_GPL vmlinux 0xfa1eb910 unregister_syscore_ops EXPORT_SYMBOL_GPL vmlinux 0xfa299907 dma_buf_vmap -EXPORT_SYMBOL_GPL vmlinux 0xfa30dead __traceiter_pelt_cfs_tp +EXPORT_SYMBOL_GPL vmlinux 0xfa29a122 bpf_offload_dev_create EXPORT_SYMBOL_GPL vmlinux 0xfa349688 aer_recover_queue EXPORT_SYMBOL_GPL vmlinux 0xfa35044a alternatives_patched EXPORT_SYMBOL_GPL vmlinux 0xfa447715 klp_get_state -EXPORT_SYMBOL_GPL vmlinux 0xfa57f4ba sched_trace_cfs_rq_cpu EXPORT_SYMBOL_GPL vmlinux 0xfa666974 queue_work_node EXPORT_SYMBOL_GPL vmlinux 0xfa690589 netdev_cmd_to_name EXPORT_SYMBOL_GPL vmlinux 0xfa6a47fe usb_register_device_driver EXPORT_SYMBOL_GPL vmlinux 0xfa7ca473 crypto_register_ahash EXPORT_SYMBOL_GPL vmlinux 0xfa8e6751 usb_hcd_platform_shutdown -EXPORT_SYMBOL_GPL vmlinux 0xfa8fd44e ethnl_cable_test_alloc EXPORT_SYMBOL_GPL vmlinux 0xfa942ee4 acpi_subsys_complete EXPORT_SYMBOL_GPL vmlinux 0xfaa4a660 __regmap_init_mmio_clk EXPORT_SYMBOL_GPL vmlinux 0xfaa6c633 sbitmap_show @@ -18943,29 +18953,27 @@ EXPORT_SYMBOL_GPL vmlinux 0xfab30dc0 mdio_bus_exit EXPORT_SYMBOL_GPL vmlinux 0xfab53ed9 pinctrl_gpio_can_use_line EXPORT_SYMBOL_GPL vmlinux 0xfac41522 platform_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfad0ea84 ip6_datagram_send_ctl EXPORT_SYMBOL_GPL vmlinux 0xfad9c827 kill_dax EXPORT_SYMBOL_GPL vmlinux 0xfaf9f195 input_ff_event EXPORT_SYMBOL_GPL vmlinux 0xfb1428ec dpm_for_each_dev EXPORT_SYMBOL_GPL vmlinux 0xfb177ac1 register_user_hw_breakpoint EXPORT_SYMBOL_GPL vmlinux 0xfb201a1f virtqueue_enable_cb_prepare -EXPORT_SYMBOL_GPL vmlinux 0xfb308163 __SCK__tp_func_pelt_rt_tp EXPORT_SYMBOL_GPL vmlinux 0xfb3133c8 scsi_host_busy_iter EXPORT_SYMBOL_GPL vmlinux 0xfb32b30f ring_buffer_read_prepare_sync EXPORT_SYMBOL_GPL vmlinux 0xfb39bcad gpiod_set_value EXPORT_SYMBOL_GPL vmlinux 0xfb3dfe8a page_reporting_unregister EXPORT_SYMBOL_GPL vmlinux 0xfb3e0c05 devm_pci_epc_destroy -EXPORT_SYMBOL_GPL vmlinux 0xfb6843e0 __SCK__tp_func_napi_poll +EXPORT_SYMBOL_GPL vmlinux 0xfb49db26 bpf_offload_dev_netdev_unregister EXPORT_SYMBOL_GPL vmlinux 0xfb6eedf9 power_group_name EXPORT_SYMBOL_GPL vmlinux 0xfb8427fc query_asymmetric_key EXPORT_SYMBOL_GPL vmlinux 0xfb8871b3 usb_choose_configuration -EXPORT_SYMBOL_GPL vmlinux 0xfb91e9dd sched_trace_cfs_rq_path EXPORT_SYMBOL_GPL vmlinux 0xfb921e00 hvpci_block_ops EXPORT_SYMBOL_GPL vmlinux 0xfb97c39c led_trigger_blink_oneshot EXPORT_SYMBOL_GPL vmlinux 0xfb9f5d17 crypto_alloc_kpp EXPORT_SYMBOL_GPL vmlinux 0xfba6a1b0 gpiod_direction_output_raw EXPORT_SYMBOL_GPL vmlinux 0xfbb6c84c balloon_aops EXPORT_SYMBOL_GPL vmlinux 0xfbbd41ca no_action -EXPORT_SYMBOL_GPL vmlinux 0xfbc17219 nvme_start_queues EXPORT_SYMBOL_GPL vmlinux 0xfbc74279 tpm_calc_ordinal_duration EXPORT_SYMBOL_GPL vmlinux 0xfbd958d3 attribute_container_register EXPORT_SYMBOL_GPL vmlinux 0xfbeb1087 gpiod_get_value @@ -18977,59 +18985,57 @@ EXPORT_SYMBOL_GPL vmlinux 0xfc19bc45 crypto_dh_encode_key EXPORT_SYMBOL_GPL vmlinux 0xfc201b66 sprint_oid EXPORT_SYMBOL_GPL vmlinux 0xfc3b4246 acpi_bus_update_power +EXPORT_SYMBOL_GPL vmlinux 0xfc54dc9b ncsi_stop_dev EXPORT_SYMBOL_GPL vmlinux 0xfc5f6d18 __of_reset_control_get EXPORT_SYMBOL_GPL vmlinux 0xfc6dbf9a driver_register EXPORT_SYMBOL_GPL vmlinux 0xfc7d8b2c dax_driver_unregister +EXPORT_SYMBOL_GPL vmlinux 0xfc7de47a __SCK__tp_func_neigh_update EXPORT_SYMBOL_GPL vmlinux 0xfc8115a0 fat_get_dotdot_entry +EXPORT_SYMBOL_GPL vmlinux 0xfc878f34 nvme_cancel_tagset EXPORT_SYMBOL_GPL vmlinux 0xfc9d929e gpio_to_desc EXPORT_SYMBOL_GPL vmlinux 0xfca340d4 tty_kopen_exclusive EXPORT_SYMBOL_GPL vmlinux 0xfca67699 rdev_get_id -EXPORT_SYMBOL_GPL vmlinux 0xfcbdf3f1 fib_rules_seq_read EXPORT_SYMBOL_GPL vmlinux 0xfcbfa334 cpuidle_register_driver EXPORT_SYMBOL_GPL vmlinux 0xfcbfec70 add_memory_driver_managed EXPORT_SYMBOL_GPL vmlinux 0xfcc00e6b kernfs_put EXPORT_SYMBOL_GPL vmlinux 0xfcc1edd3 memory_block_size_bytes -EXPORT_SYMBOL_GPL vmlinux 0xfcde67af ip_tunnel_xmit EXPORT_SYMBOL_GPL vmlinux 0xfce3b8e2 platform_device_put EXPORT_SYMBOL_GPL vmlinux 0xfce8ee53 sata_link_hardreset EXPORT_SYMBOL_GPL vmlinux 0xfcf66535 irq_setup_generic_chip EXPORT_SYMBOL_GPL vmlinux 0xfd09ed39 badblocks_check EXPORT_SYMBOL_GPL vmlinux 0xfd1cb7ae phy_init -EXPORT_SYMBOL_GPL vmlinux 0xfd427e64 skb_mpls_pop EXPORT_SYMBOL_GPL vmlinux 0xfd529f7f fat_search_long -EXPORT_SYMBOL_GPL vmlinux 0xfd53fad2 cookie_tcp_reqsk_alloc -EXPORT_SYMBOL_GPL vmlinux 0xfd577f28 dev_fill_forward_path -EXPORT_SYMBOL_GPL vmlinux 0xfd6f4877 device_unregister EXPORT_SYMBOL_GPL vmlinux 0xfd7243c7 erst_disable EXPORT_SYMBOL_GPL vmlinux 0xfd943e36 vmbus_request_addr -EXPORT_SYMBOL_GPL vmlinux 0xfda1ca41 perf_pmu_register EXPORT_SYMBOL_GPL vmlinux 0xfdbd7a17 crypto_get_attr_type -EXPORT_SYMBOL_GPL vmlinux 0xfdbe2e8b sk_msg_return -EXPORT_SYMBOL_GPL vmlinux 0xfdc243d6 spi_statistics_add_transfer_stats +EXPORT_SYMBOL_GPL vmlinux 0xfdc8b6fb inet_twsk_hashdance EXPORT_SYMBOL_GPL vmlinux 0xfdddbb0f crypto_ahash_finup EXPORT_SYMBOL_GPL vmlinux 0xfdea2d04 alarm_cancel EXPORT_SYMBOL_GPL vmlinux 0xfdf120bf dev_pm_opp_find_level_ceil +EXPORT_SYMBOL_GPL vmlinux 0xfdf203c6 bpf_map_inc_not_zero EXPORT_SYMBOL_GPL vmlinux 0xfdf3569d aead_register_instance EXPORT_SYMBOL_GPL vmlinux 0xfdf5a6aa pm_generic_resume EXPORT_SYMBOL_GPL vmlinux 0xfdf61dfb fat_sync_inode -EXPORT_SYMBOL_GPL vmlinux 0xfe0e3416 ping_queue_rcv_skb +EXPORT_SYMBOL_GPL vmlinux 0xfe073f6c validate_xmit_skb_list EXPORT_SYMBOL_GPL vmlinux 0xfe0e7cd3 apei_exec_post_unmap_gars EXPORT_SYMBOL_GPL vmlinux 0xfe179b9b pci_iomap_wc_range EXPORT_SYMBOL_GPL vmlinux 0xfe1a7a7b mpi_point_release +EXPORT_SYMBOL_GPL vmlinux 0xfe1a999d __nf_ip6_route EXPORT_SYMBOL_GPL vmlinux 0xfe1efd93 synth_event_add_val +EXPORT_SYMBOL_GPL vmlinux 0xfe2623b7 ping_hash EXPORT_SYMBOL_GPL vmlinux 0xfe2eee40 regmap_can_raw_write EXPORT_SYMBOL_GPL vmlinux 0xfe3a6de3 alarm_try_to_cancel EXPORT_SYMBOL_GPL vmlinux 0xfe3fcb45 regulator_register_supply_alias EXPORT_SYMBOL_GPL vmlinux 0xfe4345e9 usb_get_maximum_ssp_rate EXPORT_SYMBOL_GPL vmlinux 0xfe476039 ktime_get_resolution_ns +EXPORT_SYMBOL_GPL vmlinux 0xfe7aa0e5 __traceiter_kfree_skb EXPORT_SYMBOL_GPL vmlinux 0xfe801242 devres_remove_group -EXPORT_SYMBOL_GPL vmlinux 0xfe871b93 skcipher_alloc_instance_simple +EXPORT_SYMBOL_GPL vmlinux 0xfe82e847 fw_devlink_purge_absent_suppliers EXPORT_SYMBOL_GPL vmlinux 0xfe89cc64 trace_array_set_clr_event EXPORT_SYMBOL_GPL vmlinux 0xfe8cdb84 ring_buffer_alloc_read_page EXPORT_SYMBOL_GPL vmlinux 0xfe990052 gpio_free EXPORT_SYMBOL_GPL vmlinux 0xfe9bea60 __tracepoint_block_rq_insert EXPORT_SYMBOL_GPL vmlinux 0xfeaa391b __page_mapcount -EXPORT_SYMBOL_GPL vmlinux 0xfeaeea1a devlink_alloc EXPORT_SYMBOL_GPL vmlinux 0xfecb189d ata_host_start EXPORT_SYMBOL_GPL vmlinux 0xfecd6cbd fsnotify_destroy_mark EXPORT_SYMBOL_GPL vmlinux 0xfeec2635 virtqueue_get_used_addr @@ -19037,10 +19043,10 @@ EXPORT_SYMBOL_GPL vmlinux 0xfef00fd7 dma_max_mapping_size EXPORT_SYMBOL_GPL vmlinux 0xff05fa13 vring_interrupt EXPORT_SYMBOL_GPL vmlinux 0xff0744ad acpi_dma_configure_id -EXPORT_SYMBOL_GPL vmlinux 0xff0f959f devlink_dpipe_table_counter_enabled EXPORT_SYMBOL_GPL vmlinux 0xff1666f3 reset_control_bulk_assert EXPORT_SYMBOL_GPL vmlinux 0xff1e67b9 setup_APIC_eilvt EXPORT_SYMBOL_GPL vmlinux 0xff291ecf clk_unregister_divider +EXPORT_SYMBOL_GPL vmlinux 0xff489205 tcp_bpf_update_proto EXPORT_SYMBOL_GPL vmlinux 0xff4f2981 ata_bmdma_stop EXPORT_SYMBOL_GPL vmlinux 0xff64207f irq_domain_free_fwnode EXPORT_SYMBOL_GPL vmlinux 0xff71a6ae regulator_get_voltage_rdev @@ -19050,16 +19056,12 @@ EXPORT_SYMBOL_GPL vmlinux 0xff86a47e __dax_pmem_probe EXPORT_SYMBOL_GPL vmlinux 0xff8e74e2 arch_haltpoll_enable EXPORT_SYMBOL_GPL vmlinux 0xff9e23d1 hugetlb_cgrp_subsys_on_dfl_key -EXPORT_SYMBOL_GPL vmlinux 0xffae2133 metadata_dst_free_percpu EXPORT_SYMBOL_GPL vmlinux 0xffae8e8b nsecs_to_jiffies EXPORT_SYMBOL_GPL vmlinux 0xffb0f17f devm_regulator_unregister_notifier EXPORT_SYMBOL_GPL vmlinux 0xffb674f8 __usb_create_hcd -EXPORT_SYMBOL_GPL vmlinux 0xffbdca87 devlink_dpipe_entry_ctx_close -EXPORT_SYMBOL_GPL vmlinux 0xffc406d5 devlink_port_type_ib_set EXPORT_SYMBOL_GPL vmlinux 0xffd295d4 uprobe_register_refctr EXPORT_SYMBOL_GPL vmlinux 0xffe1b8cd devres_remove EXPORT_SYMBOL_GPL vmlinux 0xffe63357 pm_runtime_allow -EXPORT_SYMBOL_GPL vmlinux 0xffe79b6f udp_tunnel_notify_add_rx_port EXPORT_SYMBOL_GPL vmlinux 0xfff6be32 dev_pm_opp_is_turbo EXPORT_SYMBOL_GPL vmlinux 0xfffad1ee gpiochip_generic_request EXPORT_SYMBOL_GPL vmlinux 0xfffdb1ef dm_device_name @@ -19082,5 +19084,5 @@ -NVME_TARGET_PASSTHRU EXPORT_SYMBOL_GPL 0x1c2605b5 nvme_command_effects vmlinux -NVME_TARGET_PASSTHRU EXPORT_SYMBOL_GPL 0x33c67fda nvme_put_ns vmlinux -NVME_TARGET_PASSTHRU EXPORT_SYMBOL_GPL 0x70e6ca71 nvme_find_get_ns vmlinux -NVME_TARGET_PASSTHRU EXPORT_SYMBOL_GPL 0x8de4c4cd nvme_execute_passthru_rq vmlinux -NVME_TARGET_PASSTHRU EXPORT_SYMBOL_GPL 0xb22f91b4 nvme_ctrl_from_file vmlinux +NVME_TARGET_PASSTHRU EXPORT_SYMBOL_GPL 0x1d1fe270 nvme_execute_passthru_rq vmlinux +NVME_TARGET_PASSTHRU EXPORT_SYMBOL_GPL 0x4fe05bc5 nvme_ctrl_from_file vmlinux +NVME_TARGET_PASSTHRU EXPORT_SYMBOL_GPL 0x6992e9b6 nvme_find_get_ns vmlinux +NVME_TARGET_PASSTHRU EXPORT_SYMBOL_GPL 0xb0576561 nvme_command_effects vmlinux +NVME_TARGET_PASSTHRU EXPORT_SYMBOL_GPL 0xd15fd113 nvme_put_ns vmlinux diff -u linux-azure-5.13-5.13.0/debian.azure-5.13/abi/amd64/azure.compiler linux-azure-5.13-5.13.0/debian.azure-5.13/abi/amd64/azure.compiler --- linux-azure-5.13-5.13.0/debian.azure-5.13/abi/amd64/azure.compiler +++ linux-azure-5.13-5.13.0/debian.azure-5.13/abi/amd64/azure.compiler @@ -1 +1 @@ -GCC: (Ubuntu 11.2.0-7ubuntu2) 11.2.0 +GCC: (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0 reverted: --- linux-azure-5.13-5.13.0/debian.azure-5.13/abi/amd64/ignore.modules +++ linux-azure-5.13-5.13.0.orig/debian.azure-5.13/abi/amd64/ignore.modules @@ -1 +0,0 @@ -1 reverted: --- linux-azure-5.13-5.13.0/debian.azure-5.13/abi/amd64/ignore.retpoline +++ linux-azure-5.13-5.13.0.orig/debian.azure-5.13/abi/amd64/ignore.retpoline @@ -1 +0,0 @@ -1 diff -u linux-azure-5.13-5.13.0/debian.azure-5.13/abi/version linux-azure-5.13-5.13.0/debian.azure-5.13/abi/version --- linux-azure-5.13-5.13.0/debian.azure-5.13/abi/version +++ linux-azure-5.13-5.13.0/debian.azure-5.13/abi/version @@ -1 +1 @@ -5.13.0-1009.10~20.04.0 +5.13.0-1009.10~20.04.1 diff -u linux-azure-5.13-5.13.0/debian.azure-5.13/changelog linux-azure-5.13-5.13.0/debian.azure-5.13/changelog --- linux-azure-5.13-5.13.0/debian.azure-5.13/changelog +++ linux-azure-5.13-5.13.0/debian.azure-5.13/changelog @@ -1,3 +1,18 @@ +linux-azure-5.13 (5.13.0-1009.10~20.04.2) focal; urgency=medium + + * focal/linux-azure-5.13: 5.13.0-1009.10~20.04.2 -proposed tracker + (LP: #1954781) + + * Miscellaneous Ubuntu changes + - [Config] Re-enable AUFS in Focal + - SAUCE: AUFS + - SAUCE: aufs: switch to 64-bit ino_t for s390x + + * Miscellaneous upstream changes + - mm, slub: change run-time assertion in kmalloc_index() to compile-time + + -- Marcelo Henrique Cerri Tue, 14 Dec 2021 14:04:03 -0300 + linux-azure-5.13 (5.13.0-1009.10~20.04.1) focal; urgency=medium * focal/linux-azure-5.13: 5.13.0-1009.10~20.04.1 -proposed tracker diff -u linux-azure-5.13-5.13.0/debian.azure-5.13/config/config.common.ubuntu linux-azure-5.13-5.13.0/debian.azure-5.13/config/config.common.ubuntu --- linux-azure-5.13-5.13.0/debian.azure-5.13/config/config.common.ubuntu +++ linux-azure-5.13-5.13.0/debian.azure-5.13/config/config.common.ubuntu @@ -341,6 +341,25 @@ CONFIG_AUDIT=y CONFIG_AUDITSYSCALL=y CONFIG_AUDIT_ARCH=y +CONFIG_AUFS_BDEV_LOOP=y +# CONFIG_AUFS_BRANCH_MAX_1023 is not set +CONFIG_AUFS_BRANCH_MAX_127=y +# CONFIG_AUFS_BRANCH_MAX_32767 is not set +# CONFIG_AUFS_BRANCH_MAX_511 is not set +# CONFIG_AUFS_BR_FUSE is not set +CONFIG_AUFS_BR_HFSPLUS=y +# CONFIG_AUFS_BR_RAMFS is not set +# CONFIG_AUFS_DEBUG is not set +CONFIG_AUFS_DIRREN=y +CONFIG_AUFS_EXPORT=y +# CONFIG_AUFS_FHSM is not set +CONFIG_AUFS_FS=m +# CONFIG_AUFS_HNOTIFY is not set +CONFIG_AUFS_INO_T_64=y +# CONFIG_AUFS_RDU is not set +CONFIG_AUFS_SBILIST=y +# CONFIG_AUFS_SHWH is not set +CONFIG_AUFS_XATTR=y CONFIG_AUTOFS4_FS=m CONFIG_AUTOFS_FS=m CONFIG_AUXDISPLAY=y @@ -1081,6 +1100,7 @@ # CONFIG_DEBUG_HOTPLUG_CPU0 is not set CONFIG_DEBUG_INFO=y CONFIG_DEBUG_INFO_BTF=y +CONFIG_DEBUG_INFO_BTF_MODULES=y # CONFIG_DEBUG_INFO_COMPRESSED is not set CONFIG_DEBUG_INFO_DWARF4=y # CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT is not set @@ -3896,6 +3916,7 @@ CONFIG_PAGE_POOL=y CONFIG_PAGE_REPORTING=y CONFIG_PAGE_TABLE_ISOLATION=y +CONFIG_PAHOLE_HAS_SPLIT_BTF=y # CONFIG_PANASONIC_LAPTOP is not set CONFIG_PANEL=m # CONFIG_PANEL_CHANGE_MESSAGE is not set diff -u linux-azure-5.13-5.13.0/debian.azure-5.13/scripts/helpers/local-mangle linux-azure-5.13-5.13.0/debian.azure-5.13/scripts/helpers/local-mangle --- linux-azure-5.13-5.13.0/debian.azure-5.13/scripts/helpers/local-mangle +++ linux-azure-5.13-5.13.0/debian.azure-5.13/scripts/helpers/local-mangle @@ -16,0 +17,22 @@ +# We are still supporting AUFS in focal, so make sure to re-enable it. +cat << EOF >> ${DEBIAN}/config/config.common.ubuntu +CONFIG_AUFS_BDEV_LOOP=y +# CONFIG_AUFS_BRANCH_MAX_1023 is not set +CONFIG_AUFS_BRANCH_MAX_127=y +# CONFIG_AUFS_BRANCH_MAX_32767 is not set +# CONFIG_AUFS_BRANCH_MAX_511 is not set +# CONFIG_AUFS_BR_FUSE is not set +CONFIG_AUFS_BR_HFSPLUS=y +# CONFIG_AUFS_BR_RAMFS is not set +# CONFIG_AUFS_DEBUG is not set +CONFIG_AUFS_DIRREN=y +CONFIG_AUFS_EXPORT=y +# CONFIG_AUFS_FHSM is not set +CONFIG_AUFS_FS=m +# CONFIG_AUFS_HNOTIFY is not set +CONFIG_AUFS_INO_T_64=y +# CONFIG_AUFS_RDU is not set +CONFIG_AUFS_SBILIST=y +# CONFIG_AUFS_SHWH is not set +CONFIG_AUFS_XATTR=y +EOF diff -u linux-azure-5.13-5.13.0/debian.azure-5.13/tracking-bug linux-azure-5.13-5.13.0/debian.azure-5.13/tracking-bug --- linux-azure-5.13-5.13.0/debian.azure-5.13/tracking-bug +++ linux-azure-5.13-5.13.0/debian.azure-5.13/tracking-bug @@ -1 +1 @@ -1953680 2021.11.29-1 +1954781 2021.11.29-5 diff -u linux-azure-5.13-5.13.0/debian/changelog linux-azure-5.13-5.13.0/debian/changelog --- linux-azure-5.13-5.13.0/debian/changelog +++ linux-azure-5.13-5.13.0/debian/changelog @@ -1,3 +1,18 @@ +linux-azure-5.13 (5.13.0-1009.10~20.04.2) focal; urgency=medium + + * focal/linux-azure-5.13: 5.13.0-1009.10~20.04.2 -proposed tracker + (LP: #1954781) + + * Miscellaneous Ubuntu changes + - [Config] Re-enable AUFS in Focal + - SAUCE: AUFS + - SAUCE: aufs: switch to 64-bit ino_t for s390x + + * Miscellaneous upstream changes + - mm, slub: change run-time assertion in kmalloc_index() to compile-time + + -- Marcelo Henrique Cerri Tue, 14 Dec 2021 14:04:03 -0300 + linux-azure-5.13 (5.13.0-1009.10~20.04.1) focal; urgency=medium * focal/linux-azure-5.13: 5.13.0-1009.10~20.04.1 -proposed tracker diff -u linux-azure-5.13-5.13.0/drivers/block/loop.c linux-azure-5.13-5.13.0/drivers/block/loop.c --- linux-azure-5.13-5.13.0/drivers/block/loop.c +++ linux-azure-5.13-5.13.0/drivers/block/loop.c @@ -688,6 +688,15 @@ lo->use_dio); } +static struct file *loop_real_file(struct file *file) +{ + struct file *f = NULL; + + if (file->f_path.dentry->d_sb->s_op->real_loop) + f = file->f_path.dentry->d_sb->s_op->real_loop(file); + return f; +} + static void loop_reread_partitions(struct loop_device *lo, struct block_device *bdev) { @@ -746,6 +755,7 @@ { struct file *file = fget(arg); struct file *old_file; + struct file *f, *virt_file = NULL, *old_virt_file; int error; bool partscan; bool is_loop; @@ -765,11 +775,19 @@ if (!(lo->lo_flags & LO_FLAGS_READ_ONLY)) goto out_err; + f = loop_real_file(file); + if (f) { + virt_file = file; + file = f; + get_file(file); + } + error = loop_validate_file(file, bdev); if (error) goto out_err; old_file = lo->lo_backing_file; + old_virt_file = lo->lo_backing_virt_file; error = -EINVAL; @@ -781,6 +799,7 @@ blk_mq_freeze_queue(lo->lo_queue); mapping_set_gfp_mask(old_file->f_mapping, lo->old_gfp_mask); lo->lo_backing_file = file; + lo->lo_backing_virt_file = virt_file; lo->old_gfp_mask = mapping_gfp_mask(file->f_mapping); mapping_set_gfp_mask(file->f_mapping, lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS)); @@ -803,6 +822,8 @@ * dependency. */ fput(old_file); + if (old_virt_file) + fput(old_virt_file); if (partscan) loop_reread_partitions(lo, bdev); return 0; @@ -811,9 +832,29 @@ loop_global_unlock(lo, is_loop); out_putf: fput(file); + if (virt_file) + fput(virt_file); return error; } +/* + * for AUFS + * no get/put for file. + */ +struct file *loop_backing_file(struct super_block *sb) +{ + struct file *ret; + struct loop_device *l; + + ret = NULL; + if (MAJOR(sb->s_dev) == LOOP_MAJOR) { + l = sb->s_bdev->bd_disk->private_data; + ret = l->lo_backing_file; + } + return ret; +} +EXPORT_SYMBOL_GPL(loop_backing_file); + /* loop sysfs attributes */ static ssize_t loop_attr_show(struct device *dev, char *page, @@ -1120,6 +1161,7 @@ const struct loop_config *config) { struct file *file = fget(config->fd); + struct file *f, *virt_file = NULL; struct inode *inode; struct address_space *mapping; int error; @@ -1135,6 +1177,13 @@ /* This is safe, since we have a reference from open(). */ __module_get(THIS_MODULE); + f = loop_real_file(file); + if (f) { + virt_file = file; + file = f; + get_file(file); + } + /* * If we don't hold exclusive handle for the device, upgrade to it * here to avoid changing device under exclusive owner. @@ -1188,6 +1237,7 @@ lo->use_dio = lo->lo_flags & LO_FLAGS_DIRECT_IO; lo->lo_device = bdev; lo->lo_backing_file = file; + lo->lo_backing_virt_file = virt_file; lo->old_gfp_mask = mapping_gfp_mask(mapping); mapping_set_gfp_mask(mapping, lo->old_gfp_mask & ~(__GFP_IO|__GFP_FS)); @@ -1242,6 +1292,8 @@ bd_abort_claiming(bdev, loop_configure); out_putf: fput(file); + if (virt_file) + fput(virt_file); /* This is safe: open() is still holding a reference. */ module_put(THIS_MODULE); return error; @@ -1250,6 +1302,7 @@ static int __loop_clr_fd(struct loop_device *lo, bool release) { struct file *filp = NULL; + struct file *virt_filp = lo->lo_backing_virt_file; gfp_t gfp = lo->old_gfp_mask; struct block_device *bdev = lo->lo_device; int err = 0; @@ -1288,6 +1341,7 @@ spin_lock_irq(&lo->lo_lock); lo->lo_backing_file = NULL; + lo->lo_backing_virt_file = NULL; spin_unlock_irq(&lo->lo_lock); loop_release_xfer(lo); @@ -1369,6 +1423,8 @@ */ if (filp) fput(filp); + if (virt_filp) + fput(virt_filp); return err; } diff -u linux-azure-5.13-5.13.0/fs/Kconfig linux-azure-5.13-5.13.0/fs/Kconfig --- linux-azure-5.13-5.13.0/fs/Kconfig +++ linux-azure-5.13-5.13.0/fs/Kconfig @@ -310,6 +310,7 @@ source "fs/ufs/Kconfig" source "fs/erofs/Kconfig" source "fs/vboxsf/Kconfig" +source "fs/aufs/Kconfig" endif # MISC_FILESYSTEMS diff -u linux-azure-5.13-5.13.0/fs/Makefile linux-azure-5.13-5.13.0/fs/Makefile --- linux-azure-5.13-5.13.0/fs/Makefile +++ linux-azure-5.13-5.13.0/fs/Makefile @@ -138,2 +138,3 @@ obj-$(CONFIG_ZONEFS_FS) += zonefs/ +obj-$(CONFIG_AUFS_FS) += aufs/ obj-$(CONFIG_SHIFT_FS) += shiftfs.o diff -u linux-azure-5.13-5.13.0/fs/exec.c linux-azure-5.13-5.13.0/fs/exec.c --- linux-azure-5.13-5.13.0/fs/exec.c +++ linux-azure-5.13-5.13.0/fs/exec.c @@ -114,6 +114,7 @@ return (path->mnt->mnt_flags & MNT_NOEXEC) || (path->mnt->mnt_sb->s_iflags & SB_I_NOEXEC); } +EXPORT_SYMBOL_GPL(path_noexec); #ifdef CONFIG_USELIB /* diff -u linux-azure-5.13-5.13.0/fs/fcntl.c linux-azure-5.13-5.13.0/fs/fcntl.c --- linux-azure-5.13-5.13.0/fs/fcntl.c +++ linux-azure-5.13-5.13.0/fs/fcntl.c @@ -33,7 +33,7 @@ #define SETFL_MASK (O_APPEND | O_NONBLOCK | O_NDELAY | O_DIRECT | O_NOATIME) -static int setfl(int fd, struct file * filp, unsigned long arg) +int setfl(int fd, struct file *filp, unsigned long arg) { struct inode * inode = file_inode(filp); int error = 0; @@ -64,6 +64,8 @@ if (filp->f_op->check_flags) error = filp->f_op->check_flags(arg); + if (!error && filp->f_op->setfl) + error = filp->f_op->setfl(filp, arg); if (error) return error; @@ -84,6 +86,7 @@ out: return error; } +EXPORT_SYMBOL_GPL(setfl); static void f_modown(struct file *filp, struct pid *pid, enum pid_type type, int force) diff -u linux-azure-5.13-5.13.0/fs/namespace.c linux-azure-5.13-5.13.0/fs/namespace.c --- linux-azure-5.13-5.13.0/fs/namespace.c +++ linux-azure-5.13-5.13.0/fs/namespace.c @@ -438,6 +438,7 @@ mnt_dec_writers(real_mount(mnt)); preempt_enable(); } +EXPORT_SYMBOL_GPL(__mnt_drop_write); /** * mnt_drop_write - give up write access to a mount @@ -807,6 +808,13 @@ return mnt->mnt_ns == current->nsproxy->mnt_ns; } +/* for aufs, CONFIG_AUFS_BR_FUSE */ +int is_current_mnt_ns(struct vfsmount *mnt) +{ + return check_mnt(real_mount(mnt)); +} +EXPORT_SYMBOL_GPL(is_current_mnt_ns); + /* * vfsmount lock must be held for write */ @@ -2012,6 +2020,7 @@ } return 0; } +EXPORT_SYMBOL_GPL(iterate_mounts); static void lock_mnt_tree(struct mount *mnt) { diff -u linux-azure-5.13-5.13.0/fs/open.c linux-azure-5.13-5.13.0/fs/open.c --- linux-azure-5.13-5.13.0/fs/open.c +++ linux-azure-5.13-5.13.0/fs/open.c @@ -65,6 +65,7 @@ inode_unlock(dentry->d_inode); return ret; } +EXPORT_SYMBOL_GPL(do_truncate); long vfs_truncate(const struct path *path, loff_t length) { diff -u linux-azure-5.13-5.13.0/fs/proc/base.c linux-azure-5.13-5.13.0/fs/proc/base.c --- linux-azure-5.13-5.13.0/fs/proc/base.c +++ linux-azure-5.13-5.13.0/fs/proc/base.c @@ -2183,7 +2183,7 @@ rc = -ENOENT; vma = find_exact_vma(mm, vm_start, vm_end); if (vma && vma->vm_file) { - *path = vma->vm_file->f_path; + *path = vma_pr_or_file(vma)->f_path; path_get(path); rc = 0; } diff -u linux-azure-5.13-5.13.0/fs/proc/task_mmu.c linux-azure-5.13-5.13.0/fs/proc/task_mmu.c --- linux-azure-5.13-5.13.0/fs/proc/task_mmu.c +++ linux-azure-5.13-5.13.0/fs/proc/task_mmu.c @@ -280,7 +280,10 @@ const char *name = NULL; if (file) { - struct inode *inode = file_inode(vma->vm_file); + struct inode *inode; + + file = vma_pr_or_file(vma); + inode = file_inode(file); dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT; @@ -1864,7 +1867,7 @@ struct proc_maps_private *proc_priv = &numa_priv->proc_maps; struct vm_area_struct *vma = v; struct numa_maps *md = &numa_priv->md; - struct file *file = vma->vm_file; + struct file *file = vma_pr_or_file(vma); struct mm_struct *mm = vma->vm_mm; struct mempolicy *pol; char buffer[64]; diff -u linux-azure-5.13-5.13.0/fs/xattr.c linux-azure-5.13-5.13.0/fs/xattr.c --- linux-azure-5.13-5.13.0/fs/xattr.c +++ linux-azure-5.13-5.13.0/fs/xattr.c @@ -385,6 +385,7 @@ *xattr_value = value; return error; } +EXPORT_SYMBOL_GPL(vfs_getxattr_alloc); ssize_t __vfs_getxattr(struct dentry *dentry, struct inode *inode, const char *name, diff -u linux-azure-5.13-5.13.0/include/linux/mm.h linux-azure-5.13-5.13.0/include/linux/mm.h --- linux-azure-5.13-5.13.0/include/linux/mm.h +++ linux-azure-5.13-5.13.0/include/linux/mm.h @@ -1801,6 +1801,28 @@ unmap_mapping_range(mapping, holebegin, holelen, 0); } +extern void vma_do_file_update_time(struct vm_area_struct *, const char[], int); +extern struct file *vma_do_pr_or_file(struct vm_area_struct *, const char[], + int); +extern void vma_do_get_file(struct vm_area_struct *, const char[], int); +extern void vma_do_fput(struct vm_area_struct *, const char[], int); + +#define vma_file_update_time(vma) vma_do_file_update_time(vma, __func__, \ + __LINE__) +#define vma_pr_or_file(vma) vma_do_pr_or_file(vma, __func__, \ + __LINE__) +#define vma_get_file(vma) vma_do_get_file(vma, __func__, __LINE__) +#define vma_fput(vma) vma_do_fput(vma, __func__, __LINE__) + +#ifndef CONFIG_MMU +extern struct file *vmr_do_pr_or_file(struct vm_region *, const char[], int); +extern void vmr_do_fput(struct vm_region *, const char[], int); + +#define vmr_pr_or_file(region) vmr_do_pr_or_file(region, __func__, \ + __LINE__) +#define vmr_fput(region) vmr_do_fput(region, __func__, __LINE__) +#endif /* !CONFIG_MMU */ + extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, unsigned int gup_flags); extern int access_remote_vm(struct mm_struct *mm, unsigned long addr, diff -u linux-azure-5.13-5.13.0/kernel/fork.c linux-azure-5.13-5.13.0/kernel/fork.c --- linux-azure-5.13-5.13.0/kernel/fork.c +++ linux-azure-5.13-5.13.0/kernel/fork.c @@ -564,7 +564,7 @@ struct inode *inode = file_inode(file); struct address_space *mapping = file->f_mapping; - get_file(file); + vma_get_file(tmp); if (tmp->vm_flags & VM_DENYWRITE) put_write_access(inode); i_mmap_lock_write(mapping); diff -u linux-azure-5.13-5.13.0/kernel/locking/lockdep.c linux-azure-5.13-5.13.0/kernel/locking/lockdep.c --- linux-azure-5.13-5.13.0/kernel/locking/lockdep.c +++ linux-azure-5.13-5.13.0/kernel/locking/lockdep.c @@ -189,7 +189,7 @@ struct lock_class lock_classes[MAX_LOCKDEP_KEYS]; static DECLARE_BITMAP(lock_classes_in_use, MAX_LOCKDEP_KEYS); -static inline struct lock_class *hlock_class(struct held_lock *hlock) +inline struct lock_class *lockdep_hlock_class(struct held_lock *hlock) { unsigned int class_idx = hlock->class_idx; @@ -210,6 +210,8 @@ */ return lock_classes + class_idx; } +EXPORT_SYMBOL_GPL(lockdep_hlock_class); +#define hlock_class(hlock) lockdep_hlock_class(hlock) #ifdef CONFIG_LOCK_STAT static DEFINE_PER_CPU(struct lock_class_stats[MAX_LOCKDEP_KEYS], cpu_lock_stats); diff -u linux-azure-5.13-5.13.0/kernel/task_work.c linux-azure-5.13-5.13.0/kernel/task_work.c --- linux-azure-5.13-5.13.0/kernel/task_work.c +++ linux-azure-5.13-5.13.0/kernel/task_work.c @@ -170,0 +171 @@ +EXPORT_SYMBOL_GPL(task_work_run); diff -u linux-azure-5.13-5.13.0/security/security.c linux-azure-5.13-5.13.0/security/security.c --- linux-azure-5.13-5.13.0/security/security.c +++ linux-azure-5.13-5.13.0/security/security.c @@ -1317,6 +1317,7 @@ return 0; return call_int_hook(path_rmdir, 0, dir, dentry); } +EXPORT_SYMBOL_GPL(security_path_rmdir); int security_path_unlink(const struct path *dir, struct dentry *dentry) { @@ -1333,6 +1334,7 @@ return 0; return call_int_hook(path_symlink, 0, dir, dentry, old_name); } +EXPORT_SYMBOL_GPL(security_path_symlink); int security_path_link(struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry) @@ -1341,6 +1343,7 @@ return 0; return call_int_hook(path_link, 0, old_dentry, new_dir, new_dentry); } +EXPORT_SYMBOL_GPL(security_path_link); int security_path_rename(const struct path *old_dir, struct dentry *old_dentry, const struct path *new_dir, struct dentry *new_dentry, @@ -1368,6 +1371,7 @@ return 0; return call_int_hook(path_truncate, 0, path); } +EXPORT_SYMBOL_GPL(security_path_truncate); int security_path_chmod(const struct path *path, umode_t mode) { @@ -1375,6 +1379,7 @@ return 0; return call_int_hook(path_chmod, 0, path, mode); } +EXPORT_SYMBOL_GPL(security_path_chmod); int security_path_chown(const struct path *path, kuid_t uid, kgid_t gid) { @@ -1382,6 +1387,7 @@ return 0; return call_int_hook(path_chown, 0, path, uid, gid); } +EXPORT_SYMBOL_GPL(security_path_chown); int security_path_chroot(const struct path *path) { @@ -1482,6 +1488,7 @@ return 0; return call_int_hook(inode_permission, 0, inode, mask); } +EXPORT_SYMBOL_GPL(security_inode_permission); int security_inode_setattr(struct dentry *dentry, struct iattr *attr) { @@ -1686,6 +1693,7 @@ return fsnotify_perm(file, mask); } +EXPORT_SYMBOL_GPL(security_file_permission); int security_file_alloc(struct file *file) { only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/ABI/testing/debugfs-aufs +++ linux-azure-5.13-5.13.0/Documentation/ABI/testing/debugfs-aufs @@ -0,0 +1,55 @@ +What: /debug/aufs/si_/ +Date: March 2009 +Contact: J. R. Okajima +Description: + Under /debug/aufs, a directory named si_ is created + per aufs mount, where is a unique id generated + internally. + +What: /debug/aufs/si_/plink +Date: Apr 2013 +Contact: J. R. Okajima +Description: + It has three lines and shows the information about the + pseudo-link. The first line is a single number + representing a number of buckets. The second line is a + number of pseudo-links per buckets (separated by a + blank). The last line is a single number representing a + total number of psedo-links. + When the aufs mount option 'noplink' is specified, it + will show "1\n0\n0\n". + +What: /debug/aufs/si_/xib +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the consumed blocks by xib (External Inode Number + Bitmap), its block size and file size. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. + +What: /debug/aufs/si_/xi +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the consumed blocks by xino (External Inode Number + Translation Table), its link count, block size and file + size. + Due to the file size limit, there may exist multiple + xino files per branch. In this case, "-N" is added to + the filename and it corresponds to the index of the + internal xino array. "-0" is omitted. + When the aufs mount option 'noxino' is specified, Those + entries won't exist. About XINO files, see the aufs + manual. + +What: /debug/aufs/si_/xigen +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the consumed blocks by xigen (External Inode + Generation Table), its block size and file size. + If CONFIG_AUFS_EXPORT is disabled, this entry will not + be created. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/ABI/testing/sysfs-aufs +++ linux-azure-5.13-5.13.0/Documentation/ABI/testing/sysfs-aufs @@ -0,0 +1,31 @@ +What: /sys/fs/aufs/si_/ +Date: March 2009 +Contact: J. R. Okajima +Description: + Under /sys/fs/aufs, a directory named si_ is created + per aufs mount, where is a unique id generated + internally. + +What: /sys/fs/aufs/si_/br +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the abolute path of a member directory (which + is called branch) in aufs, and its permission. + +What: /sys/fs/aufs/si_/brid +Date: July 2013 +Contact: J. R. Okajima +Description: + It shows the id of a member directory (which is called + branch) in aufs. + +What: /sys/fs/aufs/si_/xi_path +Date: March 2009 +Contact: J. R. Okajima +Description: + It shows the abolute path of XINO (External Inode Number + Bitmap, Translation Table and Generation Table) file + even if it is the default path. + When the aufs mount option 'noxino' is specified, it + will be empty. About XINO files, see the aufs manual. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/README +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/README @@ -0,0 +1,396 @@ + +Aufs5 -- advanced multi layered unification filesystem version 5.x +http://aufs.sf.net +Junjiro R. Okajima + + +0. Introduction +---------------------------------------- +In the early days, aufs was entirely re-designed and re-implemented +Unionfs Version 1.x series. Adding many original ideas, approaches, +improvements and implementations, it became totally different from +Unionfs while keeping the basic features. +Later, Unionfs Version 2.x series began taking some of the same +approaches to aufs1's. +Unionfs was being developed by Professor Erez Zadok at Stony Brook +University and his team. + +Aufs5 supports linux-v5.0 and later, If you want older kernel version +support, +- for linux-v4.x series, try aufs4-linux.git or aufs4-standalone.git +- for linux-v3.x series, try aufs3-linux.git or aufs3-standalone.git +- for linux-v2.6.16 and later, try aufs2-2.6.git, aufs2-standalone.git + or aufs1 from CVS on SourceForge. + +Note: it becomes clear that "Aufs was rejected. Let's give it up." + According to Christoph Hellwig, linux rejects all union-type + filesystems but UnionMount. + + +PS. Al Viro seems have a plan to merge aufs as well as overlayfs and + UnionMount, and he pointed out an issue around a directory mutex + lock and aufs addressed it. But it is still unsure whether aufs will + be merged (or any other union solution). + + + +1. Features +---------------------------------------- +- unite several directories into a single virtual filesystem. The member + directory is called as a branch. +- you can specify the permission flags to the branch, which are 'readonly', + 'readwrite' and 'whiteout-able.' +- by upper writable branch, internal copyup and whiteout, files/dirs on + readonly branch are modifiable logically. +- dynamic branch manipulation, add, del. +- etc... + +Also there are many enhancements in aufs, such as: +- test only the highest one for the directory permission (dirperm1) +- copyup on open (coo=) +- 'move' policy for copy-up between two writable branches, after + checking free space. +- xattr, acl +- readdir(3) in userspace. +- keep inode number by external inode number table +- keep the timestamps of file/dir in internal copyup operation +- seekable directory, supporting NFS readdir. +- whiteout is hardlinked in order to reduce the consumption of inodes + on branch +- do not copyup, nor create a whiteout when it is unnecessary +- revert a single systemcall when an error occurs in aufs +- remount interface instead of ioctl +- maintain /etc/mtab by an external command, /sbin/mount.aufs. +- loopback mounted filesystem as a branch +- kernel thread for removing the dir who has a plenty of whiteouts +- support copyup sparse file (a file which has a 'hole' in it) +- default permission flags for branches +- selectable permission flags for ro branch, whether whiteout can + exist or not +- export via NFS. +- support /fs/aufs and /aufs. +- support multiple writable branches, some policies to select one + among multiple writable branches. +- a new semantics for link(2) and rename(2) to support multiple + writable branches. +- no glibc changes are required. +- pseudo hardlink (hardlink over branches) +- allow a direct access manually to a file on branch, e.g. bypassing aufs. + including NFS or remote filesystem branch. +- userspace wrapper for pathconf(3)/fpathconf(3) with _PC_LINK_MAX. +- and more... + +Currently these features are dropped temporary from aufs5. +See design/08plan.txt in detail. +- nested mount, i.e. aufs as readonly no-whiteout branch of another aufs + (robr) +- statistics of aufs thread (/sys/fs/aufs/stat) + +Features or just an idea in the future (see also design/*.txt), +- reorder the branch index without del/re-add. +- permanent xino files for NFSD +- an option for refreshing the opened files after add/del branches +- light version, without branch manipulation. (unnecessary?) +- copyup in userspace +- inotify in userspace +- readv/writev + + +2. Download +---------------------------------------- +There are three GIT trees for aufs5, aufs5-linux.git, +aufs5-standalone.git, and aufs-util.git. Note that there is no "5" in +"aufs-util.git." +While the aufs-util is always necessary, you need either of aufs5-linux +or aufs5-standalone. + +The aufs5-linux tree includes the whole linux mainline GIT tree, +git://git.kernel.org/.../torvalds/linux.git. +And you cannot select CONFIG_AUFS_FS=m for this version, eg. you cannot +build aufs5 as an external kernel module. +Several extra patches are not included in this tree. Only +aufs5-standalone tree contains them. They are described in the later +section "Configuration and Compilation." + +On the other hand, the aufs5-standalone tree has only aufs source files +and necessary patches, and you can select CONFIG_AUFS_FS=m. +But you need to apply all aufs patches manually. + +You will find GIT branches whose name is in form of "aufs5.x" where "x" +represents the linux kernel version, "linux-5.x". For instance, +"aufs5.0" is for linux-5.0. For latest "linux-5.x-rcN", use +"aufs5.x-rcN" branch. + +o aufs5-linux tree +$ git clone --reference /your/linux/git/tree \ + git://github.com/sfjro/aufs5-linux.git aufs5-linux.git +- if you don't have linux GIT tree, then remove "--reference ..." +$ cd aufs5-linux.git +$ git checkout origin/aufs5.0 + +Or You may want to directly git-pull aufs into your linux GIT tree, and +leave the patch-work to GIT. +$ cd /your/linux/git/tree +$ git remote add aufs5 git://github.com/sfjro/aufs5-linux.git +$ git fetch aufs5 +$ git checkout -b my5.0 v5.0 +$ (add your local change...) +$ git pull aufs5 aufs5.0 +- now you have v5.0 + your_changes + aufs5.0 in you my5.0 branch. +- you may need to solve some conflicts between your_changes and + aufs5.0. in this case, git-rerere is recommended so that you can + solve the similar conflicts automatically when you upgrade to 5.1 or + later in the future. + +o aufs5-standalone tree +$ git clone git://github.com/sfjro/aufs5-standalone.git aufs5-standalone.git +$ cd aufs5-standalone.git +$ git checkout origin/aufs5.0 + +o aufs-util tree +$ git clone git://git.code.sf.net/p/aufs/aufs-util aufs-util.git +- note that the public aufs-util.git is on SourceForge instead of + GitHUB. +$ cd aufs-util.git +$ git checkout origin/aufs5.0 + +Note: The 5.x-rcN branch is to be used with `rc' kernel versions ONLY. +The minor version number, 'x' in '5.x', of aufs may not always +follow the minor version number of the kernel. +Because changes in the kernel that cause the use of a new +minor version number do not always require changes to aufs-util. + +Since aufs-util has its own minor version number, you may not be +able to find a GIT branch in aufs-util for your kernel's +exact minor version number. +In this case, you should git-checkout the branch for the +nearest lower number. + +For (an unreleased) example: +If you are using "linux-5.10" and the "aufs5.10" branch +does not exist in aufs-util repository, then "aufs5.9", "aufs5.8" +or something numerically smaller is the branch for your kernel. + +Also you can view all branches by + $ git branch -a + + +3. Configuration and Compilation +---------------------------------------- +Make sure you have git-checkout'ed the correct branch. + +For aufs5-linux tree, +- enable CONFIG_AUFS_FS. +- set other aufs configurations if necessary. +- for aufs5.13 and later + Because aufs is not only an ordinary filesystem (callee of VFS), but + also a caller of VFS functions for branch filesystems, subclassing of + the internal locks for LOCKDEP is necessary. LOCKDEP is a debugging + feature of linux kernel. If you enable CONFIG_LOCKDEP, then you will + need to customize some LOCKDEP numbers. Here are what I use on my + test environment. + CONFIG_LOCKDEP_BITS=21 + CONFIG_LOCKDEP_CHAINS_BITS=21 + CONFIG_LOCKDEP_STACK_TRACE_BITS=24 + +For aufs5-standalone tree, +There are several ways to build. + +1. +- apply ./aufs5-kbuild.patch to your kernel source files. +- apply ./aufs5-base.patch too. +- apply ./aufs5-mmap.patch too. +- apply ./aufs5-standalone.patch too, if you have a plan to set + CONFIG_AUFS_FS=m. otherwise you don't need ./aufs5-standalone.patch. +- copy ./{Documentation,fs,include/uapi/linux/aufs_type.h} files to your + kernel source tree. Never copy $PWD/include/uapi/linux/Kbuild. +- enable CONFIG_AUFS_FS, you can select either + =m or =y. +- and build your kernel as usual. +- install the built kernel. +- install the header files too by "make headers_install" to the + directory where you specify. By default, it is $PWD/usr. + "make help" shows a brief note for headers_install. +- and reboot your system. + +2. +- module only (CONFIG_AUFS_FS=m). +- apply ./aufs5-base.patch to your kernel source files. +- apply ./aufs5-mmap.patch too. +- apply ./aufs5-standalone.patch too. +- build your kernel, don't forget "make headers_install", and reboot. +- edit ./config.mk and set other aufs configurations if necessary. + Note: You should read $PWD/fs/aufs/Kconfig carefully which describes + every aufs configurations. +- build the module by simple "make". +- you can specify ${KDIR} make variable which points to your kernel + source tree. +- install the files + + run "make install" to install the aufs module, or copy the built + $PWD/aufs.ko to /lib/modules/... and run depmod -a (or reboot simply). + + run "make install_headers" (instead of headers_install) to install + the modified aufs header file (you can specify DESTDIR which is + available in aufs standalone version's Makefile only), or copy + $PWD/usr/include/linux/aufs_type.h to /usr/include/linux or wherever + you like manually. By default, the target directory is $PWD/usr. +- no need to apply aufs5-kbuild.patch, nor copying source files to your + kernel source tree. + +Note: The header file aufs_type.h is necessary to build aufs-util + as well as "make headers_install" in the kernel source tree. + headers_install is subject to be forgotten, but it is essentially + necessary, not only for building aufs-util. + You may not meet problems without headers_install in some older + version though. + +And then, +- read README in aufs-util, build and install it +- note that your distribution may contain an obsoleted version of + aufs_type.h in /usr/include/linux or something. When you build aufs + utilities, make sure that your compiler refers the correct aufs header + file which is built by "make headers_install." +- if you want to use readdir(3) in userspace or pathconf(3) wrapper, + then run "make install_ulib" too. And refer to the aufs manual in + detail. + +There several other patches in aufs5-standalone.git. They are all +optional. When you meet some problems, they will help you. +- aufs5-loopback.patch + Supports a nested loopback mount in a branch-fs. This patch is + unnecessary until aufs produces a message like "you may want to try + another patch for loopback file". +- vfs-ino.patch + Modifies a system global kernel internal function get_next_ino() in + order to stop assigning 0 for an inode-number. Not directly related to + aufs, but recommended generally. +- tmpfs-idr.patch + Keeps the tmpfs inode number as the lowest value. Effective to reduce + the size of aufs XINO files for tmpfs branch. Also it prevents the + duplication of inode number, which is important for backup tools and + other utilities. When you find aufs XINO files for tmpfs branch + growing too much, try this patch. + + +4. Usage +---------------------------------------- +At first, make sure aufs-util are installed, and please read the aufs +manual, aufs.5 in aufs-util.git tree. +$ man -l aufs.5 + +And then, +$ mkdir /tmp/rw /tmp/aufs +# mount -t aufs -o br=/tmp/rw:${HOME} none /tmp/aufs + +Here is another example. The result is equivalent. +# mount -t aufs -o br=/tmp/rw=rw:${HOME}=ro none /tmp/aufs + Or +# mount -t aufs -o br:/tmp/rw none /tmp/aufs +# mount -o remount,append:${HOME} /tmp/aufs + +Then, you can see whole tree of your home dir through /tmp/aufs. If +you modify a file under /tmp/aufs, the one on your home directory is +not affected, instead the same named file will be newly created under +/tmp/rw. And all of your modification to a file will be applied to +the one under /tmp/rw. This is called the file based Copy on Write +(COW) method. +Aufs mount options are described in aufs.5. +If you run chroot or something and make your aufs as a root directory, +then you need to customize the shutdown script. See the aufs manual in +detail. + +Additionally, there are some sample usages of aufs which are a +diskless system with network booting, and LiveCD over NFS. +See sample dir in CVS tree on SourceForge. + + +5. Contact +---------------------------------------- +When you have any problems or strange behaviour in aufs, please let me +know with: +- /proc/mounts (instead of the output of mount(8)) +- /sys/module/aufs/* +- /sys/fs/aufs/* (if you have them) +- /debug/aufs/* (if you have them) +- linux kernel version + if your kernel is not plain, for example modified by distributor, + the url where i can download its source is necessary too. +- aufs version which was printed at loading the module or booting the + system, instead of the date you downloaded. +- configuration (define/undefine CONFIG_AUFS_xxx) +- kernel configuration or /proc/config.gz (if you have it) +- LSM (linux security module, if you are using) +- behaviour which you think to be incorrect +- actual operation, reproducible one is better +- mailto: aufs-users at lists.sourceforge.net + +Usually, I don't watch the Public Areas(Bugs, Support Requests, Patches, +and Feature Requests) on SourceForge. Please join and write to +aufs-users ML. + + +6. Acknowledgements +---------------------------------------- +Thanks to everyone who have tried and are using aufs, whoever +have reported a bug or any feedback. + +Especially donators: +Tomas Matejicek(slax.org) made a donation (much more than once). + Since Apr 2010, Tomas M (the author of Slax and Linux Live + scripts) is making "doubling" donations. + Unfortunately I cannot list all of the donators, but I really + appreciate. + It ends Aug 2010, but the ordinary donation URL is still available. + +Dai Itasaka made a donation (2007/8). +Chuck Smith made a donation (2008/4, 10 and 12). +Henk Schoneveld made a donation (2008/9). +Chih-Wei Huang, ASUS, CTC donated Eee PC 4G (2008/10). +Francois Dupoux made a donation (2008/11). +Bruno Cesar Ribas and Luis Carlos Erpen de Bona, C3SL serves public + aufs2 GIT tree (2009/2). +William Grant made a donation (2009/3). +Patrick Lane made a donation (2009/4). +The Mail Archive (mail-archive.com) made donations (2009/5). +Nippy Networks (Ed Wildgoose) made a donation (2009/7). +New Dream Network, LLC (www.dreamhost.com) made a donation (2009/11). +Pavel Pronskiy made a donation (2011/2). +Iridium and Inmarsat satellite phone retailer (www.mailasail.com), Nippy + Networks (Ed Wildgoose) made a donation for hardware (2011/3). +Max Lekomcev (DOM-TV project) made a donation (2011/7, 12, 2012/3, 6 and +11). +Sam Liddicott made a donation (2011/9). +Era Scarecrow made a donation (2013/4). +Bor Ratajc made a donation (2013/4). +Alessandro Gorreta made a donation (2013/4). +POIRETTE Marc made a donation (2013/4). +Alessandro Gorreta made a donation (2013/4). +lauri kasvandik made a donation (2013/5). +"pemasu from Finland" made a donation (2013/7). +The Parted Magic Project made a donation (2013/9 and 11). +Pavel Barta made a donation (2013/10). +Nikolay Pertsev made a donation (2014/5). +James B made a donation (2014/7 and 2015/7). +Stefano Di Biase made a donation (2014/8). +Daniel Epellei made a donation (2015/1). +OmegaPhil made a donation (2016/1, 2018/4). +Tomasz Szewczyk made a donation (2016/4). +James Burry made a donation (2016/12). +Carsten Rose made a donation (2018/9). +Porteus Kiosk made a donation (2018/10). + +Thank you very much. +Donations are always, including future donations, very important and +helpful for me to keep on developing aufs. + + +7. +---------------------------------------- +If you are an experienced user, no explanation is needed. Aufs is +just a linux filesystem. + + +Enjoy! + +# Local variables: ; +# mode: text; +# End: ; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/design/01intro.txt +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/design/01intro.txt @@ -0,0 +1,171 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Introduction +---------------------------------------- + +aufs [ei ju: ef es] | /ey-yoo-ef-es/ | [a u f s] +1. abbrev. for "advanced multi-layered unification filesystem". +2. abbrev. for "another unionfs". +3. abbrev. for "auf das" in German which means "on the" in English. + Ex. "Butter aufs Brot"(G) means "butter onto bread"(E). + But "Filesystem aufs Filesystem" is hard to understand. +4. abbrev. for "African Urban Fashion Show". + +AUFS is a filesystem with features: +- multi layered stackable unification filesystem, the member directory + is called as a branch. +- branch permission and attribute, 'readonly', 'real-readonly', + 'readwrite', 'whiteout-able', 'link-able whiteout', etc. and their + combination. +- internal "file copy-on-write". +- logical deletion, whiteout. +- dynamic branch manipulation, adding, deleting and changing permission. +- allow bypassing aufs, user's direct branch access. +- external inode number translation table and bitmap which maintains the + persistent aufs inode number. +- seekable directory, including NFS readdir. +- file mapping, mmap and sharing pages. +- pseudo-link, hardlink over branches. +- loopback mounted filesystem as a branch. +- several policies to select one among multiple writable branches. +- revert a single systemcall when an error occurs in aufs. +- and more... + + +Multi Layered Stackable Unification Filesystem +---------------------------------------------------------------------- +Most people already knows what it is. +It is a filesystem which unifies several directories and provides a +merged single directory. When users access a file, the access will be +passed/re-directed/converted (sorry, I am not sure which English word is +correct) to the real file on the member filesystem. The member +filesystem is called 'lower filesystem' or 'branch' and has a mode +'readonly' and 'readwrite.' And the deletion for a file on the lower +readonly branch is handled by creating 'whiteout' on the upper writable +branch. + +On LKML, there have been discussions about UnionMount (Jan Blunck, +Bharata B Rao and Valerie Aurora) and Unionfs (Erez Zadok). They took +different approaches to implement the merged-view. +The former tries putting it into VFS, and the latter implements as a +separate filesystem. +(If I misunderstand about these implementations, please let me know and +I shall correct it. Because it is a long time ago when I read their +source files last time). + +UnionMount's approach will be able to small, but may be hard to share +branches between several UnionMount since the whiteout in it is +implemented in the inode on branch filesystem and always +shared. According to Bharata's post, readdir does not seems to be +finished yet. +There are several missing features known in this implementations such as +- for users, the inode number may change silently. eg. copy-up. +- link(2) may break by copy-up. +- read(2) may get an obsoleted filedata (fstat(2) too). +- fcntl(F_SETLK) may be broken by copy-up. +- unnecessary copy-up may happen, for example mmap(MAP_PRIVATE) after + open(O_RDWR). + +In linux-3.18, "overlay" filesystem (formerly known as "overlayfs") was +merged into mainline. This is another implementation of UnionMount as a +separated filesystem. All the limitations and known problems which +UnionMount are equally inherited to "overlay" filesystem. + +Unionfs has a longer history. When I started implementing a stackable +filesystem (Aug 2005), it already existed. It has virtual super_block, +inode, dentry and file objects and they have an array pointing lower +same kind objects. After contributing many patches for Unionfs, I +re-started my project AUFS (Jun 2006). + +In AUFS, the structure of filesystem resembles to Unionfs, but I +implemented my own ideas, approaches and enhancements and it became +totally different one. + +Comparing DM snapshot and fs based implementation +- the number of bytes to be copied between devices is much smaller. +- the type of filesystem must be one and only. +- the fs must be writable, no readonly fs, even for the lower original + device. so the compression fs will not be usable. but if we use + loopback mount, we may address this issue. + for instance, + mount /cdrom/squashfs.img /sq + losetup /sq/ext2.img + losetup /somewhere/cow + dmsetup "snapshot /dev/loop0 /dev/loop1 ..." +- it will be difficult (or needs more operations) to extract the + difference between the original device and COW. +- DM snapshot-merge may help a lot when users try merging. in the + fs-layer union, users will use rsync(1). + +You may want to read my old paper "Filesystems in LiveCD" +(http://aufs.sourceforge.net/aufs2/report/sq/sq.pdf). + + +Several characters/aspects/persona of aufs +---------------------------------------------------------------------- + +Aufs has several characters, aspects or persona. +1. a filesystem, callee of VFS helper +2. sub-VFS, caller of VFS helper for branches +3. a virtual filesystem which maintains persistent inode number +4. reader/writer of files on branches such like an application + +1. Callee of VFS Helper +As an ordinary linux filesystem, aufs is a callee of VFS. For instance, +unlink(2) from an application reaches sys_unlink() kernel function and +then vfs_unlink() is called. vfs_unlink() is one of VFS helper and it +calls filesystem specific unlink operation. Actually aufs implements the +unlink operation but it behaves like a redirector. + +2. Caller of VFS Helper for Branches +aufs_unlink() passes the unlink request to the branch filesystem as if +it were called from VFS. So the called unlink operation of the branch +filesystem acts as usual. As a caller of VFS helper, aufs should handle +every necessary pre/post operation for the branch filesystem. +- acquire the lock for the parent dir on a branch +- lookup in a branch +- revalidate dentry on a branch +- mnt_want_write() for a branch +- vfs_unlink() for a branch +- mnt_drop_write() for a branch +- release the lock on a branch + +3. Persistent Inode Number +One of the most important issue for a filesystem is to maintain inode +numbers. This is particularly important to support exporting a +filesystem via NFS. Aufs is a virtual filesystem which doesn't have a +backend block device for its own. But some storage is necessary to +keep and maintain the inode numbers. It may be a large space and may not +suit to keep in memory. Aufs rents some space from its first writable +branch filesystem (by default) and creates file(s) on it. These files +are created by aufs internally and removed soon (currently) keeping +opened. +Note: Because these files are removed, they are totally gone after + unmounting aufs. It means the inode numbers are not persistent + across unmount or reboot. I have a plan to make them really + persistent which will be important for aufs on NFS server. + +4. Read/Write Files Internally (copy-on-write) +Because a branch can be readonly, when you write a file on it, aufs will +"copy-up" it to the upper writable branch internally. And then write the +originally requested thing to the file. Generally kernel doesn't +open/read/write file actively. In aufs, even a single write may cause a +internal "file copy". This behaviour is very similar to cp(1) command. + +Some people may think it is better to pass such work to user space +helper, instead of doing in kernel space. Actually I am still thinking +about it. But currently I have implemented it in kernel space. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/design/02struct.txt +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/design/02struct.txt @@ -0,0 +1,258 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Basic Aufs Internal Structure + +Superblock/Inode/Dentry/File Objects +---------------------------------------------------------------------- +As like an ordinary filesystem, aufs has its own +superblock/inode/dentry/file objects. All these objects have a +dynamically allocated array and store the same kind of pointers to the +lower filesystem, branch. +For example, when you build a union with one readwrite branch and one +readonly, mounted /au, /rw and /ro respectively. +- /au = /rw + /ro +- /ro/fileA exists but /rw/fileA + +Aufs lookup operation finds /ro/fileA and gets dentry for that. These +pointers are stored in a aufs dentry. The array in aufs dentry will be, +- [0] = NULL (because /rw/fileA doesn't exist) +- [1] = /ro/fileA + +This style of an array is essentially same to the aufs +superblock/inode/dentry/file objects. + +Because aufs supports manipulating branches, ie. add/delete/change +branches dynamically, these objects has its own generation. When +branches are changed, the generation in aufs superblock is +incremented. And a generation in other object are compared when it is +accessed. When a generation in other objects are obsoleted, aufs +refreshes the internal array. + + +Superblock +---------------------------------------------------------------------- +Additionally aufs superblock has some data for policies to select one +among multiple writable branches, XIB files, pseudo-links and kobject. +See below in detail. +About the policies which supports copy-down a directory, see +wbr_policy.txt too. + + +Branch and XINO(External Inode Number Translation Table) +---------------------------------------------------------------------- +Every branch has its own xino (external inode number translation table) +file. The xino file is created and unlinked by aufs internally. When two +members of a union exist on the same filesystem, they share the single +xino file. +The struct of a xino file is simple, just a sequence of aufs inode +numbers which is indexed by the lower inode number. +In the above sample, assume the inode number of /ro/fileA is i111 and +aufs assigns the inode number i999 for fileA. Then aufs writes 999 as +4(8) bytes at 111 * 4(8) bytes offset in the xino file. + +When the inode numbers are not contiguous, the xino file will be sparse +which has a hole in it and doesn't consume as much disk space as it +might appear. If your branch filesystem consumes disk space for such +holes, then you should specify 'xino=' option at mounting aufs. + +Aufs has a mount option to free the disk blocks for such holes in XINO +files on tmpfs or ramdisk. But it is not so effective actually. If you +meet a problem of disk shortage due to XINO files, then you should try +"tmpfs-ino.patch" (and "vfs-ino.patch" too) in aufs4-standalone.git. +The patch localizes the assignment inumbers per tmpfs-mount and avoid +the holes in XINO files. + +Also a writable branch has three kinds of "whiteout bases". All these +are existed when the branch is joined to aufs, and their names are +whiteout-ed doubly, so that users will never see their names in aufs +hierarchy. +1. a regular file which will be hardlinked to all whiteouts. +2. a directory to store a pseudo-link. +3. a directory to store an "orphan"-ed file temporary. + +1. Whiteout Base + When you remove a file on a readonly branch, aufs handles it as a + logical deletion and creates a whiteout on the upper writable branch + as a hardlink of this file in order not to consume inode on the + writable branch. +2. Pseudo-link Dir + See below, Pseudo-link. +3. Step-Parent Dir + When "fileC" exists on the lower readonly branch only and it is + opened and removed with its parent dir, and then user writes + something into it, then aufs copies-up fileC to this + directory. Because there is no other dir to store fileC. After + creating a file under this dir, the file is unlinked. + +Because aufs supports manipulating branches, ie. add/delete/change +dynamically, a branch has its own id. When the branch order changes, +aufs finds the new index by searching the branch id. + + +Pseudo-link +---------------------------------------------------------------------- +Assume "fileA" exists on the lower readonly branch only and it is +hardlinked to "fileB" on the branch. When you write something to fileA, +aufs copies-up it to the upper writable branch. Additionally aufs +creates a hardlink under the Pseudo-link Directory of the writable +branch. The inode of a pseudo-link is kept in aufs super_block as a +simple list. If fileB is read after unlinking fileA, aufs returns +filedata from the pseudo-link instead of the lower readonly +branch. Because the pseudo-link is based upon the inode, to keep the +inode number by xino (see above) is essentially necessary. + +All the hardlinks under the Pseudo-link Directory of the writable branch +should be restored in a proper location later. Aufs provides a utility +to do this. The userspace helpers executed at remounting and unmounting +aufs by default. +During this utility is running, it puts aufs into the pseudo-link +maintenance mode. In this mode, only the process which began the +maintenance mode (and its child processes) is allowed to operate in +aufs. Some other processes which are not related to the pseudo-link will +be allowed to run too, but the rest have to return an error or wait +until the maintenance mode ends. If a process already acquires an inode +mutex (in VFS), it has to return an error. + + +XIB(external inode number bitmap) +---------------------------------------------------------------------- +Addition to the xino file per a branch, aufs has an external inode number +bitmap in a superblock object. It is also an internal file such like a +xino file. +It is a simple bitmap to mark whether the aufs inode number is in-use or +not. +To reduce the file I/O, aufs prepares a single memory page to cache xib. + +As well as XINO files, aufs has a feature to truncate/refresh XIB to +reduce the number of consumed disk blocks for these files. + + +Virtual or Vertical Dir, and Readdir in Userspace +---------------------------------------------------------------------- +In order to support multiple layers (branches), aufs readdir operation +constructs a virtual dir block on memory. For readdir, aufs calls +vfs_readdir() internally for each dir on branches, merges their entries +with eliminating the whiteout-ed ones, and sets it to file (dir) +object. So the file object has its entry list until it is closed. The +entry list will be updated when the file position is zero and becomes +obsoleted. This decision is made in aufs automatically. + +The dynamically allocated memory block for the name of entries has a +unit of 512 bytes (by default) and stores the names contiguously (no +padding). Another block for each entry is handled by kmem_cache too. +During building dir blocks, aufs creates hash list and judging whether +the entry is whiteouted by its upper branch or already listed. +The merged result is cached in the corresponding inode object and +maintained by a customizable life-time option. + +Some people may call it can be a security hole or invite DoS attack +since the opened and once readdir-ed dir (file object) holds its entry +list and becomes a pressure for system memory. But I'd say it is similar +to files under /proc or /sys. The virtual files in them also holds a +memory page (generally) while they are opened. When an idea to reduce +memory for them is introduced, it will be applied to aufs too. +For those who really hate this situation, I've developed readdir(3) +library which operates this merging in userspace. You just need to set +LD_PRELOAD environment variable, and aufs will not consume no memory in +kernel space for readdir(3). + + +Workqueue +---------------------------------------------------------------------- +Aufs sometimes requires privilege access to a branch. For instance, +in copy-up/down operation. When a user process is going to make changes +to a file which exists in the lower readonly branch only, and the mode +of one of ancestor directories may not be writable by a user +process. Here aufs copy-up the file with its ancestors and they may +require privilege to set its owner/group/mode/etc. +This is a typical case of a application character of aufs (see +Introduction). + +Aufs uses workqueue synchronously for this case. It creates its own +workqueue. The workqueue is a kernel thread and has privilege. Aufs +passes the request to call mkdir or write (for example), and wait for +its completion. This approach solves a problem of a signal handler +simply. +If aufs didn't adopt the workqueue and changed the privilege of the +process, then the process may receive the unexpected SIGXFSZ or other +signals. + +Also aufs uses the system global workqueue ("events" kernel thread) too +for asynchronous tasks, such like handling inotify/fsnotify, re-creating a +whiteout base and etc. This is unrelated to a privilege. +Most of aufs operation tries acquiring a rw_semaphore for aufs +superblock at the beginning, at the same time waits for the completion +of all queued asynchronous tasks. + + +Whiteout +---------------------------------------------------------------------- +The whiteout in aufs is very similar to Unionfs's. That is represented +by its filename. UnionMount takes an approach of a file mode, but I am +afraid several utilities (find(1) or something) will have to support it. + +Basically the whiteout represents "logical deletion" which stops aufs to +lookup further, but also it represents "dir is opaque" which also stop +further lookup. + +In aufs, rmdir(2) and rename(2) for dir uses whiteout alternatively. +In order to make several functions in a single systemcall to be +revertible, aufs adopts an approach to rename a directory to a temporary +unique whiteouted name. +For example, in rename(2) dir where the target dir already existed, aufs +renames the target dir to a temporary unique whiteouted name before the +actual rename on a branch, and then handles other actions (make it opaque, +update the attributes, etc). If an error happens in these actions, aufs +simply renames the whiteouted name back and returns an error. If all are +succeeded, aufs registers a function to remove the whiteouted unique +temporary name completely and asynchronously to the system global +workqueue. + + +Copy-up +---------------------------------------------------------------------- +It is a well-known feature or concept. +When user modifies a file on a readonly branch, aufs operate "copy-up" +internally and makes change to the new file on the upper writable branch. +When the trigger systemcall does not update the timestamps of the parent +dir, aufs reverts it after copy-up. + + +Move-down (aufs3.9 and later) +---------------------------------------------------------------------- +"Copy-up" is one of the essential feature in aufs. It copies a file from +the lower readonly branch to the upper writable branch when a user +changes something about the file. +"Move-down" is an opposite action of copy-up. Basically this action is +ran manually instead of automatically and internally. +For desgin and implementation, aufs has to consider these issues. +- whiteout for the file may exist on the lower branch. +- ancestor directories may not exist on the lower branch. +- diropq for the ancestor directories may exist on the upper branch. +- free space on the lower branch will reduce. +- another access to the file may happen during moving-down, including + UDBA (see "Revalidate Dentry and UDBA"). +- the file should not be hard-linked nor pseudo-linked. they should be + handled by auplink utility later. + +Sometimes users want to move-down a file from the upper writable branch +to the lower readonly or writable branch. For instance, +- the free space of the upper writable branch is going to run out. +- create a new intermediate branch between the upper and lower branch. +- etc. + +For this purpose, use "aumvdown" command in aufs-util.git. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/design/03atomic_open.txt +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/design/03atomic_open.txt @@ -0,0 +1,85 @@ + +# Copyright (C) 2015-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Support for a branch who has its ->atomic_open() +---------------------------------------------------------------------- +The filesystems who implement its ->atomic_open() are not majority. For +example NFSv4 does, and aufs should call NFSv4 ->atomic_open, +particularly for open(O_CREAT|O_EXCL, 0400) case. Other than +->atomic_open(), NFSv4 returns an error for this open(2). While I am not +sure whether all filesystems who have ->atomic_open() behave like this, +but NFSv4 surely returns the error. + +In order to support ->atomic_open() for aufs, there are a few +approaches. + +A. Introduce aufs_atomic_open() + - calls one of VFS:do_last(), lookup_open() or atomic_open() for + branch fs. +B. Introduce aufs_atomic_open() calling create, open and chmod. this is + an aufs user Pip Cet's approach + - calls aufs_create(), VFS finish_open() and notify_change(). + - pass fake-mode to finish_open(), and then correct the mode by + notify_change(). +C. Extend aufs_open() to call branch fs's ->atomic_open() + - no aufs_atomic_open(). + - aufs_lookup() registers the TID to an aufs internal object. + - aufs_create() does nothing when the matching TID is registered, but + registers the mode. + - aufs_open() calls branch fs's ->atomic_open() when the matching + TID is registered. +D. Extend aufs_open() to re-try branch fs's ->open() with superuser's + credential + - no aufs_atomic_open(). + - aufs_create() registers the TID to an internal object. this info + represents "this process created this file just now." + - when aufs gets EACCES from branch fs's ->open(), then confirm the + registered TID and re-try open() with superuser's credential. + +Pros and cons for each approach. + +A. + - straightforward but highly depends upon VFS internal. + - the atomic behavaiour is kept. + - some of parameters such as nameidata are hard to reproduce for + branch fs. + - large overhead. +B. + - easy to implement. + - the atomic behavaiour is lost. +C. + - the atomic behavaiour is kept. + - dirty and tricky. + - VFS checks whether the file is created correctly after calling + ->create(), which means this approach doesn't work. +D. + - easy to implement. + - the atomic behavaiour is lost. + - to open a file with superuser's credential and give it to a user + process is a bad idea, since the file object keeps the credential + in it. It may affect LSM or something. This approach doesn't work + either. + +The approach A is ideal, but it hard to implement. So here is a +variation of A, which is to be implemented. + +A-1. Introduce aufs_atomic_open() + - calls branch fs ->atomic_open() if exists. otherwise calls + vfs_create() and finish_open(). + - the demerit is that the several checks after branch fs + ->atomic_open() are lost. in the ordinary case, the checks are + done by VFS:do_last(), lookup_open() and atomic_open(). some can + be implemented in aufs, but not all I am afraid. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/design/03lookup.txt +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/design/03lookup.txt @@ -0,0 +1,113 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Lookup in a Branch +---------------------------------------------------------------------- +Since aufs has a character of sub-VFS (see Introduction), it operates +lookup for branches as VFS does. It may be a heavy work. But almost all +lookup operation in aufs is the simplest case, ie. lookup only an entry +directly connected to its parent. Digging down the directory hierarchy +is unnecessary. VFS has a function lookup_one_len() for that use, and +aufs calls it. + +When a branch is a remote filesystem, aufs basically relies upon its +->d_revalidate(), also aufs forces the hardest revalidate tests for +them. +For d_revalidate, aufs implements three levels of revalidate tests. See +"Revalidate Dentry and UDBA" in detail. + + +Test Only the Highest One for the Directory Permission (dirperm1 option) +---------------------------------------------------------------------- +Let's try case study. +- aufs has two branches, upper readwrite and lower readonly. + /au = /rw + /ro +- "dirA" exists under /ro, but /rw. and its mode is 0700. +- user invoked "chmod a+rx /au/dirA" +- the internal copy-up is activated and "/rw/dirA" is created and its + permission bits are set to world readable. +- then "/au/dirA" becomes world readable? + +In this case, /ro/dirA is still 0700 since it exists in readonly branch, +or it may be a natively readonly filesystem. If aufs respects the lower +branch, it should not respond readdir request from other users. But user +allowed it by chmod. Should really aufs rejects showing the entries +under /ro/dirA? + +To be honest, I don't have a good solution for this case. So aufs +implements 'dirperm1' and 'nodirperm1' mount options, and leave it to +users. +When dirperm1 is specified, aufs checks only the highest one for the +directory permission, and shows the entries. Otherwise, as usual, checks +every dir existing on all branches and rejects the request. + +As a side effect, dirperm1 option improves the performance of aufs +because the number of permission check is reduced when the number of +branch is many. + + +Revalidate Dentry and UDBA (User's Direct Branch Access) +---------------------------------------------------------------------- +Generally VFS helpers re-validate a dentry as a part of lookup. +0. digging down the directory hierarchy. +1. lock the parent dir by its i_mutex. +2. lookup the final (child) entry. +3. revalidate it. +4. call the actual operation (create, unlink, etc.) +5. unlock the parent dir + +If the filesystem implements its ->d_revalidate() (step 3), then it is +called. Actually aufs implements it and checks the dentry on a branch is +still valid. +But it is not enough. Because aufs has to release the lock for the +parent dir on a branch at the end of ->lookup() (step 2) and +->d_revalidate() (step 3) while the i_mutex of the aufs dir is still +held by VFS. +If the file on a branch is changed directly, eg. bypassing aufs, after +aufs released the lock, then the subsequent operation may cause +something unpleasant result. + +This situation is a result of VFS architecture, ->lookup() and +->d_revalidate() is separated. But I never say it is wrong. It is a good +design from VFS's point of view. It is just not suitable for sub-VFS +character in aufs. + +Aufs supports such case by three level of revalidation which is +selectable by user. +1. Simple Revalidate + Addition to the native flow in VFS's, confirm the child-parent + relationship on the branch just after locking the parent dir on the + branch in the "actual operation" (step 4). When this validation + fails, aufs returns EBUSY. ->d_revalidate() (step 3) in aufs still + checks the validation of the dentry on branches. +2. Monitor Changes Internally by Inotify/Fsnotify + Addition to above, in the "actual operation" (step 4) aufs re-lookup + the dentry on the branch, and returns EBUSY if it finds different + dentry. + Additionally, aufs sets the inotify/fsnotify watch for every dir on branches + during it is in cache. When the event is notified, aufs registers a + function to kernel 'events' thread by schedule_work(). And the + function sets some special status to the cached aufs dentry and inode + private data. If they are not cached, then aufs has nothing to + do. When the same file is accessed through aufs (step 0-3) later, + aufs will detect the status and refresh all necessary data. + In this mode, aufs has to ignore the event which is fired by aufs + itself. +3. No Extra Validation + This is the simplest test and doesn't add any additional revalidation + test, and skip the revalidation in step 4. It is useful and improves + aufs performance when system surely hide the aufs branches from user, + by over-mounting something (or another method). only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/design/04branch.txt +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/design/04branch.txt @@ -0,0 +1,74 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Branch Manipulation + +Since aufs supports dynamic branch manipulation, ie. add/remove a branch +and changing its permission/attribute, there are a lot of works to do. + + +Add a Branch +---------------------------------------------------------------------- +o Confirm the adding dir exists outside of aufs, including loopback + mount, and its various attributes. +o Initialize the xino file and whiteout bases if necessary. + See struct.txt. + +o Check the owner/group/mode of the directory + When the owner/group/mode of the adding directory differs from the + existing branch, aufs issues a warning because it may impose a + security risk. + For example, when a upper writable branch has a world writable empty + top directory, a malicious user can create any files on the writable + branch directly, like copy-up and modify manually. If something like + /etc/{passwd,shadow} exists on the lower readonly branch but the upper + writable branch, and the writable branch is world-writable, then a + malicious guy may create /etc/passwd on the writable branch directly + and the infected file will be valid in aufs. + I am afraid it can be a security issue, but aufs can do nothing except + producing a warning. + + +Delete a Branch +---------------------------------------------------------------------- +o Confirm the deleting branch is not busy + To be general, there is one merit to adopt "remount" interface to + manipulate branches. It is to discard caches. At deleting a branch, + aufs checks the still cached (and connected) dentries and inodes. If + there are any, then they are all in-use. An inode without its + corresponding dentry can be alive alone (for example, inotify/fsnotify case). + + For the cached one, aufs checks whether the same named entry exists on + other branches. + If the cached one is a directory, because aufs provides a merged view + to users, as long as one dir is left on any branch aufs can show the + dir to users. In this case, the branch can be removed from aufs. + Otherwise aufs rejects deleting the branch. + + If any file on the deleting branch is opened by aufs, then aufs + rejects deleting. + + +Modify the Permission of a Branch +---------------------------------------------------------------------- +o Re-initialize or remove the xino file and whiteout bases if necessary. + See struct.txt. + +o rw --> ro: Confirm the modifying branch is not busy + Aufs rejects the request if any of these conditions are true. + - a file on the branch is mmap-ed. + - a regular file on the branch is opened for write and there is no + same named entry on the upper branch. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/design/05wbr_policy.txt +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/design/05wbr_policy.txt @@ -0,0 +1,64 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Policies to Select One among Multiple Writable Branches +---------------------------------------------------------------------- +When the number of writable branch is more than one, aufs has to decide +the target branch for file creation or copy-up. By default, the highest +writable branch which has the parent (or ancestor) dir of the target +file is chosen (top-down-parent policy). +By user's request, aufs implements some other policies to select the +writable branch, for file creation several policies, round-robin, +most-free-space, and other policies. For copy-up, top-down-parent, +bottom-up-parent, bottom-up and others. + +As expected, the round-robin policy selects the branch in circular. When +you have two writable branches and creates 10 new files, 5 files will be +created for each branch. mkdir(2) systemcall is an exception. When you +create 10 new directories, all will be created on the same branch. +And the most-free-space policy selects the one which has most free +space among the writable branches. The amount of free space will be +checked by aufs internally, and users can specify its time interval. + +The policies for copy-up is more simple, +top-down-parent is equivalent to the same named on in create policy, +bottom-up-parent selects the writable branch where the parent dir +exists and the nearest upper one from the copyup-source, +bottom-up selects the nearest upper writable branch from the +copyup-source, regardless the existence of the parent dir. + +There are some rules or exceptions to apply these policies. +- If there is a readonly branch above the policy-selected branch and + the parent dir is marked as opaque (a variation of whiteout), or the + target (creating) file is whiteout-ed on the upper readonly branch, + then the result of the policy is ignored and the target file will be + created on the nearest upper writable branch than the readonly branch. +- If there is a writable branch above the policy-selected branch and + the parent dir is marked as opaque or the target file is whiteouted + on the branch, then the result of the policy is ignored and the target + file will be created on the highest one among the upper writable + branches who has diropq or whiteout. In case of whiteout, aufs removes + it as usual. +- link(2) and rename(2) systemcalls are exceptions in every policy. + They try selecting the branch where the source exists as possible + since copyup a large file will take long time. If it can't be, + ie. the branch where the source exists is readonly, then they will + follow the copyup policy. +- There is an exception for rename(2) when the target exists. + If the rename target exists, aufs compares the index of the branches + where the source and the target exists and selects the higher + one. If the selected branch is readonly, then aufs follows the + copyup policy. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/design/06dirren.dot +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/design/06dirren.dot @@ -0,0 +1,31 @@ + +// to view this graph, run dot(1) command in GRAPHVIZ. + +digraph G { +node [shape=box]; +whinfo [label="detailed info file\n(lower_brid_root-hinum, h_inum, namelen, old name)"]; + +node [shape=oval]; + +aufs_rename -> whinfo [label="store/remove"]; + +node [shape=oval]; +inode_list [label="h_inum list in branch\ncache"]; + +node [shape=box]; +whinode [label="h_inum list file"]; + +node [shape=oval]; +brmgmt [label="br_add/del/mod/umount"]; + +brmgmt -> inode_list [label="create/remove"]; +brmgmt -> whinode [label="load/store"]; + +inode_list -> whinode [style=dashed,dir=both]; + +aufs_rename -> inode_list [label="add/del"]; + +aufs_lookup -> inode_list [label="search"]; + +aufs_lookup -> whinfo [label="load/remove"]; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/design/06dirren.txt +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/design/06dirren.txt @@ -0,0 +1,102 @@ + +# Copyright (C) 2017-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Special handling for renaming a directory (DIRREN) +---------------------------------------------------------------------- +First, let's assume we have a simple usecase. + +- /u = /rw + /ro +- /rw/dirA exists +- /ro/dirA and /ro/dirA/file exist too +- there is no dirB on both branches +- a user issues rename("dirA", "dirB") + +Now, what should aufs behave against this rename(2)? +There are a few possible cases. + +A. returns EROFS. + since dirA exists on a readonly branch which cannot be renamed. +B. returns EXDEV. + it is possible to copy-up dirA (only the dir itself), but the child + entries ("file" in this case) should not be. it must be a bad + approach to copy-up recursively. +C. returns a success. + even the branch /ro is readonly, aufs tries renaming it. Obviously it + is a violation of aufs' policy. +D. construct an extra information which indicates that /ro/dirA should + be handled as the name of dirB. + overlayfs has a similar feature called REDIRECT. + +Until now, aufs implements the case B only which returns EXDEV, and +expects the userspace application behaves like mv(1) which tries +issueing rename(2) recursively. + +A new aufs feature called DIRREN is introduced which implements the case +D. There are several "extra information" added. + +1. detailed info per renamed directory + path: /rw/dirB/$AUFS_WH_DR_INFO_PFX. +2. the inode-number list of directories on a branch + path: /rw/dirB/$AUFS_WH_DR_BRHINO + +The filename of "detailed info per directory" represents the lower +branch, and its format is +- a type of the branch id + one of these. + + uuid (not implemented yet) + + fsid + + dev +- the inode-number of the branch root dir + +And it contains these info in a single regular file. +- magic number +- branch's inode-number of the logically renamed dir +- the name of the before-renamed dir + +The "detailed info per directory" file is created in aufs rename(2), and +loaded in any lookup. +The info is considered in lookup for the matching case only. Here +"matching" means that the root of branch (in the info filename) is same +to the current looking-up branch. After looking-up the before-renamed +name, the inode-number is compared. And the matched dentry is used. + +The "inode-number list of directories" is a regular file which contains +simply the inode-numbers on the branch. The file is created or updated +in removing the branch, and loaded in adding the branch. Its lifetime is +equal to the branch. +The list is refered in lookup, and when the current target inode is +found in the list, the aufs tries loading the "detailed info per +directory" and get the changed and valid name of the dir. + +Theoretically these "extra informaiton" may be able to be put into XATTR +in the dir inode. But aufs doesn't choose this way because +1. XATTR may not be supported by the branch (or its configuration) +2. XATTR may have its size limit. +3. XATTR may be less easy to convert than a regular file, when the + format of the info is changed in the future. +At the same time, I agree that the regular file approach is much slower +than XATTR approach. So, in the future, aufs may take the XATTR or other +better approach. + +This DIRREN feature is enabled by aufs configuration, and is activated +by a new mount option. + +For the more complicated case, there is a work with UDBA option, which +is to dected the direct access to the branches (by-passing aufs) and to +maintain the cashes in aufs. Since a single cached aufs dentry may +contains two names, before- and after-rename, the name comparision in +UDBA handler may not work correctly. In this case, the behaviour will be +equivalen to udba=reval case. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/design/06fhsm.txt +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/design/06fhsm.txt @@ -0,0 +1,120 @@ + +# Copyright (C) 2011-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +File-based Hierarchical Storage Management (FHSM) +---------------------------------------------------------------------- +Hierarchical Storage Management (or HSM) is a well-known feature in the +storage world. Aufs provides this feature as file-based with multiple +writable branches, based upon the principle of "Colder, the Lower". +Here the word "colder" means that the less used files, and "lower" means +that the position in the order of the stacked branches vertically. +These multiple writable branches are prioritized, ie. the topmost one +should be the fastest drive and be used heavily. + +o Characters in aufs FHSM story +- aufs itself and a new branch attribute. +- a new ioctl interface to move-down and to establish a connection with + the daemon ("move-down" is a converse of "copy-up"). +- userspace tool and daemon. + +The userspace daemon establishes a connection with aufs and waits for +the notification. The notified information is very similar to struct +statfs containing the number of consumed blocks and inodes. +When the consumed blocks/inodes of a branch exceeds the user-specified +upper watermark, the daemon activates its move-down process until the +consumed blocks/inodes reaches the user-specified lower watermark. + +The actual move-down is done by aufs based upon the request from +user-space since we need to maintain the inode number and the internal +pointer arrays in aufs. + +Currently aufs FHSM handles the regular files only. Additionally they +must not be hard-linked nor pseudo-linked. + + +o Cowork of aufs and the user-space daemon + During the userspace daemon established the connection, aufs sends a + small notification to it whenever aufs writes something into the + writable branch. But it may cost high since aufs issues statfs(2) + internally. So user can specify a new option to cache the + info. Actually the notification is controlled by these factors. + + the specified cache time. + + classified as "force" by aufs internally. + Until the specified time expires, aufs doesn't send the info + except the forced cases. When aufs decide forcing, the info is always + notified to userspace. + For example, the number of free inodes is generally large enough and + the shortage of it happens rarely. So aufs doesn't force the + notification when creating a new file, directory and others. This is + the typical case which aufs doesn't force. + When aufs writes the actual filedata and the files consumes any of new + blocks, the aufs forces notifying. + + +o Interfaces in aufs +- New branch attribute. + + fhsm + Specifies that the branch is managed by FHSM feature. In other word, + participant in the FHSM. + When nofhsm is set to the branch, it will not be the source/target + branch of the move-down operation. This attribute is set + independently from coo and moo attributes, and if you want full + FHSM, you should specify them as well. +- New mount option. + + fhsm_sec + Specifies a second to suppress many less important info to be + notified. +- New ioctl. + + AUFS_CTL_FHSM_FD + create a new file descriptor which userspace can read the notification + (a subset of struct statfs) from aufs. +- Module parameter 'brs' + It has to be set to 1. Otherwise the new mount option 'fhsm' will not + be set. +- mount helpers /sbin/mount.aufs and /sbin/umount.aufs + When there are two or more branches with fhsm attributes, + /sbin/mount.aufs invokes the user-space daemon and /sbin/umount.aufs + terminates it. As a result of remounting and branch-manipulation, the + number of branches with fhsm attribute can be one. In this case, + /sbin/mount.aufs will terminate the user-space daemon. + + +Finally the operation is done as these steps in kernel-space. +- make sure that, + + no one else is using the file. + + the file is not hard-linked. + + the file is not pseudo-linked. + + the file is a regular file. + + the parent dir is not opaqued. +- find the target writable branch. +- make sure the file is not whiteout-ed by the upper (than the target) + branch. +- make the parent dir on the target branch. +- mutex lock the inode on the branch. +- unlink the whiteout on the target branch (if exists). +- lookup and create the whiteout-ed temporary name on the target branch. +- copy the file as the whiteout-ed temporary name on the target branch. +- rename the whiteout-ed temporary name to the original name. +- unlink the file on the source branch. +- maintain the internal pointer array and the external inode number + table (XINO). +- maintain the timestamps and other attributes of the parent dir and the + file. + +And of course, in every step, an error may happen. So the operation +should restore the original file state after an error happens. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/design/06mmap.txt +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/design/06mmap.txt @@ -0,0 +1,72 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +mmap(2) -- File Memory Mapping +---------------------------------------------------------------------- +In aufs, the file-mapped pages are handled by a branch fs directly, no +interaction with aufs. It means aufs_mmap() calls the branch fs's +->mmap(). +This approach is simple and good, but there is one problem. +Under /proc, several entries show the mmapped files by its path (with +device and inode number), and the printed path will be the path on the +branch fs's instead of virtual aufs's. +This is not a problem in most cases, but some utilities lsof(1) (and its +user) may expect the path on aufs. + +To address this issue, aufs adds a new member called vm_prfile in struct +vm_area_struct (and struct vm_region). The original vm_file points to +the file on the branch fs in order to handle everything correctly as +usual. The new vm_prfile points to a virtual file in aufs, and the +show-functions in procfs refers to vm_prfile if it is set. +Also we need to maintain several other places where touching vm_file +such like +- fork()/clone() copies vma and the reference count of vm_file is + incremented. +- merging vma maintains the ref count too. + +This is not a good approach. It just fakes the printed path. But it +leaves all behaviour around f_mapping unchanged. This is surely an +advantage. +Actually aufs had adopted another complicated approach which calls +generic_file_mmap() and handles struct vm_operations_struct. In this +approach, aufs met a hard problem and I could not solve it without +switching the approach. + +There may be one more another approach which is +- bind-mount the branch-root onto the aufs-root internally +- grab the new vfsmount (ie. struct mount) +- lazy-umount the branch-root internally +- in open(2) the aufs-file, open the branch-file with the hidden + vfsmount (instead of the original branch's vfsmount) +- ideally this "bind-mount and lazy-umount" should be done atomically, + but it may be possible from userspace by the mount helper. + +Adding the internal hidden vfsmount and using it in opening a file, the +file path under /proc will be printed correctly. This approach looks +smarter, but is not possible I am afraid. +- aufs-root may be bind-mount later. when it happens, another hidden + vfsmount will be required. +- it is hard to get the chance to bind-mount and lazy-umount + + in kernel-space, FS can have vfsmount in open(2) via + file->f_path, and aufs can know its vfsmount. But several locks are + already acquired, and if aufs tries to bind-mount and lazy-umount + here, then it may cause a deadlock. + + in user-space, bind-mount doesn't invoke the mount helper. +- since /proc shows dev and ino, aufs has to give vma these info. it + means a new member vm_prinode will be necessary. this is essentially + equivalent to vm_prfile described above. + +I have to give up this "looks-smater" approach. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/design/06xattr.txt +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/design/06xattr.txt @@ -0,0 +1,96 @@ + +# Copyright (C) 2014-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Listing XATTR/EA and getting the value +---------------------------------------------------------------------- +For the inode standard attributes (owner, group, timestamps, etc.), aufs +shows the values from the topmost existing file. This behaviour is good +for the non-dir entries since the bahaviour exactly matches the shown +information. But for the directories, aufs considers all the same named +entries on the lower branches. Which means, if one of the lower entry +rejects readdir call, then aufs returns an error even if the topmost +entry allows it. This behaviour is necessary to respect the branch fs's +security, but can make users confused since the user-visible standard +attributes don't match the behaviour. +To address this issue, aufs has a mount option called dirperm1 which +checks the permission for the topmost entry only, and ignores the lower +entry's permission. + +A similar issue can happen around XATTR. +getxattr(2) and listxattr(2) families behave as if dirperm1 option is +always set. Otherwise these very unpleasant situation would happen. +- listxattr(2) may return the duplicated entries. +- users may not be able to remove or reset the XATTR forever, + + +XATTR/EA support in the internal (copy,move)-(up,down) +---------------------------------------------------------------------- +Generally the extended attributes of inode are categorized as these. +- "security" for LSM and capability. +- "system" for posix ACL, 'acl' mount option is required for the branch + fs generally. +- "trusted" for userspace, CAP_SYS_ADMIN is required. +- "user" for userspace, 'user_xattr' mount option is required for the + branch fs generally. + +Moreover there are some other categories. Aufs handles these rather +unpopular categories as the ordinary ones, ie. there is no special +condition nor exception. + +In copy-up, the support for XATTR on the dst branch may differ from the +src branch. In this case, the copy-up operation will get an error and +the original user operation which triggered the copy-up will fail. It +can happen that even all copy-up will fail. +When both of src and dst branches support XATTR and if an error occurs +during copying XATTR, then the copy-up should fail obviously. That is a +good reason and aufs should return an error to userspace. But when only +the src branch support that XATTR, aufs should not return an error. +For example, the src branch supports ACL but the dst branch doesn't +because the dst branch may natively un-support it or temporary +un-support it due to "noacl" mount option. Of course, the dst branch fs +may NOT return an error even if the XATTR is not supported. It is +totally up to the branch fs. + +Anyway when the aufs internal copy-up gets an error from the dst branch +fs, then aufs tries removing the just copied entry and returns the error +to the userspace. The worst case of this situation will be all copy-up +will fail. + +For the copy-up operation, there two basic approaches. +- copy the specified XATTR only (by category above), and return the + error unconditionally if it happens. +- copy all XATTR, and ignore the error on the specified category only. + +In order to support XATTR and to implement the correct behaviour, aufs +chooses the latter approach and introduces some new branch attributes, +"icexsec", "icexsys", "icextr", "icexusr", and "icexoth". +They correspond to the XATTR namespaces (see above). Additionally, to be +convenient, "icex" is also provided which means all "icex*" attributes +are set (here the word "icex" stands for "ignore copy-error on XATTR"). + +The meaning of these attributes is to ignore the error from setting +XATTR on that branch. +Note that aufs tries copying all XATTR unconditionally, and ignores the +error from the dst branch according to the specified attributes. + +Some XATTR may have its default value. The default value may come from +the parent dir or the environment. If the default value is set at the +file creating-time, it will be overwritten by copy-up. +Some contradiction may happen I am afraid. +Do we need another attribute to stop copying XATTR? I am unsure. For +now, aufs implements the branch attributes to ignore the error. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/design/07export.txt +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/design/07export.txt @@ -0,0 +1,58 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Export Aufs via NFS +---------------------------------------------------------------------- +Here is an approach. +- like xino/xib, add a new file 'xigen' which stores aufs inode + generation. +- iget_locked(): initialize aufs inode generation for a new inode, and + store it in xigen file. +- destroy_inode(): increment aufs inode generation and store it in xigen + file. it is necessary even if it is not unlinked, because any data of + inode may be changed by UDBA. +- encode_fh(): for a root dir, simply return FILEID_ROOT. otherwise + build file handle by + + branch id (4 bytes) + + superblock generation (4 bytes) + + inode number (4 or 8 bytes) + + parent dir inode number (4 or 8 bytes) + + inode generation (4 bytes)) + + return value of exportfs_encode_fh() for the parent on a branch (4 + bytes) + + file handle for a branch (by exportfs_encode_fh()) +- fh_to_dentry(): + + find the index of a branch from its id in handle, and check it is + still exist in aufs. + + 1st level: get the inode number from handle and search it in cache. + + 2nd level: if not found in cache, get the parent inode number from + the handle and search it in cache. and then open the found parent + dir, find the matching inode number by vfs_readdir() and get its + name, and call lookup_one_len() for the target dentry. + + 3rd level: if the parent dir is not cached, call + exportfs_decode_fh() for a branch and get the parent on a branch, + build a pathname of it, convert it a pathname in aufs, call + path_lookup(). now aufs gets a parent dir dentry, then handle it as + the 2nd level. + + to open the dir, aufs needs struct vfsmount. aufs keeps vfsmount + for every branch, but not itself. to get this, (currently) aufs + searches in current->nsproxy->mnt_ns list. it may not be a good + idea, but I didn't get other approach. + + test the generation of the gotten inode. +- every inode operation: they may get EBUSY due to UDBA. in this case, + convert it into ESTALE for NFSD. +- readdir(): call lockdep_on/off() because filldir in NFSD calls + lookup_one_len(), vfs_getattr(), encode_fh() and others. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/design/08shwh.txt +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/design/08shwh.txt @@ -0,0 +1,52 @@ + +# Copyright (C) 2005-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Show Whiteout Mode (shwh) +---------------------------------------------------------------------- +Generally aufs hides the name of whiteouts. But in some cases, to show +them is very useful for users. For instance, creating a new middle layer +(branch) by merging existing layers. + +(borrowing aufs1 HOW-TO from a user, Michael Towers) +When you have three branches, +- Bottom: 'system', squashfs (underlying base system), read-only +- Middle: 'mods', squashfs, read-only +- Top: 'overlay', ram (tmpfs), read-write + +The top layer is loaded at boot time and saved at shutdown, to preserve +the changes made to the system during the session. +When larger changes have been made, or smaller changes have accumulated, +the size of the saved top layer data grows. At this point, it would be +nice to be able to merge the two overlay branches ('mods' and 'overlay') +and rewrite the 'mods' squashfs, clearing the top layer and thus +restoring save and load speed. + +This merging is simplified by the use of another aufs mount, of just the +two overlay branches using the 'shwh' option. +# mount -t aufs -o ro,shwh,br:/livesys/overlay=ro+wh:/livesys/mods=rr+wh \ + aufs /livesys/merge_union + +A merged view of these two branches is then available at +/livesys/merge_union, and the new feature is that the whiteouts are +visible! +Note that in 'shwh' mode the aufs mount must be 'ro', which will disable +writing to all branches. Also the default mode for all branches is 'ro'. +It is now possible to save the combined contents of the two overlay +branches to a new squashfs, e.g.: +# mksquashfs /livesys/merge_union /path/to/newmods.squash + +This new squashfs archive can be stored on the boot device and the +initramfs will use it to replace the old one at the next boot. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/Documentation/filesystems/aufs/design/10dynop.txt +++ linux-azure-5.13-5.13.0/Documentation/filesystems/aufs/design/10dynop.txt @@ -0,0 +1,47 @@ + +# Copyright (C) 2010-2020 Junjiro R. Okajima +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +Dynamically customizable FS operations +---------------------------------------------------------------------- +Generally FS operations (struct inode_operations, struct +address_space_operations, struct file_operations, etc.) are defined as +"static const", but it never means that FS have only one set of +operation. Some FS have multiple sets of them. For instance, ext2 has +three sets, one for XIP, for NOBH, and for normal. +Since aufs overrides and redirects these operations, sometimes aufs has +to change its behaviour according to the branch FS type. More importantly +VFS acts differently if a function (member in the struct) is set or +not. It means aufs should have several sets of operations and select one +among them according to the branch FS definition. + +In order to solve this problem and not to affect the behaviour of VFS, +aufs defines these operations dynamically. For instance, aufs defines +dummy direct_IO function for struct address_space_operations, but it may +not be set to the address_space_operations actually. When the branch FS +doesn't have it, aufs doesn't set it to its address_space_operations +while the function definition itself is still alive. So the behaviour +itself will not change, and it will return an error when direct_IO is +not set. + +The lifetime of these dynamically generated operation object is +maintained by aufs branch object. When the branch is removed from aufs, +the reference counter of the object is decremented. When it reaches +zero, the dynamically generated operation object will be freed. + +This approach is designed to support AIO (io_submit), Direct I/O and +XIP (DAX) mainly. +Currently this approach is applied to address_space_operations for +regular files only. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/drivers/block/loop.h +++ linux-azure-5.13-5.13.0/drivers/block/loop.h @@ -47,7 +47,7 @@ int (*ioctl)(struct loop_device *, int cmd, unsigned long arg); - struct file * lo_backing_file; + struct file *lo_backing_file, *lo_backing_virt_file; struct block_device *lo_device; void *key_data; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/Kconfig +++ linux-azure-5.13-5.13.0/fs/aufs/Kconfig @@ -0,0 +1,199 @@ +# SPDX-License-Identifier: GPL-2.0 +config AUFS_FS + tristate "Aufs (Advanced multi layered unification filesystem) support" + help + Aufs is a stackable unification filesystem such as Unionfs, + which unifies several directories and provides a merged single + directory. + In the early days, aufs was entirely re-designed and + re-implemented Unionfs Version 1.x series. Introducing many + original ideas, approaches and improvements, it becomes totally + different from Unionfs while keeping the basic features. + +if AUFS_FS +choice + prompt "Maximum number of branches" + default AUFS_BRANCH_MAX_127 + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_127 + bool "127" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_511 + bool "511" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_1023 + bool "1023" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +config AUFS_BRANCH_MAX_32767 + bool "32767" + help + Specifies the maximum number of branches (or member directories) + in a single aufs. The larger value consumes more system + resources and has a minor impact to performance. +endchoice + +config AUFS_SBILIST + bool + depends on AUFS_MAGIC_SYSRQ || PROC_FS + default y + help + Automatic configuration for internal use. + When aufs supports Magic SysRq or /proc, enabled automatically. + +config AUFS_HNOTIFY + bool "Detect direct branch access (bypassing aufs)" + help + If you want to modify files on branches directly, eg. bypassing aufs, + and want aufs to detect the changes of them fully, then enable this + option and use 'udba=notify' mount option. + Currently there is only one available configuration, "fsnotify". + It will have a negative impact to the performance. + See detail in aufs.5. + +choice + prompt "method" if AUFS_HNOTIFY + default AUFS_HFSNOTIFY +config AUFS_HFSNOTIFY + bool "fsnotify" + select FSNOTIFY +endchoice + +config AUFS_EXPORT + bool "NFS-exportable aufs" + depends on EXPORTFS + help + If you want to export your mounted aufs via NFS, then enable this + option. There are several requirements for this configuration. + See detail in aufs.5. + +config AUFS_INO_T_64 + bool + depends on AUFS_EXPORT + depends on 64BIT + default y + help + Automatic configuration for internal use. + /* typedef unsigned long/int __kernel_ino_t */ + /* alpha and s390x are int */ + +config AUFS_XATTR + bool "support for XATTR/EA (including Security Labels)" + help + If your branch fs supports XATTR/EA and you want to make them + available in aufs too, then enable this opsion and specify the + branch attributes for EA. + See detail in aufs.5. + +config AUFS_FHSM + bool "File-based Hierarchical Storage Management" + help + Hierarchical Storage Management (or HSM) is a well-known feature + in the storage world. Aufs provides this feature as file-based. + with multiple branches. + These multiple branches are prioritized, ie. the topmost one + should be the fastest drive and be used heavily. + +config AUFS_RDU + bool "Readdir in userspace" + help + Aufs has two methods to provide a merged view for a directory, + by a user-space library and by kernel-space natively. The latter + is always enabled but sometimes large and slow. + If you enable this option, install the library in aufs2-util + package, and set some environment variables for your readdir(3), + then the work will be handled in user-space which generally + shows better performance in most cases. + See detail in aufs.5. + +config AUFS_DIRREN + bool "Workaround for rename(2)-ing a directory" + help + By default, aufs returns EXDEV error in renameing a dir who has + his child on the lower branch, since it is a bad idea to issue + rename(2) internally for every lower branch. But user may not + accept this behaviour. So here is a workaround to allow such + rename(2) and store some extra infromation on the writable + branch. Obviously this costs high (and I don't like it). + To use this feature, you need to enable this configuration AND + to specify the mount option `dirren.' + See details in aufs.5 and the design documents. + +config AUFS_SHWH + bool "Show whiteouts" + help + If you want to make the whiteouts in aufs visible, then enable + this option and specify 'shwh' mount option. Although it may + sounds like philosophy or something, but in technically it + simply shows the name of whiteout with keeping its behaviour. + +config AUFS_BR_RAMFS + bool "Ramfs (initramfs/rootfs) as an aufs branch" + help + If you want to use ramfs as an aufs branch fs, then enable this + option. Generally tmpfs is recommended. + Aufs prohibited them to be a branch fs by default, because + initramfs becomes unusable after switch_root or something + generally. If you sets initramfs as an aufs branch and boot your + system by switch_root, you will meet a problem easily since the + files in initramfs may be inaccessible. + Unless you are going to use ramfs as an aufs branch fs without + switch_root or something, leave it N. + +config AUFS_BR_FUSE + bool "Fuse fs as an aufs branch" + depends on FUSE_FS + select AUFS_POLL + help + If you want to use fuse-based userspace filesystem as an aufs + branch fs, then enable this option. + It implements the internal poll(2) operation which is + implemented by fuse only (curretnly). + +config AUFS_POLL + bool + help + Automatic configuration for internal use. + +config AUFS_BR_HFSPLUS + bool "Hfsplus as an aufs branch" + depends on HFSPLUS_FS + default y + help + If you want to use hfsplus fs as an aufs branch fs, then enable + this option. This option introduces a small overhead at + copying-up a file on hfsplus. + +config AUFS_BDEV_LOOP + bool + depends on BLK_DEV_LOOP + default y + help + Automatic configuration for internal use. + Convert =[ym] into =y. + +config AUFS_DEBUG + bool "Debug aufs" + help + Enable this to compile aufs internal debug code. + It will have a negative impact to the performance. + +config AUFS_MAGIC_SYSRQ + bool + depends on AUFS_DEBUG && MAGIC_SYSRQ + default y + help + Automatic configuration for internal use. + When aufs supports Magic SysRq, enabled automatically. +endif only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/Makefile +++ linux-azure-5.13-5.13.0/fs/aufs/Makefile @@ -0,0 +1,46 @@ +# SPDX-License-Identifier: GPL-2.0 + +include ${src}/magic.mk +ifeq (${CONFIG_AUFS_FS},m) +include ${src}/conf.mk +endif +-include ${src}/priv_def.mk + +# cf. include/linux/kernel.h +# enable pr_debug +ccflags-y += -DDEBUG +# sparse requires the full pathname +ifdef M +ccflags-y += -include ${M}/../../include/uapi/linux/aufs_type.h +else +ccflags-y += -include ${srctree}/include/uapi/linux/aufs_type.h +endif + +obj-$(CONFIG_AUFS_FS) += aufs.o +aufs-y := module.o sbinfo.o super.o branch.o xino.o sysaufs.o opts.o \ + wkq.o vfsub.o dcsub.o \ + cpup.o whout.o wbr_policy.o \ + dinfo.o dentry.o \ + dynop.o \ + finfo.o file.o f_op.o \ + dir.o vdir.o \ + iinfo.o inode.o i_op.o i_op_add.o i_op_del.o i_op_ren.o \ + mvdown.o ioctl.o + +# all are boolean +aufs-$(CONFIG_PROC_FS) += procfs.o plink.o +aufs-$(CONFIG_SYSFS) += sysfs.o +aufs-$(CONFIG_DEBUG_FS) += dbgaufs.o +aufs-$(CONFIG_AUFS_BDEV_LOOP) += loop.o +aufs-$(CONFIG_AUFS_HNOTIFY) += hnotify.o +aufs-$(CONFIG_AUFS_HFSNOTIFY) += hfsnotify.o +aufs-$(CONFIG_AUFS_EXPORT) += export.o +aufs-$(CONFIG_AUFS_XATTR) += xattr.o +aufs-$(CONFIG_FS_POSIX_ACL) += posix_acl.o +aufs-$(CONFIG_AUFS_DIRREN) += dirren.o +aufs-$(CONFIG_AUFS_FHSM) += fhsm.o +aufs-$(CONFIG_AUFS_POLL) += poll.o +aufs-$(CONFIG_AUFS_RDU) += rdu.o +aufs-$(CONFIG_AUFS_BR_HFSPLUS) += hfsplus.o +aufs-$(CONFIG_AUFS_DEBUG) += debug.o +aufs-$(CONFIG_AUFS_MAGIC_SYSRQ) += sysrq.o only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/aufs.h +++ linux-azure-5.13-5.13.0/fs/aufs/aufs.h @@ -0,0 +1,62 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * all header files + */ + +#ifndef __AUFS_H__ +#define __AUFS_H__ + +#ifdef __KERNEL__ + +#define AuStub(type, name, body, ...) \ + static inline type name(__VA_ARGS__) { body; } + +#define AuStubVoid(name, ...) \ + AuStub(void, name, , __VA_ARGS__) +#define AuStubInt0(name, ...) \ + AuStub(int, name, return 0, __VA_ARGS__) + +#include "debug.h" + +#include "branch.h" +#include "cpup.h" +#include "dcsub.h" +#include "dbgaufs.h" +#include "dentry.h" +#include "dir.h" +#include "dirren.h" +#include "dynop.h" +#include "file.h" +#include "fstype.h" +#include "hbl.h" +#include "inode.h" +#include "lcnt.h" +#include "loop.h" +#include "module.h" +#include "opts.h" +#include "rwsem.h" +#include "super.h" +#include "sysaufs.h" +#include "vfsub.h" +#include "whout.h" +#include "wkq.h" + +#endif /* __KERNEL__ */ +#endif /* __AUFS_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/branch.c +++ linux-azure-5.13-5.13.0/fs/aufs/branch.c @@ -0,0 +1,1427 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * branch management + */ + +#include +#include +#include "aufs.h" + +/* + * free a single branch + */ +static void au_br_do_free(struct au_branch *br) +{ + int i; + struct au_wbr *wbr; + struct au_dykey **key; + + au_hnotify_fin_br(br); + /* always, regardless the mount option */ + au_dr_hino_free(&br->br_dirren); + au_xino_put(br); + + AuLCntZero(au_lcnt_read(&br->br_nfiles, /*do_rev*/0)); + au_lcnt_fin(&br->br_nfiles, /*do_sync*/0); + AuLCntZero(au_lcnt_read(&br->br_count, /*do_rev*/0)); + au_lcnt_fin(&br->br_count, /*do_sync*/0); + + wbr = br->br_wbr; + if (wbr) { + for (i = 0; i < AuBrWh_Last; i++) + dput(wbr->wbr_wh[i]); + AuDebugOn(atomic_read(&wbr->wbr_wh_running)); + AuRwDestroy(&wbr->wbr_wh_rwsem); + } + + if (br->br_fhsm) { + au_br_fhsm_fin(br->br_fhsm); + au_kfree_try_rcu(br->br_fhsm); + } + + key = br->br_dykey; + for (i = 0; i < AuBrDynOp; i++, key++) + if (*key) + au_dy_put(*key); + else + break; + + /* recursive lock, s_umount of branch's */ + /* synchronize_rcu(); */ /* why? */ + lockdep_off(); + path_put(&br->br_path); + lockdep_on(); + au_kfree_rcu(wbr); + au_lcnt_wait_for_fin(&br->br_nfiles); + au_lcnt_wait_for_fin(&br->br_count); + /* I don't know why, but percpu_refcount requires this */ + /* synchronize_rcu(); */ + au_kfree_rcu(br); +} + +/* + * frees all branches + */ +void au_br_free(struct au_sbinfo *sbinfo) +{ + aufs_bindex_t bmax; + struct au_branch **br; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + bmax = sbinfo->si_bbot + 1; + br = sbinfo->si_branch; + while (bmax--) + au_br_do_free(*br++); +} + +/* + * find the index of a branch which is specified by @br_id. + */ +int au_br_index(struct super_block *sb, aufs_bindex_t br_id) +{ + aufs_bindex_t bindex, bbot; + + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) + if (au_sbr_id(sb, bindex) == br_id) + return bindex; + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/* + * add a branch + */ + +static int test_overlap(struct super_block *sb, struct dentry *h_adding, + struct dentry *h_root) +{ + if (unlikely(h_adding == h_root + || au_test_loopback_overlap(sb, h_adding))) + return 1; + if (h_adding->d_sb != h_root->d_sb) + return 0; + return au_test_subdir(h_adding, h_root) + || au_test_subdir(h_root, h_adding); +} + +/* + * returns a newly allocated branch. @new_nbranch is a number of branches + * after adding a branch. + */ +static struct au_branch *au_br_alloc(struct super_block *sb, int new_nbranch, + int perm) +{ + struct au_branch *add_branch; + struct dentry *root; + struct inode *inode; + int err; + + err = -ENOMEM; + add_branch = kzalloc(sizeof(*add_branch), GFP_NOFS); + if (unlikely(!add_branch)) + goto out; + add_branch->br_xino = au_xino_alloc(/*nfile*/1); + if (unlikely(!add_branch->br_xino)) + goto out_br; + err = au_hnotify_init_br(add_branch, perm); + if (unlikely(err)) + goto out_xino; + + if (au_br_writable(perm)) { + /* may be freed separately at changing the branch permission */ + add_branch->br_wbr = kzalloc(sizeof(*add_branch->br_wbr), + GFP_NOFS); + if (unlikely(!add_branch->br_wbr)) + goto out_hnotify; + } + + if (au_br_fhsm(perm)) { + err = au_fhsm_br_alloc(add_branch); + if (unlikely(err)) + goto out_wbr; + } + + root = sb->s_root; + err = au_sbr_realloc(au_sbi(sb), new_nbranch, /*may_shrink*/0); + if (!err) + err = au_di_realloc(au_di(root), new_nbranch, /*may_shrink*/0); + if (!err) { + inode = d_inode(root); + err = au_hinode_realloc(au_ii(inode), new_nbranch, + /*may_shrink*/0); + } + if (!err) + return add_branch; /* success */ + +out_wbr: + au_kfree_rcu(add_branch->br_wbr); +out_hnotify: + au_hnotify_fin_br(add_branch); +out_xino: + au_xino_put(add_branch); +out_br: + au_kfree_rcu(add_branch); +out: + return ERR_PTR(err); +} + +/* + * test if the branch permission is legal or not. + */ +static int test_br(struct inode *inode, int brperm, char *path) +{ + int err; + + err = (au_br_writable(brperm) && IS_RDONLY(inode)); + if (!err) + goto out; + + err = -EINVAL; + pr_err("write permission for readonly mount or inode, %s\n", path); + +out: + return err; +} + +/* + * returns: + * 0: success, the caller will add it + * plus: success, it is already unified, the caller should ignore it + * minus: error + */ +static int test_add(struct super_block *sb, struct au_opt_add *add, int remount) +{ + int err; + aufs_bindex_t bbot, bindex; + struct dentry *root, *h_dentry; + struct inode *inode, *h_inode; + + root = sb->s_root; + bbot = au_sbbot(sb); + if (unlikely(bbot >= 0 + && au_find_dbindex(root, add->path.dentry) >= 0)) { + err = 1; + if (!remount) { + err = -EINVAL; + pr_err("%s duplicated\n", add->pathname); + } + goto out; + } + + err = -ENOSPC; /* -E2BIG; */ + if (unlikely(AUFS_BRANCH_MAX <= add->bindex + || AUFS_BRANCH_MAX - 1 <= bbot)) { + pr_err("number of branches exceeded %s\n", add->pathname); + goto out; + } + + err = -EDOM; + if (unlikely(add->bindex < 0 || bbot + 1 < add->bindex)) { + pr_err("bad index %d\n", add->bindex); + goto out; + } + + inode = d_inode(add->path.dentry); + err = -ENOENT; + if (unlikely(!inode->i_nlink)) { + pr_err("no existence %s\n", add->pathname); + goto out; + } + + err = -EINVAL; + if (unlikely(inode->i_sb == sb)) { + pr_err("%s must be outside\n", add->pathname); + goto out; + } + + if (unlikely(au_test_fs_unsuppoted(inode->i_sb))) { + pr_err("unsupported filesystem, %s (%s)\n", + add->pathname, au_sbtype(inode->i_sb)); + goto out; + } + + if (unlikely(inode->i_sb->s_stack_depth)) { + pr_err("already stacked, %s (%s)\n", + add->pathname, au_sbtype(inode->i_sb)); + goto out; + } + + err = test_br(d_inode(add->path.dentry), add->perm, add->pathname); + if (unlikely(err)) + goto out; + + if (bbot < 0) + return 0; /* success */ + + err = -EINVAL; + for (bindex = 0; bindex <= bbot; bindex++) + if (unlikely(test_overlap(sb, add->path.dentry, + au_h_dptr(root, bindex)))) { + pr_err("%s is overlapped\n", add->pathname); + goto out; + } + + err = 0; + if (au_opt_test(au_mntflags(sb), WARN_PERM)) { + h_dentry = au_h_dptr(root, 0); + h_inode = d_inode(h_dentry); + if ((h_inode->i_mode & S_IALLUGO) != (inode->i_mode & S_IALLUGO) + || !uid_eq(h_inode->i_uid, inode->i_uid) + || !gid_eq(h_inode->i_gid, inode->i_gid)) + pr_warn("uid/gid/perm %s %u/%u/0%o, %u/%u/0%o\n", + add->pathname, + i_uid_read(inode), i_gid_read(inode), + (inode->i_mode & S_IALLUGO), + i_uid_read(h_inode), i_gid_read(h_inode), + (h_inode->i_mode & S_IALLUGO)); + } + +out: + return err; +} + +/* + * initialize or clean the whiteouts for an adding branch + */ +static int au_br_init_wh(struct super_block *sb, struct au_branch *br, + int new_perm) +{ + int err, old_perm; + aufs_bindex_t bindex; + struct inode *h_inode; + struct au_wbr *wbr; + struct au_hinode *hdir; + struct dentry *h_dentry; + + err = vfsub_mnt_want_write(au_br_mnt(br)); + if (unlikely(err)) + goto out; + + wbr = br->br_wbr; + old_perm = br->br_perm; + br->br_perm = new_perm; + hdir = NULL; + h_inode = NULL; + bindex = au_br_index(sb, br->br_id); + if (0 <= bindex) { + hdir = au_hi(d_inode(sb->s_root), bindex); + au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); + } else { + h_dentry = au_br_dentry(br); + h_inode = d_inode(h_dentry); + inode_lock_nested(h_inode, AuLsc_I_PARENT); + } + if (!wbr) + err = au_wh_init(br, sb); + else { + wbr_wh_write_lock(wbr); + err = au_wh_init(br, sb); + wbr_wh_write_unlock(wbr); + } + if (hdir) + au_hn_inode_unlock(hdir); + else + inode_unlock(h_inode); + vfsub_mnt_drop_write(au_br_mnt(br)); + br->br_perm = old_perm; + + if (!err && wbr && !au_br_writable(new_perm)) { + au_kfree_rcu(wbr); + br->br_wbr = NULL; + } + +out: + return err; +} + +static int au_wbr_init(struct au_branch *br, struct super_block *sb, + int perm) +{ + int err; + struct kstatfs kst; + struct au_wbr *wbr; + + wbr = br->br_wbr; + au_rw_init(&wbr->wbr_wh_rwsem); + atomic_set(&wbr->wbr_wh_running, 0); + + /* + * a limit for rmdir/rename a dir + * cf. AUFS_MAX_NAMELEN in include/uapi/linux/aufs_type.h + */ + err = vfs_statfs(&br->br_path, &kst); + if (unlikely(err)) + goto out; + err = -EINVAL; + if (kst.f_namelen >= NAME_MAX) + err = au_br_init_wh(sb, br, perm); + else + pr_err("%pd(%s), unsupported namelen %ld\n", + au_br_dentry(br), + au_sbtype(au_br_dentry(br)->d_sb), kst.f_namelen); + +out: + return err; +} + +/* initialize a new branch */ +static int au_br_init(struct au_branch *br, struct super_block *sb, + struct au_opt_add *add) +{ + int err; + struct au_branch *brbase; + struct file *xf; + struct inode *h_inode; + + err = 0; + br->br_perm = add->perm; + br->br_path = add->path; /* set first, path_get() later */ + spin_lock_init(&br->br_dykey_lock); + au_lcnt_init(&br->br_nfiles, /*release*/NULL); + au_lcnt_init(&br->br_count, /*release*/NULL); + br->br_id = au_new_br_id(sb); + AuDebugOn(br->br_id < 0); + + /* always, regardless the given option */ + err = au_dr_br_init(sb, br, &add->path); + if (unlikely(err)) + goto out_err; + + if (au_br_writable(add->perm)) { + err = au_wbr_init(br, sb, add->perm); + if (unlikely(err)) + goto out_err; + } + + if (au_opt_test(au_mntflags(sb), XINO)) { + brbase = au_sbr(sb, 0); + xf = au_xino_file(brbase->br_xino, /*idx*/-1); + AuDebugOn(!xf); + h_inode = d_inode(add->path.dentry); + err = au_xino_init_br(sb, br, h_inode->i_ino, &xf->f_path); + if (unlikely(err)) { + AuDebugOn(au_xino_file(br->br_xino, /*idx*/-1)); + goto out_err; + } + } + + sysaufs_br_init(br); + path_get(&br->br_path); + goto out; /* success */ + +out_err: + memset(&br->br_path, 0, sizeof(br->br_path)); +out: + return err; +} + +static void au_br_do_add_brp(struct au_sbinfo *sbinfo, aufs_bindex_t bindex, + struct au_branch *br, aufs_bindex_t bbot, + aufs_bindex_t amount) +{ + struct au_branch **brp; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + brp = sbinfo->si_branch + bindex; + memmove(brp + 1, brp, sizeof(*brp) * amount); + *brp = br; + sbinfo->si_bbot++; + if (unlikely(bbot < 0)) + sbinfo->si_bbot = 0; +} + +static void au_br_do_add_hdp(struct au_dinfo *dinfo, aufs_bindex_t bindex, + aufs_bindex_t bbot, aufs_bindex_t amount) +{ + struct au_hdentry *hdp; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + hdp = au_hdentry(dinfo, bindex); + memmove(hdp + 1, hdp, sizeof(*hdp) * amount); + au_h_dentry_init(hdp); + dinfo->di_bbot++; + if (unlikely(bbot < 0)) + dinfo->di_btop = 0; +} + +static void au_br_do_add_hip(struct au_iinfo *iinfo, aufs_bindex_t bindex, + aufs_bindex_t bbot, aufs_bindex_t amount) +{ + struct au_hinode *hip; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + hip = au_hinode(iinfo, bindex); + memmove(hip + 1, hip, sizeof(*hip) * amount); + au_hinode_init(hip); + iinfo->ii_bbot++; + if (unlikely(bbot < 0)) + iinfo->ii_btop = 0; +} + +static void au_br_do_add(struct super_block *sb, struct au_branch *br, + aufs_bindex_t bindex) +{ + struct dentry *root, *h_dentry; + struct inode *root_inode, *h_inode; + aufs_bindex_t bbot, amount; + + root = sb->s_root; + root_inode = d_inode(root); + bbot = au_sbbot(sb); + amount = bbot + 1 - bindex; + h_dentry = au_br_dentry(br); + au_sbilist_lock(); + au_br_do_add_brp(au_sbi(sb), bindex, br, bbot, amount); + au_br_do_add_hdp(au_di(root), bindex, bbot, amount); + au_br_do_add_hip(au_ii(root_inode), bindex, bbot, amount); + au_set_h_dptr(root, bindex, dget(h_dentry)); + h_inode = d_inode(h_dentry); + au_set_h_iptr(root_inode, bindex, au_igrab(h_inode), /*flags*/0); + au_sbilist_unlock(); +} + +int au_br_add(struct super_block *sb, struct au_opt_add *add, int remount) +{ + int err; + aufs_bindex_t bbot, add_bindex; + struct dentry *root, *h_dentry; + struct inode *root_inode; + struct au_branch *add_branch; + + root = sb->s_root; + root_inode = d_inode(root); + IMustLock(root_inode); + IiMustWriteLock(root_inode); + err = test_add(sb, add, remount); + if (unlikely(err < 0)) + goto out; + if (err) { + err = 0; + goto out; /* success */ + } + + bbot = au_sbbot(sb); + add_branch = au_br_alloc(sb, bbot + 2, add->perm); + err = PTR_ERR(add_branch); + if (IS_ERR(add_branch)) + goto out; + + err = au_br_init(add_branch, sb, add); + if (unlikely(err)) { + au_br_do_free(add_branch); + goto out; + } + + add_bindex = add->bindex; + sysaufs_brs_del(sb, add_bindex); /* remove successors */ + au_br_do_add(sb, add_branch, add_bindex); + sysaufs_brs_add(sb, add_bindex); /* append successors */ + dbgaufs_brs_add(sb, add_bindex, /*topdown*/0); /* rename successors */ + + h_dentry = add->path.dentry; + if (!add_bindex) { + au_cpup_attr_all(root_inode, /*force*/1); + sb->s_maxbytes = h_dentry->d_sb->s_maxbytes; + } else + au_add_nlink(root_inode, d_inode(h_dentry)); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +static unsigned long long au_farray_cb(struct super_block *sb, void *a, + unsigned long long max __maybe_unused, + void *arg) +{ + unsigned long long n; + struct file **p, *f; + struct hlist_bl_head *files; + struct hlist_bl_node *pos; + struct au_finfo *finfo; + + n = 0; + p = a; + files = &au_sbi(sb)->si_files; + hlist_bl_lock(files); + hlist_bl_for_each_entry(finfo, pos, files, fi_hlist) { + f = finfo->fi_file; + if (file_count(f) + && !special_file(file_inode(f)->i_mode)) { + get_file(f); + *p++ = f; + n++; + AuDebugOn(n > max); + } + } + hlist_bl_unlock(files); + + return n; +} + +static struct file **au_farray_alloc(struct super_block *sb, + unsigned long long *max) +{ + struct au_sbinfo *sbi; + + sbi = au_sbi(sb); + *max = au_lcnt_read(&sbi->si_nfiles, /*do_rev*/1); + return au_array_alloc(max, au_farray_cb, sb, /*arg*/NULL); +} + +static void au_farray_free(struct file **a, unsigned long long max) +{ + unsigned long long ull; + + for (ull = 0; ull < max; ull++) + if (a[ull]) + fput(a[ull]); + kvfree(a); +} + +/* ---------------------------------------------------------------------- */ + +/* + * delete a branch + */ + +/* to show the line number, do not make it inlined function */ +#define AuVerbose(do_info, fmt, ...) do { \ + if (do_info) \ + pr_info(fmt, ##__VA_ARGS__); \ +} while (0) + +static int au_test_ibusy(struct inode *inode, aufs_bindex_t btop, + aufs_bindex_t bbot) +{ + return (inode && !S_ISDIR(inode->i_mode)) || btop == bbot; +} + +static int au_test_dbusy(struct dentry *dentry, aufs_bindex_t btop, + aufs_bindex_t bbot) +{ + return au_test_ibusy(d_inode(dentry), btop, bbot); +} + +/* + * test if the branch is deletable or not. + */ +static int test_dentry_busy(struct dentry *root, aufs_bindex_t bindex, + unsigned int sigen, const unsigned int verbose) +{ + int err, i, j, ndentry; + aufs_bindex_t btop, bbot; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry *d; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, root, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + for (i = 0; !err && i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = 0; !err && j < ndentry; j++) { + d = dpage->dentries[j]; + AuDebugOn(au_dcount(d) <= 0); + if (!au_digen_test(d, sigen)) { + di_read_lock_child(d, AuLock_IR); + if (unlikely(au_dbrange_test(d))) { + di_read_unlock(d, AuLock_IR); + continue; + } + } else { + di_write_lock_child(d); + if (unlikely(au_dbrange_test(d))) { + di_write_unlock(d); + continue; + } + err = au_reval_dpath(d, sigen); + if (!err) + di_downgrade_lock(d, AuLock_IR); + else { + di_write_unlock(d); + break; + } + } + + /* AuDbgDentry(d); */ + btop = au_dbtop(d); + bbot = au_dbbot(d); + if (btop <= bindex + && bindex <= bbot + && au_h_dptr(d, bindex) + && au_test_dbusy(d, btop, bbot)) { + err = -EBUSY; + AuVerbose(verbose, "busy %pd\n", d); + AuDbgDentry(d); + } + di_read_unlock(d, AuLock_IR); + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static int test_inode_busy(struct super_block *sb, aufs_bindex_t bindex, + unsigned int sigen, const unsigned int verbose) +{ + int err; + unsigned long long max, ull; + struct inode *i, **array; + aufs_bindex_t btop, bbot; + + array = au_iarray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + err = 0; + AuDbg("b%d\n", bindex); + for (ull = 0; !err && ull < max; ull++) { + i = array[ull]; + if (unlikely(!i)) + break; + if (i->i_ino == AUFS_ROOT_INO) + continue; + + /* AuDbgInode(i); */ + if (au_iigen(i, NULL) == sigen) + ii_read_lock_child(i); + else { + ii_write_lock_child(i); + err = au_refresh_hinode_self(i); + au_iigen_dec(i); + if (!err) + ii_downgrade_lock(i); + else { + ii_write_unlock(i); + break; + } + } + + btop = au_ibtop(i); + bbot = au_ibbot(i); + if (btop <= bindex + && bindex <= bbot + && au_h_iptr(i, bindex) + && au_test_ibusy(i, btop, bbot)) { + err = -EBUSY; + AuVerbose(verbose, "busy i%lu\n", i->i_ino); + AuDbgInode(i); + } + ii_read_unlock(i); + } + au_iarray_free(array, max); + +out: + return err; +} + +static int test_children_busy(struct dentry *root, aufs_bindex_t bindex, + const unsigned int verbose) +{ + int err; + unsigned int sigen; + + sigen = au_sigen(root->d_sb); + DiMustNoWaiters(root); + IiMustNoWaiters(d_inode(root)); + di_write_unlock(root); + err = test_dentry_busy(root, bindex, sigen, verbose); + if (!err) + err = test_inode_busy(root->d_sb, bindex, sigen, verbose); + di_write_lock_child(root); /* aufs_write_lock() calls ..._child() */ + + return err; +} + +static int test_dir_busy(struct file *file, aufs_bindex_t br_id, + struct file **to_free, int *idx) +{ + int err; + unsigned char matched, root; + aufs_bindex_t bindex, bbot; + struct au_fidir *fidir; + struct au_hfile *hfile; + + err = 0; + root = IS_ROOT(file->f_path.dentry); + if (root) { + get_file(file); + to_free[*idx] = file; + (*idx)++; + goto out; + } + + matched = 0; + fidir = au_fi(file)->fi_hdir; + AuDebugOn(!fidir); + bbot = au_fbbot_dir(file); + for (bindex = au_fbtop(file); bindex <= bbot; bindex++) { + hfile = fidir->fd_hfile + bindex; + if (!hfile->hf_file) + continue; + + if (hfile->hf_br->br_id == br_id) { + matched = 1; + break; + } + } + if (matched) + err = -EBUSY; + +out: + return err; +} + +static int test_file_busy(struct super_block *sb, aufs_bindex_t br_id, + struct file **to_free, int opened) +{ + int err, idx; + unsigned long long ull, max; + aufs_bindex_t btop; + struct file *file, **array; + struct dentry *root; + struct au_hfile *hfile; + + array = au_farray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + err = 0; + idx = 0; + root = sb->s_root; + di_write_unlock(root); + for (ull = 0; ull < max; ull++) { + file = array[ull]; + if (unlikely(!file)) + break; + + /* AuDbg("%pD\n", file); */ + fi_read_lock(file); + btop = au_fbtop(file); + if (!d_is_dir(file->f_path.dentry)) { + hfile = &au_fi(file)->fi_htop; + if (hfile->hf_br->br_id == br_id) + err = -EBUSY; + } else + err = test_dir_busy(file, br_id, to_free, &idx); + fi_read_unlock(file); + if (unlikely(err)) + break; + } + di_write_lock_child(root); + au_farray_free(array, max); + AuDebugOn(idx > opened); + +out: + return err; +} + +static void br_del_file(struct file **to_free, unsigned long long opened, + aufs_bindex_t br_id) +{ + unsigned long long ull; + aufs_bindex_t bindex, btop, bbot, bfound; + struct file *file; + struct au_fidir *fidir; + struct au_hfile *hfile; + + for (ull = 0; ull < opened; ull++) { + file = to_free[ull]; + if (unlikely(!file)) + break; + + /* AuDbg("%pD\n", file); */ + AuDebugOn(!d_is_dir(file->f_path.dentry)); + bfound = -1; + fidir = au_fi(file)->fi_hdir; + AuDebugOn(!fidir); + fi_write_lock(file); + btop = au_fbtop(file); + bbot = au_fbbot_dir(file); + for (bindex = btop; bindex <= bbot; bindex++) { + hfile = fidir->fd_hfile + bindex; + if (!hfile->hf_file) + continue; + + if (hfile->hf_br->br_id == br_id) { + bfound = bindex; + break; + } + } + AuDebugOn(bfound < 0); + au_set_h_fptr(file, bfound, NULL); + if (bfound == btop) { + for (btop++; btop <= bbot; btop++) + if (au_hf_dir(file, btop)) { + au_set_fbtop(file, btop); + break; + } + } + fi_write_unlock(file); + } +} + +static void au_br_do_del_brp(struct au_sbinfo *sbinfo, + const aufs_bindex_t bindex, + const aufs_bindex_t bbot) +{ + struct au_branch **brp, **p; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + brp = sbinfo->si_branch + bindex; + if (bindex < bbot) + memmove(brp, brp + 1, sizeof(*brp) * (bbot - bindex)); + sbinfo->si_branch[0 + bbot] = NULL; + sbinfo->si_bbot--; + + p = au_krealloc(sbinfo->si_branch, sizeof(*p) * bbot, AuGFP_SBILIST, + /*may_shrink*/1); + if (p) + sbinfo->si_branch = p; + /* harmless error */ +} + +static void au_br_do_del_hdp(struct au_dinfo *dinfo, const aufs_bindex_t bindex, + const aufs_bindex_t bbot) +{ + struct au_hdentry *hdp, *p; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + hdp = au_hdentry(dinfo, bindex); + if (bindex < bbot) + memmove(hdp, hdp + 1, sizeof(*hdp) * (bbot - bindex)); + /* au_h_dentry_init(au_hdentry(dinfo, bbot); */ + dinfo->di_bbot--; + + p = au_krealloc(dinfo->di_hdentry, sizeof(*p) * bbot, AuGFP_SBILIST, + /*may_shrink*/1); + if (p) + dinfo->di_hdentry = p; + /* harmless error */ +} + +static void au_br_do_del_hip(struct au_iinfo *iinfo, const aufs_bindex_t bindex, + const aufs_bindex_t bbot) +{ + struct au_hinode *hip, *p; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + hip = au_hinode(iinfo, bindex); + if (bindex < bbot) + memmove(hip, hip + 1, sizeof(*hip) * (bbot - bindex)); + /* au_hinode_init(au_hinode(iinfo, bbot)); */ + iinfo->ii_bbot--; + + p = au_krealloc(iinfo->ii_hinode, sizeof(*p) * bbot, AuGFP_SBILIST, + /*may_shrink*/1); + if (p) + iinfo->ii_hinode = p; + /* harmless error */ +} + +static void au_br_do_del(struct super_block *sb, aufs_bindex_t bindex, + struct au_branch *br) +{ + aufs_bindex_t bbot; + struct au_sbinfo *sbinfo; + struct dentry *root, *h_root; + struct inode *inode, *h_inode; + struct au_hinode *hinode; + + SiMustWriteLock(sb); + + root = sb->s_root; + inode = d_inode(root); + sbinfo = au_sbi(sb); + bbot = sbinfo->si_bbot; + + h_root = au_h_dptr(root, bindex); + hinode = au_hi(inode, bindex); + h_inode = au_igrab(hinode->hi_inode); + au_hiput(hinode); + + au_sbilist_lock(); + au_br_do_del_brp(sbinfo, bindex, bbot); + au_br_do_del_hdp(au_di(root), bindex, bbot); + au_br_do_del_hip(au_ii(inode), bindex, bbot); + au_sbilist_unlock(); + + /* ignore an error */ + au_dr_br_fin(sb, br); /* always, regardless the mount option */ + + dput(h_root); + iput(h_inode); + au_br_do_free(br); +} + +static unsigned long long empty_cb(struct super_block *sb, void *array, + unsigned long long max, void *arg) +{ + return max; +} + +int au_br_del(struct super_block *sb, struct au_opt_del *del, int remount) +{ + int err, rerr, i; + unsigned long long opened; + unsigned int mnt_flags; + aufs_bindex_t bindex, bbot, br_id; + unsigned char do_wh, verbose; + struct au_branch *br; + struct au_wbr *wbr; + struct dentry *root; + struct file **to_free; + + err = 0; + opened = 0; + to_free = NULL; + root = sb->s_root; + bindex = au_find_dbindex(root, del->h_path.dentry); + if (bindex < 0) { + if (remount) + goto out; /* success */ + err = -ENOENT; + pr_err("%s no such branch\n", del->pathname); + goto out; + } + AuDbg("bindex b%d\n", bindex); + + err = -EBUSY; + mnt_flags = au_mntflags(sb); + verbose = !!au_opt_test(mnt_flags, VERBOSE); + bbot = au_sbbot(sb); + if (unlikely(!bbot)) { + AuVerbose(verbose, "no more branches left\n"); + goto out; + } + + br = au_sbr(sb, bindex); + AuDebugOn(!path_equal(&br->br_path, &del->h_path)); + if (unlikely(au_lcnt_read(&br->br_count, /*do_rev*/1))) { + AuVerbose(verbose, "br %pd2 is busy now\n", del->h_path.dentry); + goto out; + } + + br_id = br->br_id; + opened = au_lcnt_read(&br->br_nfiles, /*do_rev*/1); + if (unlikely(opened)) { + to_free = au_array_alloc(&opened, empty_cb, sb, NULL); + err = PTR_ERR(to_free); + if (IS_ERR(to_free)) + goto out; + + err = test_file_busy(sb, br_id, to_free, opened); + if (unlikely(err)) { + AuVerbose(verbose, "%llu file(s) opened\n", opened); + goto out; + } + } + + wbr = br->br_wbr; + do_wh = wbr && (wbr->wbr_whbase || wbr->wbr_plink || wbr->wbr_orph); + if (do_wh) { + /* instead of WbrWhMustWriteLock(wbr) */ + SiMustWriteLock(sb); + for (i = 0; i < AuBrWh_Last; i++) { + dput(wbr->wbr_wh[i]); + wbr->wbr_wh[i] = NULL; + } + } + + err = test_children_busy(root, bindex, verbose); + if (unlikely(err)) { + if (do_wh) + goto out_wh; + goto out; + } + + err = 0; + if (to_free) { + /* + * now we confirmed the branch is deletable. + * let's free the remaining opened dirs on the branch. + */ + di_write_unlock(root); + br_del_file(to_free, opened, br_id); + di_write_lock_child(root); + } + + sysaufs_brs_del(sb, bindex); /* remove successors */ + dbgaufs_xino_del(br); /* remove one */ + au_br_do_del(sb, bindex, br); + sysaufs_brs_add(sb, bindex); /* append successors */ + dbgaufs_brs_add(sb, bindex, /*topdown*/1); /* rename successors */ + + if (!bindex) { + au_cpup_attr_all(d_inode(root), /*force*/1); + sb->s_maxbytes = au_sbr_sb(sb, 0)->s_maxbytes; + } else + au_sub_nlink(d_inode(root), d_inode(del->h_path.dentry)); + if (au_opt_test(mnt_flags, PLINK)) + au_plink_half_refresh(sb, br_id); + + goto out; /* success */ + +out_wh: + /* revert */ + rerr = au_br_init_wh(sb, br, br->br_perm); + if (rerr) + pr_warn("failed re-creating base whiteout, %s. (%d)\n", + del->pathname, rerr); +out: + if (to_free) + au_farray_free(to_free, opened); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_ibusy(struct super_block *sb, struct aufs_ibusy __user *arg) +{ + int err; + aufs_bindex_t btop, bbot; + struct aufs_ibusy ibusy; + struct inode *inode, *h_inode; + + err = -EPERM; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = copy_from_user(&ibusy, arg, sizeof(ibusy)); + if (!err) + /* VERIFY_WRITE */ + err = !access_ok(&arg->h_ino, sizeof(arg->h_ino)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + + err = -EINVAL; + si_read_lock(sb, AuLock_FLUSH); + if (unlikely(ibusy.bindex < 0 || ibusy.bindex > au_sbbot(sb))) + goto out_unlock; + + err = 0; + ibusy.h_ino = 0; /* invalid */ + inode = ilookup(sb, ibusy.ino); + if (!inode + || inode->i_ino == AUFS_ROOT_INO + || au_is_bad_inode(inode)) + goto out_unlock; + + ii_read_lock_child(inode); + btop = au_ibtop(inode); + bbot = au_ibbot(inode); + if (btop <= ibusy.bindex && ibusy.bindex <= bbot) { + h_inode = au_h_iptr(inode, ibusy.bindex); + if (h_inode && au_test_ibusy(inode, btop, bbot)) + ibusy.h_ino = h_inode->i_ino; + } + ii_read_unlock(inode); + iput(inode); + +out_unlock: + si_read_unlock(sb); + if (!err) { + err = __put_user(ibusy.h_ino, &arg->h_ino); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + } + } +out: + return err; +} + +long au_ibusy_ioctl(struct file *file, unsigned long arg) +{ + return au_ibusy(file->f_path.dentry->d_sb, (void __user *)arg); +} + +#ifdef CONFIG_COMPAT +long au_ibusy_compat_ioctl(struct file *file, unsigned long arg) +{ + return au_ibusy(file->f_path.dentry->d_sb, compat_ptr(arg)); +} +#endif + +/* ---------------------------------------------------------------------- */ + +/* + * change a branch permission + */ + +static void au_warn_ima(void) +{ +#ifdef CONFIG_IMA + /* since it doesn't support mark_files_ro() */ + AuWarn1("RW -> RO makes IMA to produce wrong message\n"); +#endif +} + +static int do_need_sigen_inc(int a, int b) +{ + return au_br_whable(a) && !au_br_whable(b); +} + +static int need_sigen_inc(int old, int new) +{ + return do_need_sigen_inc(old, new) + || do_need_sigen_inc(new, old); +} + +static int au_br_mod_files_ro(struct super_block *sb, aufs_bindex_t bindex) +{ + int err, do_warn; + unsigned int mnt_flags; + unsigned long long ull, max; + aufs_bindex_t br_id; + unsigned char verbose, writer; + struct file *file, *hf, **array; + struct au_hfile *hfile; + struct inode *h_inode; + + mnt_flags = au_mntflags(sb); + verbose = !!au_opt_test(mnt_flags, VERBOSE); + + array = au_farray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + do_warn = 0; + br_id = au_sbr_id(sb, bindex); + for (ull = 0; ull < max; ull++) { + file = array[ull]; + if (unlikely(!file)) + break; + + /* AuDbg("%pD\n", file); */ + fi_read_lock(file); + if (unlikely(au_test_mmapped(file))) { + err = -EBUSY; + AuVerbose(verbose, "mmapped %pD\n", file); + AuDbgFile(file); + FiMustNoWaiters(file); + fi_read_unlock(file); + goto out_array; + } + + hfile = &au_fi(file)->fi_htop; + hf = hfile->hf_file; + if (!d_is_reg(file->f_path.dentry) + || !(file->f_mode & FMODE_WRITE) + || hfile->hf_br->br_id != br_id + || !(hf->f_mode & FMODE_WRITE)) + array[ull] = NULL; + else { + do_warn = 1; + get_file(file); + } + + FiMustNoWaiters(file); + fi_read_unlock(file); + fput(file); + } + + err = 0; + if (do_warn) + au_warn_ima(); + + for (ull = 0; ull < max; ull++) { + file = array[ull]; + if (!file) + continue; + + /* todo: already flushed? */ + /* + * fs/super.c:mark_files_ro() is gone, but aufs keeps its + * approach which resets f_mode and calls mnt_drop_write() and + * file_release_write() for each file, because the branch + * attribute in aufs world is totally different from the native + * fs rw/ro mode. + */ + /* fi_read_lock(file); */ + hfile = &au_fi(file)->fi_htop; + hf = hfile->hf_file; + /* fi_read_unlock(file); */ + spin_lock(&hf->f_lock); + writer = !!(hf->f_mode & FMODE_WRITER); + hf->f_mode &= ~(FMODE_WRITE | FMODE_WRITER); + spin_unlock(&hf->f_lock); + if (writer) { + h_inode = file_inode(hf); + if (hf->f_mode & FMODE_READ) + i_readcount_inc(h_inode); + put_write_access(h_inode); + __mnt_drop_write(hf->f_path.mnt); + } + } + +out_array: + au_farray_free(array, max); +out: + AuTraceErr(err); + return err; +} + +int au_br_mod(struct super_block *sb, struct au_opt_mod *mod, int remount, + int *do_refresh) +{ + int err, rerr; + aufs_bindex_t bindex; + struct dentry *root; + struct au_branch *br; + struct au_br_fhsm *bf; + + root = sb->s_root; + bindex = au_find_dbindex(root, mod->h_root); + if (bindex < 0) { + if (remount) + return 0; /* success */ + err = -ENOENT; + pr_err("%s no such branch\n", mod->path); + goto out; + } + AuDbg("bindex b%d\n", bindex); + + err = test_br(d_inode(mod->h_root), mod->perm, mod->path); + if (unlikely(err)) + goto out; + + br = au_sbr(sb, bindex); + AuDebugOn(mod->h_root != au_br_dentry(br)); + if (br->br_perm == mod->perm) + return 0; /* success */ + + /* pre-allocate for non-fhsm --> fhsm */ + bf = NULL; + if (!au_br_fhsm(br->br_perm) && au_br_fhsm(mod->perm)) { + err = au_fhsm_br_alloc(br); + if (unlikely(err)) + goto out; + bf = br->br_fhsm; + br->br_fhsm = NULL; + } + + if (au_br_writable(br->br_perm)) { + /* remove whiteout base */ + err = au_br_init_wh(sb, br, mod->perm); + if (unlikely(err)) + goto out_bf; + + if (!au_br_writable(mod->perm)) { + /* rw --> ro, file might be mmapped */ + DiMustNoWaiters(root); + IiMustNoWaiters(d_inode(root)); + di_write_unlock(root); + err = au_br_mod_files_ro(sb, bindex); + /* aufs_write_lock() calls ..._child() */ + di_write_lock_child(root); + + if (unlikely(err)) { + rerr = -ENOMEM; + br->br_wbr = kzalloc(sizeof(*br->br_wbr), + GFP_NOFS); + if (br->br_wbr) + rerr = au_wbr_init(br, sb, br->br_perm); + if (unlikely(rerr)) { + AuIOErr("nested error %d (%d)\n", + rerr, err); + br->br_perm = mod->perm; + } + } + } + } else if (au_br_writable(mod->perm)) { + /* ro --> rw */ + err = -ENOMEM; + br->br_wbr = kzalloc(sizeof(*br->br_wbr), GFP_NOFS); + if (br->br_wbr) { + err = au_wbr_init(br, sb, mod->perm); + if (unlikely(err)) { + au_kfree_rcu(br->br_wbr); + br->br_wbr = NULL; + } + } + } + if (unlikely(err)) + goto out_bf; + + if (au_br_fhsm(br->br_perm)) { + if (!au_br_fhsm(mod->perm)) { + /* fhsm --> non-fhsm */ + au_br_fhsm_fin(br->br_fhsm); + au_kfree_rcu(br->br_fhsm); + br->br_fhsm = NULL; + } + } else if (au_br_fhsm(mod->perm)) + /* non-fhsm --> fhsm */ + br->br_fhsm = bf; + + *do_refresh |= need_sigen_inc(br->br_perm, mod->perm); + br->br_perm = mod->perm; + goto out; /* success */ + +out_bf: + au_kfree_try_rcu(bf); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_br_stfs(struct au_branch *br, struct aufs_stfs *stfs) +{ + int err; + struct kstatfs kstfs; + + err = vfs_statfs(&br->br_path, &kstfs); + if (!err) { + stfs->f_blocks = kstfs.f_blocks; + stfs->f_bavail = kstfs.f_bavail; + stfs->f_files = kstfs.f_files; + stfs->f_ffree = kstfs.f_ffree; + } + + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/branch.h +++ linux-azure-5.13-5.13.0/fs/aufs/branch.h @@ -0,0 +1,375 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * branch filesystems and xino for them + */ + +#ifndef __AUFS_BRANCH_H__ +#define __AUFS_BRANCH_H__ + +#ifdef __KERNEL__ + +#include +#include "dirren.h" +#include "dynop.h" +#include "lcnt.h" +#include "rwsem.h" +#include "super.h" + +/* ---------------------------------------------------------------------- */ + +/* a xino file */ +struct au_xino { + struct file **xi_file; + unsigned int xi_nfile; + + struct { + spinlock_t spin; + ino_t *array; + int total; + /* reserved for future use */ + /* unsigned long *bitmap; */ + wait_queue_head_t wqh; + } xi_nondir; + + struct mutex xi_mtx; /* protects xi_file array */ + struct hlist_bl_head xi_writing; + + atomic_t xi_truncating; + + struct kref xi_kref; +}; + +/* File-based Hierarchical Storage Management */ +struct au_br_fhsm { +#ifdef CONFIG_AUFS_FHSM + struct mutex bf_lock; + unsigned long bf_jiffy; + struct aufs_stfs bf_stfs; + int bf_readable; +#endif +}; + +/* members for writable branch only */ +enum {AuBrWh_BASE, AuBrWh_PLINK, AuBrWh_ORPH, AuBrWh_Last}; +struct au_wbr { + struct au_rwsem wbr_wh_rwsem; + struct dentry *wbr_wh[AuBrWh_Last]; + atomic_t wbr_wh_running; +#define wbr_whbase wbr_wh[AuBrWh_BASE] /* whiteout base */ +#define wbr_plink wbr_wh[AuBrWh_PLINK] /* pseudo-link dir */ +#define wbr_orph wbr_wh[AuBrWh_ORPH] /* dir for orphans */ + + /* mfs mode */ + unsigned long long wbr_bytes; +}; + +/* ext2 has 3 types of operations at least, ext3 has 4 */ +#define AuBrDynOp (AuDyLast * 4) + +#ifdef CONFIG_AUFS_HFSNOTIFY +/* support for asynchronous destruction */ +struct au_br_hfsnotify { + struct fsnotify_group *hfsn_group; +}; +#endif + +/* sysfs entries */ +struct au_brsysfs { + char name[16]; + struct attribute attr; +}; + +enum { + AuBrSysfs_BR, + AuBrSysfs_BRID, + AuBrSysfs_Last +}; + +/* protected by superblock rwsem */ +struct au_branch { + struct au_xino *br_xino; + + aufs_bindex_t br_id; + + int br_perm; + struct path br_path; + spinlock_t br_dykey_lock; + struct au_dykey *br_dykey[AuBrDynOp]; + au_lcnt_t br_nfiles; /* opened files */ + au_lcnt_t br_count; /* in-use for other */ + + struct au_wbr *br_wbr; + struct au_br_fhsm *br_fhsm; + +#ifdef CONFIG_AUFS_HFSNOTIFY + struct au_br_hfsnotify *br_hfsn; +#endif + +#ifdef CONFIG_SYSFS + /* entries under sysfs per mount-point */ + struct au_brsysfs br_sysfs[AuBrSysfs_Last]; +#endif + +#ifdef CONFIG_DEBUG_FS + struct dentry *br_dbgaufs; /* xino */ +#endif + + struct au_dr_br br_dirren; +}; + +/* ---------------------------------------------------------------------- */ + +static inline struct vfsmount *au_br_mnt(struct au_branch *br) +{ + return br->br_path.mnt; +} + +static inline struct dentry *au_br_dentry(struct au_branch *br) +{ + return br->br_path.dentry; +} + +static inline struct user_namespace *au_br_userns(struct au_branch *br) +{ + return mnt_user_ns(br->br_path.mnt); +} + +static inline struct super_block *au_br_sb(struct au_branch *br) +{ + return au_br_mnt(br)->mnt_sb; +} + +static inline int au_br_rdonly(struct au_branch *br) +{ + return (sb_rdonly(au_br_sb(br)) + || !au_br_writable(br->br_perm)) + ? -EROFS : 0; +} + +static inline int au_br_hnotifyable(int brperm __maybe_unused) +{ +#ifdef CONFIG_AUFS_HNOTIFY + return !(brperm & AuBrPerm_RR); +#else + return 0; +#endif +} + +static inline int au_br_test_oflag(int oflag, struct au_branch *br) +{ + int err, exec_flag; + + err = 0; + exec_flag = oflag & __FMODE_EXEC; + if (unlikely(exec_flag && path_noexec(&br->br_path))) + err = -EACCES; + + return err; +} + +static inline void au_xino_get(struct au_branch *br) +{ + struct au_xino *xi; + + xi = br->br_xino; + if (xi) + kref_get(&xi->xi_kref); +} + +static inline int au_xino_count(struct au_branch *br) +{ + int v; + struct au_xino *xi; + + v = 0; + xi = br->br_xino; + if (xi) + v = kref_read(&xi->xi_kref); + + return v; +} + +/* ---------------------------------------------------------------------- */ + +/* branch.c */ +struct au_sbinfo; +void au_br_free(struct au_sbinfo *sinfo); +int au_br_index(struct super_block *sb, aufs_bindex_t br_id); +struct au_opt_add; +int au_br_add(struct super_block *sb, struct au_opt_add *add, int remount); +struct au_opt_del; +int au_br_del(struct super_block *sb, struct au_opt_del *del, int remount); +long au_ibusy_ioctl(struct file *file, unsigned long arg); +#ifdef CONFIG_COMPAT +long au_ibusy_compat_ioctl(struct file *file, unsigned long arg); +#endif +struct au_opt_mod; +int au_br_mod(struct super_block *sb, struct au_opt_mod *mod, int remount, + int *do_refresh); +struct aufs_stfs; +int au_br_stfs(struct au_branch *br, struct aufs_stfs *stfs); + +/* xino.c */ +static const loff_t au_loff_max = LLONG_MAX; + +aufs_bindex_t au_xi_root(struct super_block *sb, struct dentry *dentry); +struct file *au_xino_create(struct super_block *sb, char *fpath, int silent, + int wbrtop); +struct file *au_xino_create2(struct super_block *sb, struct path *base, + struct file *copy_src); +struct au_xi_new { + struct au_xino *xi; /* switch between xino and xigen */ + int idx; + struct path *base; + struct file *copy_src; +}; +struct file *au_xi_new(struct super_block *sb, struct au_xi_new *xinew); + +int au_xino_read(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t *ino); +int au_xino_write(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t ino); +ssize_t xino_fread(struct file *file, void *buf, size_t size, loff_t *pos); +ssize_t xino_fwrite(struct file *file, void *buf, size_t size, loff_t *pos); + +int au_xib_trunc(struct super_block *sb); +int au_xino_trunc(struct super_block *sb, aufs_bindex_t bindex, int idx_begin); + +struct au_xino *au_xino_alloc(unsigned int nfile); +int au_xino_put(struct au_branch *br); +struct file *au_xino_file1(struct au_xino *xi); + +struct au_opt_xino; +void au_xino_clr(struct super_block *sb); +int au_xino_set(struct super_block *sb, struct au_opt_xino *xiopt, int remount); +struct file *au_xino_def(struct super_block *sb); +int au_xino_init_br(struct super_block *sb, struct au_branch *br, ino_t hino, + struct path *base); + +ino_t au_xino_new_ino(struct super_block *sb); +void au_xino_delete_inode(struct inode *inode, const int unlinked); + +void au_xinondir_leave(struct super_block *sb, aufs_bindex_t bindex, + ino_t h_ino, int idx); +int au_xinondir_enter(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + int *idx); + +int au_xino_path(struct seq_file *seq, struct file *file); + +/* ---------------------------------------------------------------------- */ + +/* @idx is signed to accept -1 meaning the first file */ +static inline struct file *au_xino_file(struct au_xino *xi, int idx) +{ + struct file *file; + + file = NULL; + if (!xi) + goto out; + + if (idx >= 0) { + if (idx < xi->xi_nfile) + file = xi->xi_file[idx]; + } else + file = au_xino_file1(xi); + +out: + return file; +} + +/* ---------------------------------------------------------------------- */ + +/* Superblock to branch */ +static inline +aufs_bindex_t au_sbr_id(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_sbr(sb, bindex)->br_id; +} + +static inline +struct vfsmount *au_sbr_mnt(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_br_mnt(au_sbr(sb, bindex)); +} + +static inline +struct user_namespace *au_sbr_userns(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_br_userns(au_sbr(sb, bindex)); +} + +static inline +struct super_block *au_sbr_sb(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_br_sb(au_sbr(sb, bindex)); +} + +static inline int au_sbr_perm(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_sbr(sb, bindex)->br_perm; +} + +static inline int au_sbr_whable(struct super_block *sb, aufs_bindex_t bindex) +{ + return au_br_whable(au_sbr_perm(sb, bindex)); +} + +/* ---------------------------------------------------------------------- */ + +#define wbr_wh_read_lock(wbr) au_rw_read_lock(&(wbr)->wbr_wh_rwsem) +#define wbr_wh_write_lock(wbr) au_rw_write_lock(&(wbr)->wbr_wh_rwsem) +#define wbr_wh_read_trylock(wbr) au_rw_read_trylock(&(wbr)->wbr_wh_rwsem) +#define wbr_wh_write_trylock(wbr) au_rw_write_trylock(&(wbr)->wbr_wh_rwsem) +/* +#define wbr_wh_read_trylock_nested(wbr) \ + au_rw_read_trylock_nested(&(wbr)->wbr_wh_rwsem) +#define wbr_wh_write_trylock_nested(wbr) \ + au_rw_write_trylock_nested(&(wbr)->wbr_wh_rwsem) +*/ + +#define wbr_wh_read_unlock(wbr) au_rw_read_unlock(&(wbr)->wbr_wh_rwsem) +#define wbr_wh_write_unlock(wbr) au_rw_write_unlock(&(wbr)->wbr_wh_rwsem) +#define wbr_wh_downgrade_lock(wbr) au_rw_dgrade_lock(&(wbr)->wbr_wh_rwsem) + +#define WbrWhMustNoWaiters(wbr) AuRwMustNoWaiters(&(wbr)->wbr_wh_rwsem) +#define WbrWhMustAnyLock(wbr) AuRwMustAnyLock(&(wbr)->wbr_wh_rwsem) +#define WbrWhMustWriteLock(wbr) AuRwMustWriteLock(&(wbr)->wbr_wh_rwsem) + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_FHSM +static inline void au_br_fhsm_init(struct au_br_fhsm *brfhsm) +{ + mutex_init(&brfhsm->bf_lock); + brfhsm->bf_jiffy = 0; + brfhsm->bf_readable = 0; +} + +static inline void au_br_fhsm_fin(struct au_br_fhsm *brfhsm) +{ + mutex_destroy(&brfhsm->bf_lock); +} +#else +AuStubVoid(au_br_fhsm_init, struct au_br_fhsm *brfhsm) +AuStubVoid(au_br_fhsm_fin, struct au_br_fhsm *brfhsm) +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_BRANCH_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/conf.mk +++ linux-azure-5.13-5.13.0/fs/aufs/conf.mk @@ -0,0 +1,40 @@ +# SPDX-License-Identifier: GPL-2.0 + +AuConfStr = CONFIG_AUFS_FS=${CONFIG_AUFS_FS} + +define AuConf +ifdef ${1} +AuConfStr += ${1}=${${1}} +endif +endef + +AuConfAll = BRANCH_MAX_127 BRANCH_MAX_511 BRANCH_MAX_1023 BRANCH_MAX_32767 \ + SBILIST \ + HNOTIFY HFSNOTIFY \ + EXPORT INO_T_64 \ + XATTR \ + FHSM \ + RDU \ + DIRREN \ + SHWH \ + BR_RAMFS \ + BR_FUSE POLL \ + BR_HFSPLUS \ + BDEV_LOOP \ + DEBUG MAGIC_SYSRQ +$(foreach i, ${AuConfAll}, \ + $(eval $(call AuConf,CONFIG_AUFS_${i}))) + +AuConfName = ${obj}/conf.str +${AuConfName}.tmp: FORCE + @echo ${AuConfStr} | tr ' ' '\n' | sed -e 's/^/"/' -e 's/$$/\\n"/' > $@ +${AuConfName}: ${AuConfName}.tmp + @diff -q $< $@ > /dev/null 2>&1 || { \ + echo ' GEN ' $@; \ + cp -p $< $@; \ + } +FORCE: +clean-files += ${AuConfName} ${AuConfName}.tmp +${obj}/sysfs.o: ${AuConfName} + +-include ${srctree}/${src}/conf_priv.mk only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/cpup.c +++ linux-azure-5.13-5.13.0/fs/aufs/cpup.c @@ -0,0 +1,1457 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * copy-up functions, see wbr_policy.c for copy-down + */ + +#include +#include +#include +#include "aufs.h" + +void au_cpup_attr_flags(struct inode *dst, unsigned int iflags) +{ + const unsigned int mask = S_DEAD | S_SWAPFILE | S_PRIVATE + | S_NOATIME | S_NOCMTIME | S_AUTOMOUNT; + + BUILD_BUG_ON(sizeof(iflags) != sizeof(dst->i_flags)); + + dst->i_flags |= iflags & ~mask; + if (au_test_fs_notime(dst->i_sb)) + dst->i_flags |= S_NOATIME | S_NOCMTIME; +} + +void au_cpup_attr_timesizes(struct inode *inode) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibtop(inode)); + fsstack_copy_attr_times(inode, h_inode); + fsstack_copy_inode_size(inode, h_inode); +} + +void au_cpup_attr_nlink(struct inode *inode, int force) +{ + struct inode *h_inode; + struct super_block *sb; + aufs_bindex_t bindex, bbot; + + sb = inode->i_sb; + bindex = au_ibtop(inode); + h_inode = au_h_iptr(inode, bindex); + if (!force + && !S_ISDIR(h_inode->i_mode) + && au_opt_test(au_mntflags(sb), PLINK) + && au_plink_test(inode)) + return; + + /* + * 0 can happen in revalidating. + * h_inode->i_mutex may not be held here, but it is harmless since once + * i_nlink reaches 0, it will never become positive except O_TMPFILE + * case. + * todo: O_TMPFILE+linkat(AT_SYMLINK_FOLLOW) bypassing aufs may cause + * the incorrect link count. + */ + set_nlink(inode, h_inode->i_nlink); + + /* + * fewer nlink makes find(1) noisy, but larger nlink doesn't. + * it may includes whplink directory. + */ + if (S_ISDIR(h_inode->i_mode)) { + bbot = au_ibbot(inode); + for (bindex++; bindex <= bbot; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (h_inode) + au_add_nlink(inode, h_inode); + } + } +} + +void au_cpup_attr_changeable(struct inode *inode) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibtop(inode)); + inode->i_mode = h_inode->i_mode; + inode->i_uid = h_inode->i_uid; + inode->i_gid = h_inode->i_gid; + au_cpup_attr_timesizes(inode); + au_cpup_attr_flags(inode, h_inode->i_flags); +} + +void au_cpup_igen(struct inode *inode, struct inode *h_inode) +{ + struct au_iinfo *iinfo = au_ii(inode); + + IiMustWriteLock(inode); + + iinfo->ii_higen = h_inode->i_generation; + iinfo->ii_hsb1 = h_inode->i_sb; +} + +void au_cpup_attr_all(struct inode *inode, int force) +{ + struct inode *h_inode; + + h_inode = au_h_iptr(inode, au_ibtop(inode)); + au_cpup_attr_changeable(inode); + if (inode->i_nlink > 0) + au_cpup_attr_nlink(inode, force); + inode->i_rdev = h_inode->i_rdev; + inode->i_blkbits = h_inode->i_blkbits; + au_cpup_igen(inode, h_inode); +} + +/* ---------------------------------------------------------------------- */ + +/* Note: dt_dentry and dt_h_dentry are not dget/dput-ed */ + +/* keep the timestamps of the parent dir when cpup */ +void au_dtime_store(struct au_dtime *dt, struct dentry *dentry, + struct path *h_path) +{ + struct inode *h_inode; + + dt->dt_dentry = dentry; + dt->dt_h_path = *h_path; + h_inode = d_inode(h_path->dentry); + dt->dt_atime = h_inode->i_atime; + dt->dt_mtime = h_inode->i_mtime; + /* smp_mb(); */ +} + +void au_dtime_revert(struct au_dtime *dt) +{ + struct iattr attr; + int err; + + attr.ia_atime = dt->dt_atime; + attr.ia_mtime = dt->dt_mtime; + attr.ia_valid = ATTR_FORCE | ATTR_MTIME | ATTR_MTIME_SET + | ATTR_ATIME | ATTR_ATIME_SET; + + /* no delegation since this is a directory */ + err = vfsub_notify_change(&dt->dt_h_path, &attr, /*delegated*/NULL); + if (unlikely(err)) + pr_warn("restoring timestamps failed(%d). ignored\n", err); +} + +/* ---------------------------------------------------------------------- */ + +/* internal use only */ +struct au_cpup_reg_attr { + int valid; + struct kstat st; + unsigned int iflags; /* inode->i_flags */ +}; + +static noinline_for_stack +int cpup_iattr(struct dentry *dst, aufs_bindex_t bindex, struct path *h_src, + struct au_cpup_reg_attr *h_src_attr) +{ + int err, sbits, icex; + unsigned int mnt_flags; + unsigned char verbose; + struct iattr ia; + struct path h_path; + struct inode *h_isrc, *h_idst; + struct kstat *h_st; + struct au_branch *br; + + br = au_sbr(dst->d_sb, bindex); + h_path.mnt = au_br_mnt(br); + h_path.dentry = au_h_dptr(dst, bindex); + h_idst = d_inode(h_path.dentry); + h_isrc = d_inode(h_src->dentry); + ia.ia_valid = ATTR_FORCE | ATTR_UID | ATTR_GID + | ATTR_ATIME | ATTR_MTIME + | ATTR_ATIME_SET | ATTR_MTIME_SET; + if (h_src_attr && h_src_attr->valid) { + h_st = &h_src_attr->st; + ia.ia_uid = h_st->uid; + ia.ia_gid = h_st->gid; + ia.ia_atime = h_st->atime; + ia.ia_mtime = h_st->mtime; + if (h_idst->i_mode != h_st->mode + && !S_ISLNK(h_idst->i_mode)) { + ia.ia_valid |= ATTR_MODE; + ia.ia_mode = h_st->mode; + } + sbits = !!(h_st->mode & (S_ISUID | S_ISGID)); + au_cpup_attr_flags(h_idst, h_src_attr->iflags); + } else { + ia.ia_uid = h_isrc->i_uid; + ia.ia_gid = h_isrc->i_gid; + ia.ia_atime = h_isrc->i_atime; + ia.ia_mtime = h_isrc->i_mtime; + if (h_idst->i_mode != h_isrc->i_mode + && !S_ISLNK(h_idst->i_mode)) { + ia.ia_valid |= ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + } + sbits = !!(h_isrc->i_mode & (S_ISUID | S_ISGID)); + au_cpup_attr_flags(h_idst, h_isrc->i_flags); + } + /* no delegation since it is just created */ + err = vfsub_notify_change(&h_path, &ia, /*delegated*/NULL); + + /* is this nfs only? */ + if (!err && sbits && au_test_nfs(h_path.dentry->d_sb)) { + ia.ia_valid = ATTR_FORCE | ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + err = vfsub_notify_change(&h_path, &ia, /*delegated*/NULL); + } + + icex = br->br_perm & AuBrAttr_ICEX; + if (!err) { + mnt_flags = au_mntflags(dst->d_sb); + verbose = !!au_opt_test(mnt_flags, VERBOSE); + err = au_cpup_xattr(&h_path, h_src, icex, verbose); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_copy_file(struct file *dst, struct file *src, loff_t len, + char *buf, unsigned long blksize) +{ + int err; + size_t sz, rbytes, wbytes; + unsigned char all_zero; + char *p, *zp; + struct inode *h_inode; + /* reduce stack usage */ + struct iattr *ia; + + zp = page_address(ZERO_PAGE(0)); + if (unlikely(!zp)) + return -ENOMEM; /* possible? */ + + err = 0; + all_zero = 0; + while (len) { + AuDbg("len %lld\n", len); + sz = blksize; + if (len < blksize) + sz = len; + + rbytes = 0; + /* todo: signal_pending? */ + while (!rbytes || err == -EAGAIN || err == -EINTR) { + rbytes = vfsub_read_k(src, buf, sz, &src->f_pos); + err = rbytes; + } + if (unlikely(err < 0)) + break; + + all_zero = 0; + if (len >= rbytes && rbytes == blksize) + all_zero = !memcmp(buf, zp, rbytes); + if (!all_zero) { + wbytes = rbytes; + p = buf; + while (wbytes) { + size_t b; + + b = vfsub_write_k(dst, p, wbytes, &dst->f_pos); + err = b; + /* todo: signal_pending? */ + if (unlikely(err == -EAGAIN || err == -EINTR)) + continue; + if (unlikely(err < 0)) + break; + wbytes -= b; + p += b; + } + if (unlikely(err < 0)) + break; + } else { + loff_t res; + + AuLabel(hole); + res = vfsub_llseek(dst, rbytes, SEEK_CUR); + err = res; + if (unlikely(res < 0)) + break; + } + len -= rbytes; + err = 0; + } + + /* the last block may be a hole */ + if (!err && all_zero) { + AuLabel(last hole); + + err = 1; + if (au_test_nfs(dst->f_path.dentry->d_sb)) { + /* nfs requires this step to make last hole */ + /* is this only nfs? */ + do { + /* todo: signal_pending? */ + err = vfsub_write_k(dst, "\0", 1, &dst->f_pos); + } while (err == -EAGAIN || err == -EINTR); + if (err == 1) + dst->f_pos--; + } + + if (err == 1) { + ia = (void *)buf; + ia->ia_size = dst->f_pos; + ia->ia_valid = ATTR_SIZE | ATTR_FILE; + ia->ia_file = dst; + h_inode = file_inode(dst); + inode_lock_nested(h_inode, AuLsc_I_CHILD2); + /* no delegation since it is just created */ + err = vfsub_notify_change(&dst->f_path, ia, + /*delegated*/NULL); + inode_unlock(h_inode); + } + } + + return err; +} + +int au_copy_file(struct file *dst, struct file *src, loff_t len) +{ + int err; + unsigned long blksize; + unsigned char do_kfree; + char *buf; + struct super_block *h_sb; + + err = -ENOMEM; + h_sb = file_inode(dst)->i_sb; + blksize = h_sb->s_blocksize; + if (!blksize || PAGE_SIZE < blksize) + blksize = PAGE_SIZE; + AuDbg("blksize %lu\n", blksize); + do_kfree = (blksize != PAGE_SIZE && blksize >= sizeof(struct iattr *)); + if (do_kfree) + buf = kmalloc(blksize, GFP_NOFS); + else + buf = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!buf)) + goto out; + + if (len > (1 << 22)) + AuDbg("copying a large file %lld\n", (long long)len); + + src->f_pos = 0; + dst->f_pos = 0; + err = au_do_copy_file(dst, src, len, buf, blksize); + if (do_kfree) { + AuDebugOn(!au_kfree_do_sz_test(blksize)); + au_kfree_do_rcu(buf); + } else + free_page((unsigned long)buf); + +out: + return err; +} + +static int au_do_copy(struct file *dst, struct file *src, loff_t len) +{ + int err; + struct super_block *h_src_sb; + struct inode *h_src_inode; + + h_src_inode = file_inode(src); + h_src_sb = h_src_inode->i_sb; + + /* XFS acquires inode_lock */ + if (!au_test_xfs(h_src_sb)) + err = au_copy_file(dst, src, len); + else { + inode_unlock_shared(h_src_inode); + err = au_copy_file(dst, src, len); + inode_lock_shared_nested(h_src_inode, AuLsc_I_CHILD); + } + + return err; +} + +static int au_clone_or_copy(struct file *dst, struct file *src, loff_t len) +{ + int err; + loff_t lo; + struct super_block *h_src_sb; + struct inode *h_src_inode; + + h_src_inode = file_inode(src); + h_src_sb = h_src_inode->i_sb; + if (h_src_sb != file_inode(dst)->i_sb + || !dst->f_op->remap_file_range) { + err = au_do_copy(dst, src, len); + goto out; + } + + if (!au_test_nfs(h_src_sb)) { + inode_unlock_shared(h_src_inode); + lo = vfsub_clone_file_range(src, dst, len); + inode_lock_shared_nested(h_src_inode, AuLsc_I_CHILD); + } else + lo = vfsub_clone_file_range(src, dst, len); + if (lo == len) { + err = 0; + goto out; /* success */ + } else if (lo >= 0) + /* todo: possible? */ + /* paritially succeeded */ + AuDbg("lo %lld, len %lld. Retrying.\n", lo, len); + else if (lo != -EOPNOTSUPP) { + /* older XFS has a condition in cloning */ + err = lo; + goto out; + } + + /* the backend fs on NFS may not support cloning */ + err = au_do_copy(dst, src, len); + +out: + AuTraceErr(err); + return err; +} + +/* + * to support a sparse file which is opened with O_APPEND, + * we need to close the file. + */ +static int au_cp_regular(struct au_cp_generic *cpg) +{ + int err, i; + enum { SRC, DST }; + struct { + aufs_bindex_t bindex; + unsigned int flags; + struct dentry *dentry; + int force_wr; + struct file *file; + } *f, file[] = { + { + .bindex = cpg->bsrc, + .flags = O_RDONLY | O_NOATIME | O_LARGEFILE, + }, + { + .bindex = cpg->bdst, + .flags = O_WRONLY | O_NOATIME | O_LARGEFILE, + .force_wr = !!au_ftest_cpup(cpg->flags, RWDST), + } + }; + struct au_branch *br; + struct super_block *sb, *h_src_sb; + struct inode *h_src_inode; + struct task_struct *tsk = current; + + /* bsrc branch can be ro/rw. */ + sb = cpg->dentry->d_sb; + f = file; + for (i = 0; i < 2; i++, f++) { + f->dentry = au_h_dptr(cpg->dentry, f->bindex); + f->file = au_h_open(cpg->dentry, f->bindex, f->flags, + /*file*/NULL, f->force_wr); + if (IS_ERR(f->file)) { + err = PTR_ERR(f->file); + if (i == SRC) + goto out; + else + goto out_src; + } + } + + /* try stopping to update while we copyup */ + h_src_inode = d_inode(file[SRC].dentry); + h_src_sb = h_src_inode->i_sb; + if (!au_test_nfs(h_src_sb)) + IMustLock(h_src_inode); + err = au_clone_or_copy(file[DST].file, file[SRC].file, cpg->len); + + /* i wonder if we had O_NO_DELAY_FPUT flag */ + if (tsk->flags & PF_KTHREAD) + __fput_sync(file[DST].file); + else { + /* it happened actually */ + fput(file[DST].file); + /* + * too bad. + * we have to call both since we don't know which place the file + * was added to. + */ + task_work_run(); + flush_delayed_fput(); + } + br = au_sbr(sb, file[DST].bindex); + au_lcnt_dec(&br->br_nfiles); + +out_src: + fput(file[SRC].file); + br = au_sbr(sb, file[SRC].bindex); + au_lcnt_dec(&br->br_nfiles); +out: + return err; +} + +static int au_do_cpup_regular(struct au_cp_generic *cpg, + struct au_cpup_reg_attr *h_src_attr) +{ + int err, rerr; + loff_t l; + struct path h_path; + struct inode *h_src_inode, *h_dst_inode; + + err = 0; + h_src_inode = au_h_iptr(d_inode(cpg->dentry), cpg->bsrc); + l = i_size_read(h_src_inode); + if (cpg->len == -1 || l < cpg->len) + cpg->len = l; + if (cpg->len) { + /* try stopping to update while we are referencing */ + inode_lock_shared_nested(h_src_inode, AuLsc_I_CHILD); + au_pin_hdir_unlock(cpg->pin); + + h_path.dentry = au_h_dptr(cpg->dentry, cpg->bsrc); + h_path.mnt = au_sbr_mnt(cpg->dentry->d_sb, cpg->bsrc); + h_src_attr->iflags = h_src_inode->i_flags; + if (!au_test_nfs(h_src_inode->i_sb)) + err = vfsub_getattr(&h_path, &h_src_attr->st); + else { + inode_unlock_shared(h_src_inode); + err = vfsub_getattr(&h_path, &h_src_attr->st); + inode_lock_shared_nested(h_src_inode, AuLsc_I_CHILD); + } + if (unlikely(err)) { + inode_unlock_shared(h_src_inode); + goto out; + } + h_src_attr->valid = 1; + if (!au_test_nfs(h_src_inode->i_sb)) { + err = au_cp_regular(cpg); + inode_unlock_shared(h_src_inode); + } else { + inode_unlock_shared(h_src_inode); + err = au_cp_regular(cpg); + } + rerr = au_pin_hdir_relock(cpg->pin); + if (!err && rerr) + err = rerr; + } + if (!err && (h_src_inode->i_state & I_LINKABLE)) { + h_path.dentry = au_h_dptr(cpg->dentry, cpg->bdst); + h_dst_inode = d_inode(h_path.dentry); + spin_lock(&h_dst_inode->i_lock); + h_dst_inode->i_state |= I_LINKABLE; + spin_unlock(&h_dst_inode->i_lock); + } + +out: + return err; +} + +static int au_do_cpup_symlink(struct path *h_path, struct dentry *h_src, + struct inode *h_dir) +{ + int err; + DEFINE_DELAYED_CALL(done); + const char *sym; + + sym = vfs_get_link(h_src, &done); + err = PTR_ERR(sym); + if (IS_ERR(sym)) + goto out; + + err = vfsub_symlink(h_dir, h_path, sym); + +out: + do_delayed_call(&done); + return err; +} + +/* + * regardless 'acl' option, reset all ACL. + * All ACL will be copied up later from the original entry on the lower branch. + */ +static int au_reset_acl(struct inode *h_dir, struct path *h_path, umode_t mode) +{ + int err; + struct dentry *h_dentry; + struct inode *h_inode; + struct user_namespace *h_userns; + + h_userns = mnt_user_ns(h_path->mnt); + h_dentry = h_path->dentry; + h_inode = d_inode(h_dentry); + /* forget_all_cached_acls(h_inode)); */ + err = vfsub_removexattr(h_userns, h_dentry, XATTR_NAME_POSIX_ACL_ACCESS); + AuTraceErr(err); + if (err == -EOPNOTSUPP) + err = 0; + if (!err) + err = vfsub_acl_chmod(h_userns, h_inode, mode); + + AuTraceErr(err); + return err; +} + +static int au_do_cpup_dir(struct au_cp_generic *cpg, struct dentry *dst_parent, + struct inode *h_dir, struct path *h_path) +{ + int err; + struct inode *dir, *inode; + struct user_namespace *h_userns; + + h_userns = mnt_user_ns(h_path->mnt); + err = vfsub_removexattr(h_userns, h_path->dentry, + XATTR_NAME_POSIX_ACL_DEFAULT); + AuTraceErr(err); + if (err == -EOPNOTSUPP) + err = 0; + if (unlikely(err)) + goto out; + + /* + * strange behaviour from the users view, + * particularly setattr case + */ + dir = d_inode(dst_parent); + if (au_ibtop(dir) == cpg->bdst) + au_cpup_attr_nlink(dir, /*force*/1); + inode = d_inode(cpg->dentry); + au_cpup_attr_nlink(inode, /*force*/1); + +out: + return err; +} + +static noinline_for_stack +int cpup_entry(struct au_cp_generic *cpg, struct dentry *dst_parent, + struct au_cpup_reg_attr *h_src_attr) +{ + int err; + umode_t mode; + unsigned int mnt_flags; + unsigned char isdir, isreg, force; + const unsigned char do_dt = !!au_ftest_cpup(cpg->flags, DTIME); + struct au_dtime dt; + struct path h_path; + struct dentry *h_src, *h_dst, *h_parent; + struct inode *h_inode, *h_dir; + struct super_block *sb; + + /* bsrc branch can be ro/rw. */ + h_src = au_h_dptr(cpg->dentry, cpg->bsrc); + h_inode = d_inode(h_src); + AuDebugOn(h_inode != au_h_iptr(d_inode(cpg->dentry), cpg->bsrc)); + + /* try stopping to be referenced while we are creating */ + h_dst = au_h_dptr(cpg->dentry, cpg->bdst); + if (au_ftest_cpup(cpg->flags, RENAME)) + AuDebugOn(strncmp(h_dst->d_name.name, AUFS_WH_PFX, + AUFS_WH_PFX_LEN)); + h_parent = h_dst->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + AuDebugOn(h_parent != h_dst->d_parent); + + sb = cpg->dentry->d_sb; + h_path.mnt = au_sbr_mnt(sb, cpg->bdst); + if (do_dt) { + h_path.dentry = h_parent; + au_dtime_store(&dt, dst_parent, &h_path); + } + h_path.dentry = h_dst; + + isreg = 0; + isdir = 0; + mode = h_inode->i_mode; + switch (mode & S_IFMT) { + case S_IFREG: + isreg = 1; + err = vfsub_create(h_dir, &h_path, 0600, /*want_excl*/true); + if (!err) + err = au_do_cpup_regular(cpg, h_src_attr); + break; + case S_IFDIR: + isdir = 1; + err = vfsub_mkdir(h_dir, &h_path, mode); + if (!err) + err = au_do_cpup_dir(cpg, dst_parent, h_dir, &h_path); + break; + case S_IFLNK: + err = au_do_cpup_symlink(&h_path, h_src, h_dir); + break; + case S_IFCHR: + case S_IFBLK: + AuDebugOn(!capable(CAP_MKNOD)); + fallthrough; + case S_IFIFO: + case S_IFSOCK: + err = vfsub_mknod(h_dir, &h_path, mode, h_inode->i_rdev); + break; + default: + AuIOErr("Unknown inode type 0%o\n", mode); + err = -EIO; + } + if (!err) + err = au_reset_acl(h_dir, &h_path, mode); + + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, UDBA_NONE) + && !isdir + && au_opt_test(mnt_flags, XINO) + && (h_inode->i_nlink == 1 + || (h_inode->i_state & I_LINKABLE)) + /* todo: unnecessary? */ + /* && d_inode(cpg->dentry)->i_nlink == 1 */ + && cpg->bdst < cpg->bsrc + && !au_ftest_cpup(cpg->flags, KEEPLINO)) + au_xino_write(sb, cpg->bsrc, h_inode->i_ino, /*ino*/0); + /* ignore this error */ + + if (!err) { + force = 0; + if (isreg) { + force = !!cpg->len; + if (cpg->len == -1) + force = !!i_size_read(h_inode); + } + au_fhsm_wrote(sb, cpg->bdst, force); + } + + if (do_dt) + au_dtime_revert(&dt); + return err; +} + +static int au_do_ren_after_cpup(struct au_cp_generic *cpg, struct path *h_path) +{ + int err; + struct dentry *dentry, *h_dentry, *h_parent, *parent; + struct inode *h_dir; + aufs_bindex_t bdst; + + dentry = cpg->dentry; + bdst = cpg->bdst; + h_dentry = au_h_dptr(dentry, bdst); + if (!au_ftest_cpup(cpg->flags, OVERWRITE)) { + dget(h_dentry); + au_set_h_dptr(dentry, bdst, NULL); + err = au_lkup_neg(dentry, bdst, /*wh*/0); + if (!err) + h_path->dentry = dget(au_h_dptr(dentry, bdst)); + au_set_h_dptr(dentry, bdst, h_dentry); + } else { + err = 0; + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bdst); + dput(parent); + h_path->dentry = vfsub_lkup_one(&dentry->d_name, h_parent); + if (IS_ERR(h_path->dentry)) + err = PTR_ERR(h_path->dentry); + } + if (unlikely(err)) + goto out; + + h_parent = h_dentry->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + AuDbg("%pd %pd\n", h_dentry, h_path->dentry); + /* no delegation since it is just created */ + err = vfsub_rename(h_dir, h_dentry, h_dir, h_path, /*delegated*/NULL, + /*flags*/0); + dput(h_path->dentry); + +out: + return err; +} + +/* + * copyup the @dentry from @bsrc to @bdst. + * the caller must set the both of lower dentries. + * @len is for truncating when it is -1 copyup the entire file. + * in link/rename cases, @dst_parent may be different from the real one. + * basic->bsrc can be larger than basic->bdst. + * aufs doesn't touch the credential so + * security_inode_copy_up{,_xattr}() are unnecessary. + */ +static int au_cpup_single(struct au_cp_generic *cpg, struct dentry *dst_parent) +{ + int err, rerr; + aufs_bindex_t old_ibtop; + unsigned char isdir, plink; + struct dentry *h_src, *h_dst, *h_parent; + struct inode *dst_inode, *h_dir, *inode, *delegated, *src_inode; + struct super_block *sb; + struct au_branch *br; + struct path h_src_path; + /* to reduce stack size */ + struct { + struct au_dtime dt; + struct path h_path; + struct au_cpup_reg_attr h_src_attr; + } *a; + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + a->h_src_attr.valid = 0; + + sb = cpg->dentry->d_sb; + br = au_sbr(sb, cpg->bdst); + a->h_path.mnt = au_br_mnt(br); + h_dst = au_h_dptr(cpg->dentry, cpg->bdst); + h_parent = h_dst->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + + h_src = au_h_dptr(cpg->dentry, cpg->bsrc); + inode = d_inode(cpg->dentry); + + if (!dst_parent) + dst_parent = dget_parent(cpg->dentry); + else + dget(dst_parent); + + plink = !!au_opt_test(au_mntflags(sb), PLINK); + dst_inode = au_h_iptr(inode, cpg->bdst); + if (dst_inode) { + if (unlikely(!plink)) { + err = -EIO; + AuIOErr("hi%lu(i%lu) exists on b%d " + "but plink is disabled\n", + dst_inode->i_ino, inode->i_ino, cpg->bdst); + goto out_parent; + } + + if (dst_inode->i_nlink) { + const int do_dt = au_ftest_cpup(cpg->flags, DTIME); + + h_src = au_plink_lkup(inode, cpg->bdst); + err = PTR_ERR(h_src); + if (IS_ERR(h_src)) + goto out_parent; + if (unlikely(d_is_negative(h_src))) { + err = -EIO; + AuIOErr("i%lu exists on b%d " + "but not pseudo-linked\n", + inode->i_ino, cpg->bdst); + dput(h_src); + goto out_parent; + } + + if (do_dt) { + a->h_path.dentry = h_parent; + au_dtime_store(&a->dt, dst_parent, &a->h_path); + } + + a->h_path.dentry = h_dst; + delegated = NULL; + err = vfsub_link(h_src, h_dir, &a->h_path, &delegated); + if (!err && au_ftest_cpup(cpg->flags, RENAME)) + err = au_do_ren_after_cpup(cpg, &a->h_path); + if (do_dt) + au_dtime_revert(&a->dt); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + dput(h_src); + goto out_parent; + } else + /* todo: cpup_wh_file? */ + /* udba work */ + au_update_ibrange(inode, /*do_put_zero*/1); + } + + isdir = S_ISDIR(inode->i_mode); + old_ibtop = au_ibtop(inode); + err = cpup_entry(cpg, dst_parent, &a->h_src_attr); + if (unlikely(err)) + goto out_rev; + dst_inode = d_inode(h_dst); + inode_lock_nested(dst_inode, AuLsc_I_CHILD2); + /* todo: necessary? */ + /* au_pin_hdir_unlock(cpg->pin); */ + + h_src_path.dentry = h_src; + h_src_path.mnt = au_sbr_mnt(sb, cpg->bsrc); + err = cpup_iattr(cpg->dentry, cpg->bdst, &h_src_path, &a->h_src_attr); + if (unlikely(err)) { + /* todo: necessary? */ + /* au_pin_hdir_relock(cpg->pin); */ /* ignore an error */ + inode_unlock(dst_inode); + goto out_rev; + } + + if (cpg->bdst < old_ibtop) { + if (S_ISREG(inode->i_mode)) { + err = au_dy_iaop(inode, cpg->bdst, dst_inode); + if (unlikely(err)) { + /* ignore an error */ + /* au_pin_hdir_relock(cpg->pin); */ + inode_unlock(dst_inode); + goto out_rev; + } + } + au_set_ibtop(inode, cpg->bdst); + } else + au_set_ibbot(inode, cpg->bdst); + au_set_h_iptr(inode, cpg->bdst, au_igrab(dst_inode), + au_hi_flags(inode, isdir)); + + /* todo: necessary? */ + /* err = au_pin_hdir_relock(cpg->pin); */ + inode_unlock(dst_inode); + if (unlikely(err)) + goto out_rev; + + src_inode = d_inode(h_src); + if (!isdir + && (src_inode->i_nlink > 1 + || src_inode->i_state & I_LINKABLE) + && plink) + au_plink_append(inode, cpg->bdst, h_dst); + + if (au_ftest_cpup(cpg->flags, RENAME)) { + a->h_path.dentry = h_dst; + err = au_do_ren_after_cpup(cpg, &a->h_path); + } + if (!err) + goto out_parent; /* success */ + + /* revert */ +out_rev: + a->h_path.dentry = h_parent; + au_dtime_store(&a->dt, dst_parent, &a->h_path); + a->h_path.dentry = h_dst; + rerr = 0; + if (d_is_positive(h_dst)) { + if (!isdir) { + /* no delegation since it is just created */ + rerr = vfsub_unlink(h_dir, &a->h_path, + /*delegated*/NULL, /*force*/0); + } else + rerr = vfsub_rmdir(h_dir, &a->h_path); + } + au_dtime_revert(&a->dt); + if (rerr) { + AuIOErr("failed removing broken entry(%d, %d)\n", err, rerr); + err = -EIO; + } +out_parent: + dput(dst_parent); + au_kfree_rcu(a); +out: + return err; +} + +#if 0 /* reserved */ +struct au_cpup_single_args { + int *errp; + struct au_cp_generic *cpg; + struct dentry *dst_parent; +}; + +static void au_call_cpup_single(void *args) +{ + struct au_cpup_single_args *a = args; + + au_pin_hdir_acquire_nest(a->cpg->pin); + *a->errp = au_cpup_single(a->cpg, a->dst_parent); + au_pin_hdir_release(a->cpg->pin); +} +#endif + +/* + * prevent SIGXFSZ in copy-up. + * testing CAP_MKNOD is for generic fs, + * but CAP_FSETID is for xfs only, currently. + */ +static int au_cpup_sio_test(struct au_pin *pin, umode_t mode) +{ + int do_sio; + struct super_block *sb; + struct inode *h_dir; + + do_sio = 0; + sb = au_pinned_parent(pin)->d_sb; + if (!au_wkq_test() + && (!au_sbi(sb)->si_plink_maint_pid + || au_plink_maint(sb, AuLock_NOPLM))) { + switch (mode & S_IFMT) { + case S_IFREG: + /* no condition about RLIMIT_FSIZE and the file size */ + do_sio = 1; + break; + case S_IFCHR: + case S_IFBLK: + do_sio = !capable(CAP_MKNOD); + break; + } + if (!do_sio) + do_sio = ((mode & (S_ISUID | S_ISGID)) + && !capable(CAP_FSETID)); + /* this workaround may be removed in the future */ + if (!do_sio) { + h_dir = au_pinned_h_dir(pin); + do_sio = h_dir->i_mode & S_ISVTX; + } + } + + return do_sio; +} + +#if 0 /* reserved */ +int au_sio_cpup_single(struct au_cp_generic *cpg, struct dentry *dst_parent) +{ + int err, wkq_err; + struct dentry *h_dentry; + + h_dentry = au_h_dptr(cpg->dentry, cpg->bsrc); + if (!au_cpup_sio_test(pin, d_inode(h_dentry)->i_mode)) + err = au_cpup_single(cpg, dst_parent); + else { + struct au_cpup_single_args args = { + .errp = &err, + .cpg = cpg, + .dst_parent = dst_parent + }; + wkq_err = au_wkq_wait(au_call_cpup_single, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} +#endif + +/* + * copyup the @dentry from the first active lower branch to @bdst, + * using au_cpup_single(). + */ +static int au_cpup_simple(struct au_cp_generic *cpg) +{ + int err; + unsigned int flags_orig; + struct dentry *dentry; + + AuDebugOn(cpg->bsrc < 0); + + dentry = cpg->dentry; + DiMustWriteLock(dentry); + + err = au_lkup_neg(dentry, cpg->bdst, /*wh*/1); + if (!err) { + flags_orig = cpg->flags; + au_fset_cpup(cpg->flags, RENAME); + err = au_cpup_single(cpg, NULL); + cpg->flags = flags_orig; + if (!err) + return 0; /* success */ + + /* revert */ + au_set_h_dptr(dentry, cpg->bdst, NULL); + au_set_dbtop(dentry, cpg->bsrc); + } + + return err; +} + +struct au_cpup_simple_args { + int *errp; + struct au_cp_generic *cpg; +}; + +static void au_call_cpup_simple(void *args) +{ + struct au_cpup_simple_args *a = args; + + au_pin_hdir_acquire_nest(a->cpg->pin); + *a->errp = au_cpup_simple(a->cpg); + au_pin_hdir_release(a->cpg->pin); +} + +static int au_do_sio_cpup_simple(struct au_cp_generic *cpg) +{ + int err, wkq_err; + struct dentry *dentry, *parent; + struct file *h_file; + struct inode *h_dir; + struct user_namespace *h_userns; + + dentry = cpg->dentry; + h_file = NULL; + if (au_ftest_cpup(cpg->flags, HOPEN)) { + AuDebugOn(cpg->bsrc < 0); + h_file = au_h_open_pre(dentry, cpg->bsrc, /*force_wr*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + } + + parent = dget_parent(dentry); + h_dir = au_h_iptr(d_inode(parent), cpg->bdst); + h_userns = au_sbr_userns(dentry->d_sb, cpg->bdst); + if (!au_test_h_perm_sio(h_userns, h_dir, MAY_EXEC | MAY_WRITE) + && !au_cpup_sio_test(cpg->pin, d_inode(dentry)->i_mode)) + err = au_cpup_simple(cpg); + else { + struct au_cpup_simple_args args = { + .errp = &err, + .cpg = cpg + }; + wkq_err = au_wkq_wait(au_call_cpup_simple, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + dput(parent); + if (h_file) + au_h_open_post(dentry, cpg->bsrc, h_file); + +out: + return err; +} + +int au_sio_cpup_simple(struct au_cp_generic *cpg) +{ + aufs_bindex_t bsrc, bbot; + struct dentry *dentry, *h_dentry; + + if (cpg->bsrc < 0) { + dentry = cpg->dentry; + bbot = au_dbbot(dentry); + for (bsrc = cpg->bdst + 1; bsrc <= bbot; bsrc++) { + h_dentry = au_h_dptr(dentry, bsrc); + if (h_dentry) { + AuDebugOn(d_is_negative(h_dentry)); + break; + } + } + AuDebugOn(bsrc > bbot); + cpg->bsrc = bsrc; + } + AuDebugOn(cpg->bsrc <= cpg->bdst); + return au_do_sio_cpup_simple(cpg); +} + +int au_sio_cpdown_simple(struct au_cp_generic *cpg) +{ + AuDebugOn(cpg->bdst <= cpg->bsrc); + return au_do_sio_cpup_simple(cpg); +} + +/* ---------------------------------------------------------------------- */ + +/* + * copyup the deleted file for writing. + */ +static int au_do_cpup_wh(struct au_cp_generic *cpg, struct dentry *wh_dentry, + struct file *file) +{ + int err; + unsigned int flags_orig; + aufs_bindex_t bsrc_orig; + struct au_dinfo *dinfo; + struct { + struct au_hdentry *hd; + struct dentry *h_dentry; + } hdst, hsrc; + + dinfo = au_di(cpg->dentry); + AuRwMustWriteLock(&dinfo->di_rwsem); + + bsrc_orig = cpg->bsrc; + cpg->bsrc = dinfo->di_btop; + hdst.hd = au_hdentry(dinfo, cpg->bdst); + hdst.h_dentry = hdst.hd->hd_dentry; + hdst.hd->hd_dentry = wh_dentry; + dinfo->di_btop = cpg->bdst; + + hsrc.h_dentry = NULL; + if (file) { + hsrc.hd = au_hdentry(dinfo, cpg->bsrc); + hsrc.h_dentry = hsrc.hd->hd_dentry; + hsrc.hd->hd_dentry = au_hf_top(file)->f_path.dentry; + } + flags_orig = cpg->flags; + cpg->flags = !AuCpup_DTIME; + err = au_cpup_single(cpg, /*h_parent*/NULL); + cpg->flags = flags_orig; + if (file) { + if (!err) + err = au_reopen_nondir(file); + hsrc.hd->hd_dentry = hsrc.h_dentry; + } + hdst.hd->hd_dentry = hdst.h_dentry; + dinfo->di_btop = cpg->bsrc; + cpg->bsrc = bsrc_orig; + + return err; +} + +static int au_cpup_wh(struct au_cp_generic *cpg, struct file *file) +{ + int err; + aufs_bindex_t bdst; + struct au_dtime dt; + struct dentry *dentry, *parent, *h_parent, *wh_dentry; + struct au_branch *br; + struct path h_path; + + dentry = cpg->dentry; + bdst = cpg->bdst; + br = au_sbr(dentry->d_sb, bdst); + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bdst); + wh_dentry = au_whtmp_lkup(h_parent, br, &dentry->d_name); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out; + + h_path.dentry = h_parent; + h_path.mnt = au_br_mnt(br); + au_dtime_store(&dt, parent, &h_path); + err = au_do_cpup_wh(cpg, wh_dentry, file); + if (unlikely(err)) + goto out_wh; + + dget(wh_dentry); + h_path.dentry = wh_dentry; + if (!d_is_dir(wh_dentry)) { + /* no delegation since it is just created */ + err = vfsub_unlink(d_inode(h_parent), &h_path, + /*delegated*/NULL, /*force*/0); + } else + err = vfsub_rmdir(d_inode(h_parent), &h_path); + if (unlikely(err)) { + AuIOErr("failed remove copied-up tmp file %pd(%d)\n", + wh_dentry, err); + err = -EIO; + } + au_dtime_revert(&dt); + au_set_hi_wh(d_inode(dentry), bdst, wh_dentry); + +out_wh: + dput(wh_dentry); +out: + dput(parent); + return err; +} + +struct au_cpup_wh_args { + int *errp; + struct au_cp_generic *cpg; + struct file *file; +}; + +static void au_call_cpup_wh(void *args) +{ + struct au_cpup_wh_args *a = args; + + au_pin_hdir_acquire_nest(a->cpg->pin); + *a->errp = au_cpup_wh(a->cpg, a->file); + au_pin_hdir_release(a->cpg->pin); +} + +int au_sio_cpup_wh(struct au_cp_generic *cpg, struct file *file) +{ + int err, wkq_err; + aufs_bindex_t bdst; + struct dentry *dentry, *parent, *h_orph, *h_parent; + struct inode *dir, *h_dir, *h_tmpdir; + struct au_wbr *wbr; + struct au_pin wh_pin, *pin_orig; + struct user_namespace *h_userns; + + dentry = cpg->dentry; + bdst = cpg->bdst; + parent = dget_parent(dentry); + dir = d_inode(parent); + h_orph = NULL; + h_parent = NULL; + h_dir = au_igrab(au_h_iptr(dir, bdst)); + h_tmpdir = h_dir; + pin_orig = NULL; + if (!h_dir->i_nlink) { + wbr = au_sbr(dentry->d_sb, bdst)->br_wbr; + h_orph = wbr->wbr_orph; + + h_parent = dget(au_h_dptr(parent, bdst)); + au_set_h_dptr(parent, bdst, dget(h_orph)); + h_tmpdir = d_inode(h_orph); + au_set_h_iptr(dir, bdst, au_igrab(h_tmpdir), /*flags*/0); + + inode_lock_nested(h_tmpdir, AuLsc_I_PARENT3); + /* todo: au_h_open_pre()? */ + + pin_orig = cpg->pin; + au_pin_init(&wh_pin, dentry, bdst, AuLsc_DI_PARENT, + AuLsc_I_PARENT3, cpg->pin->udba, AuPin_DI_LOCKED); + cpg->pin = &wh_pin; + } + + h_userns = au_sbr_userns(dentry->d_sb, bdst); + if (!au_test_h_perm_sio(h_userns, h_tmpdir, MAY_EXEC | MAY_WRITE) + && !au_cpup_sio_test(cpg->pin, d_inode(dentry)->i_mode)) + err = au_cpup_wh(cpg, file); + else { + struct au_cpup_wh_args args = { + .errp = &err, + .cpg = cpg, + .file = file + }; + wkq_err = au_wkq_wait(au_call_cpup_wh, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + if (h_orph) { + inode_unlock(h_tmpdir); + /* todo: au_h_open_post()? */ + au_set_h_iptr(dir, bdst, au_igrab(h_dir), /*flags*/0); + au_set_h_dptr(parent, bdst, h_parent); + AuDebugOn(!pin_orig); + cpg->pin = pin_orig; + } + iput(h_dir); + dput(parent); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * generic routine for both of copy-up and copy-down. + */ +/* cf. revalidate function in file.c */ +int au_cp_dirs(struct dentry *dentry, aufs_bindex_t bdst, + int (*cp)(struct dentry *dentry, aufs_bindex_t bdst, + struct au_pin *pin, + struct dentry *h_parent, void *arg), + void *arg) +{ + int err; + struct au_pin pin; + struct dentry *d, *parent, *h_parent, *real_parent, *h_dentry; + + err = 0; + parent = dget_parent(dentry); + if (IS_ROOT(parent)) + goto out; + + au_pin_init(&pin, dentry, bdst, AuLsc_DI_PARENT2, AuLsc_I_PARENT2, + au_opt_udba(dentry->d_sb), AuPin_MNT_WRITE); + + /* do not use au_dpage */ + real_parent = parent; + while (1) { + dput(parent); + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bdst); + if (h_parent) + goto out; /* success */ + + /* find top dir which is necessary to cpup */ + do { + d = parent; + dput(parent); + parent = dget_parent(d); + di_read_lock_parent3(parent, !AuLock_IR); + h_parent = au_h_dptr(parent, bdst); + di_read_unlock(parent, !AuLock_IR); + } while (!h_parent); + + if (d != real_parent) + di_write_lock_child3(d); + + /* somebody else might create while we were sleeping */ + h_dentry = au_h_dptr(d, bdst); + if (!h_dentry || d_is_negative(h_dentry)) { + if (h_dentry) + au_update_dbtop(d); + + au_pin_set_dentry(&pin, d); + err = au_do_pin(&pin); + if (!err) { + err = cp(d, bdst, &pin, h_parent, arg); + au_unpin(&pin); + } + } + + if (d != real_parent) + di_write_unlock(d); + if (unlikely(err)) + break; + } + +out: + dput(parent); + return err; +} + +static int au_cpup_dir(struct dentry *dentry, aufs_bindex_t bdst, + struct au_pin *pin, + struct dentry *h_parent __maybe_unused, + void *arg __maybe_unused) +{ + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = bdst, + .bsrc = -1, + .len = 0, + .pin = pin, + .flags = AuCpup_DTIME + }; + return au_sio_cpup_simple(&cpg); +} + +int au_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + return au_cp_dirs(dentry, bdst, au_cpup_dir, NULL); +} + +int au_test_and_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + int err; + struct dentry *parent; + struct inode *dir; + + parent = dget_parent(dentry); + dir = d_inode(parent); + err = 0; + if (au_h_iptr(dir, bdst)) + goto out; + + di_read_unlock(parent, AuLock_IR); + di_write_lock_parent(parent); + /* someone else might change our inode while we were sleeping */ + if (!au_h_iptr(dir, bdst)) + err = au_cpup_dirs(dentry, bdst); + di_downgrade_lock(parent, AuLock_IR); + +out: + dput(parent); + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/cpup.h +++ linux-azure-5.13-5.13.0/fs/aufs/cpup.h @@ -0,0 +1,100 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * copy-up/down functions + */ + +#ifndef __AUFS_CPUP_H__ +#define __AUFS_CPUP_H__ + +#ifdef __KERNEL__ + +#include + +struct inode; +struct file; +struct au_pin; + +void au_cpup_attr_flags(struct inode *dst, unsigned int iflags); +void au_cpup_attr_timesizes(struct inode *inode); +void au_cpup_attr_nlink(struct inode *inode, int force); +void au_cpup_attr_changeable(struct inode *inode); +void au_cpup_igen(struct inode *inode, struct inode *h_inode); +void au_cpup_attr_all(struct inode *inode, int force); + +/* ---------------------------------------------------------------------- */ + +struct au_cp_generic { + struct dentry *dentry; + aufs_bindex_t bdst, bsrc; + loff_t len; + struct au_pin *pin; + unsigned int flags; +}; + +/* cpup flags */ +#define AuCpup_DTIME 1 /* do dtime_store/revert */ +#define AuCpup_KEEPLINO (1 << 1) /* do not clear the lower xino, + for link(2) */ +#define AuCpup_RENAME (1 << 2) /* rename after cpup */ +#define AuCpup_HOPEN (1 << 3) /* call h_open_pre/post() in + cpup */ +#define AuCpup_OVERWRITE (1 << 4) /* allow overwriting the + existing entry */ +#define AuCpup_RWDST (1 << 5) /* force write target even if + the branch is marked as RO */ + +#ifndef CONFIG_AUFS_BR_HFSPLUS +#undef AuCpup_HOPEN +#define AuCpup_HOPEN 0 +#endif + +#define au_ftest_cpup(flags, name) ((flags) & AuCpup_##name) +#define au_fset_cpup(flags, name) \ + do { (flags) |= AuCpup_##name; } while (0) +#define au_fclr_cpup(flags, name) \ + do { (flags) &= ~AuCpup_##name; } while (0) + +int au_copy_file(struct file *dst, struct file *src, loff_t len); +int au_sio_cpup_simple(struct au_cp_generic *cpg); +int au_sio_cpdown_simple(struct au_cp_generic *cpg); +int au_sio_cpup_wh(struct au_cp_generic *cpg, struct file *file); + +int au_cp_dirs(struct dentry *dentry, aufs_bindex_t bdst, + int (*cp)(struct dentry *dentry, aufs_bindex_t bdst, + struct au_pin *pin, + struct dentry *h_parent, void *arg), + void *arg); +int au_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst); +int au_test_and_cpup_dirs(struct dentry *dentry, aufs_bindex_t bdst); + +/* ---------------------------------------------------------------------- */ + +/* keep timestamps when copyup */ +struct au_dtime { + struct dentry *dt_dentry; + struct path dt_h_path; + struct timespec64 dt_atime, dt_mtime; +}; +void au_dtime_store(struct au_dtime *dt, struct dentry *dentry, + struct path *h_path); +void au_dtime_revert(struct au_dtime *dt); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_CPUP_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/dbgaufs.c +++ linux-azure-5.13-5.13.0/fs/aufs/dbgaufs.c @@ -0,0 +1,526 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * debugfs interface + */ + +#include +#include "aufs.h" + +#ifndef CONFIG_SYSFS +#error DEBUG_FS depends upon SYSFS +#endif + +static struct dentry *dbgaufs; +static const mode_t dbgaufs_mode = 0444; + +/* 20 is max digits length of ulong 64 */ +struct dbgaufs_arg { + int n; + char a[20 * 4]; +}; + +/* + * common function for all XINO files + */ +static int dbgaufs_xi_release(struct inode *inode __maybe_unused, + struct file *file) +{ + void *p; + + p = file->private_data; + if (p) { + /* this is struct dbgaufs_arg */ + AuDebugOn(!au_kfree_sz_test(p)); + au_kfree_do_rcu(p); + } + return 0; +} + +static int dbgaufs_xi_open(struct file *xf, struct file *file, int do_fcnt, + int cnt) +{ + int err; + struct kstat st; + struct dbgaufs_arg *p; + + err = -ENOMEM; + p = kmalloc(sizeof(*p), GFP_NOFS); + if (unlikely(!p)) + goto out; + + err = 0; + p->n = 0; + file->private_data = p; + if (!xf) + goto out; + + err = vfsub_getattr(&xf->f_path, &st); + if (!err) { + if (do_fcnt) + p->n = snprintf + (p->a, sizeof(p->a), "%d, %llux%u %lld\n", + cnt, st.blocks, st.blksize, + (long long)st.size); + else + p->n = snprintf(p->a, sizeof(p->a), "%llux%u %lld\n", + st.blocks, st.blksize, + (long long)st.size); + AuDebugOn(p->n >= sizeof(p->a)); + } else { + p->n = snprintf(p->a, sizeof(p->a), "err %d\n", err); + err = 0; + } + +out: + return err; +} + +static ssize_t dbgaufs_xi_read(struct file *file, char __user *buf, + size_t count, loff_t *ppos) +{ + struct dbgaufs_arg *p; + + p = file->private_data; + return simple_read_from_buffer(buf, count, ppos, p->a, p->n); +} + +/* ---------------------------------------------------------------------- */ + +struct dbgaufs_plink_arg { + int n; + char a[]; +}; + +static int dbgaufs_plink_release(struct inode *inode __maybe_unused, + struct file *file) +{ + free_page((unsigned long)file->private_data); + return 0; +} + +static int dbgaufs_plink_open(struct inode *inode, struct file *file) +{ + int err, i, limit; + unsigned long n, sum; + struct dbgaufs_plink_arg *p; + struct au_sbinfo *sbinfo; + struct super_block *sb; + struct hlist_bl_head *hbl; + + err = -ENOMEM; + p = (void *)get_zeroed_page(GFP_NOFS); + if (unlikely(!p)) + goto out; + + err = -EFBIG; + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + if (au_opt_test(au_mntflags(sb), PLINK)) { + limit = PAGE_SIZE - sizeof(p->n); + + /* the number of buckets */ + n = snprintf(p->a + p->n, limit, "%d\n", AuPlink_NHASH); + p->n += n; + limit -= n; + + sum = 0; + for (i = 0, hbl = sbinfo->si_plink; i < AuPlink_NHASH; + i++, hbl++) { + n = au_hbl_count(hbl); + sum += n; + + n = snprintf(p->a + p->n, limit, "%lu ", n); + p->n += n; + limit -= n; + if (unlikely(limit <= 0)) + goto out_free; + } + p->a[p->n - 1] = '\n'; + + /* the sum of plinks */ + n = snprintf(p->a + p->n, limit, "%lu\n", sum); + p->n += n; + limit -= n; + if (unlikely(limit <= 0)) + goto out_free; + } else { +#define str "1\n0\n0\n" + p->n = sizeof(str) - 1; + strcpy(p->a, str); +#undef str + } + si_read_unlock(sb); + + err = 0; + file->private_data = p; + goto out; /* success */ + +out_free: + free_page((unsigned long)p); +out: + return err; +} + +static ssize_t dbgaufs_plink_read(struct file *file, char __user *buf, + size_t count, loff_t *ppos) +{ + struct dbgaufs_plink_arg *p; + + p = file->private_data; + return simple_read_from_buffer(buf, count, ppos, p->a, p->n); +} + +static const struct file_operations dbgaufs_plink_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_plink_open, + .release = dbgaufs_plink_release, + .read = dbgaufs_plink_read +}; + +/* ---------------------------------------------------------------------- */ + +static int dbgaufs_xib_open(struct inode *inode, struct file *file) +{ + int err; + struct au_sbinfo *sbinfo; + struct super_block *sb; + + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + err = dbgaufs_xi_open(sbinfo->si_xib, file, /*do_fcnt*/0, /*cnt*/0); + si_read_unlock(sb); + return err; +} + +static const struct file_operations dbgaufs_xib_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xib_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +/* ---------------------------------------------------------------------- */ + +#define DbgaufsXi_PREFIX "xi" + +static int dbgaufs_xino_open(struct inode *inode, struct file *file) +{ + int err, idx; + long l; + aufs_bindex_t bindex; + char *p, a[sizeof(DbgaufsXi_PREFIX) + 8]; + struct au_sbinfo *sbinfo; + struct super_block *sb; + struct au_xino *xi; + struct file *xf; + struct qstr *name; + struct au_branch *br; + + err = -ENOENT; + name = &file->f_path.dentry->d_name; + if (unlikely(name->len < sizeof(DbgaufsXi_PREFIX) + || memcmp(name->name, DbgaufsXi_PREFIX, + sizeof(DbgaufsXi_PREFIX) - 1))) + goto out; + + AuDebugOn(name->len >= sizeof(a)); + memcpy(a, name->name, name->len); + a[name->len] = '\0'; + p = strchr(a, '-'); + if (p) + *p = '\0'; + err = kstrtol(a + sizeof(DbgaufsXi_PREFIX) - 1, 10, &l); + if (unlikely(err)) + goto out; + bindex = l; + idx = 0; + if (p) { + err = kstrtol(p + 1, 10, &l); + if (unlikely(err)) + goto out; + idx = l; + } + + err = -ENOENT; + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + if (unlikely(bindex < 0 || bindex > au_sbbot(sb))) + goto out_si; + br = au_sbr(sb, bindex); + xi = br->br_xino; + if (unlikely(idx >= xi->xi_nfile)) + goto out_si; + xf = au_xino_file(xi, idx); + if (xf) + err = dbgaufs_xi_open(xf, file, /*do_fcnt*/1, + au_xino_count(br)); + +out_si: + si_read_unlock(sb); +out: + AuTraceErr(err); + return err; +} + +static const struct file_operations dbgaufs_xino_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xino_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +void dbgaufs_xino_del(struct au_branch *br) +{ + struct dentry *dbgaufs; + + dbgaufs = br->br_dbgaufs; + if (!dbgaufs) + return; + + br->br_dbgaufs = NULL; + /* debugfs acquires the parent i_mutex */ + lockdep_off(); + debugfs_remove(dbgaufs); + lockdep_on(); +} + +void dbgaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex) +{ + aufs_bindex_t bbot; + struct au_branch *br; + + if (!au_sbi(sb)->si_dbgaufs) + return; + + bbot = au_sbbot(sb); + for (; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + dbgaufs_xino_del(br); + } +} + +static void dbgaufs_br_do_add(struct super_block *sb, aufs_bindex_t bindex, + unsigned int idx, struct dentry *parent, + struct au_sbinfo *sbinfo) +{ + struct au_branch *br; + struct dentry *d; + /* "xi" bindex(5) "-" idx(2) NULL */ + char name[sizeof(DbgaufsXi_PREFIX) + 8]; + + if (!idx) + snprintf(name, sizeof(name), DbgaufsXi_PREFIX "%d", bindex); + else + snprintf(name, sizeof(name), DbgaufsXi_PREFIX "%d-%u", + bindex, idx); + br = au_sbr(sb, bindex); + if (br->br_dbgaufs) { + struct qstr qstr = QSTR_INIT(name, strlen(name)); + + if (!au_qstreq(&br->br_dbgaufs->d_name, &qstr)) { + /* debugfs acquires the parent i_mutex */ + lockdep_off(); + d = debugfs_rename(parent, br->br_dbgaufs, parent, + name); + lockdep_on(); + if (unlikely(!d)) + pr_warn("failed renaming %pd/%s, ignored.\n", + parent, name); + } + } else { + lockdep_off(); + br->br_dbgaufs = debugfs_create_file(name, dbgaufs_mode, parent, + sbinfo, &dbgaufs_xino_fop); + lockdep_on(); + if (unlikely(!br->br_dbgaufs)) + pr_warn("failed creating %pd/%s, ignored.\n", + parent, name); + } +} + +static void dbgaufs_br_add(struct super_block *sb, aufs_bindex_t bindex, + struct dentry *parent, struct au_sbinfo *sbinfo) +{ + struct au_branch *br; + struct au_xino *xi; + unsigned int u; + + br = au_sbr(sb, bindex); + xi = br->br_xino; + for (u = 0; u < xi->xi_nfile; u++) + dbgaufs_br_do_add(sb, bindex, u, parent, sbinfo); +} + +void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex, int topdown) +{ + struct au_sbinfo *sbinfo; + struct dentry *parent; + aufs_bindex_t bbot; + + if (!au_opt_test(au_mntflags(sb), XINO)) + return; + + sbinfo = au_sbi(sb); + parent = sbinfo->si_dbgaufs; + if (!parent) + return; + + bbot = au_sbbot(sb); + if (topdown) + for (; bindex <= bbot; bindex++) + dbgaufs_br_add(sb, bindex, parent, sbinfo); + else + for (; bbot >= bindex; bbot--) + dbgaufs_br_add(sb, bbot, parent, sbinfo); +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_EXPORT +static int dbgaufs_xigen_open(struct inode *inode, struct file *file) +{ + int err; + struct au_sbinfo *sbinfo; + struct super_block *sb; + + sbinfo = inode->i_private; + sb = sbinfo->si_sb; + si_noflush_read_lock(sb); + err = dbgaufs_xi_open(sbinfo->si_xigen, file, /*do_fcnt*/0, /*cnt*/0); + si_read_unlock(sb); + return err; +} + +static const struct file_operations dbgaufs_xigen_fop = { + .owner = THIS_MODULE, + .open = dbgaufs_xigen_open, + .release = dbgaufs_xi_release, + .read = dbgaufs_xi_read +}; + +static int dbgaufs_xigen_init(struct au_sbinfo *sbinfo) +{ + int err; + + /* + * This function is a dynamic '__init' function actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + err = -EIO; + sbinfo->si_dbgaufs_xigen = debugfs_create_file + ("xigen", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, + &dbgaufs_xigen_fop); + if (sbinfo->si_dbgaufs_xigen) + err = 0; + + return err; +} +#else +static int dbgaufs_xigen_init(struct au_sbinfo *sbinfo) +{ + return 0; +} +#endif /* CONFIG_AUFS_EXPORT */ + +/* ---------------------------------------------------------------------- */ + +void dbgaufs_si_fin(struct au_sbinfo *sbinfo) +{ + /* + * This function is a dynamic '__fin' function actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + debugfs_remove_recursive(sbinfo->si_dbgaufs); + sbinfo->si_dbgaufs = NULL; +} + +int dbgaufs_si_init(struct au_sbinfo *sbinfo) +{ + int err; + char name[SysaufsSiNameLen]; + + /* + * This function is a dynamic '__init' function actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ + + err = -ENOENT; + if (!dbgaufs) { + AuErr1("/debug/aufs is uninitialized\n"); + goto out; + } + + err = -EIO; + sysaufs_name(sbinfo, name); + sbinfo->si_dbgaufs = debugfs_create_dir(name, dbgaufs); + if (unlikely(!sbinfo->si_dbgaufs)) + goto out; + + /* regardless plink/noplink option */ + sbinfo->si_dbgaufs_plink = debugfs_create_file + ("plink", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, + &dbgaufs_plink_fop); + if (unlikely(!sbinfo->si_dbgaufs_plink)) + goto out_dir; + + /* regardless xino/noxino option */ + sbinfo->si_dbgaufs_xib = debugfs_create_file + ("xib", dbgaufs_mode, sbinfo->si_dbgaufs, sbinfo, + &dbgaufs_xib_fop); + if (unlikely(!sbinfo->si_dbgaufs_xib)) + goto out_dir; + + err = dbgaufs_xigen_init(sbinfo); + if (!err) + goto out; /* success */ + +out_dir: + dbgaufs_si_fin(sbinfo); +out: + if (unlikely(err)) + pr_err("debugfs/aufs failed\n"); + return err; +} + +/* ---------------------------------------------------------------------- */ + +void dbgaufs_fin(void) +{ + debugfs_remove(dbgaufs); +} + +int __init dbgaufs_init(void) +{ + int err; + + err = -EIO; + dbgaufs = debugfs_create_dir(AUFS_NAME, NULL); + if (dbgaufs) + err = 0; + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/dbgaufs.h +++ linux-azure-5.13-5.13.0/fs/aufs/dbgaufs.h @@ -0,0 +1,53 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * debugfs interface + */ + +#ifndef __DBGAUFS_H__ +#define __DBGAUFS_H__ + +#ifdef __KERNEL__ + +struct super_block; +struct au_sbinfo; +struct au_branch; + +#ifdef CONFIG_DEBUG_FS +/* dbgaufs.c */ +void dbgaufs_xino_del(struct au_branch *br); +void dbgaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex); +void dbgaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex, int topdown); +void dbgaufs_si_fin(struct au_sbinfo *sbinfo); +int dbgaufs_si_init(struct au_sbinfo *sbinfo); +void dbgaufs_fin(void); +int __init dbgaufs_init(void); +#else +AuStubVoid(dbgaufs_xino_del, struct au_branch *br) +AuStubVoid(dbgaufs_brs_del, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(dbgaufs_brs_add, struct super_block *sb, aufs_bindex_t bindex, + int topdown) +AuStubVoid(dbgaufs_si_fin, struct au_sbinfo *sbinfo) +AuStubInt0(dbgaufs_si_init, struct au_sbinfo *sbinfo) +AuStubVoid(dbgaufs_fin, void) +AuStubInt0(__init dbgaufs_init, void) +#endif /* CONFIG_DEBUG_FS */ + +#endif /* __KERNEL__ */ +#endif /* __DBGAUFS_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/dcsub.c +++ linux-azure-5.13-5.13.0/fs/aufs/dcsub.c @@ -0,0 +1,225 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sub-routines for dentry cache + */ + +#include "aufs.h" + +static void au_dpage_free(struct au_dpage *dpage) +{ + int i; + struct dentry **p; + + p = dpage->dentries; + for (i = 0; i < dpage->ndentry; i++) + dput(*p++); + free_page((unsigned long)dpage->dentries); +} + +int au_dpages_init(struct au_dcsub_pages *dpages, gfp_t gfp) +{ + int err; + void *p; + + err = -ENOMEM; + dpages->dpages = kmalloc(sizeof(*dpages->dpages), gfp); + if (unlikely(!dpages->dpages)) + goto out; + + p = (void *)__get_free_page(gfp); + if (unlikely(!p)) + goto out_dpages; + + dpages->dpages[0].ndentry = 0; + dpages->dpages[0].dentries = p; + dpages->ndpage = 1; + return 0; /* success */ + +out_dpages: + au_kfree_try_rcu(dpages->dpages); +out: + return err; +} + +void au_dpages_free(struct au_dcsub_pages *dpages) +{ + int i; + struct au_dpage *p; + + p = dpages->dpages; + for (i = 0; i < dpages->ndpage; i++) + au_dpage_free(p++); + au_kfree_try_rcu(dpages->dpages); +} + +static int au_dpages_append(struct au_dcsub_pages *dpages, + struct dentry *dentry, gfp_t gfp) +{ + int err, sz; + struct au_dpage *dpage; + void *p; + + dpage = dpages->dpages + dpages->ndpage - 1; + sz = PAGE_SIZE / sizeof(dentry); + if (unlikely(dpage->ndentry >= sz)) { + AuLabel(new dpage); + err = -ENOMEM; + sz = dpages->ndpage * sizeof(*dpages->dpages); + p = au_kzrealloc(dpages->dpages, sz, + sz + sizeof(*dpages->dpages), gfp, + /*may_shrink*/0); + if (unlikely(!p)) + goto out; + + dpages->dpages = p; + dpage = dpages->dpages + dpages->ndpage; + p = (void *)__get_free_page(gfp); + if (unlikely(!p)) + goto out; + + dpage->ndentry = 0; + dpage->dentries = p; + dpages->ndpage++; + } + + AuDebugOn(au_dcount(dentry) <= 0); + dpage->dentries[dpage->ndentry++] = dget_dlock(dentry); + return 0; /* success */ + +out: + return err; +} + +/* todo: BAD approach */ +/* copied from linux/fs/dcache.c */ +enum d_walk_ret { + D_WALK_CONTINUE, + D_WALK_QUIT, + D_WALK_NORETRY, + D_WALK_SKIP, +}; + +extern void d_walk(struct dentry *parent, void *data, + enum d_walk_ret (*enter)(void *, struct dentry *)); + +struct ac_dpages_arg { + int err; + struct au_dcsub_pages *dpages; + struct super_block *sb; + au_dpages_test test; + void *arg; +}; + +static enum d_walk_ret au_call_dpages_append(void *_arg, struct dentry *dentry) +{ + enum d_walk_ret ret; + struct ac_dpages_arg *arg = _arg; + + ret = D_WALK_CONTINUE; + if (dentry->d_sb == arg->sb + && !IS_ROOT(dentry) + && au_dcount(dentry) > 0 + && au_di(dentry) + && (!arg->test || arg->test(dentry, arg->arg))) { + arg->err = au_dpages_append(arg->dpages, dentry, GFP_ATOMIC); + if (unlikely(arg->err)) + ret = D_WALK_QUIT; + } + + return ret; +} + +int au_dcsub_pages(struct au_dcsub_pages *dpages, struct dentry *root, + au_dpages_test test, void *arg) +{ + struct ac_dpages_arg args = { + .err = 0, + .dpages = dpages, + .sb = root->d_sb, + .test = test, + .arg = arg + }; + + d_walk(root, &args, au_call_dpages_append); + + return args.err; +} + +int au_dcsub_pages_rev(struct au_dcsub_pages *dpages, struct dentry *dentry, + int do_include, au_dpages_test test, void *arg) +{ + int err; + + err = 0; + write_seqlock(&rename_lock); + spin_lock(&dentry->d_lock); + if (do_include + && au_dcount(dentry) > 0 + && (!test || test(dentry, arg))) + err = au_dpages_append(dpages, dentry, GFP_ATOMIC); + spin_unlock(&dentry->d_lock); + if (unlikely(err)) + goto out; + + /* + * RCU for vfsmount is unnecessary since this is a traverse in a single + * mount + */ + while (!IS_ROOT(dentry)) { + dentry = dentry->d_parent; /* rename_lock is locked */ + spin_lock(&dentry->d_lock); + if (au_dcount(dentry) > 0 + && (!test || test(dentry, arg))) + err = au_dpages_append(dpages, dentry, GFP_ATOMIC); + spin_unlock(&dentry->d_lock); + if (unlikely(err)) + break; + } + +out: + write_sequnlock(&rename_lock); + return err; +} + +static inline int au_dcsub_dpages_aufs(struct dentry *dentry, void *arg) +{ + return au_di(dentry) && dentry->d_sb == arg; +} + +int au_dcsub_pages_rev_aufs(struct au_dcsub_pages *dpages, + struct dentry *dentry, int do_include) +{ + return au_dcsub_pages_rev(dpages, dentry, do_include, + au_dcsub_dpages_aufs, dentry->d_sb); +} + +int au_test_subdir(struct dentry *d1, struct dentry *d2) +{ + struct path path[2] = { + { + .dentry = d1 + }, + { + .dentry = d2 + } + }; + + return path_is_under(path + 0, path + 1); +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/dcsub.h +++ linux-azure-5.13-5.13.0/fs/aufs/dcsub.h @@ -0,0 +1,137 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sub-routines for dentry cache + */ + +#ifndef __AUFS_DCSUB_H__ +#define __AUFS_DCSUB_H__ + +#ifdef __KERNEL__ + +#include +#include + +struct au_dpage { + int ndentry; + struct dentry **dentries; +}; + +struct au_dcsub_pages { + int ndpage; + struct au_dpage *dpages; +}; + +/* ---------------------------------------------------------------------- */ + +/* dcsub.c */ +int au_dpages_init(struct au_dcsub_pages *dpages, gfp_t gfp); +void au_dpages_free(struct au_dcsub_pages *dpages); +typedef int (*au_dpages_test)(struct dentry *dentry, void *arg); +int au_dcsub_pages(struct au_dcsub_pages *dpages, struct dentry *root, + au_dpages_test test, void *arg); +int au_dcsub_pages_rev(struct au_dcsub_pages *dpages, struct dentry *dentry, + int do_include, au_dpages_test test, void *arg); +int au_dcsub_pages_rev_aufs(struct au_dcsub_pages *dpages, + struct dentry *dentry, int do_include); +int au_test_subdir(struct dentry *d1, struct dentry *d2); + +/* ---------------------------------------------------------------------- */ + +/* + * todo: in linux-3.13, several similar (but faster) helpers are added to + * include/linux/dcache.h. Try them (in the future). + */ + +static inline int au_d_hashed_positive(struct dentry *d) +{ + int err; + struct inode *inode = d_inode(d); + + err = 0; + if (unlikely(d_unhashed(d) + || d_is_negative(d) + || !inode->i_nlink)) + err = -ENOENT; + return err; +} + +static inline int au_d_linkable(struct dentry *d) +{ + int err; + struct inode *inode = d_inode(d); + + err = au_d_hashed_positive(d); + if (err + && d_is_positive(d) + && (inode->i_state & I_LINKABLE)) + err = 0; + return err; +} + +static inline int au_d_alive(struct dentry *d) +{ + int err; + struct inode *inode; + + err = 0; + if (!IS_ROOT(d)) + err = au_d_hashed_positive(d); + else { + inode = d_inode(d); + if (unlikely(d_unlinked(d) + || d_is_negative(d) + || !inode->i_nlink)) + err = -ENOENT; + } + return err; +} + +static inline int au_alive_dir(struct dentry *d) +{ + int err; + + err = au_d_alive(d); + if (unlikely(err || IS_DEADDIR(d_inode(d)))) + err = -ENOENT; + return err; +} + +static inline int au_qstreq(struct qstr *a, struct qstr *b) +{ + return a->len == b->len + && !memcmp(a->name, b->name, a->len); +} + +/* + * by the commit + * 360f547 2015-01-25 dcache: let the dentry count go down to zero without + * taking d_lock + * the type of d_lockref.count became int, but the inlined function d_count() + * still returns unsigned int. + * I don't know why. Maybe it is for every d_count() users? + * Anyway au_dcount() lives on. + */ +static inline int au_dcount(struct dentry *d) +{ + return (int)d_count(d); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DCSUB_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/debug.c +++ linux-azure-5.13-5.13.0/fs/aufs/debug.c @@ -0,0 +1,441 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * debug print functions + */ + +#include +#include "aufs.h" + +/* Returns 0, or -errno. arg is in kp->arg. */ +static int param_atomic_t_set(const char *val, const struct kernel_param *kp) +{ + int err, n; + + err = kstrtoint(val, 0, &n); + if (!err) { + if (n > 0) + au_debug_on(); + else + au_debug_off(); + } + return err; +} + +/* Returns length written or -errno. Buffer is 4k (ie. be short!) */ +static int param_atomic_t_get(char *buffer, const struct kernel_param *kp) +{ + atomic_t *a; + + a = kp->arg; + return sprintf(buffer, "%d", atomic_read(a)); +} + +static struct kernel_param_ops param_ops_atomic_t = { + .set = param_atomic_t_set, + .get = param_atomic_t_get + /* void (*free)(void *arg) */ +}; + +atomic_t aufs_debug = ATOMIC_INIT(0); +MODULE_PARM_DESC(debug, "debug print"); +module_param_named(debug, aufs_debug, atomic_t, 0664); + +DEFINE_MUTEX(au_dbg_mtx); /* just to serialize the dbg msgs */ +char *au_plevel = KERN_DEBUG; +#define dpri(fmt, ...) do { \ + if ((au_plevel \ + && strcmp(au_plevel, KERN_DEBUG)) \ + || au_debug_test()) \ + printk("%s" fmt, au_plevel, ##__VA_ARGS__); \ +} while (0) + +/* ---------------------------------------------------------------------- */ + +void au_dpri_whlist(struct au_nhash *whlist) +{ + unsigned long ul, n; + struct hlist_head *head; + struct au_vdir_wh *pos; + + n = whlist->nh_num; + head = whlist->nh_head; + for (ul = 0; ul < n; ul++) { + hlist_for_each_entry(pos, head, wh_hash) + dpri("b%d, %.*s, %d\n", + pos->wh_bindex, + pos->wh_str.len, pos->wh_str.name, + pos->wh_str.len); + head++; + } +} + +void au_dpri_vdir(struct au_vdir *vdir) +{ + unsigned long ul; + union au_vdir_deblk_p p; + unsigned char *o; + + if (!vdir || IS_ERR(vdir)) { + dpri("err %ld\n", PTR_ERR(vdir)); + return; + } + + dpri("deblk %u, nblk %lu, deblk %p, last{%lu, %p}, ver %llu\n", + vdir->vd_deblk_sz, vdir->vd_nblk, vdir->vd_deblk, + vdir->vd_last.ul, vdir->vd_last.p.deblk, vdir->vd_version); + for (ul = 0; ul < vdir->vd_nblk; ul++) { + p.deblk = vdir->vd_deblk[ul]; + o = p.deblk; + dpri("[%lu]: %p\n", ul, o); + } +} + +static int do_pri_inode(aufs_bindex_t bindex, struct inode *inode, int hn, + struct dentry *wh) +{ + char *n = NULL; + int l = 0; + + if (!inode || IS_ERR(inode)) { + dpri("i%d: err %ld\n", bindex, PTR_ERR(inode)); + return -1; + } + + /* the type of i_blocks depends upon CONFIG_LBDAF */ + BUILD_BUG_ON(sizeof(inode->i_blocks) != sizeof(unsigned long) + && sizeof(inode->i_blocks) != sizeof(u64)); + if (wh) { + n = (void *)wh->d_name.name; + l = wh->d_name.len; + } + + dpri("i%d: %p, i%lu, %s, cnt %d, nl %u, 0%o, sz %llu, blk %llu," + " hn %d, ct %lld, np %lu, st 0x%lx, f 0x%x, v %llu, g %x%s%.*s\n", + bindex, inode, + inode->i_ino, inode->i_sb ? au_sbtype(inode->i_sb) : "??", + atomic_read(&inode->i_count), inode->i_nlink, inode->i_mode, + i_size_read(inode), (unsigned long long)inode->i_blocks, + hn, (long long)timespec64_to_ns(&inode->i_ctime) & 0x0ffff, + inode->i_mapping ? inode->i_mapping->nrpages : 0, + inode->i_state, inode->i_flags, inode_peek_iversion(inode), + inode->i_generation, + l ? ", wh " : "", l, n); + return 0; +} + +void au_dpri_inode(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct au_hinode *hi; + aufs_bindex_t bindex; + int err, hn; + + err = do_pri_inode(-1, inode, -1, NULL); + if (err || !au_test_aufs(inode->i_sb) || au_is_bad_inode(inode)) + return; + + iinfo = au_ii(inode); + dpri("i-1: btop %d, bbot %d, gen %d\n", + iinfo->ii_btop, iinfo->ii_bbot, au_iigen(inode, NULL)); + if (iinfo->ii_btop < 0) + return; + hn = 0; + for (bindex = iinfo->ii_btop; bindex <= iinfo->ii_bbot; bindex++) { + hi = au_hinode(iinfo, bindex); + hn = !!au_hn(hi); + do_pri_inode(bindex, hi->hi_inode, hn, hi->hi_whdentry); + } +} + +void au_dpri_dalias(struct inode *inode) +{ + struct dentry *d; + + spin_lock(&inode->i_lock); + hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias) + au_dpri_dentry(d); + spin_unlock(&inode->i_lock); +} + +static int do_pri_dentry(aufs_bindex_t bindex, struct dentry *dentry) +{ + struct dentry *wh = NULL; + int hn; + struct inode *inode; + struct au_iinfo *iinfo; + struct au_hinode *hi; + + if (!dentry || IS_ERR(dentry)) { + dpri("d%d: err %ld\n", bindex, PTR_ERR(dentry)); + return -1; + } + /* do not call dget_parent() here */ + /* note: access d_xxx without d_lock */ + dpri("d%d: %p, %pd2?, %s, cnt %d, flags 0x%x, %shashed\n", + bindex, dentry, dentry, + dentry->d_sb ? au_sbtype(dentry->d_sb) : "??", + au_dcount(dentry), dentry->d_flags, + d_unhashed(dentry) ? "un" : ""); + hn = -1; + inode = NULL; + if (d_is_positive(dentry)) + inode = d_inode(dentry); + if (inode + && au_test_aufs(dentry->d_sb) + && bindex >= 0 + && !au_is_bad_inode(inode)) { + iinfo = au_ii(inode); + hi = au_hinode(iinfo, bindex); + hn = !!au_hn(hi); + wh = hi->hi_whdentry; + } + do_pri_inode(bindex, inode, hn, wh); + return 0; +} + +void au_dpri_dentry(struct dentry *dentry) +{ + struct au_dinfo *dinfo; + aufs_bindex_t bindex; + int err; + + err = do_pri_dentry(-1, dentry); + if (err || !au_test_aufs(dentry->d_sb)) + return; + + dinfo = au_di(dentry); + if (!dinfo) + return; + dpri("d-1: btop %d, bbot %d, bwh %d, bdiropq %d, gen %d, tmp %d\n", + dinfo->di_btop, dinfo->di_bbot, + dinfo->di_bwh, dinfo->di_bdiropq, au_digen(dentry), + dinfo->di_tmpfile); + if (dinfo->di_btop < 0) + return; + for (bindex = dinfo->di_btop; bindex <= dinfo->di_bbot; bindex++) + do_pri_dentry(bindex, au_hdentry(dinfo, bindex)->hd_dentry); +} + +static int do_pri_file(aufs_bindex_t bindex, struct file *file) +{ + char a[32]; + + if (!file || IS_ERR(file)) { + dpri("f%d: err %ld\n", bindex, PTR_ERR(file)); + return -1; + } + a[0] = 0; + if (bindex < 0 + && !IS_ERR_OR_NULL(file->f_path.dentry) + && au_test_aufs(file->f_path.dentry->d_sb) + && au_fi(file)) + snprintf(a, sizeof(a), ", gen %d, mmapped %d", + au_figen(file), atomic_read(&au_fi(file)->fi_mmapped)); + dpri("f%d: mode 0x%x, flags 0%o, cnt %ld, v %llu, pos %llu%s\n", + bindex, file->f_mode, file->f_flags, (long)file_count(file), + file->f_version, file->f_pos, a); + if (!IS_ERR_OR_NULL(file->f_path.dentry)) + do_pri_dentry(bindex, file->f_path.dentry); + return 0; +} + +void au_dpri_file(struct file *file) +{ + struct au_finfo *finfo; + struct au_fidir *fidir; + struct au_hfile *hfile; + aufs_bindex_t bindex; + int err; + + err = do_pri_file(-1, file); + if (err + || IS_ERR_OR_NULL(file->f_path.dentry) + || !au_test_aufs(file->f_path.dentry->d_sb)) + return; + + finfo = au_fi(file); + if (!finfo) + return; + if (finfo->fi_btop < 0) + return; + fidir = finfo->fi_hdir; + if (!fidir) + do_pri_file(finfo->fi_btop, finfo->fi_htop.hf_file); + else + for (bindex = finfo->fi_btop; + bindex >= 0 && bindex <= fidir->fd_bbot; + bindex++) { + hfile = fidir->fd_hfile + bindex; + do_pri_file(bindex, hfile ? hfile->hf_file : NULL); + } +} + +static int do_pri_br(aufs_bindex_t bindex, struct au_branch *br) +{ + struct vfsmount *mnt; + struct super_block *sb; + + if (!br || IS_ERR(br)) + goto out; + mnt = au_br_mnt(br); + if (!mnt || IS_ERR(mnt)) + goto out; + sb = mnt->mnt_sb; + if (!sb || IS_ERR(sb)) + goto out; + + dpri("s%d: {perm 0x%x, id %d, wbr %p}, " + "%s, dev 0x%02x%02x, flags 0x%lx, cnt %d, active %d, " + "xino %d\n", + bindex, br->br_perm, br->br_id, br->br_wbr, + au_sbtype(sb), MAJOR(sb->s_dev), MINOR(sb->s_dev), + sb->s_flags, sb->s_count, + atomic_read(&sb->s_active), + !!au_xino_file(br->br_xino, /*idx*/-1)); + return 0; + +out: + dpri("s%d: err %ld\n", bindex, PTR_ERR(br)); + return -1; +} + +void au_dpri_sb(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + aufs_bindex_t bindex; + int err; + /* to reduce stack size */ + struct { + struct vfsmount mnt; + struct au_branch fake; + } *a; + + /* this function can be called from magic sysrq */ + a = kzalloc(sizeof(*a), GFP_ATOMIC); + if (unlikely(!a)) { + dpri("no memory\n"); + return; + } + + a->mnt.mnt_sb = sb; + a->fake.br_path.mnt = &a->mnt; + err = do_pri_br(-1, &a->fake); + au_kfree_rcu(a); + dpri("dev 0x%x\n", sb->s_dev); + if (err || !au_test_aufs(sb)) + return; + + sbinfo = au_sbi(sb); + if (!sbinfo) + return; + dpri("nw %d, gen %u, kobj %d\n", + atomic_read(&sbinfo->si_nowait.nw_len), sbinfo->si_generation, + kref_read(&sbinfo->si_kobj.kref)); + for (bindex = 0; bindex <= sbinfo->si_bbot; bindex++) + do_pri_br(bindex, sbinfo->si_branch[0 + bindex]); +} + +/* ---------------------------------------------------------------------- */ + +void __au_dbg_verify_dinode(struct dentry *dentry, const char *func, int line) +{ + struct inode *h_inode, *inode = d_inode(dentry); + struct dentry *h_dentry; + aufs_bindex_t bindex, bbot, bi; + + if (!inode /* || au_di(dentry)->di_lsc == AuLsc_DI_TMP */) + return; + + bbot = au_dbbot(dentry); + bi = au_ibbot(inode); + if (bi < bbot) + bbot = bi; + bindex = au_dbtop(dentry); + bi = au_ibtop(inode); + if (bi > bindex) + bindex = bi; + + for (; bindex <= bbot; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + h_inode = au_h_iptr(inode, bindex); + if (unlikely(h_inode != d_inode(h_dentry))) { + au_debug_on(); + AuDbg("b%d, %s:%d\n", bindex, func, line); + AuDbgDentry(dentry); + AuDbgInode(inode); + au_debug_off(); + BUG(); + } + } +} + +void au_dbg_verify_gen(struct dentry *parent, unsigned int sigen) +{ + int err, i, j; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries; + + err = au_dpages_init(&dpages, GFP_NOFS); + AuDebugOn(err); + err = au_dcsub_pages_rev_aufs(&dpages, parent, /*do_include*/1); + AuDebugOn(err); + for (i = dpages.ndpage - 1; !err && i >= 0; i--) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + for (j = dpage->ndentry - 1; !err && j >= 0; j--) + AuDebugOn(au_digen_test(dentries[j], sigen)); + } + au_dpages_free(&dpages); +} + +void au_dbg_verify_kthread(void) +{ + if (au_wkq_test()) { + au_dbg_blocked(); + /* + * It may be recursive, but udba=notify between two aufs mounts, + * where a single ro branch is shared, is not a problem. + */ + /* WARN_ON(1); */ + } +} + +/* ---------------------------------------------------------------------- */ + +int __init au_debug_init(void) +{ + aufs_bindex_t bindex; + struct au_vdir_destr destr; + + bindex = -1; + AuDebugOn(bindex >= 0); + + destr.len = -1; + AuDebugOn(destr.len < NAME_MAX); + +#ifdef CONFIG_4KSTACKS + pr_warn("CONFIG_4KSTACKS is defined.\n"); +#endif + + return 0; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/debug.h +++ linux-azure-5.13-5.13.0/fs/aufs/debug.h @@ -0,0 +1,226 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * debug print functions + */ + +#ifndef __AUFS_DEBUG_H__ +#define __AUFS_DEBUG_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include + +#ifdef CONFIG_AUFS_DEBUG +#define AuDebugOn(a) BUG_ON(a) + +/* module parameter */ +extern atomic_t aufs_debug; +static inline void au_debug_on(void) +{ + atomic_inc(&aufs_debug); +} +static inline void au_debug_off(void) +{ + atomic_dec_if_positive(&aufs_debug); +} + +static inline int au_debug_test(void) +{ + return atomic_read(&aufs_debug) > 0; +} +#else +#define AuDebugOn(a) do {} while (0) +AuStubVoid(au_debug_on, void) +AuStubVoid(au_debug_off, void) +AuStubInt0(au_debug_test, void) +#endif /* CONFIG_AUFS_DEBUG */ + +#define param_check_atomic_t(name, p) __param_check(name, p, atomic_t) + +/* ---------------------------------------------------------------------- */ + +/* debug print */ + +#define AuDbg(fmt, ...) do { \ + if (au_debug_test()) \ + pr_debug("DEBUG: " fmt, ##__VA_ARGS__); \ +} while (0) +#define AuLabel(l) AuDbg(#l "\n") +#define AuIOErr(fmt, ...) pr_err("I/O Error, " fmt, ##__VA_ARGS__) +#define AuWarn1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + pr_warn(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuErr1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + pr_err(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuIOErr1(fmt, ...) do { \ + static unsigned char _c; \ + if (!_c++) \ + AuIOErr(fmt, ##__VA_ARGS__); \ +} while (0) + +#define AuUnsupportMsg "This operation is not supported." \ + " Please report this application to aufs-users ML." +#define AuUnsupport(fmt, ...) do { \ + pr_err(AuUnsupportMsg "\n" fmt, ##__VA_ARGS__); \ + dump_stack(); \ +} while (0) + +#define AuTraceErr(e) do { \ + if (unlikely((e) < 0)) \ + AuDbg("err %d\n", (int)(e)); \ +} while (0) + +#define AuTraceErrPtr(p) do { \ + if (IS_ERR(p)) \ + AuDbg("err %ld\n", PTR_ERR(p)); \ +} while (0) + +/* dirty macros for debug print, use with "%.*s" and caution */ +#define AuLNPair(qstr) (qstr)->len, (qstr)->name + +/* ---------------------------------------------------------------------- */ + +struct dentry; +#ifdef CONFIG_AUFS_DEBUG +extern struct mutex au_dbg_mtx; +extern char *au_plevel; +struct au_nhash; +void au_dpri_whlist(struct au_nhash *whlist); +struct au_vdir; +void au_dpri_vdir(struct au_vdir *vdir); +struct inode; +void au_dpri_inode(struct inode *inode); +void au_dpri_dalias(struct inode *inode); +void au_dpri_dentry(struct dentry *dentry); +struct file; +void au_dpri_file(struct file *filp); +struct super_block; +void au_dpri_sb(struct super_block *sb); + +#define au_dbg_verify_dinode(d) __au_dbg_verify_dinode(d, __func__, __LINE__) +void __au_dbg_verify_dinode(struct dentry *dentry, const char *func, int line); +void au_dbg_verify_gen(struct dentry *parent, unsigned int sigen); +void au_dbg_verify_kthread(void); + +int __init au_debug_init(void); + +#define AuDbgWhlist(w) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#w "\n"); \ + au_dpri_whlist(w); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgVdir(v) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#v "\n"); \ + au_dpri_vdir(v); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgInode(i) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#i "\n"); \ + au_dpri_inode(i); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgDAlias(i) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#i "\n"); \ + au_dpri_dalias(i); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgDentry(d) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#d "\n"); \ + au_dpri_dentry(d); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgFile(f) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#f "\n"); \ + au_dpri_file(f); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgSb(sb) do { \ + mutex_lock(&au_dbg_mtx); \ + AuDbg(#sb "\n"); \ + au_dpri_sb(sb); \ + mutex_unlock(&au_dbg_mtx); \ +} while (0) + +#define AuDbgSym(addr) do { \ + char sym[KSYM_SYMBOL_LEN]; \ + sprint_symbol(sym, (unsigned long)addr); \ + AuDbg("%s\n", sym); \ +} while (0) +#else +AuStubVoid(au_dbg_verify_dinode, struct dentry *dentry) +AuStubVoid(au_dbg_verify_gen, struct dentry *parent, unsigned int sigen) +AuStubVoid(au_dbg_verify_kthread, void) +AuStubInt0(__init au_debug_init, void) + +#define AuDbgWhlist(w) do {} while (0) +#define AuDbgVdir(v) do {} while (0) +#define AuDbgInode(i) do {} while (0) +#define AuDbgDAlias(i) do {} while (0) +#define AuDbgDentry(d) do {} while (0) +#define AuDbgFile(f) do {} while (0) +#define AuDbgSb(sb) do {} while (0) +#define AuDbgSym(addr) do {} while (0) +#endif /* CONFIG_AUFS_DEBUG */ + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_MAGIC_SYSRQ +int __init au_sysrq_init(void); +void au_sysrq_fin(void); + +#ifdef CONFIG_HW_CONSOLE +#define au_dbg_blocked() do { \ + WARN_ON(1); \ + handle_sysrq('w'); \ +} while (0) +#else +AuStubVoid(au_dbg_blocked, void) +#endif + +#else +AuStubInt0(__init au_sysrq_init, void) +AuStubVoid(au_sysrq_fin, void) +AuStubVoid(au_dbg_blocked, void) +#endif /* CONFIG_AUFS_MAGIC_SYSRQ */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DEBUG_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/dentry.c +++ linux-azure-5.13-5.13.0/fs/aufs/dentry.c @@ -0,0 +1,1160 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * lookup and dentry operations + */ + +#include +#include +#include "aufs.h" + +/* + * returns positive/negative dentry, NULL or an error. + * NULL means whiteout-ed or not-found. + */ +static struct dentry* +au_do_lookup(struct dentry *h_parent, struct dentry *dentry, + aufs_bindex_t bindex, struct au_do_lookup_args *args) +{ + struct dentry *h_dentry; + struct inode *h_inode; + struct au_branch *br; + struct user_namespace *h_userns; + int wh_found, opq; + unsigned char wh_able; + const unsigned char allow_neg = !!au_ftest_lkup(args->flags, ALLOW_NEG); + const unsigned char ignore_perm = !!au_ftest_lkup(args->flags, + IGNORE_PERM); + + wh_found = 0; + br = au_sbr(dentry->d_sb, bindex); + h_userns = au_br_userns(br); + wh_able = !!au_br_whable(br->br_perm); + if (wh_able) + wh_found = au_wh_test(h_userns, h_parent, &args->whname, + ignore_perm); + h_dentry = ERR_PTR(wh_found); + if (!wh_found) + goto real_lookup; + if (unlikely(wh_found < 0)) + goto out; + + /* We found a whiteout */ + /* au_set_dbbot(dentry, bindex); */ + au_set_dbwh(dentry, bindex); + if (!allow_neg) + return NULL; /* success */ + +real_lookup: + if (!ignore_perm) + h_dentry = vfsub_lkup_one(args->name, h_parent); + else + h_dentry = au_sio_lkup_one(h_userns, args->name, h_parent); + if (IS_ERR(h_dentry)) { + if (PTR_ERR(h_dentry) == -ENAMETOOLONG + && !allow_neg) + h_dentry = NULL; + goto out; + } + + h_inode = d_inode(h_dentry); + if (d_is_negative(h_dentry)) { + if (!allow_neg) + goto out_neg; + } else if (wh_found + || (args->type && args->type != (h_inode->i_mode & S_IFMT))) + goto out_neg; + else if (au_ftest_lkup(args->flags, DIRREN) + /* && h_inode */ + && !au_dr_lkup_h_ino(args, bindex, h_inode->i_ino)) { + AuDbg("b%d %pd ignored hi%llu\n", bindex, h_dentry, + (unsigned long long)h_inode->i_ino); + goto out_neg; + } + + if (au_dbbot(dentry) <= bindex) + au_set_dbbot(dentry, bindex); + if (au_dbtop(dentry) < 0 || bindex < au_dbtop(dentry)) + au_set_dbtop(dentry, bindex); + au_set_h_dptr(dentry, bindex, h_dentry); + + if (!d_is_dir(h_dentry) + || !wh_able + || (d_really_is_positive(dentry) && !d_is_dir(dentry))) + goto out; /* success */ + + inode_lock_shared_nested(h_inode, AuLsc_I_CHILD); + opq = au_diropq_test(h_userns, h_dentry); + inode_unlock_shared(h_inode); + if (opq > 0) + au_set_dbdiropq(dentry, bindex); + else if (unlikely(opq < 0)) { + au_set_h_dptr(dentry, bindex, NULL); + h_dentry = ERR_PTR(opq); + } + goto out; + +out_neg: + dput(h_dentry); + h_dentry = NULL; +out: + return h_dentry; +} + +static int au_test_shwh(struct super_block *sb, const struct qstr *name) +{ + if (unlikely(!au_opt_test(au_mntflags(sb), SHWH) + && !strncmp(name->name, AUFS_WH_PFX, AUFS_WH_PFX_LEN))) + return -EPERM; + return 0; +} + +/* + * returns the number of lower positive dentries, + * otherwise an error. + * can be called at unlinking with @type is zero. + */ +int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t btop, + unsigned int flags) +{ + int npositive, err; + aufs_bindex_t bindex, btail, bdiropq; + unsigned char isdir, dirperm1, dirren; + struct au_do_lookup_args args = { + .flags = flags, + .name = &dentry->d_name + }; + struct dentry *parent; + struct super_block *sb; + + sb = dentry->d_sb; + err = au_test_shwh(sb, args.name); + if (unlikely(err)) + goto out; + + err = au_wh_name_alloc(&args.whname, args.name); + if (unlikely(err)) + goto out; + + isdir = !!d_is_dir(dentry); + dirperm1 = !!au_opt_test(au_mntflags(sb), DIRPERM1); + dirren = !!au_opt_test(au_mntflags(sb), DIRREN); + if (dirren) + au_fset_lkup(args.flags, DIRREN); + + npositive = 0; + parent = dget_parent(dentry); + btail = au_dbtaildir(parent); + for (bindex = btop; bindex <= btail; bindex++) { + struct dentry *h_parent, *h_dentry; + struct inode *h_inode, *h_dir; + struct au_branch *br; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry) { + if (d_is_positive(h_dentry)) + npositive++; + break; + } + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || !d_is_dir(h_parent)) + continue; + + if (dirren) { + /* if the inum matches, then use the prepared name */ + err = au_dr_lkup_name(&args, bindex); + if (unlikely(err)) + goto out_parent; + } + + h_dir = d_inode(h_parent); + inode_lock_shared_nested(h_dir, AuLsc_I_PARENT); + h_dentry = au_do_lookup(h_parent, dentry, bindex, &args); + inode_unlock_shared(h_dir); + err = PTR_ERR(h_dentry); + if (IS_ERR(h_dentry)) + goto out_parent; + if (h_dentry) + au_fclr_lkup(args.flags, ALLOW_NEG); + if (dirperm1) + au_fset_lkup(args.flags, IGNORE_PERM); + + if (au_dbwh(dentry) == bindex) + break; + if (!h_dentry) + continue; + if (d_is_negative(h_dentry)) + continue; + h_inode = d_inode(h_dentry); + npositive++; + if (!args.type) + args.type = h_inode->i_mode & S_IFMT; + if (args.type != S_IFDIR) + break; + else if (isdir) { + /* the type of lower may be different */ + bdiropq = au_dbdiropq(dentry); + if (bdiropq >= 0 && bdiropq <= bindex) + break; + } + br = au_sbr(sb, bindex); + if (dirren + && au_dr_hino_test_add(&br->br_dirren, h_inode->i_ino, + /*add_ent*/NULL)) { + /* prepare next name to lookup */ + err = au_dr_lkup(&args, dentry, bindex); + if (unlikely(err)) + goto out_parent; + } + } + + if (npositive) { + AuLabel(positive); + au_update_dbtop(dentry); + } + err = npositive; + if (unlikely(!au_opt_test(au_mntflags(sb), UDBA_NONE) + && au_dbtop(dentry) < 0)) { + err = -EIO; + AuIOErr("both of real entry and whiteout found, %pd, err %d\n", + dentry, err); + } + +out_parent: + dput(parent); + au_kfree_try_rcu(args.whname.name); + if (dirren) + au_dr_lkup_fin(&args); +out: + return err; +} + +struct dentry *au_sio_lkup_one(struct user_namespace *userns, struct qstr *name, + struct dentry *parent) +{ + struct dentry *dentry; + int wkq_err; + + if (!au_test_h_perm_sio(userns, d_inode(parent), MAY_EXEC)) + dentry = vfsub_lkup_one(name, parent); + else { + struct vfsub_lkup_one_args args = { + .errp = &dentry, + .name = name, + .parent = parent + }; + + wkq_err = au_wkq_wait(vfsub_call_lkup_one, &args); + if (unlikely(wkq_err)) + dentry = ERR_PTR(wkq_err); + } + + return dentry; +} + +/* + * lookup @dentry on @bindex which should be negative. + */ +int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex, int wh) +{ + int err; + struct dentry *parent, *h_parent, *h_dentry; + struct au_branch *br; + struct user_namespace *h_userns; + + parent = dget_parent(dentry); + h_parent = au_h_dptr(parent, bindex); + br = au_sbr(dentry->d_sb, bindex); + h_userns = au_br_userns(br); + if (wh) + h_dentry = au_whtmp_lkup(h_parent, br, &dentry->d_name); + else + h_dentry = au_sio_lkup_one(h_userns, &dentry->d_name, h_parent); + err = PTR_ERR(h_dentry); + if (IS_ERR(h_dentry)) + goto out; + if (unlikely(d_is_positive(h_dentry))) { + err = -EIO; + AuIOErr("%pd should be negative on b%d.\n", h_dentry, bindex); + dput(h_dentry); + goto out; + } + + err = 0; + if (bindex < au_dbtop(dentry)) + au_set_dbtop(dentry, bindex); + if (au_dbbot(dentry) < bindex) + au_set_dbbot(dentry, bindex); + au_set_h_dptr(dentry, bindex, h_dentry); + +out: + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* subset of struct inode */ +struct au_iattr { + unsigned long i_ino; + /* unsigned int i_nlink; */ + kuid_t i_uid; + kgid_t i_gid; + u64 i_version; +/* + loff_t i_size; + blkcnt_t i_blocks; +*/ + umode_t i_mode; +}; + +static void au_iattr_save(struct au_iattr *ia, struct inode *h_inode) +{ + ia->i_ino = h_inode->i_ino; + /* ia->i_nlink = h_inode->i_nlink; */ + ia->i_uid = h_inode->i_uid; + ia->i_gid = h_inode->i_gid; + ia->i_version = inode_query_iversion(h_inode); +/* + ia->i_size = h_inode->i_size; + ia->i_blocks = h_inode->i_blocks; +*/ + ia->i_mode = (h_inode->i_mode & S_IFMT); +} + +static int au_iattr_test(struct au_iattr *ia, struct inode *h_inode) +{ + return ia->i_ino != h_inode->i_ino + /* || ia->i_nlink != h_inode->i_nlink */ + || !uid_eq(ia->i_uid, h_inode->i_uid) + || !gid_eq(ia->i_gid, h_inode->i_gid) + || !inode_eq_iversion(h_inode, ia->i_version) +/* + || ia->i_size != h_inode->i_size + || ia->i_blocks != h_inode->i_blocks +*/ + || ia->i_mode != (h_inode->i_mode & S_IFMT); +} + +static int au_h_verify_dentry(struct dentry *h_dentry, struct dentry *h_parent, + struct au_branch *br) +{ + int err; + struct au_iattr ia; + struct inode *h_inode; + struct dentry *h_d; + struct super_block *h_sb; + + err = 0; + memset(&ia, -1, sizeof(ia)); + h_sb = h_dentry->d_sb; + h_inode = NULL; + if (d_is_positive(h_dentry)) { + h_inode = d_inode(h_dentry); + au_iattr_save(&ia, h_inode); + } else if (au_test_nfs(h_sb) || au_test_fuse(h_sb)) + /* nfs d_revalidate may return 0 for negative dentry */ + /* fuse d_revalidate always return 0 for negative dentry */ + goto out; + + /* main purpose is namei.c:cached_lookup() and d_revalidate */ + h_d = vfsub_lkup_one(&h_dentry->d_name, h_parent); + err = PTR_ERR(h_d); + if (IS_ERR(h_d)) + goto out; + + err = 0; + if (unlikely(h_d != h_dentry + || d_inode(h_d) != h_inode + || (h_inode && au_iattr_test(&ia, h_inode)))) + err = au_busy_or_stale(); + dput(h_d); + +out: + AuTraceErr(err); + return err; +} + +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, + struct dentry *h_parent, struct au_branch *br) +{ + int err; + + err = 0; + if (udba == AuOpt_UDBA_REVAL + && !au_test_fs_remote(h_dentry->d_sb)) { + IMustLock(h_dir); + err = (d_inode(h_dentry->d_parent) != h_dir); + } else if (udba != AuOpt_UDBA_NONE) + err = au_h_verify_dentry(h_dentry, h_parent, br); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_refresh_hdentry(struct dentry *dentry, struct dentry *parent) +{ + int err; + aufs_bindex_t new_bindex, bindex, bbot, bwh, bdiropq; + struct au_hdentry tmp, *p, *q; + struct au_dinfo *dinfo; + struct super_block *sb; + + DiMustWriteLock(dentry); + + sb = dentry->d_sb; + dinfo = au_di(dentry); + bbot = dinfo->di_bbot; + bwh = dinfo->di_bwh; + bdiropq = dinfo->di_bdiropq; + bindex = dinfo->di_btop; + p = au_hdentry(dinfo, bindex); + for (; bindex <= bbot; bindex++, p++) { + if (!p->hd_dentry) + continue; + + new_bindex = au_br_index(sb, p->hd_id); + if (new_bindex == bindex) + continue; + + if (dinfo->di_bwh == bindex) + bwh = new_bindex; + if (dinfo->di_bdiropq == bindex) + bdiropq = new_bindex; + if (new_bindex < 0) { + au_hdput(p); + p->hd_dentry = NULL; + continue; + } + + /* swap two lower dentries, and loop again */ + q = au_hdentry(dinfo, new_bindex); + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hd_dentry) { + bindex--; + p--; + } + } + + dinfo->di_bwh = -1; + if (bwh >= 0 && bwh <= au_sbbot(sb) && au_sbr_whable(sb, bwh)) + dinfo->di_bwh = bwh; + + dinfo->di_bdiropq = -1; + if (bdiropq >= 0 + && bdiropq <= au_sbbot(sb) + && au_sbr_whable(sb, bdiropq)) + dinfo->di_bdiropq = bdiropq; + + err = -EIO; + dinfo->di_btop = -1; + dinfo->di_bbot = -1; + bbot = au_dbbot(parent); + bindex = 0; + p = au_hdentry(dinfo, bindex); + for (; bindex <= bbot; bindex++, p++) + if (p->hd_dentry) { + dinfo->di_btop = bindex; + break; + } + + if (dinfo->di_btop >= 0) { + bindex = bbot; + p = au_hdentry(dinfo, bindex); + for (; bindex >= 0; bindex--, p--) + if (p->hd_dentry) { + dinfo->di_bbot = bindex; + err = 0; + break; + } + } + + return err; +} + +static void au_do_hide(struct dentry *dentry) +{ + struct inode *inode; + + if (d_really_is_positive(dentry)) { + inode = d_inode(dentry); + if (!d_is_dir(dentry)) { + if (inode->i_nlink && !d_unhashed(dentry)) + drop_nlink(inode); + } else { + clear_nlink(inode); + /* stop next lookup */ + inode->i_flags |= S_DEAD; + } + smp_mb(); /* necessary? */ + } + d_drop(dentry); +} + +static int au_hide_children(struct dentry *parent) +{ + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry *dentry; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, parent, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + /* in reverse order */ + for (i = dpages.ndpage - 1; i >= 0; i--) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = ndentry - 1; j >= 0; j--) { + dentry = dpage->dentries[j]; + if (dentry != parent) + au_do_hide(dentry); + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static void au_hide(struct dentry *dentry) +{ + int err; + + AuDbgDentry(dentry); + if (d_is_dir(dentry)) { + /* shrink_dcache_parent(dentry); */ + err = au_hide_children(dentry); + if (unlikely(err)) + AuIOErr("%pd, failed hiding children, ignored %d\n", + dentry, err); + } + au_do_hide(dentry); +} + +/* + * By adding a dirty branch, a cached dentry may be affected in various ways. + * + * a dirty branch is added + * - on the top of layers + * - in the middle of layers + * - to the bottom of layers + * + * on the added branch there exists + * - a whiteout + * - a diropq + * - a same named entry + * + exist + * * negative --> positive + * * positive --> positive + * - type is unchanged + * - type is changed + * + doesn't exist + * * negative --> negative + * * positive --> negative (rejected by au_br_del() for non-dir case) + * - none + */ +static int au_refresh_by_dinfo(struct dentry *dentry, struct au_dinfo *dinfo, + struct au_dinfo *tmp) +{ + int err; + aufs_bindex_t bindex, bbot; + struct { + struct dentry *dentry; + struct inode *inode; + mode_t mode; + } orig_h, tmp_h = { + .dentry = NULL + }; + struct au_hdentry *hd; + struct inode *inode, *h_inode; + struct dentry *h_dentry; + + err = 0; + AuDebugOn(dinfo->di_btop < 0); + orig_h.mode = 0; + orig_h.dentry = au_hdentry(dinfo, dinfo->di_btop)->hd_dentry; + orig_h.inode = NULL; + if (d_is_positive(orig_h.dentry)) { + orig_h.inode = d_inode(orig_h.dentry); + orig_h.mode = orig_h.inode->i_mode & S_IFMT; + } + if (tmp->di_btop >= 0) { + tmp_h.dentry = au_hdentry(tmp, tmp->di_btop)->hd_dentry; + if (d_is_positive(tmp_h.dentry)) { + tmp_h.inode = d_inode(tmp_h.dentry); + tmp_h.mode = tmp_h.inode->i_mode & S_IFMT; + } + } + + inode = NULL; + if (d_really_is_positive(dentry)) + inode = d_inode(dentry); + if (!orig_h.inode) { + AuDbg("negative originally\n"); + if (inode) { + au_hide(dentry); + goto out; + } + AuDebugOn(inode); + AuDebugOn(dinfo->di_btop != dinfo->di_bbot); + AuDebugOn(dinfo->di_bdiropq != -1); + + if (!tmp_h.inode) { + AuDbg("negative --> negative\n"); + /* should have only one negative lower */ + if (tmp->di_btop >= 0 + && tmp->di_btop < dinfo->di_btop) { + AuDebugOn(tmp->di_btop != tmp->di_bbot); + AuDebugOn(dinfo->di_btop != dinfo->di_bbot); + au_set_h_dptr(dentry, dinfo->di_btop, NULL); + au_di_cp(dinfo, tmp); + hd = au_hdentry(tmp, tmp->di_btop); + au_set_h_dptr(dentry, tmp->di_btop, + dget(hd->hd_dentry)); + } + au_dbg_verify_dinode(dentry); + } else { + AuDbg("negative --> positive\n"); + /* + * similar to the behaviour of creating with bypassing + * aufs. + * unhash it in order to force an error in the + * succeeding create operation. + * we should not set S_DEAD here. + */ + d_drop(dentry); + /* au_di_swap(tmp, dinfo); */ + au_dbg_verify_dinode(dentry); + } + } else { + AuDbg("positive originally\n"); + /* inode may be NULL */ + AuDebugOn(inode && (inode->i_mode & S_IFMT) != orig_h.mode); + if (!tmp_h.inode) { + AuDbg("positive --> negative\n"); + /* or bypassing aufs */ + au_hide(dentry); + if (tmp->di_bwh >= 0 && tmp->di_bwh <= dinfo->di_btop) + dinfo->di_bwh = tmp->di_bwh; + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } else if (orig_h.mode == tmp_h.mode) { + AuDbg("positive --> positive, same type\n"); + if (!S_ISDIR(orig_h.mode) + && dinfo->di_btop > tmp->di_btop) { + /* + * similar to the behaviour of removing and + * creating. + */ + au_hide(dentry); + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } else { + /* fill empty slots */ + if (dinfo->di_btop > tmp->di_btop) + dinfo->di_btop = tmp->di_btop; + if (dinfo->di_bbot < tmp->di_bbot) + dinfo->di_bbot = tmp->di_bbot; + dinfo->di_bwh = tmp->di_bwh; + dinfo->di_bdiropq = tmp->di_bdiropq; + bbot = dinfo->di_bbot; + bindex = tmp->di_btop; + hd = au_hdentry(tmp, bindex); + for (; bindex <= bbot; bindex++, hd++) { + if (au_h_dptr(dentry, bindex)) + continue; + h_dentry = hd->hd_dentry; + if (!h_dentry) + continue; + AuDebugOn(d_is_negative(h_dentry)); + h_inode = d_inode(h_dentry); + AuDebugOn(orig_h.mode + != (h_inode->i_mode + & S_IFMT)); + au_set_h_dptr(dentry, bindex, + dget(h_dentry)); + } + if (inode) + err = au_refresh_hinode(inode, dentry); + au_dbg_verify_dinode(dentry); + } + } else { + AuDbg("positive --> positive, different type\n"); + /* similar to the behaviour of removing and creating */ + au_hide(dentry); + if (inode) + err = au_refresh_hinode_self(inode); + au_dbg_verify_dinode(dentry); + } + } + +out: + return err; +} + +void au_refresh_dop(struct dentry *dentry, int force_reval) +{ + const struct dentry_operations *dop + = force_reval ? &aufs_dop : dentry->d_sb->s_d_op; + static const unsigned int mask + = DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE; + + BUILD_BUG_ON(sizeof(mask) != sizeof(dentry->d_flags)); + + if (dentry->d_op == dop) + return; + + AuDbg("%pd\n", dentry); + spin_lock(&dentry->d_lock); + if (dop == &aufs_dop) + dentry->d_flags |= mask; + else + dentry->d_flags &= ~mask; + dentry->d_op = dop; + spin_unlock(&dentry->d_lock); +} + +int au_refresh_dentry(struct dentry *dentry, struct dentry *parent) +{ + int err, ebrange, nbr; + unsigned int sigen; + struct au_dinfo *dinfo, *tmp; + struct super_block *sb; + struct inode *inode; + + DiMustWriteLock(dentry); + AuDebugOn(IS_ROOT(dentry)); + AuDebugOn(d_really_is_negative(parent)); + + sb = dentry->d_sb; + sigen = au_sigen(sb); + err = au_digen_test(parent, sigen); + if (unlikely(err)) + goto out; + + nbr = au_sbbot(sb) + 1; + dinfo = au_di(dentry); + err = au_di_realloc(dinfo, nbr, /*may_shrink*/0); + if (unlikely(err)) + goto out; + ebrange = au_dbrange_test(dentry); + if (!ebrange) + ebrange = au_do_refresh_hdentry(dentry, parent); + + if (d_unhashed(dentry) || ebrange /* || dinfo->di_tmpfile */) { + AuDebugOn(au_dbtop(dentry) < 0 && au_dbbot(dentry) >= 0); + if (d_really_is_positive(dentry)) { + inode = d_inode(dentry); + err = au_refresh_hinode_self(inode); + } + au_dbg_verify_dinode(dentry); + if (!err) + goto out_dgen; /* success */ + goto out; + } + + /* temporary dinfo */ + AuDbgDentry(dentry); + err = -ENOMEM; + tmp = au_di_alloc(sb, AuLsc_DI_TMP); + if (unlikely(!tmp)) + goto out; + au_di_swap(tmp, dinfo); + /* returns the number of positive dentries */ + /* + * if current working dir is removed, it returns an error. + * but the dentry is legal. + */ + err = au_lkup_dentry(dentry, /*btop*/0, AuLkup_ALLOW_NEG); + AuDbgDentry(dentry); + au_di_swap(tmp, dinfo); + if (err == -ENOENT) + err = 0; + if (err >= 0) { + /* compare/refresh by dinfo */ + AuDbgDentry(dentry); + err = au_refresh_by_dinfo(dentry, dinfo, tmp); + au_dbg_verify_dinode(dentry); + AuTraceErr(err); + } + au_di_realloc(dinfo, nbr, /*may_shrink*/1); /* harmless if err */ + au_rw_write_unlock(&tmp->di_rwsem); + au_di_free(tmp); + if (unlikely(err)) + goto out; + +out_dgen: + au_update_digen(dentry); +out: + if (unlikely(err && !(dentry->d_flags & DCACHE_NFSFS_RENAMED))) { + AuIOErr("failed refreshing %pd, %d\n", dentry, err); + AuDbgDentry(dentry); + } + AuTraceErr(err); + return err; +} + +static int au_do_h_d_reval(struct dentry *h_dentry, unsigned int flags, + struct dentry *dentry, aufs_bindex_t bindex) +{ + int err, valid; + + err = 0; + if (!(h_dentry->d_flags & DCACHE_OP_REVALIDATE)) + goto out; + + AuDbg("b%d\n", bindex); + /* + * gave up supporting LOOKUP_CREATE/OPEN for lower fs, + * due to whiteout and branch permission. + */ + flags &= ~(/*LOOKUP_PARENT |*/ LOOKUP_OPEN | LOOKUP_CREATE + | LOOKUP_FOLLOW | LOOKUP_EXCL); + /* it may return tri-state */ + valid = h_dentry->d_op->d_revalidate(h_dentry, flags); + + if (unlikely(valid < 0)) + err = valid; + else if (!valid) + err = -EINVAL; + +out: + AuTraceErr(err); + return err; +} + +/* todo: remove this */ +static int h_d_revalidate(struct dentry *dentry, struct inode *inode, + unsigned int flags, int do_udba, int dirren) +{ + int err; + umode_t mode, h_mode; + aufs_bindex_t bindex, btail, btop, ibs, ibe; + unsigned char plus, unhashed, is_root, h_plus, h_nfs, tmpfile; + struct inode *h_inode, *h_cached_inode; + struct dentry *h_dentry; + struct qstr *name, *h_name; + + err = 0; + plus = 0; + mode = 0; + ibs = -1; + ibe = -1; + unhashed = !!d_unhashed(dentry); + is_root = !!IS_ROOT(dentry); + name = &dentry->d_name; + tmpfile = au_di(dentry)->di_tmpfile; + + /* + * Theoretically, REVAL test should be unnecessary in case of + * {FS,I}NOTIFY. + * But {fs,i}notify doesn't fire some necessary events, + * IN_ATTRIB for atime/nlink/pageio + * Let's do REVAL test too. + */ + if (do_udba && inode) { + mode = (inode->i_mode & S_IFMT); + plus = (inode->i_nlink > 0); + ibs = au_ibtop(inode); + ibe = au_ibbot(inode); + } + + btop = au_dbtop(dentry); + btail = btop; + if (inode && S_ISDIR(inode->i_mode)) + btail = au_dbtaildir(dentry); + for (bindex = btop; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + + AuDbg("b%d, %pd\n", bindex, h_dentry); + h_nfs = !!au_test_nfs(h_dentry->d_sb); + spin_lock(&h_dentry->d_lock); + h_name = &h_dentry->d_name; + if (unlikely(do_udba + && !is_root + && ((!h_nfs + && (unhashed != !!d_unhashed(h_dentry) + || (!tmpfile && !dirren + && !au_qstreq(name, h_name)) + )) + || (h_nfs + && !(flags & LOOKUP_OPEN) + && (h_dentry->d_flags + & DCACHE_NFSFS_RENAMED))) + )) { + int h_unhashed; + + h_unhashed = d_unhashed(h_dentry); + spin_unlock(&h_dentry->d_lock); + AuDbg("unhash 0x%x 0x%x, %pd %pd\n", + unhashed, h_unhashed, dentry, h_dentry); + goto err; + } + spin_unlock(&h_dentry->d_lock); + + err = au_do_h_d_reval(h_dentry, flags, dentry, bindex); + if (unlikely(err)) + /* do not goto err, to keep the errno */ + break; + + /* todo: plink too? */ + if (!do_udba) + continue; + + /* UDBA tests */ + if (unlikely(!!inode != d_is_positive(h_dentry))) + goto err; + + h_inode = NULL; + if (d_is_positive(h_dentry)) + h_inode = d_inode(h_dentry); + h_plus = plus; + h_mode = mode; + h_cached_inode = h_inode; + if (h_inode) { + h_mode = (h_inode->i_mode & S_IFMT); + h_plus = (h_inode->i_nlink > 0); + } + if (inode && ibs <= bindex && bindex <= ibe) + h_cached_inode = au_h_iptr(inode, bindex); + + if (!h_nfs) { + if (unlikely(plus != h_plus && !tmpfile)) + goto err; + } else { + if (unlikely(!(h_dentry->d_flags & DCACHE_NFSFS_RENAMED) + && !is_root + && !IS_ROOT(h_dentry) + && unhashed != d_unhashed(h_dentry))) + goto err; + } + if (unlikely(mode != h_mode + || h_cached_inode != h_inode)) + goto err; + continue; + +err: + err = -EINVAL; + break; + } + + AuTraceErr(err); + return err; +} + +/* todo: consolidate with do_refresh() and au_reval_for_attr() */ +static int simple_reval_dpath(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct dentry *parent; + + if (!au_digen_test(dentry, sigen)) + return 0; + + parent = dget_parent(dentry); + di_read_lock_parent(parent, AuLock_IR); + AuDebugOn(au_digen_test(parent, sigen)); + au_dbg_verify_gen(parent, sigen); + err = au_refresh_dentry(dentry, parent); + di_read_unlock(parent, AuLock_IR); + dput(parent); + AuTraceErr(err); + return err; +} + +int au_reval_dpath(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct dentry *d, *parent; + + if (!au_ftest_si(au_sbi(dentry->d_sb), FAILED_REFRESH_DIR)) + return simple_reval_dpath(dentry, sigen); + + /* slow loop, keep it simple and stupid */ + /* cf: au_cpup_dirs() */ + err = 0; + parent = NULL; + while (au_digen_test(dentry, sigen)) { + d = dentry; + while (1) { + dput(parent); + parent = dget_parent(d); + if (!au_digen_test(parent, sigen)) + break; + d = parent; + } + + if (d != dentry) + di_write_lock_child2(d); + + /* someone might update our dentry while we were sleeping */ + if (au_digen_test(d, sigen)) { + /* + * todo: consolidate with simple_reval_dpath(), + * do_refresh() and au_reval_for_attr(). + */ + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(d, parent); + di_read_unlock(parent, AuLock_IR); + } + + if (d != dentry) + di_write_unlock(d); + dput(parent); + if (unlikely(err)) + break; + } + + return err; +} + +/* + * if valid returns 1, otherwise 0. + */ +static int aufs_d_revalidate(struct dentry *dentry, unsigned int flags) +{ + int valid, err; + unsigned int sigen; + unsigned char do_udba, dirren; + struct super_block *sb; + struct inode *inode; + + /* todo: support rcu-walk? */ + if (flags & LOOKUP_RCU) + return -ECHILD; + + valid = 0; + if (unlikely(!au_di(dentry))) + goto out; + + valid = 1; + sb = dentry->d_sb; + /* + * todo: very ugly + * i_mutex of parent dir may be held, + * but we should not return 'invalid' due to busy. + */ + err = aufs_read_lock(dentry, AuLock_FLUSH | AuLock_DW | AuLock_NOPLM); + if (unlikely(err)) { + valid = err; + AuTraceErr(err); + goto out; + } + inode = NULL; + if (d_really_is_positive(dentry)) + inode = d_inode(dentry); + if (unlikely(inode && au_is_bad_inode(inode))) { + err = -EINVAL; + AuTraceErr(err); + goto out_dgrade; + } + if (unlikely(au_dbrange_test(dentry))) { + err = -EINVAL; + AuTraceErr(err); + goto out_dgrade; + } + + sigen = au_sigen(sb); + if (au_digen_test(dentry, sigen)) { + AuDebugOn(IS_ROOT(dentry)); + err = au_reval_dpath(dentry, sigen); + if (unlikely(err)) { + AuTraceErr(err); + goto out_dgrade; + } + } + di_downgrade_lock(dentry, AuLock_IR); + + err = -EINVAL; + if (!(flags & (LOOKUP_OPEN | LOOKUP_EMPTY)) + && inode + && !(inode->i_state && I_LINKABLE) + && (IS_DEADDIR(inode) || !inode->i_nlink)) { + AuTraceErr(err); + goto out_inval; + } + + do_udba = !au_opt_test(au_mntflags(sb), UDBA_NONE); + if (do_udba && inode) { + aufs_bindex_t btop = au_ibtop(inode); + struct inode *h_inode; + + if (btop >= 0) { + h_inode = au_h_iptr(inode, btop); + if (h_inode && au_test_higen(inode, h_inode)) { + AuTraceErr(err); + goto out_inval; + } + } + } + + dirren = !!au_opt_test(au_mntflags(sb), DIRREN); + err = h_d_revalidate(dentry, inode, flags, do_udba, dirren); + if (unlikely(!err && do_udba && au_dbtop(dentry) < 0)) { + err = -EIO; + AuDbg("both of real entry and whiteout found, %p, err %d\n", + dentry, err); + } + goto out_inval; + +out_dgrade: + di_downgrade_lock(dentry, AuLock_IR); +out_inval: + aufs_read_unlock(dentry, AuLock_IR); + AuTraceErr(err); + valid = !err; +out: + if (!valid) { + AuDbg("%pd invalid, %d\n", dentry, valid); + d_drop(dentry); + } + return valid; +} + +static void aufs_d_release(struct dentry *dentry) +{ + if (au_di(dentry)) { + au_di_fin(dentry); + au_hn_di_reinit(dentry); + } +} + +const struct dentry_operations aufs_dop = { + .d_revalidate = aufs_d_revalidate, + .d_weak_revalidate = aufs_d_revalidate, + .d_release = aufs_d_release +}; + +/* aufs_dop without d_revalidate */ +const struct dentry_operations aufs_dop_noreval = { + .d_release = aufs_d_release +}; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/dentry.h +++ linux-azure-5.13-5.13.0/fs/aufs/dentry.h @@ -0,0 +1,269 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * lookup and dentry operations + */ + +#ifndef __AUFS_DENTRY_H__ +#define __AUFS_DENTRY_H__ + +#ifdef __KERNEL__ + +#include +#include "dirren.h" +#include "rwsem.h" + +struct au_hdentry { + struct dentry *hd_dentry; + aufs_bindex_t hd_id; +}; + +struct au_dinfo { + atomic_t di_generation; + + struct au_rwsem di_rwsem; + aufs_bindex_t di_btop, di_bbot, di_bwh, di_bdiropq; + unsigned char di_tmpfile; /* to allow the different name */ + struct au_hdentry *di_hdentry; + struct rcu_head rcu; +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* flags for au_lkup_dentry() */ +#define AuLkup_ALLOW_NEG 1 +#define AuLkup_IGNORE_PERM (1 << 1) +#define AuLkup_DIRREN (1 << 2) +#define au_ftest_lkup(flags, name) ((flags) & AuLkup_##name) +#define au_fset_lkup(flags, name) \ + do { (flags) |= AuLkup_##name; } while (0) +#define au_fclr_lkup(flags, name) \ + do { (flags) &= ~AuLkup_##name; } while (0) + +#ifndef CONFIG_AUFS_DIRREN +#undef AuLkup_DIRREN +#define AuLkup_DIRREN 0 +#endif + +struct au_do_lookup_args { + unsigned int flags; + mode_t type; + struct qstr whname, *name; + struct au_dr_lookup dirren; +}; + +/* ---------------------------------------------------------------------- */ + +/* dentry.c */ +extern const struct dentry_operations aufs_dop, aufs_dop_noreval; +struct au_branch; +struct dentry *au_sio_lkup_one(struct user_namespace *userns, struct qstr *name, + struct dentry *parent); +int au_h_verify(struct dentry *h_dentry, unsigned int udba, struct inode *h_dir, + struct dentry *h_parent, struct au_branch *br); + +int au_lkup_dentry(struct dentry *dentry, aufs_bindex_t btop, + unsigned int flags); +int au_lkup_neg(struct dentry *dentry, aufs_bindex_t bindex, int wh); +int au_refresh_dentry(struct dentry *dentry, struct dentry *parent); +int au_reval_dpath(struct dentry *dentry, unsigned int sigen); +void au_refresh_dop(struct dentry *dentry, int force_reval); + +/* dinfo.c */ +void au_di_init_once(void *_di); +struct au_dinfo *au_di_alloc(struct super_block *sb, unsigned int lsc); +void au_di_free(struct au_dinfo *dinfo); +void au_di_swap(struct au_dinfo *a, struct au_dinfo *b); +void au_di_cp(struct au_dinfo *dst, struct au_dinfo *src); +int au_di_init(struct dentry *dentry); +void au_di_fin(struct dentry *dentry); +int au_di_realloc(struct au_dinfo *dinfo, int nbr, int may_shrink); + +void di_read_lock(struct dentry *d, int flags, unsigned int lsc); +void di_read_unlock(struct dentry *d, int flags); +void di_downgrade_lock(struct dentry *d, int flags); +void di_write_lock(struct dentry *d, unsigned int lsc); +void di_write_unlock(struct dentry *d); +void di_write_lock2_child(struct dentry *d1, struct dentry *d2, int isdir); +void di_write_lock2_parent(struct dentry *d1, struct dentry *d2, int isdir); +void di_write_unlock2(struct dentry *d1, struct dentry *d2); + +struct dentry *au_h_dptr(struct dentry *dentry, aufs_bindex_t bindex); +struct dentry *au_h_d_alias(struct dentry *dentry, aufs_bindex_t bindex); +aufs_bindex_t au_dbtail(struct dentry *dentry); +aufs_bindex_t au_dbtaildir(struct dentry *dentry); + +void au_set_h_dptr(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_dentry); +int au_digen_test(struct dentry *dentry, unsigned int sigen); +int au_dbrange_test(struct dentry *dentry); +void au_update_digen(struct dentry *dentry); +void au_update_dbrange(struct dentry *dentry, int do_put_zero); +void au_update_dbtop(struct dentry *dentry); +void au_update_dbbot(struct dentry *dentry); +int au_find_dbindex(struct dentry *dentry, struct dentry *h_dentry); + +/* ---------------------------------------------------------------------- */ + +static inline struct au_dinfo *au_di(struct dentry *dentry) +{ + return dentry->d_fsdata; +} + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for dinfo */ +enum { + AuLsc_DI_CHILD, /* child first */ + AuLsc_DI_CHILD2, /* rename(2), link(2), and cpup at hnotify */ + AuLsc_DI_CHILD3, /* copyup dirs */ + AuLsc_DI_PARENT, + AuLsc_DI_PARENT2, + AuLsc_DI_PARENT3, + AuLsc_DI_TMP /* temp for replacing dinfo */ +}; + +/* + * di_read_lock_child, di_write_lock_child, + * di_read_lock_child2, di_write_lock_child2, + * di_read_lock_child3, di_write_lock_child3, + * di_read_lock_parent, di_write_lock_parent, + * di_read_lock_parent2, di_write_lock_parent2, + * di_read_lock_parent3, di_write_lock_parent3, + */ +#define AuReadLockFunc(name, lsc) \ +static inline void di_read_lock_##name(struct dentry *d, int flags) \ +{ di_read_lock(d, flags, AuLsc_DI_##lsc); } + +#define AuWriteLockFunc(name, lsc) \ +static inline void di_write_lock_##name(struct dentry *d) \ +{ di_write_lock(d, AuLsc_DI_##lsc); } + +#define AuRWLockFuncs(name, lsc) \ + AuReadLockFunc(name, lsc) \ + AuWriteLockFunc(name, lsc) + +AuRWLockFuncs(child, CHILD); +AuRWLockFuncs(child2, CHILD2); +AuRWLockFuncs(child3, CHILD3); +AuRWLockFuncs(parent, PARENT); +AuRWLockFuncs(parent2, PARENT2); +AuRWLockFuncs(parent3, PARENT3); + +#undef AuReadLockFunc +#undef AuWriteLockFunc +#undef AuRWLockFuncs + +#define DiMustNoWaiters(d) AuRwMustNoWaiters(&au_di(d)->di_rwsem) +#define DiMustAnyLock(d) AuRwMustAnyLock(&au_di(d)->di_rwsem) +#define DiMustWriteLock(d) AuRwMustWriteLock(&au_di(d)->di_rwsem) + +/* ---------------------------------------------------------------------- */ + +/* todo: memory barrier? */ +static inline unsigned int au_digen(struct dentry *d) +{ + return atomic_read(&au_di(d)->di_generation); +} + +static inline void au_h_dentry_init(struct au_hdentry *hdentry) +{ + hdentry->hd_dentry = NULL; +} + +static inline struct au_hdentry *au_hdentry(struct au_dinfo *di, + aufs_bindex_t bindex) +{ + return di->di_hdentry + bindex; +} + +static inline void au_hdput(struct au_hdentry *hd) +{ + if (hd) + dput(hd->hd_dentry); +} + +static inline aufs_bindex_t au_dbtop(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_btop; +} + +static inline aufs_bindex_t au_dbbot(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bbot; +} + +static inline aufs_bindex_t au_dbwh(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bwh; +} + +static inline aufs_bindex_t au_dbdiropq(struct dentry *dentry) +{ + DiMustAnyLock(dentry); + return au_di(dentry)->di_bdiropq; +} + +/* todo: hard/soft set? */ +static inline void au_set_dbtop(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_btop = bindex; +} + +static inline void au_set_dbbot(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bbot = bindex; +} + +static inline void au_set_dbwh(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + /* dbwh can be outside of btop - bbot range */ + au_di(dentry)->di_bwh = bindex; +} + +static inline void au_set_dbdiropq(struct dentry *dentry, aufs_bindex_t bindex) +{ + DiMustWriteLock(dentry); + au_di(dentry)->di_bdiropq = bindex; +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_HNOTIFY +static inline void au_digen_dec(struct dentry *d) +{ + atomic_dec(&au_di(d)->di_generation); +} + +static inline void au_hn_di_reinit(struct dentry *dentry) +{ + dentry->d_fsdata = NULL; +} +#else +AuStubVoid(au_hn_di_reinit, struct dentry *dentry __maybe_unused) +#endif /* CONFIG_AUFS_HNOTIFY */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DENTRY_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/dinfo.c +++ linux-azure-5.13-5.13.0/fs/aufs/dinfo.c @@ -0,0 +1,554 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * dentry private data + */ + +#include "aufs.h" + +void au_di_init_once(void *_dinfo) +{ + struct au_dinfo *dinfo = _dinfo; + + au_rw_init(&dinfo->di_rwsem); +} + +struct au_dinfo *au_di_alloc(struct super_block *sb, unsigned int lsc) +{ + struct au_dinfo *dinfo; + int nbr, i; + + dinfo = au_cache_alloc_dinfo(); + if (unlikely(!dinfo)) + goto out; + + nbr = au_sbbot(sb) + 1; + if (nbr <= 0) + nbr = 1; + dinfo->di_hdentry = kcalloc(nbr, sizeof(*dinfo->di_hdentry), GFP_NOFS); + if (dinfo->di_hdentry) { + au_rw_write_lock_nested(&dinfo->di_rwsem, lsc); + dinfo->di_btop = -1; + dinfo->di_bbot = -1; + dinfo->di_bwh = -1; + dinfo->di_bdiropq = -1; + dinfo->di_tmpfile = 0; + for (i = 0; i < nbr; i++) + dinfo->di_hdentry[i].hd_id = -1; + goto out; + } + + au_cache_free_dinfo(dinfo); + dinfo = NULL; + +out: + return dinfo; +} + +void au_di_free(struct au_dinfo *dinfo) +{ + struct au_hdentry *p; + aufs_bindex_t bbot, bindex; + + /* dentry may not be revalidated */ + bindex = dinfo->di_btop; + if (bindex >= 0) { + bbot = dinfo->di_bbot; + p = au_hdentry(dinfo, bindex); + while (bindex++ <= bbot) + au_hdput(p++); + } + au_kfree_try_rcu(dinfo->di_hdentry); + au_cache_free_dinfo(dinfo); +} + +void au_di_swap(struct au_dinfo *a, struct au_dinfo *b) +{ + struct au_hdentry *p; + aufs_bindex_t bi; + + AuRwMustWriteLock(&a->di_rwsem); + AuRwMustWriteLock(&b->di_rwsem); + +#define DiSwap(v, name) \ + do { \ + v = a->di_##name; \ + a->di_##name = b->di_##name; \ + b->di_##name = v; \ + } while (0) + + DiSwap(p, hdentry); + DiSwap(bi, btop); + DiSwap(bi, bbot); + DiSwap(bi, bwh); + DiSwap(bi, bdiropq); + /* smp_mb(); */ + +#undef DiSwap +} + +void au_di_cp(struct au_dinfo *dst, struct au_dinfo *src) +{ + AuRwMustWriteLock(&dst->di_rwsem); + AuRwMustWriteLock(&src->di_rwsem); + + dst->di_btop = src->di_btop; + dst->di_bbot = src->di_bbot; + dst->di_bwh = src->di_bwh; + dst->di_bdiropq = src->di_bdiropq; + /* smp_mb(); */ +} + +int au_di_init(struct dentry *dentry) +{ + int err; + struct super_block *sb; + struct au_dinfo *dinfo; + + err = 0; + sb = dentry->d_sb; + dinfo = au_di_alloc(sb, AuLsc_DI_CHILD); + if (dinfo) { + atomic_set(&dinfo->di_generation, au_sigen(sb)); + /* smp_mb(); */ /* atomic_set */ + dentry->d_fsdata = dinfo; + } else + err = -ENOMEM; + + return err; +} + +void au_di_fin(struct dentry *dentry) +{ + struct au_dinfo *dinfo; + + dinfo = au_di(dentry); + AuRwDestroy(&dinfo->di_rwsem); + au_di_free(dinfo); +} + +int au_di_realloc(struct au_dinfo *dinfo, int nbr, int may_shrink) +{ + int err, sz; + struct au_hdentry *hdp; + + AuRwMustWriteLock(&dinfo->di_rwsem); + + err = -ENOMEM; + sz = sizeof(*hdp) * (dinfo->di_bbot + 1); + if (!sz) + sz = sizeof(*hdp); + hdp = au_kzrealloc(dinfo->di_hdentry, sz, sizeof(*hdp) * nbr, GFP_NOFS, + may_shrink); + if (hdp) { + dinfo->di_hdentry = hdp; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void do_ii_write_lock(struct inode *inode, unsigned int lsc) +{ + switch (lsc) { + case AuLsc_DI_CHILD: + ii_write_lock_child(inode); + break; + case AuLsc_DI_CHILD2: + ii_write_lock_child2(inode); + break; + case AuLsc_DI_CHILD3: + ii_write_lock_child3(inode); + break; + case AuLsc_DI_PARENT: + ii_write_lock_parent(inode); + break; + case AuLsc_DI_PARENT2: + ii_write_lock_parent2(inode); + break; + case AuLsc_DI_PARENT3: + ii_write_lock_parent3(inode); + break; + default: + BUG(); + } +} + +static void do_ii_read_lock(struct inode *inode, unsigned int lsc) +{ + switch (lsc) { + case AuLsc_DI_CHILD: + ii_read_lock_child(inode); + break; + case AuLsc_DI_CHILD2: + ii_read_lock_child2(inode); + break; + case AuLsc_DI_CHILD3: + ii_read_lock_child3(inode); + break; + case AuLsc_DI_PARENT: + ii_read_lock_parent(inode); + break; + case AuLsc_DI_PARENT2: + ii_read_lock_parent2(inode); + break; + case AuLsc_DI_PARENT3: + ii_read_lock_parent3(inode); + break; + default: + BUG(); + } +} + +void di_read_lock(struct dentry *d, int flags, unsigned int lsc) +{ + struct inode *inode; + + au_rw_read_lock_nested(&au_di(d)->di_rwsem, lsc); + if (d_really_is_positive(d)) { + inode = d_inode(d); + if (au_ftest_lock(flags, IW)) + do_ii_write_lock(inode, lsc); + else if (au_ftest_lock(flags, IR)) + do_ii_read_lock(inode, lsc); + } +} + +void di_read_unlock(struct dentry *d, int flags) +{ + struct inode *inode; + + if (d_really_is_positive(d)) { + inode = d_inode(d); + if (au_ftest_lock(flags, IW)) { + au_dbg_verify_dinode(d); + ii_write_unlock(inode); + } else if (au_ftest_lock(flags, IR)) { + au_dbg_verify_dinode(d); + ii_read_unlock(inode); + } + } + au_rw_read_unlock(&au_di(d)->di_rwsem); +} + +void di_downgrade_lock(struct dentry *d, int flags) +{ + if (d_really_is_positive(d) && au_ftest_lock(flags, IR)) + ii_downgrade_lock(d_inode(d)); + au_rw_dgrade_lock(&au_di(d)->di_rwsem); +} + +void di_write_lock(struct dentry *d, unsigned int lsc) +{ + au_rw_write_lock_nested(&au_di(d)->di_rwsem, lsc); + if (d_really_is_positive(d)) + do_ii_write_lock(d_inode(d), lsc); +} + +void di_write_unlock(struct dentry *d) +{ + au_dbg_verify_dinode(d); + if (d_really_is_positive(d)) + ii_write_unlock(d_inode(d)); + au_rw_write_unlock(&au_di(d)->di_rwsem); +} + +void di_write_lock2_child(struct dentry *d1, struct dentry *d2, int isdir) +{ + AuDebugOn(d1 == d2 + || d_inode(d1) == d_inode(d2) + || d1->d_sb != d2->d_sb); + + if ((isdir && au_test_subdir(d1, d2)) + || d1 < d2) { + di_write_lock_child(d1); + di_write_lock_child2(d2); + } else { + di_write_lock_child(d2); + di_write_lock_child2(d1); + } +} + +void di_write_lock2_parent(struct dentry *d1, struct dentry *d2, int isdir) +{ + AuDebugOn(d1 == d2 + || d_inode(d1) == d_inode(d2) + || d1->d_sb != d2->d_sb); + + if ((isdir && au_test_subdir(d1, d2)) + || d1 < d2) { + di_write_lock_parent(d1); + di_write_lock_parent2(d2); + } else { + di_write_lock_parent(d2); + di_write_lock_parent2(d1); + } +} + +void di_write_unlock2(struct dentry *d1, struct dentry *d2) +{ + di_write_unlock(d1); + if (d_inode(d1) == d_inode(d2)) + au_rw_write_unlock(&au_di(d2)->di_rwsem); + else + di_write_unlock(d2); +} + +/* ---------------------------------------------------------------------- */ + +struct dentry *au_h_dptr(struct dentry *dentry, aufs_bindex_t bindex) +{ + struct dentry *d; + + DiMustAnyLock(dentry); + + if (au_dbtop(dentry) < 0 || bindex < au_dbtop(dentry)) + return NULL; + AuDebugOn(bindex < 0); + d = au_hdentry(au_di(dentry), bindex)->hd_dentry; + AuDebugOn(d && au_dcount(d) <= 0); + return d; +} + +/* + * extended version of au_h_dptr(). + * returns a hashed and positive (or linkable) h_dentry in bindex, NULL, or + * error. + */ +struct dentry *au_h_d_alias(struct dentry *dentry, aufs_bindex_t bindex) +{ + struct dentry *h_dentry; + struct inode *inode, *h_inode; + + AuDebugOn(d_really_is_negative(dentry)); + + h_dentry = NULL; + if (au_dbtop(dentry) <= bindex + && bindex <= au_dbbot(dentry)) + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && !au_d_linkable(h_dentry)) { + dget(h_dentry); + goto out; /* success */ + } + + inode = d_inode(dentry); + AuDebugOn(bindex < au_ibtop(inode)); + AuDebugOn(au_ibbot(inode) < bindex); + h_inode = au_h_iptr(inode, bindex); + h_dentry = d_find_alias(h_inode); + if (h_dentry) { + if (!IS_ERR(h_dentry)) { + if (!au_d_linkable(h_dentry)) + goto out; /* success */ + dput(h_dentry); + } else + goto out; + } + + if (au_opt_test(au_mntflags(dentry->d_sb), PLINK)) { + h_dentry = au_plink_lkup(inode, bindex); + AuDebugOn(!h_dentry); + if (!IS_ERR(h_dentry)) { + if (!au_d_hashed_positive(h_dentry)) + goto out; /* success */ + dput(h_dentry); + h_dentry = NULL; + } + } + +out: + AuDbgDentry(h_dentry); + return h_dentry; +} + +aufs_bindex_t au_dbtail(struct dentry *dentry) +{ + aufs_bindex_t bbot, bwh; + + bbot = au_dbbot(dentry); + if (0 <= bbot) { + bwh = au_dbwh(dentry); + if (!bwh) + return bwh; + if (0 < bwh && bwh < bbot) + return bwh - 1; + } + return bbot; +} + +aufs_bindex_t au_dbtaildir(struct dentry *dentry) +{ + aufs_bindex_t bbot, bopq; + + bbot = au_dbtail(dentry); + if (0 <= bbot) { + bopq = au_dbdiropq(dentry); + if (0 <= bopq && bopq < bbot) + bbot = bopq; + } + return bbot; +} + +/* ---------------------------------------------------------------------- */ + +void au_set_h_dptr(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_dentry) +{ + struct au_dinfo *dinfo; + struct au_hdentry *hd; + struct au_branch *br; + + DiMustWriteLock(dentry); + + dinfo = au_di(dentry); + hd = au_hdentry(dinfo, bindex); + au_hdput(hd); + hd->hd_dentry = h_dentry; + if (h_dentry) { + br = au_sbr(dentry->d_sb, bindex); + hd->hd_id = br->br_id; + } +} + +int au_dbrange_test(struct dentry *dentry) +{ + int err; + aufs_bindex_t btop, bbot; + + err = 0; + btop = au_dbtop(dentry); + bbot = au_dbbot(dentry); + if (btop >= 0) + AuDebugOn(bbot < 0 && btop > bbot); + else { + err = -EIO; + AuDebugOn(bbot >= 0); + } + + return err; +} + +int au_digen_test(struct dentry *dentry, unsigned int sigen) +{ + int err; + + err = 0; + if (unlikely(au_digen(dentry) != sigen + || au_iigen_test(d_inode(dentry), sigen))) + err = -EIO; + + return err; +} + +void au_update_digen(struct dentry *dentry) +{ + atomic_set(&au_di(dentry)->di_generation, au_sigen(dentry->d_sb)); + /* smp_mb(); */ /* atomic_set */ +} + +void au_update_dbrange(struct dentry *dentry, int do_put_zero) +{ + struct au_dinfo *dinfo; + struct dentry *h_d; + struct au_hdentry *hdp; + aufs_bindex_t bindex, bbot; + + DiMustWriteLock(dentry); + + dinfo = au_di(dentry); + if (!dinfo || dinfo->di_btop < 0) + return; + + if (do_put_zero) { + bbot = dinfo->di_bbot; + bindex = dinfo->di_btop; + hdp = au_hdentry(dinfo, bindex); + for (; bindex <= bbot; bindex++, hdp++) { + h_d = hdp->hd_dentry; + if (h_d && d_is_negative(h_d)) + au_set_h_dptr(dentry, bindex, NULL); + } + } + + dinfo->di_btop = 0; + hdp = au_hdentry(dinfo, dinfo->di_btop); + for (; dinfo->di_btop <= dinfo->di_bbot; dinfo->di_btop++, hdp++) + if (hdp->hd_dentry) + break; + if (dinfo->di_btop > dinfo->di_bbot) { + dinfo->di_btop = -1; + dinfo->di_bbot = -1; + return; + } + + hdp = au_hdentry(dinfo, dinfo->di_bbot); + for (; dinfo->di_bbot >= 0; dinfo->di_bbot--, hdp--) + if (hdp->hd_dentry) + break; + AuDebugOn(dinfo->di_btop > dinfo->di_bbot || dinfo->di_bbot < 0); +} + +void au_update_dbtop(struct dentry *dentry) +{ + aufs_bindex_t bindex, bbot; + struct dentry *h_dentry; + + bbot = au_dbbot(dentry); + for (bindex = au_dbtop(dentry); bindex <= bbot; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + if (d_is_positive(h_dentry)) { + au_set_dbtop(dentry, bindex); + return; + } + au_set_h_dptr(dentry, bindex, NULL); + } +} + +void au_update_dbbot(struct dentry *dentry) +{ + aufs_bindex_t bindex, btop; + struct dentry *h_dentry; + + btop = au_dbtop(dentry); + for (bindex = au_dbbot(dentry); bindex >= btop; bindex--) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + if (d_is_positive(h_dentry)) { + au_set_dbbot(dentry, bindex); + return; + } + au_set_h_dptr(dentry, bindex, NULL); + } +} + +int au_find_dbindex(struct dentry *dentry, struct dentry *h_dentry) +{ + aufs_bindex_t bindex, bbot; + + bbot = au_dbbot(dentry); + for (bindex = au_dbtop(dentry); bindex <= bbot; bindex++) + if (au_h_dptr(dentry, bindex) == h_dentry) + return bindex; + return -1; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/dir.c +++ linux-azure-5.13-5.13.0/fs/aufs/dir.c @@ -0,0 +1,765 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * directory operations + */ + +#include +#include +#include "aufs.h" + +void au_add_nlink(struct inode *dir, struct inode *h_dir) +{ + unsigned int nlink; + + AuDebugOn(!S_ISDIR(dir->i_mode) || !S_ISDIR(h_dir->i_mode)); + + nlink = dir->i_nlink; + nlink += h_dir->i_nlink - 2; + if (h_dir->i_nlink < 2) + nlink += 2; + smp_mb(); /* for i_nlink */ + /* 0 can happen in revaliding */ + set_nlink(dir, nlink); +} + +void au_sub_nlink(struct inode *dir, struct inode *h_dir) +{ + unsigned int nlink; + + AuDebugOn(!S_ISDIR(dir->i_mode) || !S_ISDIR(h_dir->i_mode)); + + nlink = dir->i_nlink; + nlink -= h_dir->i_nlink - 2; + if (h_dir->i_nlink < 2) + nlink -= 2; + smp_mb(); /* for i_nlink */ + /* nlink == 0 means the branch-fs is broken */ + set_nlink(dir, nlink); +} + +loff_t au_dir_size(struct file *file, struct dentry *dentry) +{ + loff_t sz; + aufs_bindex_t bindex, bbot; + struct file *h_file; + struct dentry *h_dentry; + + sz = 0; + if (file) { + AuDebugOn(!d_is_dir(file->f_path.dentry)); + + bbot = au_fbbot_dir(file); + for (bindex = au_fbtop(file); + bindex <= bbot && sz < KMALLOC_MAX_SIZE; + bindex++) { + h_file = au_hf_dir(file, bindex); + if (h_file && file_inode(h_file)) + sz += vfsub_f_size_read(h_file); + } + } else { + AuDebugOn(!dentry); + AuDebugOn(!d_is_dir(dentry)); + + bbot = au_dbtaildir(dentry); + for (bindex = au_dbtop(dentry); + bindex <= bbot && sz < KMALLOC_MAX_SIZE; + bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && d_is_positive(h_dentry)) + sz += i_size_read(d_inode(h_dentry)); + } + } + if (sz < KMALLOC_MAX_SIZE) + sz = roundup_pow_of_two(sz); + if (sz > KMALLOC_MAX_SIZE) + sz = KMALLOC_MAX_SIZE; + else if (sz < NAME_MAX) { + BUILD_BUG_ON(AUFS_RDBLK_DEF < NAME_MAX); + sz = AUFS_RDBLK_DEF; + } + return sz; +} + +struct au_dir_ts_arg { + struct dentry *dentry; + aufs_bindex_t brid; +}; + +static void au_do_dir_ts(void *arg) +{ + struct au_dir_ts_arg *a = arg; + struct au_dtime dt; + struct path h_path; + struct inode *dir, *h_dir; + struct super_block *sb; + struct au_branch *br; + struct au_hinode *hdir; + int err; + aufs_bindex_t btop, bindex; + + sb = a->dentry->d_sb; + if (d_really_is_negative(a->dentry)) + goto out; + /* no dir->i_mutex lock */ + aufs_read_lock(a->dentry, AuLock_DW); /* noflush */ + + dir = d_inode(a->dentry); + btop = au_ibtop(dir); + bindex = au_br_index(sb, a->brid); + if (bindex < btop) + goto out_unlock; + + br = au_sbr(sb, bindex); + h_path.dentry = au_h_dptr(a->dentry, bindex); + if (!h_path.dentry) + goto out_unlock; + h_path.mnt = au_br_mnt(br); + au_dtime_store(&dt, a->dentry, &h_path); + + br = au_sbr(sb, btop); + if (!au_br_writable(br->br_perm)) + goto out_unlock; + h_path.dentry = au_h_dptr(a->dentry, btop); + h_path.mnt = au_br_mnt(br); + err = vfsub_mnt_want_write(h_path.mnt); + if (err) + goto out_unlock; + hdir = au_hi(dir, btop); + au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); + h_dir = au_h_iptr(dir, btop); + if (h_dir->i_nlink + && timespec64_compare(&h_dir->i_mtime, &dt.dt_mtime) < 0) { + dt.dt_h_path = h_path; + au_dtime_revert(&dt); + } + au_hn_inode_unlock(hdir); + vfsub_mnt_drop_write(h_path.mnt); + au_cpup_attr_timesizes(dir); + +out_unlock: + aufs_read_unlock(a->dentry, AuLock_DW); +out: + dput(a->dentry); + au_nwt_done(&au_sbi(sb)->si_nowait); + au_kfree_try_rcu(arg); +} + +void au_dir_ts(struct inode *dir, aufs_bindex_t bindex) +{ + int perm, wkq_err; + aufs_bindex_t btop; + struct au_dir_ts_arg *arg; + struct dentry *dentry; + struct super_block *sb; + + IMustLock(dir); + + dentry = d_find_any_alias(dir); + AuDebugOn(!dentry); + sb = dentry->d_sb; + btop = au_ibtop(dir); + if (btop == bindex) { + au_cpup_attr_timesizes(dir); + goto out; + } + + perm = au_sbr_perm(sb, btop); + if (!au_br_writable(perm)) + goto out; + + arg = kmalloc(sizeof(*arg), GFP_NOFS); + if (!arg) + goto out; + + arg->dentry = dget(dentry); /* will be dput-ted by au_do_dir_ts() */ + arg->brid = au_sbr_id(sb, bindex); + wkq_err = au_wkq_nowait(au_do_dir_ts, arg, sb, /*flags*/0); + if (unlikely(wkq_err)) { + pr_err("wkq %d\n", wkq_err); + dput(dentry); + au_kfree_try_rcu(arg); + } + +out: + dput(dentry); +} + +/* ---------------------------------------------------------------------- */ + +static int reopen_dir(struct file *file) +{ + int err; + unsigned int flags; + aufs_bindex_t bindex, btail, btop; + struct dentry *dentry, *h_dentry; + struct file *h_file; + + /* open all lower dirs */ + dentry = file->f_path.dentry; + btop = au_dbtop(dentry); + for (bindex = au_fbtop(file); bindex < btop; bindex++) + au_set_h_fptr(file, bindex, NULL); + au_set_fbtop(file, btop); + + btail = au_dbtaildir(dentry); + for (bindex = au_fbbot_dir(file); btail < bindex; bindex--) + au_set_h_fptr(file, bindex, NULL); + au_set_fbbot_dir(file, btail); + + flags = vfsub_file_flags(file); + for (bindex = btop; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + h_file = au_hf_dir(file, bindex); + if (h_file) + continue; + + h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; /* close all? */ + au_set_h_fptr(file, bindex, h_file); + } + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + err = 0; + +out: + return err; +} + +static int do_open_dir(struct file *file, int flags, struct file *h_file) +{ + int err; + aufs_bindex_t bindex, btail; + struct dentry *dentry, *h_dentry; + struct vfsmount *mnt; + + FiMustWriteLock(file); + AuDebugOn(h_file); + + err = 0; + mnt = file->f_path.mnt; + dentry = file->f_path.dentry; + file->f_version = inode_query_iversion(d_inode(dentry)); + bindex = au_dbtop(dentry); + au_set_fbtop(file, bindex); + btail = au_dbtaildir(dentry); + au_set_fbbot_dir(file, btail); + for (; !err && bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (!h_dentry) + continue; + + err = vfsub_test_mntns(mnt, h_dentry->d_sb); + if (unlikely(err)) + break; + h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + break; + } + au_set_h_fptr(file, bindex, h_file); + } + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + if (!err) + return 0; /* success */ + + /* close all */ + for (bindex = au_fbtop(file); bindex <= btail; bindex++) + au_set_h_fptr(file, bindex, NULL); + au_set_fbtop(file, -1); + au_set_fbbot_dir(file, -1); + + return err; +} + +static int aufs_open_dir(struct inode *inode __maybe_unused, + struct file *file) +{ + int err; + struct super_block *sb; + struct au_fidir *fidir; + + err = -ENOMEM; + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + fidir = au_fidir_alloc(sb); + if (fidir) { + struct au_do_open_args args = { + .open = do_open_dir, + .fidir = fidir + }; + err = au_do_open(file, &args); + if (unlikely(err)) + au_kfree_rcu(fidir); + } + si_read_unlock(sb); + return err; +} + +static int aufs_release_dir(struct inode *inode __maybe_unused, + struct file *file) +{ + struct au_vdir *vdir_cache; + struct au_finfo *finfo; + struct au_fidir *fidir; + struct au_hfile *hf; + aufs_bindex_t bindex, bbot; + + finfo = au_fi(file); + fidir = finfo->fi_hdir; + if (fidir) { + au_hbl_del(&finfo->fi_hlist, + &au_sbi(file->f_path.dentry->d_sb)->si_files); + vdir_cache = fidir->fd_vdir_cache; /* lock-free */ + if (vdir_cache) + au_vdir_free(vdir_cache); + + bindex = finfo->fi_btop; + if (bindex >= 0) { + hf = fidir->fd_hfile + bindex; + /* + * calls fput() instead of filp_close(), + * since no dnotify or lock for the lower file. + */ + bbot = fidir->fd_bbot; + for (; bindex <= bbot; bindex++, hf++) + if (hf->hf_file) + au_hfput(hf, /*execed*/0); + } + au_kfree_rcu(fidir); + finfo->fi_hdir = NULL; + } + au_finfo_fin(file); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_flush_dir(struct file *file, fl_owner_t id) +{ + int err; + aufs_bindex_t bindex, bbot; + struct file *h_file; + + err = 0; + bbot = au_fbbot_dir(file); + for (bindex = au_fbtop(file); !err && bindex <= bbot; bindex++) { + h_file = au_hf_dir(file, bindex); + if (h_file) + err = vfsub_flush(h_file, id); + } + return err; +} + +static int aufs_flush_dir(struct file *file, fl_owner_t id) +{ + return au_do_flush(file, id, au_do_flush_dir); +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_fsync_dir_no_file(struct dentry *dentry, int datasync) +{ + int err; + aufs_bindex_t bbot, bindex; + struct inode *inode; + struct super_block *sb; + + err = 0; + sb = dentry->d_sb; + inode = d_inode(dentry); + IMustLock(inode); + bbot = au_dbbot(dentry); + for (bindex = au_dbtop(dentry); !err && bindex <= bbot; bindex++) { + struct path h_path; + + if (au_test_ro(sb, bindex, inode)) + continue; + h_path.dentry = au_h_dptr(dentry, bindex); + if (!h_path.dentry) + continue; + + h_path.mnt = au_sbr_mnt(sb, bindex); + err = vfsub_fsync(NULL, &h_path, datasync); + } + + return err; +} + +static int au_do_fsync_dir(struct file *file, int datasync) +{ + int err; + aufs_bindex_t bbot, bindex; + struct file *h_file; + struct super_block *sb; + struct inode *inode; + + err = au_reval_and_lock_fdi(file, reopen_dir, /*wlock*/1, /*fi_lsc*/0); + if (unlikely(err)) + goto out; + + inode = file_inode(file); + sb = inode->i_sb; + bbot = au_fbbot_dir(file); + for (bindex = au_fbtop(file); !err && bindex <= bbot; bindex++) { + h_file = au_hf_dir(file, bindex); + if (!h_file || au_test_ro(sb, bindex, inode)) + continue; + + err = vfsub_fsync(h_file, &h_file->f_path, datasync); + } + +out: + return err; +} + +/* + * @file may be NULL + */ +static int aufs_fsync_dir(struct file *file, loff_t start, loff_t end, + int datasync) +{ + int err; + struct dentry *dentry; + struct inode *inode; + struct super_block *sb; + + err = 0; + dentry = file->f_path.dentry; + inode = d_inode(dentry); + inode_lock(inode); + sb = dentry->d_sb; + si_noflush_read_lock(sb); + if (file) + err = au_do_fsync_dir(file, datasync); + else { + di_write_lock_child(dentry); + err = au_do_fsync_dir_no_file(dentry, datasync); + } + au_cpup_attr_timesizes(inode); + di_write_unlock(dentry); + if (file) + fi_write_unlock(file); + + si_read_unlock(sb); + inode_unlock(inode); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_iterate_shared(struct file *file, struct dir_context *ctx) +{ + int err; + struct dentry *dentry; + struct inode *inode, *h_inode; + struct super_block *sb; + + AuDbg("%pD, ctx{%ps, %llu}\n", file, ctx->actor, ctx->pos); + + dentry = file->f_path.dentry; + inode = d_inode(dentry); + IMustLock(inode); + + sb = dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + err = au_reval_and_lock_fdi(file, reopen_dir, /*wlock*/1, /*fi_lsc*/0); + if (unlikely(err)) + goto out; + err = au_alive_dir(dentry); + if (!err) + err = au_vdir_init(file); + di_downgrade_lock(dentry, AuLock_IR); + if (unlikely(err)) + goto out_unlock; + + h_inode = au_h_iptr(inode, au_ibtop(inode)); + if (!au_test_nfsd()) { + err = au_vdir_fill_de(file, ctx); + fsstack_copy_attr_atime(inode, h_inode); + } else { + /* + * nfsd filldir may call lookup_one_len(), vfs_getattr(), + * encode_fh() and others. + */ + atomic_inc(&h_inode->i_count); + di_read_unlock(dentry, AuLock_IR); + si_read_unlock(sb); + err = au_vdir_fill_de(file, ctx); + fsstack_copy_attr_atime(inode, h_inode); + fi_write_unlock(file); + iput(h_inode); + + AuTraceErr(err); + return err; + } + +out_unlock: + di_read_unlock(dentry, AuLock_IR); + fi_write_unlock(file); +out: + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +#define AuTestEmpty_WHONLY 1 +#define AuTestEmpty_CALLED (1 << 1) +#define AuTestEmpty_SHWH (1 << 2) +#define au_ftest_testempty(flags, name) ((flags) & AuTestEmpty_##name) +#define au_fset_testempty(flags, name) \ + do { (flags) |= AuTestEmpty_##name; } while (0) +#define au_fclr_testempty(flags, name) \ + do { (flags) &= ~AuTestEmpty_##name; } while (0) + +#ifndef CONFIG_AUFS_SHWH +#undef AuTestEmpty_SHWH +#define AuTestEmpty_SHWH 0 +#endif + +struct test_empty_arg { + struct dir_context ctx; + struct au_nhash *whlist; + unsigned int flags; + int err; + aufs_bindex_t bindex; +}; + +static int test_empty_cb(struct dir_context *ctx, const char *__name, + int namelen, loff_t offset __maybe_unused, u64 ino, + unsigned int d_type) +{ + struct test_empty_arg *arg = container_of(ctx, struct test_empty_arg, + ctx); + char *name = (void *)__name; + + arg->err = 0; + au_fset_testempty(arg->flags, CALLED); + /* smp_mb(); */ + if (name[0] == '.' + && (namelen == 1 || (name[1] == '.' && namelen == 2))) + goto out; /* success */ + + if (namelen <= AUFS_WH_PFX_LEN + || memcmp(name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + if (au_ftest_testempty(arg->flags, WHONLY) + && !au_nhash_test_known_wh(arg->whlist, name, namelen)) + arg->err = -ENOTEMPTY; + goto out; + } + + name += AUFS_WH_PFX_LEN; + namelen -= AUFS_WH_PFX_LEN; + if (!au_nhash_test_known_wh(arg->whlist, name, namelen)) + arg->err = au_nhash_append_wh + (arg->whlist, name, namelen, ino, d_type, arg->bindex, + au_ftest_testempty(arg->flags, SHWH)); + +out: + /* smp_mb(); */ + AuTraceErr(arg->err); + return arg->err; +} + +static int do_test_empty(struct dentry *dentry, struct test_empty_arg *arg) +{ + int err; + struct file *h_file; + struct au_branch *br; + + h_file = au_h_open(dentry, arg->bindex, + O_RDONLY | O_NONBLOCK | O_DIRECTORY | O_LARGEFILE, + /*file*/NULL, /*force_wr*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = 0; + if (!au_opt_test(au_mntflags(dentry->d_sb), UDBA_NONE) + && !file_inode(h_file)->i_nlink) + goto out_put; + + do { + arg->err = 0; + au_fclr_testempty(arg->flags, CALLED); + /* smp_mb(); */ + err = vfsub_iterate_dir(h_file, &arg->ctx); + if (err >= 0) + err = arg->err; + } while (!err && au_ftest_testempty(arg->flags, CALLED)); + +out_put: + fput(h_file); + br = au_sbr(dentry->d_sb, arg->bindex); + au_lcnt_dec(&br->br_nfiles); +out: + return err; +} + +struct do_test_empty_args { + int *errp; + struct dentry *dentry; + struct test_empty_arg *arg; +}; + +static void call_do_test_empty(void *args) +{ + struct do_test_empty_args *a = args; + *a->errp = do_test_empty(a->dentry, a->arg); +} + +static int sio_test_empty(struct dentry *dentry, struct test_empty_arg *arg) +{ + int err, wkq_err; + struct dentry *h_dentry; + struct inode *h_inode; + struct user_namespace *h_userns; + + h_userns = au_sbr_userns(dentry->d_sb, arg->bindex); + h_dentry = au_h_dptr(dentry, arg->bindex); + h_inode = d_inode(h_dentry); + /* todo: i_mode changes anytime? */ + inode_lock_shared_nested(h_inode, AuLsc_I_CHILD); + err = au_test_h_perm_sio(h_userns, h_inode, MAY_EXEC | MAY_READ); + inode_unlock_shared(h_inode); + if (!err) + err = do_test_empty(dentry, arg); + else { + struct do_test_empty_args args = { + .errp = &err, + .dentry = dentry, + .arg = arg + }; + unsigned int flags = arg->flags; + + wkq_err = au_wkq_wait(call_do_test_empty, &args); + if (unlikely(wkq_err)) + err = wkq_err; + arg->flags = flags; + } + + return err; +} + +int au_test_empty_lower(struct dentry *dentry) +{ + int err; + unsigned int rdhash; + aufs_bindex_t bindex, btop, btail; + struct au_nhash whlist; + struct test_empty_arg arg = { + .ctx = { + .actor = test_empty_cb + } + }; + int (*test_empty)(struct dentry *dentry, struct test_empty_arg *arg); + + SiMustAnyLock(dentry->d_sb); + + rdhash = au_sbi(dentry->d_sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, dentry)); + err = au_nhash_alloc(&whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + + arg.flags = 0; + arg.whlist = &whlist; + btop = au_dbtop(dentry); + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH)) + au_fset_testempty(arg.flags, SHWH); + test_empty = do_test_empty; + if (au_opt_test(au_mntflags(dentry->d_sb), DIRPERM1)) + test_empty = sio_test_empty; + arg.bindex = btop; + err = test_empty(dentry, &arg); + if (unlikely(err)) + goto out_whlist; + + au_fset_testempty(arg.flags, WHONLY); + btail = au_dbtaildir(dentry); + for (bindex = btop + 1; !err && bindex <= btail; bindex++) { + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && d_is_positive(h_dentry)) { + arg.bindex = bindex; + err = test_empty(dentry, &arg); + } + } + +out_whlist: + au_nhash_wh_free(&whlist); +out: + return err; +} + +int au_test_empty(struct dentry *dentry, struct au_nhash *whlist) +{ + int err; + struct test_empty_arg arg = { + .ctx = { + .actor = test_empty_cb + } + }; + aufs_bindex_t bindex, btail; + + err = 0; + arg.whlist = whlist; + arg.flags = AuTestEmpty_WHONLY; + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH)) + au_fset_testempty(arg.flags, SHWH); + btail = au_dbtaildir(dentry); + for (bindex = au_dbtop(dentry); !err && bindex <= btail; bindex++) { + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry && d_is_positive(h_dentry)) { + arg.bindex = bindex; + err = sio_test_empty(dentry, &arg); + } + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +const struct file_operations aufs_dir_fop = { + .owner = THIS_MODULE, + .llseek = default_llseek, + .read = generic_read_dir, + .iterate_shared = aufs_iterate_shared, + .unlocked_ioctl = aufs_ioctl_dir, +#ifdef CONFIG_COMPAT + .compat_ioctl = aufs_compat_ioctl_dir, +#endif + .open = aufs_open_dir, + .release = aufs_release_dir, + .flush = aufs_flush_dir, + .fsync = aufs_fsync_dir +}; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/dir.h +++ linux-azure-5.13-5.13.0/fs/aufs/dir.h @@ -0,0 +1,134 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * directory operations + */ + +#ifndef __AUFS_DIR_H__ +#define __AUFS_DIR_H__ + +#ifdef __KERNEL__ + +#include + +/* ---------------------------------------------------------------------- */ + +/* need to be faster and smaller */ + +struct au_nhash { + unsigned int nh_num; + struct hlist_head *nh_head; +}; + +struct au_vdir_destr { + unsigned char len; + unsigned char name[]; +} __packed; + +struct au_vdir_dehstr { + struct hlist_node hash; + struct au_vdir_destr *str; + struct rcu_head rcu; +} ____cacheline_aligned_in_smp; + +struct au_vdir_de { + ino_t de_ino; + unsigned char de_type; + /* caution: packed */ + struct au_vdir_destr de_str; +} __packed; + +struct au_vdir_wh { + struct hlist_node wh_hash; +#ifdef CONFIG_AUFS_SHWH + ino_t wh_ino; + aufs_bindex_t wh_bindex; + unsigned char wh_type; +#else + aufs_bindex_t wh_bindex; +#endif + /* caution: packed */ + struct au_vdir_destr wh_str; +} __packed; + +union au_vdir_deblk_p { + unsigned char *deblk; + struct au_vdir_de *de; +}; + +struct au_vdir { + unsigned char **vd_deblk; + unsigned long vd_nblk; + struct { + unsigned long ul; + union au_vdir_deblk_p p; + } vd_last; + + u64 vd_version; + unsigned int vd_deblk_sz; + unsigned long vd_jiffy; + struct rcu_head rcu; +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* dir.c */ +extern const struct file_operations aufs_dir_fop; +void au_add_nlink(struct inode *dir, struct inode *h_dir); +void au_sub_nlink(struct inode *dir, struct inode *h_dir); +loff_t au_dir_size(struct file *file, struct dentry *dentry); +void au_dir_ts(struct inode *dir, aufs_bindex_t bsrc); +int au_test_empty_lower(struct dentry *dentry); +int au_test_empty(struct dentry *dentry, struct au_nhash *whlist); + +/* vdir.c */ +unsigned int au_rdhash_est(loff_t sz); +int au_nhash_alloc(struct au_nhash *nhash, unsigned int num_hash, gfp_t gfp); +void au_nhash_wh_free(struct au_nhash *whlist); +int au_nhash_test_longer_wh(struct au_nhash *whlist, aufs_bindex_t btgt, + int limit); +int au_nhash_test_known_wh(struct au_nhash *whlist, char *name, int nlen); +int au_nhash_append_wh(struct au_nhash *whlist, char *name, int nlen, ino_t ino, + unsigned int d_type, aufs_bindex_t bindex, + unsigned char shwh); +void au_vdir_free(struct au_vdir *vdir); +int au_vdir_init(struct file *file); +int au_vdir_fill_de(struct file *file, struct dir_context *ctx); + +/* ioctl.c */ +long aufs_ioctl_dir(struct file *file, unsigned int cmd, unsigned long arg); + +#ifdef CONFIG_AUFS_RDU +/* rdu.c */ +long au_rdu_ioctl(struct file *file, unsigned int cmd, unsigned long arg); +#ifdef CONFIG_COMPAT +long au_rdu_compat_ioctl(struct file *file, unsigned int cmd, + unsigned long arg); +#endif +#else +AuStub(long, au_rdu_ioctl, return -EINVAL, struct file *file, + unsigned int cmd, unsigned long arg) +#ifdef CONFIG_COMPAT +AuStub(long, au_rdu_compat_ioctl, return -EINVAL, struct file *file, + unsigned int cmd, unsigned long arg) +#endif +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIR_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/dirren.c +++ linux-azure-5.13-5.13.0/fs/aufs/dirren.c @@ -0,0 +1,1316 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2017-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * special handling in renaming a directory + * in order to support looking-up the before-renamed name on the lower readonly + * branches + */ + +#include +#include "aufs.h" + +static void au_dr_hino_del(struct au_dr_br *dr, struct au_dr_hino *ent) +{ + int idx; + + idx = au_dr_ihash(ent->dr_h_ino); + au_hbl_del(&ent->dr_hnode, dr->dr_h_ino + idx); +} + +static int au_dr_hino_test_empty(struct au_dr_br *dr) +{ + int ret, i; + struct hlist_bl_head *hbl; + + ret = 1; + for (i = 0; ret && i < AuDirren_NHASH; i++) { + hbl = dr->dr_h_ino + i; + hlist_bl_lock(hbl); + ret &= hlist_bl_empty(hbl); + hlist_bl_unlock(hbl); + } + + return ret; +} + +static struct au_dr_hino *au_dr_hino_find(struct au_dr_br *dr, ino_t ino) +{ + struct au_dr_hino *found, *ent; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + int idx; + + found = NULL; + idx = au_dr_ihash(ino); + hbl = dr->dr_h_ino + idx; + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(ent, pos, hbl, dr_hnode) + if (ent->dr_h_ino == ino) { + found = ent; + break; + } + hlist_bl_unlock(hbl); + + return found; +} + +int au_dr_hino_test_add(struct au_dr_br *dr, ino_t ino, + struct au_dr_hino *add_ent) +{ + int found, idx; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + struct au_dr_hino *ent; + + found = 0; + idx = au_dr_ihash(ino); + hbl = dr->dr_h_ino + idx; +#if 0 /* debug print */ + { + struct hlist_bl_node *tmp; + + hlist_bl_for_each_entry_safe(ent, pos, tmp, hbl, dr_hnode) + AuDbg("hi%llu\n", (unsigned long long)ent->dr_h_ino); + } +#endif + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(ent, pos, hbl, dr_hnode) + if (ent->dr_h_ino == ino) { + found = 1; + break; + } + if (!found && add_ent) + hlist_bl_add_head(&add_ent->dr_hnode, hbl); + hlist_bl_unlock(hbl); + + if (!found && add_ent) + AuDbg("i%llu added\n", (unsigned long long)add_ent->dr_h_ino); + + return found; +} + +void au_dr_hino_free(struct au_dr_br *dr) +{ + int i; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos, *tmp; + struct au_dr_hino *ent; + + /* SiMustWriteLock(sb); */ + + for (i = 0; i < AuDirren_NHASH; i++) { + hbl = dr->dr_h_ino + i; + /* no spinlock since sbinfo must be write-locked */ + hlist_bl_for_each_entry_safe(ent, pos, tmp, hbl, dr_hnode) + au_kfree_rcu(ent); + INIT_HLIST_BL_HEAD(hbl); + } +} + +/* returns the number of inodes or an error */ +static int au_dr_hino_store(struct super_block *sb, struct au_branch *br, + struct file *hinofile) +{ + int err, i; + ssize_t ssz; + loff_t pos, oldsize; + __be64 u64; + struct inode *hinoinode; + struct hlist_bl_head *hbl; + struct hlist_bl_node *n1, *n2; + struct au_dr_hino *ent; + + SiMustWriteLock(sb); + AuDebugOn(!au_br_writable(br->br_perm)); + + hinoinode = file_inode(hinofile); + oldsize = i_size_read(hinoinode); + + err = 0; + pos = 0; + hbl = br->br_dirren.dr_h_ino; + for (i = 0; !err && i < AuDirren_NHASH; i++, hbl++) { + /* no bit-lock since sbinfo must be write-locked */ + hlist_bl_for_each_entry_safe(ent, n1, n2, hbl, dr_hnode) { + AuDbg("hi%llu, %pD2\n", + (unsigned long long)ent->dr_h_ino, hinofile); + u64 = cpu_to_be64(ent->dr_h_ino); + ssz = vfsub_write_k(hinofile, &u64, sizeof(u64), &pos); + if (ssz == sizeof(u64)) + continue; + + /* write error */ + pr_err("ssz %zd, %pD2\n", ssz, hinofile); + err = -ENOSPC; + if (ssz < 0) + err = ssz; + break; + } + } + /* regardless the error */ + if (pos < oldsize) { + err = vfsub_trunc(&hinofile->f_path, pos, /*attr*/0, hinofile); + AuTraceErr(err); + } + + AuTraceErr(err); + return err; +} + +static int au_dr_hino_load(struct au_dr_br *dr, struct file *hinofile) +{ + int err, hidx; + ssize_t ssz; + size_t sz, n; + loff_t pos; + uint64_t u64; + struct au_dr_hino *ent; + struct inode *hinoinode; + struct hlist_bl_head *hbl; + + err = 0; + pos = 0; + hbl = dr->dr_h_ino; + hinoinode = file_inode(hinofile); + sz = i_size_read(hinoinode); + AuDebugOn(sz % sizeof(u64)); + n = sz / sizeof(u64); + while (n--) { + ssz = vfsub_read_k(hinofile, &u64, sizeof(u64), &pos); + if (unlikely(ssz != sizeof(u64))) { + pr_err("ssz %zd, %pD2\n", ssz, hinofile); + err = -EINVAL; + if (ssz < 0) + err = ssz; + goto out_free; + } + + ent = kmalloc(sizeof(*ent), GFP_NOFS); + if (!ent) { + err = -ENOMEM; + AuTraceErr(err); + goto out_free; + } + ent->dr_h_ino = be64_to_cpu((__force __be64)u64); + AuDbg("hi%llu, %pD2\n", + (unsigned long long)ent->dr_h_ino, hinofile); + hidx = au_dr_ihash(ent->dr_h_ino); + au_hbl_add(&ent->dr_hnode, hbl + hidx); + } + goto out; /* success */ + +out_free: + au_dr_hino_free(dr); +out: + AuTraceErr(err); + return err; +} + +/* + * @bindex/@br is a switch to distinguish whether suspending hnotify or not. + * @path is a switch to distinguish load and store. + */ +static int au_dr_hino(struct super_block *sb, aufs_bindex_t bindex, + struct au_branch *br, const struct path *path) +{ + int err, flags; + unsigned char load, suspend; + struct file *hinofile; + struct au_hinode *hdir; + struct inode *dir, *delegated; + struct path hinopath; + struct qstr hinoname = QSTR_INIT(AUFS_WH_DR_BRHINO, + sizeof(AUFS_WH_DR_BRHINO) - 1); + + AuDebugOn(bindex < 0 && !br); + AuDebugOn(bindex >= 0 && br); + + err = -EINVAL; + suspend = !br; + if (suspend) + br = au_sbr(sb, bindex); + load = !!path; + if (!load) { + path = &br->br_path; + AuDebugOn(!au_br_writable(br->br_perm)); + if (unlikely(!au_br_writable(br->br_perm))) + goto out; + } + + hdir = NULL; + if (suspend) { + dir = d_inode(sb->s_root); + hdir = au_hinode(au_ii(dir), bindex); + dir = hdir->hi_inode; + au_hn_inode_lock_nested(hdir, AuLsc_I_CHILD); + } else { + dir = d_inode(path->dentry); + inode_lock_nested(dir, AuLsc_I_CHILD); + } + hinopath.dentry = vfsub_lkup_one(&hinoname, path->dentry); + err = PTR_ERR(hinopath.dentry); + if (IS_ERR(hinopath.dentry)) + goto out_unlock; + hinopath.mnt = path->mnt; + + err = 0; + flags = O_RDONLY; + if (load) { + if (d_is_negative(hinopath.dentry)) + goto out_dput; /* success */ + } else { + if (au_dr_hino_test_empty(&br->br_dirren)) { + if (d_is_positive(hinopath.dentry)) { + delegated = NULL; + err = vfsub_unlink(dir, &hinopath, &delegated, + /*force*/0); + AuTraceErr(err); + if (unlikely(err)) + pr_err("ignored err %d, %pd2\n", + err, hinopath.dentry); + if (unlikely(err == -EWOULDBLOCK)) + iput(delegated); + err = 0; + } + goto out_dput; + } else if (!d_is_positive(hinopath.dentry)) { + err = vfsub_create(dir, &hinopath, 0600, + /*want_excl*/false); + AuTraceErr(err); + if (unlikely(err)) + goto out_dput; + } + flags = O_WRONLY; + } + hinofile = vfsub_dentry_open(&hinopath, flags); + if (suspend) + au_hn_inode_unlock(hdir); + else + inode_unlock(dir); + dput(hinopath.dentry); + AuTraceErrPtr(hinofile); + if (IS_ERR(hinofile)) { + err = PTR_ERR(hinofile); + goto out; + } + + if (load) + err = au_dr_hino_load(&br->br_dirren, hinofile); + else + err = au_dr_hino_store(sb, br, hinofile); + fput(hinofile); + goto out; + +out_dput: + dput(hinopath.dentry); +out_unlock: + if (suspend) + au_hn_inode_unlock(hdir); + else + inode_unlock(dir); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_dr_brid_init(struct au_dr_brid *brid, const struct path *path) +{ + int err; + struct kstatfs kstfs; + dev_t dev; + struct dentry *dentry; + struct super_block *sb; + + err = vfs_statfs((void *)path, &kstfs); + AuTraceErr(err); + if (unlikely(err)) + goto out; + + /* todo: support for UUID */ + + if (kstfs.f_fsid.val[0] || kstfs.f_fsid.val[1]) { + brid->type = AuBrid_FSID; + brid->fsid = kstfs.f_fsid; + } else { + dentry = path->dentry; + sb = dentry->d_sb; + dev = sb->s_dev; + if (dev) { + brid->type = AuBrid_DEV; + brid->dev = dev; + } + } + +out: + return err; +} + +int au_dr_br_init(struct super_block *sb, struct au_branch *br, + const struct path *path) +{ + int err, i; + struct au_dr_br *dr; + struct hlist_bl_head *hbl; + + dr = &br->br_dirren; + hbl = dr->dr_h_ino; + for (i = 0; i < AuDirren_NHASH; i++, hbl++) + INIT_HLIST_BL_HEAD(hbl); + + err = au_dr_brid_init(&dr->dr_brid, path); + if (unlikely(err)) + goto out; + + if (au_opt_test(au_mntflags(sb), DIRREN)) + err = au_dr_hino(sb, /*bindex*/-1, br, path); + +out: + AuTraceErr(err); + return err; +} + +int au_dr_br_fin(struct super_block *sb, struct au_branch *br) +{ + int err; + + err = 0; + if (au_br_writable(br->br_perm)) + err = au_dr_hino(sb, /*bindex*/-1, br, /*path*/NULL); + if (!err) + au_dr_hino_free(&br->br_dirren); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_brid_str(struct au_dr_brid *brid, struct inode *h_inode, + char *buf, size_t sz) +{ + int err; + unsigned int major, minor; + char *p; + + p = buf; + err = snprintf(p, sz, "%d_", brid->type); + AuDebugOn(err > sz); + p += err; + sz -= err; + switch (brid->type) { + case AuBrid_Unset: + return -EINVAL; + case AuBrid_UUID: + err = snprintf(p, sz, "%pU", brid->uuid.b); + break; + case AuBrid_FSID: + err = snprintf(p, sz, "%08x-%08x", + brid->fsid.val[0], brid->fsid.val[1]); + break; + case AuBrid_DEV: + major = MAJOR(brid->dev); + minor = MINOR(brid->dev); + if (major <= 0xff && minor <= 0xff) + err = snprintf(p, sz, "%02x%02x", major, minor); + else + err = snprintf(p, sz, "%03x:%05x", major, minor); + break; + } + AuDebugOn(err > sz); + p += err; + sz -= err; + err = snprintf(p, sz, "_%llu", (unsigned long long)h_inode->i_ino); + AuDebugOn(err > sz); + p += err; + sz -= err; + + return p - buf; +} + +static int au_drinfo_name(struct au_branch *br, char *name, int len) +{ + int rlen; + struct dentry *br_dentry; + struct inode *br_inode; + + br_dentry = au_br_dentry(br); + br_inode = d_inode(br_dentry); + rlen = au_brid_str(&br->br_dirren.dr_brid, br_inode, name, len); + AuDebugOn(rlen >= AUFS_DIRREN_ENV_VAL_SZ); + AuDebugOn(rlen > len); + + return rlen; +} + +/* ---------------------------------------------------------------------- */ + +/* + * from the given @h_dentry, construct drinfo at @*fdata. + * when the size of @*fdata is not enough, reallocate and return new @fdata and + * @allocated. + */ +static int au_drinfo_construct(struct au_drinfo_fdata **fdata, + struct dentry *h_dentry, + unsigned char *allocated) +{ + int err, v; + struct au_drinfo_fdata *f, *p; + struct au_drinfo *drinfo; + struct inode *h_inode; + struct qstr *qname; + + err = 0; + f = *fdata; + h_inode = d_inode(h_dentry); + qname = &h_dentry->d_name; + drinfo = &f->drinfo; + drinfo->ino = (__force uint64_t)cpu_to_be64(h_inode->i_ino); + drinfo->oldnamelen = qname->len; + if (*allocated < sizeof(*f) + qname->len) { + v = roundup_pow_of_two(*allocated + qname->len); + p = au_krealloc(f, v, GFP_NOFS, /*may_shrink*/0); + if (unlikely(!p)) { + err = -ENOMEM; + AuTraceErr(err); + goto out; + } + f = p; + *fdata = f; + *allocated = v; + drinfo = &f->drinfo; + } + memcpy(drinfo->oldname, qname->name, qname->len); + AuDbg("i%llu, %.*s\n", + be64_to_cpu((__force __be64)drinfo->ino), drinfo->oldnamelen, + drinfo->oldname); + +out: + AuTraceErr(err); + return err; +} + +/* callers have to free the return value */ +static struct au_drinfo *au_drinfo_read_k(struct file *file, ino_t h_ino) +{ + struct au_drinfo *ret, *drinfo; + struct au_drinfo_fdata fdata; + int len; + loff_t pos; + ssize_t ssz; + + ret = ERR_PTR(-EIO); + pos = 0; + ssz = vfsub_read_k(file, &fdata, sizeof(fdata), &pos); + if (unlikely(ssz != sizeof(fdata))) { + AuIOErr("ssz %zd, %u, %pD2\n", + ssz, (unsigned int)sizeof(fdata), file); + goto out; + } + + fdata.magic = ntohl((__force __be32)fdata.magic); + switch (fdata.magic) { + case AUFS_DRINFO_MAGIC_V1: + break; + default: + AuIOErr("magic-num 0x%x, 0x%x, %pD2\n", + fdata.magic, AUFS_DRINFO_MAGIC_V1, file); + goto out; + } + + drinfo = &fdata.drinfo; + len = drinfo->oldnamelen; + if (!len) { + AuIOErr("broken drinfo %pD2\n", file); + goto out; + } + + ret = NULL; + drinfo->ino = be64_to_cpu((__force __be64)drinfo->ino); + if (unlikely(h_ino && drinfo->ino != h_ino)) { + AuDbg("ignored i%llu, i%llu, %pD2\n", + (unsigned long long)drinfo->ino, + (unsigned long long)h_ino, file); + goto out; /* success */ + } + + ret = kmalloc(sizeof(*ret) + len, GFP_NOFS); + if (unlikely(!ret)) { + ret = ERR_PTR(-ENOMEM); + AuTraceErrPtr(ret); + goto out; + } + + *ret = *drinfo; + ssz = vfsub_read_k(file, (void *)ret->oldname, len, &pos); + if (unlikely(ssz != len)) { + au_kfree_rcu(ret); + ret = ERR_PTR(-EIO); + AuIOErr("ssz %zd, %u, %pD2\n", ssz, len, file); + goto out; + } + + AuDbg("oldname %.*s\n", ret->oldnamelen, ret->oldname); + +out: + return ret; +} + +/* ---------------------------------------------------------------------- */ + +/* in order to be revertible */ +struct au_drinfo_rev_elm { + int created; + struct dentry *info_dentry; + struct au_drinfo *info_last; +}; + +struct au_drinfo_rev { + unsigned char already; + aufs_bindex_t nelm; + struct au_drinfo_rev_elm elm[]; +}; + +/* todo: isn't it too large? */ +struct au_drinfo_store { + struct path h_ppath; + struct dentry *h_dentry; + struct au_drinfo_fdata *fdata; + char *infoname; /* inside of whname, just after PFX */ + char whname[sizeof(AUFS_WH_DR_INFO_PFX) + AUFS_DIRREN_ENV_VAL_SZ]; + aufs_bindex_t btgt, btail; + unsigned char no_sio, + allocated, /* current size of *fdata */ + infonamelen, /* room size for p */ + whnamelen, /* length of the generated name */ + renameback; /* renamed back */ +}; + +/* on rename(2) error, the caller should revert it using @elm */ +static int au_drinfo_do_store(struct au_drinfo_store *w, + struct au_drinfo_rev_elm *elm) +{ + int err, len; + ssize_t ssz; + loff_t pos; + struct path infopath = { + .mnt = w->h_ppath.mnt + }; + struct inode *h_dir, *h_inode, *delegated; + struct file *infofile; + struct qstr *qname; + + AuDebugOn(elm + && memcmp(elm, page_address(ZERO_PAGE(0)), sizeof(*elm))); + + infopath.dentry = vfsub_lookup_one_len(w->whname, w->h_ppath.dentry, + w->whnamelen); + AuTraceErrPtr(infopath.dentry); + if (IS_ERR(infopath.dentry)) { + err = PTR_ERR(infopath.dentry); + goto out; + } + + err = 0; + h_dir = d_inode(w->h_ppath.dentry); + if (elm && d_is_negative(infopath.dentry)) { + err = vfsub_create(h_dir, &infopath, 0600, /*want_excl*/true); + AuTraceErr(err); + if (unlikely(err)) + goto out_dput; + elm->created = 1; + elm->info_dentry = dget(infopath.dentry); + } + + infofile = vfsub_dentry_open(&infopath, O_RDWR); + AuTraceErrPtr(infofile); + if (IS_ERR(infofile)) { + err = PTR_ERR(infofile); + goto out_dput; + } + + h_inode = d_inode(infopath.dentry); + if (elm && i_size_read(h_inode)) { + h_inode = d_inode(w->h_dentry); + elm->info_last = au_drinfo_read_k(infofile, h_inode->i_ino); + AuTraceErrPtr(elm->info_last); + if (IS_ERR(elm->info_last)) { + err = PTR_ERR(elm->info_last); + elm->info_last = NULL; + AuDebugOn(elm->info_dentry); + goto out_fput; + } + } + + if (elm && w->renameback) { + delegated = NULL; + err = vfsub_unlink(h_dir, &infopath, &delegated, /*force*/0); + AuTraceErr(err); + if (unlikely(err == -EWOULDBLOCK)) + iput(delegated); + goto out_fput; + } + + pos = 0; + qname = &w->h_dentry->d_name; + len = sizeof(*w->fdata) + qname->len; + if (!elm) + len = sizeof(*w->fdata) + w->fdata->drinfo.oldnamelen; + ssz = vfsub_write_k(infofile, w->fdata, len, &pos); + if (ssz == len) { + AuDbg("hi%llu, %.*s\n", w->fdata->drinfo.ino, + w->fdata->drinfo.oldnamelen, w->fdata->drinfo.oldname); + goto out_fput; /* success */ + } else { + err = -EIO; + if (ssz < 0) + err = ssz; + /* the caller should revert it using @elm */ + } + +out_fput: + fput(infofile); +out_dput: + dput(infopath.dentry); +out: + AuTraceErr(err); + return err; +} + +struct au_call_drinfo_do_store_args { + int *errp; + struct au_drinfo_store *w; + struct au_drinfo_rev_elm *elm; +}; + +static void au_call_drinfo_do_store(void *args) +{ + struct au_call_drinfo_do_store_args *a = args; + + *a->errp = au_drinfo_do_store(a->w, a->elm); +} + +static int au_drinfo_store_sio(struct au_drinfo_store *w, + struct au_drinfo_rev_elm *elm) +{ + int err, wkq_err; + + if (w->no_sio) + err = au_drinfo_do_store(w, elm); + else { + struct au_call_drinfo_do_store_args a = { + .errp = &err, + .w = w, + .elm = elm + }; + wkq_err = au_wkq_wait(au_call_drinfo_do_store, &a); + if (unlikely(wkq_err)) + err = wkq_err; + } + AuTraceErr(err); + + return err; +} + +static int au_drinfo_store_work_init(struct au_drinfo_store *w, + aufs_bindex_t btgt) +{ + int err; + + memset(w, 0, sizeof(*w)); + w->allocated = roundup_pow_of_two(sizeof(*w->fdata) + 40); + strcpy(w->whname, AUFS_WH_DR_INFO_PFX); + w->infoname = w->whname + sizeof(AUFS_WH_DR_INFO_PFX) - 1; + w->infonamelen = sizeof(w->whname) - sizeof(AUFS_WH_DR_INFO_PFX); + w->btgt = btgt; + w->no_sio = !!uid_eq(current_fsuid(), GLOBAL_ROOT_UID); + + err = -ENOMEM; + w->fdata = kcalloc(1, w->allocated, GFP_NOFS); + if (unlikely(!w->fdata)) { + AuTraceErr(err); + goto out; + } + w->fdata->magic = (__force uint32_t)htonl(AUFS_DRINFO_MAGIC_V1); + err = 0; + +out: + return err; +} + +static void au_drinfo_store_work_fin(struct au_drinfo_store *w) +{ + au_kfree_rcu(w->fdata); +} + +static void au_drinfo_store_rev(struct au_drinfo_rev *rev, + struct au_drinfo_store *w) +{ + struct au_drinfo_rev_elm *elm; + struct inode *h_dir, *delegated; + int err, nelm; + struct path infopath = { + .mnt = w->h_ppath.mnt + }; + + h_dir = d_inode(w->h_ppath.dentry); + IMustLock(h_dir); + + err = 0; + elm = rev->elm; + for (nelm = rev->nelm; nelm > 0; nelm--, elm++) { + AuDebugOn(elm->created && elm->info_last); + if (elm->created) { + AuDbg("here\n"); + delegated = NULL; + infopath.dentry = elm->info_dentry; + err = vfsub_unlink(h_dir, &infopath, &delegated, + !w->no_sio); + AuTraceErr(err); + if (unlikely(err == -EWOULDBLOCK)) + iput(delegated); + dput(elm->info_dentry); + } else if (elm->info_last) { + AuDbg("here\n"); + w->fdata->drinfo = *elm->info_last; + memcpy(w->fdata->drinfo.oldname, + elm->info_last->oldname, + elm->info_last->oldnamelen); + err = au_drinfo_store_sio(w, /*elm*/NULL); + au_kfree_rcu(elm->info_last); + } + if (unlikely(err)) + AuIOErr("%d, %s\n", err, w->whname); + /* go on even if err */ + } +} + +/* caller has to call au_dr_rename_fin() later */ +static int au_drinfo_store(struct dentry *dentry, aufs_bindex_t btgt, + struct qstr *dst_name, void *_rev) +{ + int err, sz, nelm; + aufs_bindex_t bindex, btail; + struct au_drinfo_store work; + struct au_drinfo_rev *rev, **p; + struct au_drinfo_rev_elm *elm; + struct super_block *sb; + struct au_branch *br; + struct au_hinode *hdir; + + err = au_drinfo_store_work_init(&work, btgt); + AuTraceErr(err); + if (unlikely(err)) + goto out; + + err = -ENOMEM; + btail = au_dbtaildir(dentry); + nelm = btail - btgt; + sz = sizeof(*rev) + sizeof(*elm) * nelm; + rev = kcalloc(1, sz, GFP_NOFS); + if (unlikely(!rev)) { + AuTraceErr(err); + goto out_args; + } + rev->nelm = nelm; + elm = rev->elm; + p = _rev; + *p = rev; + + err = 0; + sb = dentry->d_sb; + work.h_ppath.dentry = au_h_dptr(dentry, btgt); + work.h_ppath.mnt = au_sbr_mnt(sb, btgt); + hdir = au_hi(d_inode(dentry), btgt); + au_hn_inode_lock_nested(hdir, AuLsc_I_CHILD); + for (bindex = btgt + 1; bindex <= btail; bindex++, elm++) { + work.h_dentry = au_h_dptr(dentry, bindex); + if (!work.h_dentry) + continue; + + err = au_drinfo_construct(&work.fdata, work.h_dentry, + &work.allocated); + AuTraceErr(err); + if (unlikely(err)) + break; + + work.renameback = au_qstreq(&work.h_dentry->d_name, dst_name); + br = au_sbr(sb, bindex); + work.whnamelen = sizeof(AUFS_WH_DR_INFO_PFX) - 1; + work.whnamelen += au_drinfo_name(br, work.infoname, + work.infonamelen); + AuDbg("whname %.*s, i%llu, %.*s\n", + work.whnamelen, work.whname, + be64_to_cpu((__force __be64)work.fdata->drinfo.ino), + work.fdata->drinfo.oldnamelen, + work.fdata->drinfo.oldname); + + err = au_drinfo_store_sio(&work, elm); + AuTraceErr(err); + if (unlikely(err)) + break; + } + if (unlikely(err)) { + /* revert all drinfo */ + au_drinfo_store_rev(rev, &work); + au_kfree_try_rcu(rev); + *p = NULL; + } + au_hn_inode_unlock(hdir); + +out_args: + au_drinfo_store_work_fin(&work); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_dr_rename(struct dentry *src, aufs_bindex_t bindex, + struct qstr *dst_name, void *_rev) +{ + int err, already; + ino_t ino; + struct super_block *sb; + struct au_branch *br; + struct au_dr_br *dr; + struct dentry *h_dentry; + struct inode *h_inode; + struct au_dr_hino *ent; + struct au_drinfo_rev *rev, **p; + + AuDbg("bindex %d\n", bindex); + + err = -ENOMEM; + ent = kmalloc(sizeof(*ent), GFP_NOFS); + if (unlikely(!ent)) + goto out; + + sb = src->d_sb; + br = au_sbr(sb, bindex); + dr = &br->br_dirren; + h_dentry = au_h_dptr(src, bindex); + h_inode = d_inode(h_dentry); + ino = h_inode->i_ino; + ent->dr_h_ino = ino; + already = au_dr_hino_test_add(dr, ino, ent); + AuDbg("b%d, hi%llu, already %d\n", + bindex, (unsigned long long)ino, already); + + err = au_drinfo_store(src, bindex, dst_name, _rev); + AuTraceErr(err); + if (!err) { + p = _rev; + rev = *p; + rev->already = already; + goto out; /* success */ + } + + /* revert */ + if (!already) + au_dr_hino_del(dr, ent); + au_kfree_rcu(ent); + +out: + AuTraceErr(err); + return err; +} + +void au_dr_rename_fin(struct dentry *src, aufs_bindex_t btgt, void *_rev) +{ + struct au_drinfo_rev *rev; + struct au_drinfo_rev_elm *elm; + int nelm; + + rev = _rev; + elm = rev->elm; + for (nelm = rev->nelm; nelm > 0; nelm--, elm++) { + dput(elm->info_dentry); + au_kfree_rcu(elm->info_last); + } + au_kfree_try_rcu(rev); +} + +void au_dr_rename_rev(struct dentry *src, aufs_bindex_t btgt, void *_rev) +{ + int err; + struct au_drinfo_store work; + struct au_drinfo_rev *rev = _rev; + struct super_block *sb; + struct au_branch *br; + struct inode *h_inode; + struct au_dr_br *dr; + struct au_dr_hino *ent; + + err = au_drinfo_store_work_init(&work, btgt); + if (unlikely(err)) + goto out; + + sb = src->d_sb; + br = au_sbr(sb, btgt); + work.h_ppath.dentry = au_h_dptr(src, btgt); + work.h_ppath.mnt = au_br_mnt(br); + au_drinfo_store_rev(rev, &work); + au_drinfo_store_work_fin(&work); + if (rev->already) + goto out; + + dr = &br->br_dirren; + h_inode = d_inode(work.h_ppath.dentry); + ent = au_dr_hino_find(dr, h_inode->i_ino); + BUG_ON(!ent); + au_dr_hino_del(dr, ent); + au_kfree_rcu(ent); + +out: + au_kfree_try_rcu(rev); + if (unlikely(err)) + pr_err("failed to remove dirren info\n"); +} + +/* ---------------------------------------------------------------------- */ + +static struct au_drinfo *au_drinfo_do_load(struct path *h_ppath, + char *whname, int whnamelen, + struct dentry **info_dentry) +{ + struct au_drinfo *drinfo; + struct file *f; + struct inode *h_dir; + struct path infopath; + int unlocked; + + AuDbg("%pd/%.*s\n", h_ppath->dentry, whnamelen, whname); + + *info_dentry = NULL; + drinfo = NULL; + unlocked = 0; + h_dir = d_inode(h_ppath->dentry); + inode_lock_shared_nested(h_dir, AuLsc_I_PARENT); + infopath.dentry = vfsub_lookup_one_len(whname, h_ppath->dentry, + whnamelen); + if (IS_ERR(infopath.dentry)) { + drinfo = (void *)infopath.dentry; + goto out; + } + + if (d_is_negative(infopath.dentry)) + goto out_dput; /* success */ + + infopath.mnt = h_ppath->mnt; + f = vfsub_dentry_open(&infopath, O_RDONLY); + inode_unlock_shared(h_dir); + unlocked = 1; + if (IS_ERR(f)) { + drinfo = (void *)f; + goto out_dput; + } + + drinfo = au_drinfo_read_k(f, /*h_ino*/0); + if (IS_ERR_OR_NULL(drinfo)) + goto out_fput; + + AuDbg("oldname %.*s\n", drinfo->oldnamelen, drinfo->oldname); + *info_dentry = dget(infopath.dentry); /* keep it alive */ + +out_fput: + fput(f); +out_dput: + dput(infopath.dentry); +out: + if (!unlocked) + inode_unlock_shared(h_dir); + AuTraceErrPtr(drinfo); + return drinfo; +} + +struct au_drinfo_do_load_args { + struct au_drinfo **drinfop; + struct path *h_ppath; + char *whname; + int whnamelen; + struct dentry **info_dentry; +}; + +static void au_call_drinfo_do_load(void *args) +{ + struct au_drinfo_do_load_args *a = args; + + *a->drinfop = au_drinfo_do_load(a->h_ppath, a->whname, a->whnamelen, + a->info_dentry); +} + +struct au_drinfo_load { + struct path h_ppath; + struct qstr *qname; + unsigned char no_sio; + + aufs_bindex_t ninfo; + struct au_drinfo **drinfo; +}; + +static int au_drinfo_load(struct au_drinfo_load *w, aufs_bindex_t bindex, + struct au_branch *br) +{ + int err, wkq_err, whnamelen, e; + char whname[sizeof(AUFS_WH_DR_INFO_PFX) + AUFS_DIRREN_ENV_VAL_SZ] + = AUFS_WH_DR_INFO_PFX; + struct au_drinfo *drinfo; + struct qstr oldname; + struct inode *h_dir, *delegated; + struct dentry *info_dentry; + struct path infopath; + + whnamelen = sizeof(AUFS_WH_DR_INFO_PFX) - 1; + whnamelen += au_drinfo_name(br, whname + whnamelen, + sizeof(whname) - whnamelen); + if (w->no_sio) + drinfo = au_drinfo_do_load(&w->h_ppath, whname, whnamelen, + &info_dentry); + else { + struct au_drinfo_do_load_args args = { + .drinfop = &drinfo, + .h_ppath = &w->h_ppath, + .whname = whname, + .whnamelen = whnamelen, + .info_dentry = &info_dentry + }; + wkq_err = au_wkq_wait(au_call_drinfo_do_load, &args); + if (unlikely(wkq_err)) + drinfo = ERR_PTR(wkq_err); + } + err = PTR_ERR(drinfo); + if (IS_ERR_OR_NULL(drinfo)) + goto out; + + err = 0; + oldname.len = drinfo->oldnamelen; + oldname.name = drinfo->oldname; + if (au_qstreq(w->qname, &oldname)) { + /* the name is renamed back */ + au_kfree_rcu(drinfo); + drinfo = NULL; + + infopath.dentry = info_dentry; + infopath.mnt = w->h_ppath.mnt; + h_dir = d_inode(w->h_ppath.dentry); + delegated = NULL; + inode_lock_nested(h_dir, AuLsc_I_PARENT); + e = vfsub_unlink(h_dir, &infopath, &delegated, !w->no_sio); + inode_unlock(h_dir); + if (unlikely(e)) + AuIOErr("ignored %d, %pd2\n", e, &infopath.dentry); + if (unlikely(e == -EWOULDBLOCK)) + iput(delegated); + } + au_kfree_rcu(w->drinfo[bindex]); + w->drinfo[bindex] = drinfo; + dput(info_dentry); + +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_dr_lkup_free(struct au_drinfo **drinfo, int n) +{ + struct au_drinfo **p = drinfo; + + while (n-- > 0) + au_kfree_rcu(*drinfo++); + au_kfree_try_rcu(p); +} + +int au_dr_lkup(struct au_do_lookup_args *lkup, struct dentry *dentry, + aufs_bindex_t btgt) +{ + int err, ninfo; + struct au_drinfo_load w; + aufs_bindex_t bindex, bbot; + struct au_branch *br; + struct inode *h_dir; + struct au_dr_hino *ent; + struct super_block *sb; + + AuDbg("%.*s, name %.*s, whname %.*s, b%d\n", + AuLNPair(&dentry->d_name), AuLNPair(&lkup->dirren.dr_name), + AuLNPair(&lkup->whname), btgt); + + sb = dentry->d_sb; + bbot = au_sbbot(sb); + w.ninfo = bbot + 1; + if (!lkup->dirren.drinfo) { + lkup->dirren.drinfo = kcalloc(w.ninfo, + sizeof(*lkup->dirren.drinfo), + GFP_NOFS); + if (unlikely(!lkup->dirren.drinfo)) { + err = -ENOMEM; + goto out; + } + lkup->dirren.ninfo = w.ninfo; + } + w.drinfo = lkup->dirren.drinfo; + w.no_sio = !!uid_eq(current_fsuid(), GLOBAL_ROOT_UID); + w.h_ppath.dentry = au_h_dptr(dentry, btgt); + AuDebugOn(!w.h_ppath.dentry); + w.h_ppath.mnt = au_sbr_mnt(sb, btgt); + w.qname = &dentry->d_name; + + ninfo = 0; + for (bindex = btgt + 1; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + err = au_drinfo_load(&w, bindex, br); + if (unlikely(err)) + goto out_free; + if (w.drinfo[bindex]) + ninfo++; + } + if (!ninfo) { + br = au_sbr(sb, btgt); + h_dir = d_inode(w.h_ppath.dentry); + ent = au_dr_hino_find(&br->br_dirren, h_dir->i_ino); + AuDebugOn(!ent); + au_dr_hino_del(&br->br_dirren, ent); + au_kfree_rcu(ent); + } + goto out; /* success */ + +out_free: + au_dr_lkup_free(lkup->dirren.drinfo, lkup->dirren.ninfo); + lkup->dirren.ninfo = 0; + lkup->dirren.drinfo = NULL; +out: + AuTraceErr(err); + return err; +} + +void au_dr_lkup_fin(struct au_do_lookup_args *lkup) +{ + au_dr_lkup_free(lkup->dirren.drinfo, lkup->dirren.ninfo); +} + +int au_dr_lkup_name(struct au_do_lookup_args *lkup, aufs_bindex_t btgt) +{ + int err; + struct au_drinfo *drinfo; + + err = 0; + if (!lkup->dirren.drinfo) + goto out; + AuDebugOn(lkup->dirren.ninfo <= btgt); + drinfo = lkup->dirren.drinfo[btgt]; + if (!drinfo) + goto out; + + au_kfree_try_rcu(lkup->whname.name); + lkup->whname.name = NULL; + lkup->dirren.dr_name.len = drinfo->oldnamelen; + lkup->dirren.dr_name.name = drinfo->oldname; + lkup->name = &lkup->dirren.dr_name; + err = au_wh_name_alloc(&lkup->whname, lkup->name); + if (!err) + AuDbg("name %.*s, whname %.*s, b%d\n", + AuLNPair(lkup->name), AuLNPair(&lkup->whname), + btgt); + +out: + AuTraceErr(err); + return err; +} + +int au_dr_lkup_h_ino(struct au_do_lookup_args *lkup, aufs_bindex_t bindex, + ino_t h_ino) +{ + int match; + struct au_drinfo *drinfo; + + match = 1; + if (!lkup->dirren.drinfo) + goto out; + AuDebugOn(lkup->dirren.ninfo <= bindex); + drinfo = lkup->dirren.drinfo[bindex]; + if (!drinfo) + goto out; + + match = (drinfo->ino == h_ino); + AuDbg("match %d\n", match); + +out: + return match; +} + +/* ---------------------------------------------------------------------- */ + +int au_dr_opt_set(struct super_block *sb) +{ + int err; + aufs_bindex_t bindex, bbot; + struct au_branch *br; + + err = 0; + bbot = au_sbbot(sb); + for (bindex = 0; !err && bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + err = au_dr_hino(sb, bindex, /*br*/NULL, &br->br_path); + } + + return err; +} + +int au_dr_opt_flush(struct super_block *sb) +{ + int err; + aufs_bindex_t bindex, bbot; + struct au_branch *br; + + err = 0; + bbot = au_sbbot(sb); + for (bindex = 0; !err && bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_writable(br->br_perm)) + err = au_dr_hino(sb, bindex, /*br*/NULL, /*path*/NULL); + } + + return err; +} + +int au_dr_opt_clr(struct super_block *sb, int no_flush) +{ + int err; + aufs_bindex_t bindex, bbot; + struct au_branch *br; + + err = 0; + if (!no_flush) { + err = au_dr_opt_flush(sb); + if (unlikely(err)) + goto out; + } + + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + au_dr_hino_free(&br->br_dirren); + } + +out: + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/dirren.h +++ linux-azure-5.13-5.13.0/fs/aufs/dirren.h @@ -0,0 +1,140 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2017-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * renamed dir info + */ + +#ifndef __AUFS_DIRREN_H__ +#define __AUFS_DIRREN_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include "hbl.h" + +#define AuDirren_NHASH 100 + +#ifdef CONFIG_AUFS_DIRREN +enum au_brid_type { + AuBrid_Unset, + AuBrid_UUID, + AuBrid_FSID, + AuBrid_DEV +}; + +struct au_dr_brid { + enum au_brid_type type; + union { + uuid_t uuid; /* unimplemented yet */ + fsid_t fsid; + dev_t dev; + }; +}; + +/* 20 is the max digits length of ulong 64 */ +/* brid-type "_" uuid "_" inum */ +#define AUFS_DIRREN_FNAME_SZ (1 + 1 + UUID_STRING_LEN + 20) +#define AUFS_DIRREN_ENV_VAL_SZ (AUFS_DIRREN_FNAME_SZ + 1 + 20) + +struct au_dr_hino { + struct hlist_bl_node dr_hnode; + ino_t dr_h_ino; +}; + +struct au_dr_br { + struct hlist_bl_head dr_h_ino[AuDirren_NHASH]; + struct au_dr_brid dr_brid; +}; + +struct au_dr_lookup { + /* dr_name is pointed by struct au_do_lookup_args.name */ + struct qstr dr_name; /* subset of dr_info */ + aufs_bindex_t ninfo; + struct au_drinfo **drinfo; +}; +#else +struct au_dr_hino; +/* empty */ +struct au_dr_br { }; +struct au_dr_lookup { }; +#endif + +/* ---------------------------------------------------------------------- */ + +struct au_branch; +struct au_do_lookup_args; +struct au_hinode; +#ifdef CONFIG_AUFS_DIRREN +int au_dr_hino_test_add(struct au_dr_br *dr, ino_t h_ino, + struct au_dr_hino *add_ent); +void au_dr_hino_free(struct au_dr_br *dr); +int au_dr_br_init(struct super_block *sb, struct au_branch *br, + const struct path *path); +int au_dr_br_fin(struct super_block *sb, struct au_branch *br); +int au_dr_rename(struct dentry *src, aufs_bindex_t bindex, + struct qstr *dst_name, void *_rev); +void au_dr_rename_fin(struct dentry *src, aufs_bindex_t btgt, void *rev); +void au_dr_rename_rev(struct dentry *src, aufs_bindex_t bindex, void *rev); +int au_dr_lkup(struct au_do_lookup_args *lkup, struct dentry *dentry, + aufs_bindex_t bindex); +int au_dr_lkup_name(struct au_do_lookup_args *lkup, aufs_bindex_t btgt); +int au_dr_lkup_h_ino(struct au_do_lookup_args *lkup, aufs_bindex_t bindex, + ino_t h_ino); +void au_dr_lkup_fin(struct au_do_lookup_args *lkup); +int au_dr_opt_set(struct super_block *sb); +int au_dr_opt_flush(struct super_block *sb); +int au_dr_opt_clr(struct super_block *sb, int no_flush); +#else +AuStubInt0(au_dr_hino_test_add, struct au_dr_br *dr, ino_t h_ino, + struct au_dr_hino *add_ent); +AuStubVoid(au_dr_hino_free, struct au_dr_br *dr); +AuStubInt0(au_dr_br_init, struct super_block *sb, struct au_branch *br, + const struct path *path); +AuStubInt0(au_dr_br_fin, struct super_block *sb, struct au_branch *br); +AuStubInt0(au_dr_rename, struct dentry *src, aufs_bindex_t bindex, + struct qstr *dst_name, void *_rev); +AuStubVoid(au_dr_rename_fin, struct dentry *src, aufs_bindex_t btgt, void *rev); +AuStubVoid(au_dr_rename_rev, struct dentry *src, aufs_bindex_t bindex, + void *rev); +AuStubInt0(au_dr_lkup, struct au_do_lookup_args *lkup, struct dentry *dentry, + aufs_bindex_t bindex); +AuStubInt0(au_dr_lkup_name, struct au_do_lookup_args *lkup, aufs_bindex_t btgt); +AuStubInt0(au_dr_lkup_h_ino, struct au_do_lookup_args *lkup, + aufs_bindex_t bindex, ino_t h_ino); +AuStubVoid(au_dr_lkup_fin, struct au_do_lookup_args *lkup); +AuStubInt0(au_dr_opt_set, struct super_block *sb); +AuStubInt0(au_dr_opt_flush, struct super_block *sb); +AuStubInt0(au_dr_opt_clr, struct super_block *sb, int no_flush); +#endif + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_DIRREN +static inline int au_dr_ihash(ino_t h_ino) +{ + return h_ino % AuDirren_NHASH; +} +#else +AuStubInt0(au_dr_ihash, ino_t h_ino); +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DIRREN_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/dynop.c +++ linux-azure-5.13-5.13.0/fs/aufs/dynop.c @@ -0,0 +1,368 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2010-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * dynamically customizable operations for regular files + */ + +#include "aufs.h" + +#define DyPrSym(key) AuDbgSym(key->dk_op.dy_hop) + +/* + * How large will these lists be? + * Usually just a few elements, 20-30 at most for each, I guess. + */ +static struct hlist_bl_head dynop[AuDyLast]; + +static struct au_dykey *dy_gfind_get(struct hlist_bl_head *hbl, + const void *h_op) +{ + struct au_dykey *key, *tmp; + struct hlist_bl_node *pos; + + key = NULL; + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(tmp, pos, hbl, dk_hnode) + if (tmp->dk_op.dy_hop == h_op) { + if (kref_get_unless_zero(&tmp->dk_kref)) + key = tmp; + break; + } + hlist_bl_unlock(hbl); + + return key; +} + +static struct au_dykey *dy_bradd(struct au_branch *br, struct au_dykey *key) +{ + struct au_dykey **k, *found; + const void *h_op = key->dk_op.dy_hop; + int i; + + found = NULL; + k = br->br_dykey; + for (i = 0; i < AuBrDynOp; i++) + if (k[i]) { + if (k[i]->dk_op.dy_hop == h_op) { + found = k[i]; + break; + } + } else + break; + if (!found) { + spin_lock(&br->br_dykey_lock); + for (; i < AuBrDynOp; i++) + if (k[i]) { + if (k[i]->dk_op.dy_hop == h_op) { + found = k[i]; + break; + } + } else { + k[i] = key; + break; + } + spin_unlock(&br->br_dykey_lock); + BUG_ON(i == AuBrDynOp); /* expand the array */ + } + + return found; +} + +/* kref_get() if @key is already added */ +static struct au_dykey *dy_gadd(struct hlist_bl_head *hbl, struct au_dykey *key) +{ + struct au_dykey *tmp, *found; + struct hlist_bl_node *pos; + const void *h_op = key->dk_op.dy_hop; + + found = NULL; + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(tmp, pos, hbl, dk_hnode) + if (tmp->dk_op.dy_hop == h_op) { + if (kref_get_unless_zero(&tmp->dk_kref)) + found = tmp; + break; + } + if (!found) + hlist_bl_add_head(&key->dk_hnode, hbl); + hlist_bl_unlock(hbl); + + if (!found) + DyPrSym(key); + return found; +} + +static void dy_free_rcu(struct rcu_head *rcu) +{ + struct au_dykey *key; + + key = container_of(rcu, struct au_dykey, dk_rcu); + DyPrSym(key); + kfree(key); +} + +static void dy_free(struct kref *kref) +{ + struct au_dykey *key; + struct hlist_bl_head *hbl; + + key = container_of(kref, struct au_dykey, dk_kref); + hbl = dynop + key->dk_op.dy_type; + au_hbl_del(&key->dk_hnode, hbl); + call_rcu(&key->dk_rcu, dy_free_rcu); +} + +void au_dy_put(struct au_dykey *key) +{ + kref_put(&key->dk_kref, dy_free); +} + +/* ---------------------------------------------------------------------- */ + +#define DyDbgSize(cnt, op) AuDebugOn(cnt != sizeof(op)/sizeof(void *)) + +#ifdef CONFIG_AUFS_DEBUG +#define DyDbgDeclare(cnt) unsigned int cnt = 0 +#define DyDbgInc(cnt) do { cnt++; } while (0) +#else +#define DyDbgDeclare(cnt) do {} while (0) +#define DyDbgInc(cnt) do {} while (0) +#endif + +#define DySet(func, dst, src, h_op, h_sb) do { \ + DyDbgInc(cnt); \ + if (h_op->func) { \ + if (src.func) \ + dst.func = src.func; \ + else \ + AuDbg("%s %s\n", au_sbtype(h_sb), #func); \ + } \ +} while (0) + +#define DySetForce(func, dst, src) do { \ + AuDebugOn(!src.func); \ + DyDbgInc(cnt); \ + dst.func = src.func; \ +} while (0) + +#define DySetAop(func) \ + DySet(func, dyaop->da_op, aufs_aop, h_aop, h_sb) +#define DySetAopForce(func) \ + DySetForce(func, dyaop->da_op, aufs_aop) + +static void dy_aop(struct au_dykey *key, const void *h_op, + struct super_block *h_sb __maybe_unused) +{ + struct au_dyaop *dyaop = (void *)key; + const struct address_space_operations *h_aop = h_op; + DyDbgDeclare(cnt); + + AuDbg("%s\n", au_sbtype(h_sb)); + + DySetAop(writepage); + DySetAopForce(readpage); /* force */ + DySetAop(writepages); + DySetAop(set_page_dirty); + DySetAop(readpages); + DySetAop(readahead); + DySetAop(write_begin); + DySetAop(write_end); + DySetAop(bmap); + DySetAop(invalidatepage); + DySetAop(releasepage); + DySetAop(freepage); + /* this one will be changed according to an aufs mount option */ + DySetAop(direct_IO); + DySetAop(migratepage); + DySetAop(isolate_page); + DySetAop(putback_page); + DySetAop(launder_page); + DySetAop(is_partially_uptodate); + DySetAop(is_dirty_writeback); + DySetAop(error_remove_page); + DySetAop(swap_activate); + DySetAop(swap_deactivate); + + DyDbgSize(cnt, *h_aop); +} + +/* ---------------------------------------------------------------------- */ + +static void dy_bug(struct kref *kref) +{ + BUG(); +} + +static struct au_dykey *dy_get(struct au_dynop *op, struct au_branch *br) +{ + struct au_dykey *key, *old; + struct hlist_bl_head *hbl; + struct op { + unsigned int sz; + void (*set)(struct au_dykey *key, const void *h_op, + struct super_block *h_sb __maybe_unused); + }; + static const struct op a[] = { + [AuDy_AOP] = { + .sz = sizeof(struct au_dyaop), + .set = dy_aop + } + }; + const struct op *p; + + hbl = dynop + op->dy_type; + key = dy_gfind_get(hbl, op->dy_hop); + if (key) + goto out_add; /* success */ + + p = a + op->dy_type; + key = kzalloc(p->sz, GFP_NOFS); + if (unlikely(!key)) { + key = ERR_PTR(-ENOMEM); + goto out; + } + + key->dk_op.dy_hop = op->dy_hop; + kref_init(&key->dk_kref); + p->set(key, op->dy_hop, au_br_sb(br)); + old = dy_gadd(hbl, key); + if (old) { + au_kfree_rcu(key); + key = old; + } + +out_add: + old = dy_bradd(br, key); + if (old) + /* its ref-count should never be zero here */ + kref_put(&key->dk_kref, dy_bug); +out: + return key; +} + +/* ---------------------------------------------------------------------- */ +/* + * Aufs prohibits O_DIRECT by default even if the branch supports it. + * This behaviour is necessary to return an error from open(O_DIRECT) instead + * of the succeeding I/O. The dio mount option enables O_DIRECT and makes + * open(O_DIRECT) always succeed, but the succeeding I/O may return an error. + * See the aufs manual in detail. + */ +static void dy_adx(struct au_dyaop *dyaop, int do_dx) +{ + if (!do_dx) + dyaop->da_op.direct_IO = NULL; + else + dyaop->da_op.direct_IO = aufs_aop.direct_IO; +} + +static struct au_dyaop *dy_aget(struct au_branch *br, + const struct address_space_operations *h_aop, + int do_dx) +{ + struct au_dyaop *dyaop; + struct au_dynop op; + + op.dy_type = AuDy_AOP; + op.dy_haop = h_aop; + dyaop = (void *)dy_get(&op, br); + if (IS_ERR(dyaop)) + goto out; + dy_adx(dyaop, do_dx); + +out: + return dyaop; +} + +int au_dy_iaop(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode) +{ + int err, do_dx; + struct super_block *sb; + struct au_branch *br; + struct au_dyaop *dyaop; + + AuDebugOn(!S_ISREG(h_inode->i_mode)); + IiMustWriteLock(inode); + + sb = inode->i_sb; + br = au_sbr(sb, bindex); + do_dx = !!au_opt_test(au_mntflags(sb), DIO); + dyaop = dy_aget(br, h_inode->i_mapping->a_ops, do_dx); + err = PTR_ERR(dyaop); + if (IS_ERR(dyaop)) + /* unnecessary to call dy_fput() */ + goto out; + + err = 0; + inode->i_mapping->a_ops = &dyaop->da_op; + +out: + return err; +} + +/* + * Is it safe to replace a_ops during the inode/file is in operation? + * Yes, I hope so. + */ +int au_dy_irefresh(struct inode *inode) +{ + int err; + aufs_bindex_t btop; + struct inode *h_inode; + + err = 0; + if (S_ISREG(inode->i_mode)) { + btop = au_ibtop(inode); + h_inode = au_h_iptr(inode, btop); + err = au_dy_iaop(inode, btop, h_inode); + } + return err; +} + +void au_dy_arefresh(int do_dx) +{ + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + struct au_dykey *key; + + hbl = dynop + AuDy_AOP; + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(key, pos, hbl, dk_hnode) + dy_adx((void *)key, do_dx); + hlist_bl_unlock(hbl); +} + +/* ---------------------------------------------------------------------- */ + +void __init au_dy_init(void) +{ + int i; + + for (i = 0; i < AuDyLast; i++) + INIT_HLIST_BL_HEAD(dynop + i); +} + +void au_dy_fin(void) +{ + int i; + + for (i = 0; i < AuDyLast; i++) + WARN_ON(!hlist_bl_empty(dynop + i)); +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/dynop.h +++ linux-azure-5.13-5.13.0/fs/aufs/dynop.h @@ -0,0 +1,77 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2010-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * dynamically customizable operations (for regular files only) + */ + +#ifndef __AUFS_DYNOP_H__ +#define __AUFS_DYNOP_H__ + +#ifdef __KERNEL__ + +#include +#include + +enum {AuDy_AOP, AuDyLast}; + +struct au_dynop { + int dy_type; + union { + const void *dy_hop; + const struct address_space_operations *dy_haop; + }; +}; + +struct au_dykey { + union { + struct hlist_bl_node dk_hnode; + struct rcu_head dk_rcu; + }; + struct au_dynop dk_op; + + /* + * during I am in the branch local array, kref is gotten. when the + * branch is removed, kref is put. + */ + struct kref dk_kref; +}; + +/* stop unioning since their sizes are very different from each other */ +struct au_dyaop { + struct au_dykey da_key; + struct address_space_operations da_op; /* not const */ +}; +/* make sure that 'struct au_dykey *' can be any type */ +static_assert(!offsetof(struct au_dyaop, da_key)); + +/* ---------------------------------------------------------------------- */ + +/* dynop.c */ +struct au_branch; +void au_dy_put(struct au_dykey *key); +int au_dy_iaop(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode); +int au_dy_irefresh(struct inode *inode); +void au_dy_arefresh(int do_dio); + +void __init au_dy_init(void); +void au_dy_fin(void); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_DYNOP_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/export.c +++ linux-azure-5.13-5.13.0/fs/aufs/export.c @@ -0,0 +1,837 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * export via nfs + */ + +#include +#include +#include +#include +#include +#include +#include "aufs.h" + +union conv { +#ifdef CONFIG_AUFS_INO_T_64 + __u32 a[2]; +#else + __u32 a[1]; +#endif + ino_t ino; +}; + +static ino_t decode_ino(__u32 *a) +{ + union conv u; + + BUILD_BUG_ON(sizeof(u.ino) != sizeof(u.a)); + u.a[0] = a[0]; +#ifdef CONFIG_AUFS_INO_T_64 + u.a[1] = a[1]; +#endif + return u.ino; +} + +static void encode_ino(__u32 *a, ino_t ino) +{ + union conv u; + + u.ino = ino; + a[0] = u.a[0]; +#ifdef CONFIG_AUFS_INO_T_64 + a[1] = u.a[1]; +#endif +} + +/* NFS file handle */ +enum { + Fh_br_id, + Fh_sigen, +#ifdef CONFIG_AUFS_INO_T_64 + /* support 64bit inode number */ + Fh_ino1, + Fh_ino2, + Fh_dir_ino1, + Fh_dir_ino2, +#else + Fh_ino1, + Fh_dir_ino1, +#endif + Fh_igen, + Fh_h_type, + Fh_tail, + + Fh_ino = Fh_ino1, + Fh_dir_ino = Fh_dir_ino1 +}; + +static int au_test_anon(struct dentry *dentry) +{ + /* note: read d_flags without d_lock */ + return !!(dentry->d_flags & DCACHE_DISCONNECTED); +} + +int au_test_nfsd(void) +{ + int ret; + struct task_struct *tsk = current; + char comm[sizeof(tsk->comm)]; + + ret = 0; + if (tsk->flags & PF_KTHREAD) { + get_task_comm(comm, tsk); + ret = !strcmp(comm, "nfsd"); + } + + return ret; +} + +/* ---------------------------------------------------------------------- */ +/* inode generation external table */ + +void au_xigen_inc(struct inode *inode) +{ + loff_t pos; + ssize_t sz; + __u32 igen; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + sb = inode->i_sb; + AuDebugOn(!au_opt_test(au_mntflags(sb), XINO)); + + sbinfo = au_sbi(sb); + pos = inode->i_ino; + pos *= sizeof(igen); + igen = inode->i_generation + 1; + sz = xino_fwrite(sbinfo->si_xigen, &igen, sizeof(igen), &pos); + if (sz == sizeof(igen)) + return; /* success */ + + if (unlikely(sz >= 0)) + AuIOErr("xigen error (%zd)\n", sz); +} + +int au_xigen_new(struct inode *inode) +{ + int err; + loff_t pos; + ssize_t sz; + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct file *file; + + err = 0; + /* todo: dirty, at mount time */ + if (inode->i_ino == AUFS_ROOT_INO) + goto out; + sb = inode->i_sb; + SiMustAnyLock(sb); + if (unlikely(!au_opt_test(au_mntflags(sb), XINO))) + goto out; + + err = -EFBIG; + pos = inode->i_ino; + if (unlikely(au_loff_max / sizeof(inode->i_generation) - 1 < pos)) { + AuIOErr1("too large i%lld\n", pos); + goto out; + } + pos *= sizeof(inode->i_generation); + + err = 0; + sbinfo = au_sbi(sb); + file = sbinfo->si_xigen; + BUG_ON(!file); + + if (vfsub_f_size_read(file) + < pos + sizeof(inode->i_generation)) { + inode->i_generation = atomic_inc_return(&sbinfo->si_xigen_next); + sz = xino_fwrite(file, &inode->i_generation, + sizeof(inode->i_generation), &pos); + } else + sz = xino_fread(file, &inode->i_generation, + sizeof(inode->i_generation), &pos); + if (sz == sizeof(inode->i_generation)) + goto out; /* success */ + + err = sz; + if (unlikely(sz >= 0)) { + err = -EIO; + AuIOErr("xigen error (%zd)\n", sz); + } + +out: + return err; +} + +int au_xigen_set(struct super_block *sb, struct path *path) +{ + int err; + struct au_sbinfo *sbinfo; + struct file *file; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + file = au_xino_create2(sb, path, sbinfo->si_xigen); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + err = 0; + if (sbinfo->si_xigen) + fput(sbinfo->si_xigen); + sbinfo->si_xigen = file; + +out: + AuTraceErr(err); + return err; +} + +void au_xigen_clr(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + if (sbinfo->si_xigen) { + fput(sbinfo->si_xigen); + sbinfo->si_xigen = NULL; + } +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *decode_by_ino(struct super_block *sb, ino_t ino, + ino_t dir_ino) +{ + struct dentry *dentry, *d; + struct inode *inode; + unsigned int sigen; + + dentry = NULL; + inode = ilookup(sb, ino); + if (!inode) + goto out; + + dentry = ERR_PTR(-ESTALE); + sigen = au_sigen(sb); + if (unlikely(au_is_bad_inode(inode) + || IS_DEADDIR(inode) + || sigen != au_iigen(inode, NULL))) + goto out_iput; + + dentry = NULL; + if (!dir_ino || S_ISDIR(inode->i_mode)) + dentry = d_find_alias(inode); + else { + spin_lock(&inode->i_lock); + hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias) { + spin_lock(&d->d_lock); + if (!au_test_anon(d) + && d_inode(d->d_parent)->i_ino == dir_ino) { + dentry = dget_dlock(d); + spin_unlock(&d->d_lock); + break; + } + spin_unlock(&d->d_lock); + } + spin_unlock(&inode->i_lock); + } + if (unlikely(dentry && au_digen_test(dentry, sigen))) { + /* need to refresh */ + dput(dentry); + dentry = NULL; + } + +out_iput: + iput(inode); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +/* todo: dirty? */ +/* if exportfs_decode_fh() passed vfsmount*, we could be happy */ + +struct au_compare_mnt_args { + /* input */ + struct super_block *sb; + + /* output */ + struct vfsmount *mnt; +}; + +static int au_compare_mnt(struct vfsmount *mnt, void *arg) +{ + struct au_compare_mnt_args *a = arg; + + if (mnt->mnt_sb != a->sb) + return 0; + a->mnt = mntget(mnt); + return 1; +} + +static struct vfsmount *au_mnt_get(struct super_block *sb) +{ + int err; + struct path root; + struct au_compare_mnt_args args = { + .sb = sb + }; + + get_fs_root(current->fs, &root); + rcu_read_lock(); + err = iterate_mounts(au_compare_mnt, &args, root.mnt); + rcu_read_unlock(); + path_put(&root); + AuDebugOn(!err); + AuDebugOn(!args.mnt); + return args.mnt; +} + +struct au_nfsd_si_lock { + unsigned int sigen; + aufs_bindex_t bindex, br_id; + unsigned char force_lock; +}; + +static int si_nfsd_read_lock(struct super_block *sb, + struct au_nfsd_si_lock *nsi_lock) +{ + int err; + aufs_bindex_t bindex; + + si_read_lock(sb, AuLock_FLUSH); + + /* branch id may be wrapped around */ + err = 0; + bindex = au_br_index(sb, nsi_lock->br_id); + if (bindex >= 0 && nsi_lock->sigen + AUFS_BRANCH_MAX > au_sigen(sb)) + goto out; /* success */ + + err = -ESTALE; + bindex = -1; + if (!nsi_lock->force_lock) + si_read_unlock(sb); + +out: + nsi_lock->bindex = bindex; + return err; +} + +struct find_name_by_ino { + struct dir_context ctx; + int called, found; + ino_t ino; + char *name; + int namelen; +}; + +static int +find_name_by_ino(struct dir_context *ctx, const char *name, int namelen, + loff_t offset, u64 ino, unsigned int d_type) +{ + struct find_name_by_ino *a = container_of(ctx, struct find_name_by_ino, + ctx); + + a->called++; + if (a->ino != ino) + return 0; + + memcpy(a->name, name, namelen); + a->namelen = namelen; + a->found = 1; + return 1; +} + +static struct dentry *au_lkup_by_ino(struct path *path, ino_t ino, + struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry, *parent; + struct file *file; + struct inode *dir; + struct find_name_by_ino arg = { + .ctx = { + .actor = find_name_by_ino + } + }; + int err; + + parent = path->dentry; + if (nsi_lock) + si_read_unlock(parent->d_sb); + file = vfsub_dentry_open(path, au_dir_roflags); + dentry = (void *)file; + if (IS_ERR(file)) + goto out; + + dentry = ERR_PTR(-ENOMEM); + arg.name = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!arg.name)) + goto out_file; + arg.ino = ino; + arg.found = 0; + do { + arg.called = 0; + /* smp_mb(); */ + err = vfsub_iterate_dir(file, &arg.ctx); + } while (!err && !arg.found && arg.called); + dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_name; + /* instead of ENOENT */ + dentry = ERR_PTR(-ESTALE); + if (!arg.found) + goto out_name; + + /* do not call vfsub_lkup_one() */ + dir = d_inode(parent); + dentry = vfsub_lookup_one_len_unlocked(arg.name, parent, arg.namelen); + AuTraceErrPtr(dentry); + if (IS_ERR(dentry)) + goto out_name; + AuDebugOn(au_test_anon(dentry)); + if (unlikely(d_really_is_negative(dentry))) { + dput(dentry); + dentry = ERR_PTR(-ENOENT); + } + +out_name: + free_page((unsigned long)arg.name); +out_file: + fput(file); +out: + if (unlikely(nsi_lock + && si_nfsd_read_lock(parent->d_sb, nsi_lock) < 0)) + if (!IS_ERR(dentry)) { + dput(dentry); + dentry = ERR_PTR(-ESTALE); + } + AuTraceErrPtr(dentry); + return dentry; +} + +static struct dentry *decode_by_dir_ino(struct super_block *sb, ino_t ino, + ino_t dir_ino, + struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry; + struct path path; + + if (dir_ino != AUFS_ROOT_INO) { + path.dentry = decode_by_ino(sb, dir_ino, 0); + dentry = path.dentry; + if (!path.dentry || IS_ERR(path.dentry)) + goto out; + AuDebugOn(au_test_anon(path.dentry)); + } else + path.dentry = dget(sb->s_root); + + path.mnt = au_mnt_get(sb); + dentry = au_lkup_by_ino(&path, ino, nsi_lock); + path_put(&path); + +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +static int h_acceptable(void *expv, struct dentry *dentry) +{ + return 1; +} + +static char *au_build_path(struct dentry *h_parent, struct path *h_rootpath, + char *buf, int len, struct super_block *sb) +{ + char *p; + int n; + struct path path; + + p = d_path(h_rootpath, buf, len); + if (IS_ERR(p)) + goto out; + n = strlen(p); + + path.mnt = h_rootpath->mnt; + path.dentry = h_parent; + p = d_path(&path, buf, len); + if (IS_ERR(p)) + goto out; + if (n != 1) + p += n; + + path.mnt = au_mnt_get(sb); + path.dentry = sb->s_root; + p = d_path(&path, buf, len - strlen(p)); + mntput(path.mnt); + if (IS_ERR(p)) + goto out; + if (n != 1) + p[strlen(p)] = '/'; + +out: + AuTraceErrPtr(p); + return p; +} + +static +struct dentry *decode_by_path(struct super_block *sb, ino_t ino, __u32 *fh, + int fh_len, struct au_nfsd_si_lock *nsi_lock) +{ + struct dentry *dentry, *h_parent, *root; + struct super_block *h_sb; + char *pathname, *p; + struct vfsmount *h_mnt; + struct au_branch *br; + int err; + struct path path; + + br = au_sbr(sb, nsi_lock->bindex); + h_mnt = au_br_mnt(br); + h_sb = h_mnt->mnt_sb; + /* todo: call lower fh_to_dentry()? fh_to_parent()? */ + lockdep_off(); + h_parent = exportfs_decode_fh(h_mnt, (void *)(fh + Fh_tail), + fh_len - Fh_tail, fh[Fh_h_type], + h_acceptable, /*context*/NULL); + lockdep_on(); + dentry = h_parent; + if (unlikely(!h_parent || IS_ERR(h_parent))) { + AuWarn1("%s decode_fh failed, %ld\n", + au_sbtype(h_sb), PTR_ERR(h_parent)); + goto out; + } + dentry = NULL; + if (unlikely(au_test_anon(h_parent))) { + AuWarn1("%s decode_fh returned a disconnected dentry\n", + au_sbtype(h_sb)); + goto out_h_parent; + } + + dentry = ERR_PTR(-ENOMEM); + pathname = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!pathname)) + goto out_h_parent; + + root = sb->s_root; + path.mnt = h_mnt; + di_read_lock_parent(root, !AuLock_IR); + path.dentry = au_h_dptr(root, nsi_lock->bindex); + di_read_unlock(root, !AuLock_IR); + p = au_build_path(h_parent, &path, pathname, PAGE_SIZE, sb); + dentry = (void *)p; + if (IS_ERR(p)) + goto out_pathname; + + si_read_unlock(sb); + err = vfsub_kern_path(p, LOOKUP_FOLLOW | LOOKUP_DIRECTORY, &path); + dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_relock; + + dentry = ERR_PTR(-ENOENT); + AuDebugOn(au_test_anon(path.dentry)); + if (unlikely(d_really_is_negative(path.dentry))) + goto out_path; + + if (ino != d_inode(path.dentry)->i_ino) + dentry = au_lkup_by_ino(&path, ino, /*nsi_lock*/NULL); + else + dentry = dget(path.dentry); + +out_path: + path_put(&path); +out_relock: + if (unlikely(si_nfsd_read_lock(sb, nsi_lock) < 0)) + if (!IS_ERR(dentry)) { + dput(dentry); + dentry = ERR_PTR(-ESTALE); + } +out_pathname: + free_page((unsigned long)pathname); +out_h_parent: + dput(h_parent); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry * +aufs_fh_to_dentry(struct super_block *sb, struct fid *fid, int fh_len, + int fh_type) +{ + struct dentry *dentry; + __u32 *fh = fid->raw; + struct au_branch *br; + ino_t ino, dir_ino; + struct au_nfsd_si_lock nsi_lock = { + .force_lock = 0 + }; + + dentry = ERR_PTR(-ESTALE); + /* it should never happen, but the file handle is unreliable */ + if (unlikely(fh_len < Fh_tail)) + goto out; + nsi_lock.sigen = fh[Fh_sigen]; + nsi_lock.br_id = fh[Fh_br_id]; + + /* branch id may be wrapped around */ + br = NULL; + if (unlikely(si_nfsd_read_lock(sb, &nsi_lock))) + goto out; + nsi_lock.force_lock = 1; + + /* is this inode still cached? */ + ino = decode_ino(fh + Fh_ino); + /* it should never happen */ + if (unlikely(ino == AUFS_ROOT_INO)) + goto out_unlock; + + dir_ino = decode_ino(fh + Fh_dir_ino); + dentry = decode_by_ino(sb, ino, dir_ino); + if (IS_ERR(dentry)) + goto out_unlock; + if (dentry) + goto accept; + + /* is the parent dir cached? */ + br = au_sbr(sb, nsi_lock.bindex); + au_lcnt_inc(&br->br_nfiles); + dentry = decode_by_dir_ino(sb, ino, dir_ino, &nsi_lock); + if (IS_ERR(dentry)) + goto out_unlock; + if (dentry) + goto accept; + + /* lookup path */ + dentry = decode_by_path(sb, ino, fh, fh_len, &nsi_lock); + if (IS_ERR(dentry)) + goto out_unlock; + if (unlikely(!dentry)) + /* todo?: make it ESTALE */ + goto out_unlock; + +accept: + if (!au_digen_test(dentry, au_sigen(sb)) + && d_inode(dentry)->i_generation == fh[Fh_igen]) + goto out_unlock; /* success */ + + dput(dentry); + dentry = ERR_PTR(-ESTALE); +out_unlock: + if (br) + au_lcnt_dec(&br->br_nfiles); + si_read_unlock(sb); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +#if 0 /* reserved for future use */ +/* support subtreecheck option */ +static struct dentry *aufs_fh_to_parent(struct super_block *sb, struct fid *fid, + int fh_len, int fh_type) +{ + struct dentry *parent; + __u32 *fh = fid->raw; + ino_t dir_ino; + + dir_ino = decode_ino(fh + Fh_dir_ino); + parent = decode_by_ino(sb, dir_ino, 0); + if (IS_ERR(parent)) + goto out; + if (!parent) + parent = decode_by_path(sb, au_br_index(sb, fh[Fh_br_id]), + dir_ino, fh, fh_len); + +out: + AuTraceErrPtr(parent); + return parent; +} +#endif + +/* ---------------------------------------------------------------------- */ + +static int aufs_encode_fh(struct inode *inode, __u32 *fh, int *max_len, + struct inode *dir) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb, *h_sb; + struct dentry *dentry, *parent, *h_parent; + struct inode *h_dir; + struct au_branch *br; + + err = -ENOSPC; + if (unlikely(*max_len <= Fh_tail)) { + AuWarn1("NFSv2 client (max_len %d)?\n", *max_len); + goto out; + } + + err = FILEID_ROOT; + if (inode->i_ino == AUFS_ROOT_INO) { + AuDebugOn(inode->i_ino != AUFS_ROOT_INO); + goto out; + } + + h_parent = NULL; + sb = inode->i_sb; + err = si_read_lock(sb, AuLock_FLUSH); + if (unlikely(err)) + goto out; + +#ifdef CONFIG_AUFS_DEBUG + if (unlikely(!au_opt_test(au_mntflags(sb), XINO))) + AuWarn1("NFS-exporting requires xino\n"); +#endif + err = -EIO; + parent = NULL; + ii_read_lock_child(inode); + bindex = au_ibtop(inode); + if (!dir) { + dentry = d_find_any_alias(inode); + if (unlikely(!dentry)) + goto out_unlock; + AuDebugOn(au_test_anon(dentry)); + parent = dget_parent(dentry); + dput(dentry); + if (unlikely(!parent)) + goto out_unlock; + if (d_really_is_positive(parent)) + dir = d_inode(parent); + } + + ii_read_lock_parent(dir); + h_dir = au_h_iptr(dir, bindex); + ii_read_unlock(dir); + if (unlikely(!h_dir)) + goto out_parent; + h_parent = d_find_any_alias(h_dir); + if (unlikely(!h_parent)) + goto out_hparent; + + err = -EPERM; + br = au_sbr(sb, bindex); + h_sb = au_br_sb(br); + if (unlikely(!h_sb->s_export_op)) { + AuErr1("%s branch is not exportable\n", au_sbtype(h_sb)); + goto out_hparent; + } + + fh[Fh_br_id] = br->br_id; + fh[Fh_sigen] = au_sigen(sb); + encode_ino(fh + Fh_ino, inode->i_ino); + encode_ino(fh + Fh_dir_ino, dir->i_ino); + fh[Fh_igen] = inode->i_generation; + + *max_len -= Fh_tail; + fh[Fh_h_type] = exportfs_encode_fh(h_parent, (void *)(fh + Fh_tail), + max_len, + /*connectable or subtreecheck*/0); + err = fh[Fh_h_type]; + *max_len += Fh_tail; + /* todo: macros? */ + if (err != FILEID_INVALID) + err = 99; + else + AuWarn1("%s encode_fh failed\n", au_sbtype(h_sb)); + +out_hparent: + dput(h_parent); +out_parent: + dput(parent); +out_unlock: + ii_read_unlock(inode); + si_read_unlock(sb); +out: + if (unlikely(err < 0)) + err = FILEID_INVALID; + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_commit_metadata(struct inode *inode) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb; + struct inode *h_inode; + int (*f)(struct inode *inode); + + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + ii_write_lock_child(inode); + bindex = au_ibtop(inode); + AuDebugOn(bindex < 0); + h_inode = au_h_iptr(inode, bindex); + + f = h_inode->i_sb->s_export_op->commit_metadata; + if (f) + err = f(h_inode); + else { + struct writeback_control wbc = { + .sync_mode = WB_SYNC_ALL, + .nr_to_write = 0 /* metadata only */ + }; + + err = sync_inode(h_inode, &wbc); + } + + au_cpup_attr_timesizes(inode); + ii_write_unlock(inode); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct export_operations aufs_export_op = { + .fh_to_dentry = aufs_fh_to_dentry, + /* .fh_to_parent = aufs_fh_to_parent, */ + .encode_fh = aufs_encode_fh, + .commit_metadata = aufs_commit_metadata +}; + +void au_export_init(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + __u32 u; + + BUILD_BUG_ON_MSG(IS_BUILTIN(CONFIG_AUFS_FS) + && IS_MODULE(CONFIG_EXPORTFS), + AUFS_NAME ": unsupported configuration " + "CONFIG_EXPORTFS=m and CONFIG_AUFS_FS=y"); + + sb->s_export_op = &aufs_export_op; + sbinfo = au_sbi(sb); + sbinfo->si_xigen = NULL; + get_random_bytes(&u, sizeof(u)); + BUILD_BUG_ON(sizeof(u) != sizeof(int)); + atomic_set(&sbinfo->si_xigen_next, u); +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/f_op.c +++ linux-azure-5.13-5.13.0/fs/aufs/f_op.c @@ -0,0 +1,771 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * file and vm operations + */ + +#include +#include +#include +#include +#include "aufs.h" + +int au_do_open_nondir(struct file *file, int flags, struct file *h_file) +{ + int err; + aufs_bindex_t bindex; + struct dentry *dentry, *h_dentry; + struct au_finfo *finfo; + struct inode *h_inode; + + FiMustWriteLock(file); + + err = 0; + dentry = file->f_path.dentry; + AuDebugOn(IS_ERR_OR_NULL(dentry)); + finfo = au_fi(file); + memset(&finfo->fi_htop, 0, sizeof(finfo->fi_htop)); + atomic_set(&finfo->fi_mmapped, 0); + bindex = au_dbtop(dentry); + if (!h_file) { + h_dentry = au_h_dptr(dentry, bindex); + err = vfsub_test_mntns(file->f_path.mnt, h_dentry->d_sb); + if (unlikely(err)) + goto out; + h_file = au_h_open(dentry, bindex, flags, file, /*force_wr*/0); + if (IS_ERR(h_file)) { + err = PTR_ERR(h_file); + goto out; + } + } else { + h_dentry = h_file->f_path.dentry; + err = vfsub_test_mntns(file->f_path.mnt, h_dentry->d_sb); + if (unlikely(err)) + goto out; + /* br ref is already inc-ed */ + } + + if ((flags & __O_TMPFILE) + && !(flags & O_EXCL)) { + h_inode = file_inode(h_file); + spin_lock(&h_inode->i_lock); + h_inode->i_state |= I_LINKABLE; + spin_unlock(&h_inode->i_lock); + } + au_set_fbtop(file, bindex); + au_set_h_fptr(file, bindex, h_file); + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + +out: + return err; +} + +static int aufs_open_nondir(struct inode *inode __maybe_unused, + struct file *file) +{ + int err; + struct super_block *sb; + struct au_do_open_args args = { + .open = au_do_open_nondir + }; + + AuDbg("%pD, f_flags 0x%x, f_mode 0x%x\n", + file, vfsub_file_flags(file), file->f_mode); + + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + err = au_do_open(file, &args); + si_read_unlock(sb); + return err; +} + +int aufs_release_nondir(struct inode *inode __maybe_unused, struct file *file) +{ + struct au_finfo *finfo; + aufs_bindex_t bindex; + + finfo = au_fi(file); + au_hbl_del(&finfo->fi_hlist, + &au_sbi(file->f_path.dentry->d_sb)->si_files); + bindex = finfo->fi_btop; + if (bindex >= 0) + au_set_h_fptr(file, bindex, NULL); + + au_finfo_fin(file); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static int au_do_flush_nondir(struct file *file, fl_owner_t id) +{ + int err; + struct file *h_file; + + err = 0; + h_file = au_hf_top(file); + if (h_file) + err = vfsub_flush(h_file, id); + return err; +} + +static int aufs_flush_nondir(struct file *file, fl_owner_t id) +{ + return au_do_flush(file, id, au_do_flush_nondir); +} + +/* ---------------------------------------------------------------------- */ +/* + * read and write functions acquire [fdi]_rwsem once, but release before + * mmap_sem. This is because to stop a race condition between mmap(2). + * Releasing these aufs-rwsem should be safe, no branch-management (by keeping + * si_rwsem), no harmful copy-up should happen. Actually copy-up may happen in + * read functions after [fdi]_rwsem are released, but it should be harmless. + */ + +/* Callers should call au_read_post() or fput() in the end */ +struct file *au_read_pre(struct file *file, int keep_fi, unsigned int lsc) +{ + struct file *h_file; + int err; + + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/0, lsc); + if (!err) { + di_read_unlock(file->f_path.dentry, AuLock_IR); + h_file = au_hf_top(file); + get_file(h_file); + if (!keep_fi) + fi_read_unlock(file); + } else + h_file = ERR_PTR(err); + + return h_file; +} + +static void au_read_post(struct inode *inode, struct file *h_file) +{ + /* update without lock, I don't think it a problem */ + fsstack_copy_attr_atime(inode, file_inode(h_file)); + fput(h_file); +} + +struct au_write_pre { + /* input */ + unsigned int lsc; + + /* output */ + blkcnt_t blks; + aufs_bindex_t btop; +}; + +/* + * return with iinfo is write-locked + * callers should call au_write_post() or iinfo_write_unlock() + fput() in the + * end + */ +static struct file *au_write_pre(struct file *file, int do_ready, + struct au_write_pre *wpre) +{ + struct file *h_file; + struct dentry *dentry; + int err; + unsigned int lsc; + struct au_pin pin; + + lsc = 0; + if (wpre) + lsc = wpre->lsc; + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1, lsc); + h_file = ERR_PTR(err); + if (unlikely(err)) + goto out; + + dentry = file->f_path.dentry; + if (do_ready) { + err = au_ready_to_write(file, -1, &pin); + if (unlikely(err)) { + h_file = ERR_PTR(err); + di_write_unlock(dentry); + goto out_fi; + } + } + + di_downgrade_lock(dentry, /*flags*/0); + if (wpre) + wpre->btop = au_fbtop(file); + h_file = au_hf_top(file); + get_file(h_file); + if (wpre) + wpre->blks = file_inode(h_file)->i_blocks; + if (do_ready) + au_unpin(&pin); + di_read_unlock(dentry, /*flags*/0); + +out_fi: + fi_write_unlock(file); +out: + return h_file; +} + +static void au_write_post(struct inode *inode, struct file *h_file, + struct au_write_pre *wpre, ssize_t written) +{ + struct inode *h_inode; + + au_cpup_attr_timesizes(inode); + AuDebugOn(au_ibtop(inode) != wpre->btop); + h_inode = file_inode(h_file); + inode->i_mode = h_inode->i_mode; + ii_write_unlock(inode); + /* AuDbg("blks %llu, %llu\n", (u64)blks, (u64)h_inode->i_blocks); */ + if (written > 0) + au_fhsm_wrote(inode->i_sb, wpre->btop, + /*force*/h_inode->i_blocks > wpre->blks); + fput(h_file); +} + +/* + * todo: very ugly + * it locks both of i_mutex and si_rwsem for read in safe. + * if the plink maintenance mode continues forever (that is the problem), + * may loop forever. + */ +static void au_mtx_and_read_lock(struct inode *inode) +{ + int err; + struct super_block *sb = inode->i_sb; + + while (1) { + inode_lock(inode); + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (!err) + break; + inode_unlock(inode); + si_read_lock(sb, AuLock_NOPLMW); + si_read_unlock(sb); + } +} + +static ssize_t au_do_iter(struct file *h_file, int rw, struct kiocb *kio, + struct iov_iter *iov_iter) +{ + ssize_t err; + struct file *file; + ssize_t (*iter)(struct kiocb *, struct iov_iter *); + + err = security_file_permission(h_file, rw); + if (unlikely(err)) + goto out; + + err = -ENOSYS; /* the branch doesn't have its ->(read|write)_iter() */ + iter = NULL; + if (rw == MAY_READ) + iter = h_file->f_op->read_iter; + else if (rw == MAY_WRITE) + iter = h_file->f_op->write_iter; + + file = kio->ki_filp; + kio->ki_filp = h_file; + if (iter) { + lockdep_off(); + err = iter(kio, iov_iter); + lockdep_on(); + } else + /* currently there is no such fs */ + WARN_ON_ONCE(1); + kio->ki_filp = file; + +out: + return err; +} + +static ssize_t aufs_read_iter(struct kiocb *kio, struct iov_iter *iov_iter) +{ + ssize_t err; + struct file *file, *h_file; + struct inode *inode; + struct super_block *sb; + + file = kio->ki_filp; + inode = file_inode(file); + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/1, /*lsc*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + if (0 && au_test_loopback_kthread()) { + au_warn_loopback(h_file->f_path.dentry->d_sb); + if (file->f_mapping != h_file->f_mapping) { + file->f_mapping = h_file->f_mapping; + smp_mb(); /* unnecessary? */ + } + } + fi_read_unlock(file); + + err = au_do_iter(h_file, MAY_READ, kio, iov_iter); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + au_read_post(inode, h_file); + +out: + si_read_unlock(sb); + return err; +} + +static ssize_t aufs_write_iter(struct kiocb *kio, struct iov_iter *iov_iter) +{ + ssize_t err; + struct au_write_pre wpre; + struct inode *inode; + struct file *file, *h_file; + + file = kio->ki_filp; + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + wpre.lsc = 0; + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = au_do_iter(h_file, MAY_WRITE, kio, iov_iter); + au_write_post(inode, h_file, &wpre, err); + +out: + si_read_unlock(inode->i_sb); + inode_unlock(inode); + return err; +} + +/* + * We may be able to remove aufs_splice_{read,write}() since almost all FSes + * don't have their own .splice_{read,write} implimentations, and they use + * generic_file_splice_read() and iter_file_splice_write() who can act like the + * simple converters to f_op->iter_read() and ->iter_write(). + * But we keep our own implementations because some non-mainlined FSes may have + * their own .splice_{read,write} implimentations and aufs doesn't want to take + * away an opportunity to co-work with aufs from them. + */ +static ssize_t aufs_splice_read(struct file *file, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) +{ + ssize_t err; + struct file *h_file; + struct inode *inode; + struct super_block *sb; + + inode = file_inode(file); + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/0, /*lsc*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = vfsub_splice_to(h_file, ppos, pipe, len, flags); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + au_read_post(inode, h_file); + +out: + si_read_unlock(sb); + return err; +} + +static ssize_t +aufs_splice_write(struct pipe_inode_info *pipe, struct file *file, loff_t *ppos, + size_t len, unsigned int flags) +{ + ssize_t err; + struct au_write_pre wpre; + struct inode *inode; + struct file *h_file; + + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + wpre.lsc = 0; + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = vfsub_splice_from(pipe, h_file, ppos, len, flags); + au_write_post(inode, h_file, &wpre, err); + +out: + si_read_unlock(inode->i_sb); + inode_unlock(inode); + return err; +} + +static long aufs_fallocate(struct file *file, int mode, loff_t offset, + loff_t len) +{ + long err; + struct au_write_pre wpre; + struct inode *inode; + struct file *h_file; + + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + wpre.lsc = 0; + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + lockdep_off(); + err = vfs_fallocate(h_file, mode, offset, len); + lockdep_on(); + au_write_post(inode, h_file, &wpre, /*written*/1); + +out: + si_read_unlock(inode->i_sb); + inode_unlock(inode); + return err; +} + +static ssize_t aufs_copy_file_range(struct file *src, loff_t src_pos, + struct file *dst, loff_t dst_pos, + size_t len, unsigned int flags) +{ + ssize_t err; + struct au_write_pre wpre; + enum { SRC, DST }; + struct { + struct inode *inode; + struct file *h_file; + struct super_block *h_sb; + } a[2]; +#define a_src a[SRC] +#define a_dst a[DST] + + err = -EINVAL; + a_src.inode = file_inode(src); + if (unlikely(!S_ISREG(a_src.inode->i_mode))) + goto out; + a_dst.inode = file_inode(dst); + if (unlikely(!S_ISREG(a_dst.inode->i_mode))) + goto out; + + au_mtx_and_read_lock(a_dst.inode); + /* + * in order to match the order in di_write_lock2_{child,parent}(), + * use f_path.dentry for this comparison. + */ + if (src->f_path.dentry < dst->f_path.dentry) { + a_src.h_file = au_read_pre(src, /*keep_fi*/1, AuLsc_FI_1); + err = PTR_ERR(a_src.h_file); + if (IS_ERR(a_src.h_file)) + goto out_si; + + wpre.lsc = AuLsc_FI_2; + a_dst.h_file = au_write_pre(dst, /*do_ready*/1, &wpre); + err = PTR_ERR(a_dst.h_file); + if (IS_ERR(a_dst.h_file)) { + au_read_post(a_src.inode, a_src.h_file); + goto out_si; + } + } else { + wpre.lsc = AuLsc_FI_1; + a_dst.h_file = au_write_pre(dst, /*do_ready*/1, &wpre); + err = PTR_ERR(a_dst.h_file); + if (IS_ERR(a_dst.h_file)) + goto out_si; + + a_src.h_file = au_read_pre(src, /*keep_fi*/1, AuLsc_FI_2); + err = PTR_ERR(a_src.h_file); + if (IS_ERR(a_src.h_file)) { + au_write_post(a_dst.inode, a_dst.h_file, &wpre, + /*written*/0); + goto out_si; + } + } + + err = -EXDEV; + a_src.h_sb = file_inode(a_src.h_file)->i_sb; + a_dst.h_sb = file_inode(a_dst.h_file)->i_sb; + if (unlikely(a_src.h_sb != a_dst.h_sb)) { + AuDbgFile(src); + AuDbgFile(dst); + goto out_file; + } + + err = vfsub_copy_file_range(a_src.h_file, src_pos, a_dst.h_file, + dst_pos, len, flags); + +out_file: + au_write_post(a_dst.inode, a_dst.h_file, &wpre, err); + fi_read_unlock(src); + au_read_post(a_src.inode, a_src.h_file); +out_si: + si_read_unlock(a_dst.inode->i_sb); + inode_unlock(a_dst.inode); +out: + return err; +#undef a_src +#undef a_dst +} + +/* ---------------------------------------------------------------------- */ + +/* + * The locking order around current->mmap_sem. + * - in most and regular cases + * file I/O syscall -- aufs_read() or something + * -- si_rwsem for read -- mmap_sem + * (Note that [fdi]i_rwsem are released before mmap_sem). + * - in mmap case + * mmap(2) -- mmap_sem -- aufs_mmap() -- si_rwsem for read -- [fdi]i_rwsem + * This AB-BA order is definitely bad, but is not a problem since "si_rwsem for + * read" allows multiple processes to acquire it and [fdi]i_rwsem are not held + * in file I/O. Aufs needs to stop lockdep in aufs_mmap() though. + * It means that when aufs acquires si_rwsem for write, the process should never + * acquire mmap_sem. + * + * Actually aufs_iterate() holds [fdi]i_rwsem before mmap_sem, but this is not a + * problem either since any directory is not able to be mmap-ed. + * The similar scenario is applied to aufs_readlink() too. + */ + +#if 0 /* stop calling security_file_mmap() */ +/* cf. linux/include/linux/mman.h: calc_vm_prot_bits() */ +#define AuConv_VM_PROT(f, b) _calc_vm_trans(f, VM_##b, PROT_##b) + +static unsigned long au_arch_prot_conv(unsigned long flags) +{ + /* currently ppc64 only */ +#ifdef CONFIG_PPC64 + /* cf. linux/arch/powerpc/include/asm/mman.h */ + AuDebugOn(arch_calc_vm_prot_bits(-1) != VM_SAO); + return AuConv_VM_PROT(flags, SAO); +#else + AuDebugOn(arch_calc_vm_prot_bits(-1)); + return 0; +#endif +} + +static unsigned long au_prot_conv(unsigned long flags) +{ + return AuConv_VM_PROT(flags, READ) + | AuConv_VM_PROT(flags, WRITE) + | AuConv_VM_PROT(flags, EXEC) + | au_arch_prot_conv(flags); +} + +/* cf. linux/include/linux/mman.h: calc_vm_flag_bits() */ +#define AuConv_VM_MAP(f, b) _calc_vm_trans(f, VM_##b, MAP_##b) + +static unsigned long au_flag_conv(unsigned long flags) +{ + return AuConv_VM_MAP(flags, GROWSDOWN) + | AuConv_VM_MAP(flags, DENYWRITE) + | AuConv_VM_MAP(flags, LOCKED); +} +#endif + +static int aufs_mmap(struct file *file, struct vm_area_struct *vma) +{ + int err; + const unsigned char wlock + = (file->f_mode & FMODE_WRITE) && (vma->vm_flags & VM_SHARED); + struct super_block *sb; + struct file *h_file; + struct inode *inode; + + AuDbgVmRegion(file, vma); + + inode = file_inode(file); + sb = inode->i_sb; + lockdep_off(); + si_read_lock(sb, AuLock_NOPLMW); + + h_file = au_write_pre(file, wlock, /*wpre*/NULL); + lockdep_on(); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + err = 0; + au_set_mmapped(file); + au_vm_file_reset(vma, h_file); + /* + * we cannot call security_mmap_file() here since it may acquire + * mmap_sem or i_mutex. + * + * err = security_mmap_file(h_file, au_prot_conv(vma->vm_flags), + * au_flag_conv(vma->vm_flags)); + */ + if (!err) + err = call_mmap(h_file, vma); + if (!err) { + au_vm_prfile_set(vma, file); + fsstack_copy_attr_atime(inode, file_inode(h_file)); + goto out_fput; /* success */ + } + au_unset_mmapped(file); + au_vm_file_reset(vma, file); + +out_fput: + lockdep_off(); + ii_write_unlock(inode); + lockdep_on(); + fput(h_file); +out: + lockdep_off(); + si_read_unlock(sb); + lockdep_on(); + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_fsync_nondir(struct file *file, loff_t start, loff_t end, + int datasync) +{ + int err; + struct au_write_pre wpre; + struct inode *inode; + struct file *h_file; + + err = 0; /* -EBADF; */ /* posix? */ + if (unlikely(!(file->f_mode & FMODE_WRITE))) + goto out; + + inode = file_inode(file); + au_mtx_and_read_lock(inode); + + wpre.lsc = 0; + h_file = au_write_pre(file, /*do_ready*/1, &wpre); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out_unlock; + + err = vfsub_fsync(h_file, &h_file->f_path, datasync); + au_write_post(inode, h_file, &wpre, /*written*/0); + +out_unlock: + si_read_unlock(inode->i_sb); + inode_unlock(inode); +out: + return err; +} + +static int aufs_fasync(int fd, struct file *file, int flag) +{ + int err; + struct file *h_file; + struct super_block *sb; + + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/0, /*lsc*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + if (h_file->f_op->fasync) + err = h_file->f_op->fasync(fd, h_file, flag); + fput(h_file); /* instead of au_read_post() */ + +out: + si_read_unlock(sb); + return err; +} + +static int aufs_setfl(struct file *file, unsigned long arg) +{ + int err; + struct file *h_file; + struct super_block *sb; + + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/0, /*lsc*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out; + + /* stop calling h_file->fasync */ + arg |= vfsub_file_flags(file) & FASYNC; + err = setfl(/*unused fd*/-1, h_file, arg); + fput(h_file); /* instead of au_read_post() */ + +out: + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* no one supports this operation, currently */ +#if 0 /* reserved for future use */ +static ssize_t aufs_sendpage(struct file *file, struct page *page, int offset, + size_t len, loff_t *pos, int more) +{ +} +#endif + +/* ---------------------------------------------------------------------- */ + +const struct file_operations aufs_file_fop = { + .owner = THIS_MODULE, + + .llseek = default_llseek, + + .read_iter = aufs_read_iter, + .write_iter = aufs_write_iter, + +#ifdef CONFIG_AUFS_POLL + .poll = aufs_poll, +#endif + .unlocked_ioctl = aufs_ioctl_nondir, +#ifdef CONFIG_COMPAT + .compat_ioctl = aufs_compat_ioctl_nondir, +#endif + .mmap = aufs_mmap, + .open = aufs_open_nondir, + .flush = aufs_flush_nondir, + .release = aufs_release_nondir, + .fsync = aufs_fsync_nondir, + .fasync = aufs_fasync, + /* .sendpage = aufs_sendpage, */ + .setfl = aufs_setfl, + .splice_write = aufs_splice_write, + .splice_read = aufs_splice_read, +#if 0 /* reserved for future use */ + .aio_splice_write = aufs_aio_splice_write, + .aio_splice_read = aufs_aio_splice_read, +#endif + .fallocate = aufs_fallocate, + .copy_file_range = aufs_copy_file_range +}; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/fhsm.c +++ linux-azure-5.13-5.13.0/fs/aufs/fhsm.c @@ -0,0 +1,427 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2011-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +/* + * File-based Hierarchy Storage Management + */ + +#include +#include +#include +#include +#include "aufs.h" + +static aufs_bindex_t au_fhsm_bottom(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + AuDebugOn(!fhsm); + return fhsm->fhsm_bottom; +} + +void au_fhsm_set_bottom(struct super_block *sb, aufs_bindex_t bindex) +{ + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + AuDebugOn(!fhsm); + fhsm->fhsm_bottom = bindex; +} + +/* ---------------------------------------------------------------------- */ + +static int au_fhsm_test_jiffy(struct au_sbinfo *sbinfo, struct au_branch *br) +{ + struct au_br_fhsm *bf; + + bf = br->br_fhsm; + MtxMustLock(&bf->bf_lock); + + return !bf->bf_readable + || time_after(jiffies, + bf->bf_jiffy + sbinfo->si_fhsm.fhsm_expire); +} + +/* ---------------------------------------------------------------------- */ + +static void au_fhsm_notify(struct super_block *sb, int val) +{ + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + if (au_fhsm_pid(fhsm) + && atomic_read(&fhsm->fhsm_readable) != -1) { + atomic_set(&fhsm->fhsm_readable, val); + if (val) + wake_up(&fhsm->fhsm_wqh); + } +} + +static int au_fhsm_stfs(struct super_block *sb, aufs_bindex_t bindex, + struct aufs_stfs *rstfs, int do_lock, int do_notify) +{ + int err; + struct au_branch *br; + struct au_br_fhsm *bf; + + br = au_sbr(sb, bindex); + AuDebugOn(au_br_rdonly(br)); + bf = br->br_fhsm; + AuDebugOn(!bf); + + if (do_lock) + mutex_lock(&bf->bf_lock); + else + MtxMustLock(&bf->bf_lock); + + /* sb->s_root for NFS is unreliable */ + err = au_br_stfs(br, &bf->bf_stfs); + if (unlikely(err)) { + AuErr1("FHSM failed (%d), b%d, ignored.\n", bindex, err); + goto out; + } + + bf->bf_jiffy = jiffies; + bf->bf_readable = 1; + if (do_notify) + au_fhsm_notify(sb, /*val*/1); + if (rstfs) + *rstfs = bf->bf_stfs; + +out: + if (do_lock) + mutex_unlock(&bf->bf_lock); + au_fhsm_notify(sb, /*val*/1); + + return err; +} + +void au_fhsm_wrote(struct super_block *sb, aufs_bindex_t bindex, int force) +{ + int err; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + struct au_branch *br; + struct au_br_fhsm *bf; + + AuDbg("b%d, force %d\n", bindex, force); + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + if (!au_ftest_si(sbinfo, FHSM) + || fhsm->fhsm_bottom == bindex) + return; + + br = au_sbr(sb, bindex); + bf = br->br_fhsm; + AuDebugOn(!bf); + mutex_lock(&bf->bf_lock); + if (force + || au_fhsm_pid(fhsm) + || au_fhsm_test_jiffy(sbinfo, br)) + err = au_fhsm_stfs(sb, bindex, /*rstfs*/NULL, /*do_lock*/0, + /*do_notify*/1); + mutex_unlock(&bf->bf_lock); +} + +void au_fhsm_wrote_all(struct super_block *sb, int force) +{ + aufs_bindex_t bindex, bbot; + struct au_branch *br; + + /* exclude the bottom */ + bbot = au_fhsm_bottom(sb); + for (bindex = 0; bindex < bbot; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_fhsm(br->br_perm)) + au_fhsm_wrote(sb, bindex, force); + } +} + +/* ---------------------------------------------------------------------- */ + +static __poll_t au_fhsm_poll(struct file *file, struct poll_table_struct *wait) +{ + __poll_t mask; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + mask = 0; + sbinfo = file->private_data; + fhsm = &sbinfo->si_fhsm; + poll_wait(file, &fhsm->fhsm_wqh, wait); + if (atomic_read(&fhsm->fhsm_readable)) + mask = EPOLLIN /* | EPOLLRDNORM */; + + if (!mask) + AuDbg("mask 0x%x\n", mask); + return mask; +} + +static int au_fhsm_do_read_one(struct aufs_stbr __user *stbr, + struct aufs_stfs *stfs, __s16 brid) +{ + int err; + + err = copy_to_user(&stbr->stfs, stfs, sizeof(*stfs)); + if (!err) + err = __put_user(brid, &stbr->brid); + if (unlikely(err)) + err = -EFAULT; + + return err; +} + +static ssize_t au_fhsm_do_read(struct super_block *sb, + struct aufs_stbr __user *stbr, size_t count) +{ + ssize_t err; + int nstbr; + aufs_bindex_t bindex, bbot; + struct au_branch *br; + struct au_br_fhsm *bf; + + /* except the bottom branch */ + err = 0; + nstbr = 0; + bbot = au_fhsm_bottom(sb); + for (bindex = 0; !err && bindex < bbot; bindex++) { + br = au_sbr(sb, bindex); + if (!au_br_fhsm(br->br_perm)) + continue; + + bf = br->br_fhsm; + mutex_lock(&bf->bf_lock); + if (bf->bf_readable) { + err = -EFAULT; + if (count >= sizeof(*stbr)) + err = au_fhsm_do_read_one(stbr++, &bf->bf_stfs, + br->br_id); + if (!err) { + bf->bf_readable = 0; + count -= sizeof(*stbr); + nstbr++; + } + } + mutex_unlock(&bf->bf_lock); + } + if (!err) + err = sizeof(*stbr) * nstbr; + + return err; +} + +static ssize_t au_fhsm_read(struct file *file, char __user *buf, size_t count, + loff_t *pos) +{ + ssize_t err; + int readable; + aufs_bindex_t nfhsm, bindex, bbot; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + struct au_branch *br; + struct super_block *sb; + + err = 0; + sbinfo = file->private_data; + fhsm = &sbinfo->si_fhsm; +need_data: + spin_lock_irq(&fhsm->fhsm_wqh.lock); + if (!atomic_read(&fhsm->fhsm_readable)) { + if (vfsub_file_flags(file) & O_NONBLOCK) + err = -EAGAIN; + else + err = wait_event_interruptible_locked_irq + (fhsm->fhsm_wqh, + atomic_read(&fhsm->fhsm_readable)); + } + spin_unlock_irq(&fhsm->fhsm_wqh.lock); + if (unlikely(err)) + goto out; + + /* sb may already be dead */ + au_rw_read_lock(&sbinfo->si_rwsem); + readable = atomic_read(&fhsm->fhsm_readable); + if (readable > 0) { + sb = sbinfo->si_sb; + AuDebugOn(!sb); + /* exclude the bottom branch */ + nfhsm = 0; + bbot = au_fhsm_bottom(sb); + for (bindex = 0; bindex < bbot; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_fhsm(br->br_perm)) + nfhsm++; + } + err = -EMSGSIZE; + if (nfhsm * sizeof(struct aufs_stbr) <= count) { + atomic_set(&fhsm->fhsm_readable, 0); + err = au_fhsm_do_read(sbinfo->si_sb, (void __user *)buf, + count); + } + } + au_rw_read_unlock(&sbinfo->si_rwsem); + if (!readable) + goto need_data; + +out: + return err; +} + +static int au_fhsm_release(struct inode *inode, struct file *file) +{ + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + /* sb may already be dead */ + sbinfo = file->private_data; + fhsm = &sbinfo->si_fhsm; + spin_lock(&fhsm->fhsm_spin); + fhsm->fhsm_pid = 0; + spin_unlock(&fhsm->fhsm_spin); + kobject_put(&sbinfo->si_kobj); + + return 0; +} + +static const struct file_operations au_fhsm_fops = { + .owner = THIS_MODULE, + .llseek = noop_llseek, + .read = au_fhsm_read, + .poll = au_fhsm_poll, + .release = au_fhsm_release +}; + +int au_fhsm_fd(struct super_block *sb, int oflags) +{ + int err, fd; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + + err = -EPERM; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = -EINVAL; + if (unlikely(oflags & ~(O_CLOEXEC | O_NONBLOCK))) + goto out; + + err = 0; + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + spin_lock(&fhsm->fhsm_spin); + if (!fhsm->fhsm_pid) + fhsm->fhsm_pid = current->pid; + else + err = -EBUSY; + spin_unlock(&fhsm->fhsm_spin); + if (unlikely(err)) + goto out; + + oflags |= O_RDONLY; + /* oflags |= FMODE_NONOTIFY; */ + fd = anon_inode_getfd("[aufs_fhsm]", &au_fhsm_fops, sbinfo, oflags); + err = fd; + if (unlikely(fd < 0)) + goto out_pid; + + /* succeed regardless 'fhsm' status */ + kobject_get(&sbinfo->si_kobj); + si_noflush_read_lock(sb); + if (au_ftest_si(sbinfo, FHSM)) + au_fhsm_wrote_all(sb, /*force*/0); + si_read_unlock(sb); + goto out; /* success */ + +out_pid: + spin_lock(&fhsm->fhsm_spin); + fhsm->fhsm_pid = 0; + spin_unlock(&fhsm->fhsm_spin); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_fhsm_br_alloc(struct au_branch *br) +{ + int err; + + err = 0; + br->br_fhsm = kmalloc(sizeof(*br->br_fhsm), GFP_NOFS); + if (br->br_fhsm) + au_br_fhsm_init(br->br_fhsm); + else + err = -ENOMEM; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_fhsm_fin(struct super_block *sb) +{ + au_fhsm_notify(sb, /*val*/-1); +} + +void au_fhsm_init(struct au_sbinfo *sbinfo) +{ + struct au_fhsm *fhsm; + + fhsm = &sbinfo->si_fhsm; + spin_lock_init(&fhsm->fhsm_spin); + init_waitqueue_head(&fhsm->fhsm_wqh); + atomic_set(&fhsm->fhsm_readable, 0); + fhsm->fhsm_expire + = msecs_to_jiffies(AUFS_FHSM_CACHE_DEF_SEC * MSEC_PER_SEC); + fhsm->fhsm_bottom = -1; +} + +void au_fhsm_set(struct au_sbinfo *sbinfo, unsigned int sec) +{ + sbinfo->si_fhsm.fhsm_expire + = msecs_to_jiffies(sec * MSEC_PER_SEC); +} + +void au_fhsm_show(struct seq_file *seq, struct au_sbinfo *sbinfo) +{ + unsigned int u; + + if (!au_ftest_si(sbinfo, FHSM)) + return; + + u = jiffies_to_msecs(sbinfo->si_fhsm.fhsm_expire) / MSEC_PER_SEC; + if (u != AUFS_FHSM_CACHE_DEF_SEC) + seq_printf(seq, ",fhsm_sec=%u", u); +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/file.c +++ linux-azure-5.13-5.13.0/fs/aufs/file.c @@ -0,0 +1,863 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * handling file/dir, and address_space operation + */ + +#ifdef CONFIG_AUFS_DEBUG +#include +#endif +#include +#include "aufs.h" + +/* drop flags for writing */ +unsigned int au_file_roflags(unsigned int flags) +{ + flags &= ~(O_WRONLY | O_RDWR | O_APPEND | O_CREAT | O_TRUNC); + flags |= O_RDONLY | O_NOATIME; + return flags; +} + +/* common functions to regular file and dir */ +struct file *au_h_open(struct dentry *dentry, aufs_bindex_t bindex, int flags, + struct file *file, int force_wr) +{ + struct file *h_file; + struct dentry *h_dentry; + struct inode *h_inode; + struct super_block *sb; + struct au_branch *br; + struct path h_path; + int err; + + /* a race condition can happen between open and unlink/rmdir */ + h_file = ERR_PTR(-ENOENT); + h_dentry = au_h_dptr(dentry, bindex); + if (au_test_nfsd() && (!h_dentry || d_is_negative(h_dentry))) + goto out; + h_inode = d_inode(h_dentry); + spin_lock(&h_dentry->d_lock); + err = (!d_unhashed(dentry) && d_unlinked(h_dentry)) + /* || !d_inode(dentry)->i_nlink */ + ; + spin_unlock(&h_dentry->d_lock); + if (unlikely(err)) + goto out; + + sb = dentry->d_sb; + br = au_sbr(sb, bindex); + err = au_br_test_oflag(flags, br); + h_file = ERR_PTR(err); + if (unlikely(err)) + goto out; + + /* drop flags for writing */ + if (au_test_ro(sb, bindex, d_inode(dentry))) { + if (force_wr && !(flags & O_WRONLY)) + force_wr = 0; + flags = au_file_roflags(flags); + if (force_wr) { + h_file = ERR_PTR(-EROFS); + flags = au_file_roflags(flags); + if (unlikely(vfsub_native_ro(h_inode) + || IS_APPEND(h_inode))) + goto out; + flags &= ~O_ACCMODE; + flags |= O_WRONLY; + } + } + flags &= ~O_CREAT; + au_lcnt_inc(&br->br_nfiles); + h_path.dentry = h_dentry; + h_path.mnt = au_br_mnt(br); + h_file = vfsub_dentry_open(&h_path, flags); + if (IS_ERR(h_file)) + goto out_br; + + if (flags & __FMODE_EXEC) { + err = deny_write_access(h_file); + if (unlikely(err)) { + fput(h_file); + h_file = ERR_PTR(err); + goto out_br; + } + } + fsnotify_open(h_file); + goto out; /* success */ + +out_br: + au_lcnt_dec(&br->br_nfiles); +out: + return h_file; +} + +static int au_cmoo(struct dentry *dentry) +{ + int err, cmoo, matched; + unsigned int udba; + struct path h_path; + struct au_pin pin; + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = -1, + .bsrc = -1, + .len = -1, + .pin = &pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + struct inode *delegated; + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct au_fhsm *fhsm; + pid_t pid; + struct au_branch *br; + struct dentry *parent; + struct au_hinode *hdir; + + DiMustWriteLock(dentry); + IiMustWriteLock(d_inode(dentry)); + + err = 0; + if (IS_ROOT(dentry)) + goto out; + cpg.bsrc = au_dbtop(dentry); + if (!cpg.bsrc) + goto out; + + sb = dentry->d_sb; + sbinfo = au_sbi(sb); + fhsm = &sbinfo->si_fhsm; + pid = au_fhsm_pid(fhsm); + rcu_read_lock(); + matched = (pid + && (current->pid == pid + || rcu_dereference(current->real_parent)->pid == pid)); + rcu_read_unlock(); + if (matched) + goto out; + + br = au_sbr(sb, cpg.bsrc); + cmoo = au_br_cmoo(br->br_perm); + if (!cmoo) + goto out; + if (!d_is_reg(dentry)) + cmoo &= AuBrAttr_COO_ALL; + if (!cmoo) + goto out; + + parent = dget_parent(dentry); + di_write_lock_parent(parent); + err = au_wbr_do_copyup_bu(dentry, cpg.bsrc - 1); + cpg.bdst = err; + if (unlikely(err < 0)) { + err = 0; /* there is no upper writable branch */ + goto out_dgrade; + } + AuDbg("bsrc %d, bdst %d\n", cpg.bsrc, cpg.bdst); + + /* do not respect the coo attrib for the target branch */ + err = au_cpup_dirs(dentry, cpg.bdst); + if (unlikely(err)) + goto out_dgrade; + + di_downgrade_lock(parent, AuLock_IR); + udba = au_opt_udba(sb); + err = au_pin(&pin, dentry, cpg.bdst, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_parent; + + err = au_sio_cpup_simple(&cpg); + au_unpin(&pin); + if (unlikely(err)) + goto out_parent; + if (!(cmoo & AuBrWAttr_MOO)) + goto out_parent; /* success */ + + err = au_pin(&pin, dentry, cpg.bsrc, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_parent; + + h_path.mnt = au_br_mnt(br); + h_path.dentry = au_h_dptr(dentry, cpg.bsrc); + hdir = au_hi(d_inode(parent), cpg.bsrc); + delegated = NULL; + err = vfsub_unlink(hdir->hi_inode, &h_path, &delegated, /*force*/1); + au_unpin(&pin); + /* todo: keep h_dentry or not? */ + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + if (unlikely(err)) { + pr_err("unlink %pd after coo failed (%d), ignored\n", + dentry, err); + err = 0; + } + goto out_parent; /* success */ + +out_dgrade: + di_downgrade_lock(parent, AuLock_IR); +out_parent: + di_read_unlock(parent, AuLock_IR); + dput(parent); +out: + AuTraceErr(err); + return err; +} + +int au_do_open(struct file *file, struct au_do_open_args *args) +{ + int err, aopen = args->aopen; + struct dentry *dentry; + struct au_finfo *finfo; + + if (!aopen) + err = au_finfo_init(file, args->fidir); + else { + lockdep_off(); + err = au_finfo_init(file, args->fidir); + lockdep_on(); + } + if (unlikely(err)) + goto out; + + dentry = file->f_path.dentry; + AuDebugOn(IS_ERR_OR_NULL(dentry)); + di_write_lock_child(dentry); + err = au_cmoo(dentry); + di_downgrade_lock(dentry, AuLock_IR); + if (!err) { + if (!aopen) + err = args->open(file, vfsub_file_flags(file), NULL); + else { + lockdep_off(); + err = args->open(file, vfsub_file_flags(file), + args->h_file); + lockdep_on(); + } + } + di_read_unlock(dentry, AuLock_IR); + + finfo = au_fi(file); + if (!err) { + finfo->fi_file = file; + au_hbl_add(&finfo->fi_hlist, + &au_sbi(file->f_path.dentry->d_sb)->si_files); + } + if (!aopen) + fi_write_unlock(file); + else { + lockdep_off(); + fi_write_unlock(file); + lockdep_on(); + } + if (unlikely(err)) { + finfo->fi_hdir = NULL; + au_finfo_fin(file); + } + +out: + AuTraceErr(err); + return err; +} + +int au_reopen_nondir(struct file *file) +{ + int err; + aufs_bindex_t btop; + struct dentry *dentry; + struct au_branch *br; + struct file *h_file, *h_file_tmp; + + dentry = file->f_path.dentry; + btop = au_dbtop(dentry); + br = au_sbr(dentry->d_sb, btop); + h_file_tmp = NULL; + if (au_fbtop(file) == btop) { + h_file = au_hf_top(file); + if (file->f_mode == h_file->f_mode) + return 0; /* success */ + h_file_tmp = h_file; + get_file(h_file_tmp); + au_lcnt_inc(&br->br_nfiles); + au_set_h_fptr(file, btop, NULL); + } + AuDebugOn(au_fi(file)->fi_hdir); + /* + * it can happen + * file exists on both of rw and ro + * open --> dbtop and fbtop are both 0 + * prepend a branch as rw, "rw" become ro + * remove rw/file + * delete the top branch, "rw" becomes rw again + * --> dbtop is 1, fbtop is still 0 + * write --> fbtop is 0 but dbtop is 1 + */ + /* AuDebugOn(au_fbtop(file) < btop); */ + + h_file = au_h_open(dentry, btop, vfsub_file_flags(file) & ~O_TRUNC, + file, /*force_wr*/0); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) { + if (h_file_tmp) { + /* revert */ + au_set_h_fptr(file, btop, h_file_tmp); + h_file_tmp = NULL; + } + goto out; /* todo: close all? */ + } + + err = 0; + au_set_fbtop(file, btop); + au_set_h_fptr(file, btop, h_file); + au_update_figen(file); + /* todo: necessary? */ + /* file->f_ra = h_file->f_ra; */ + +out: + if (h_file_tmp) { + fput(h_file_tmp); + au_lcnt_dec(&br->br_nfiles); + } + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_reopen_wh(struct file *file, aufs_bindex_t btgt, + struct dentry *hi_wh) +{ + int err; + aufs_bindex_t btop; + struct au_dinfo *dinfo; + struct dentry *h_dentry; + struct au_hdentry *hdp; + + dinfo = au_di(file->f_path.dentry); + AuRwMustWriteLock(&dinfo->di_rwsem); + + btop = dinfo->di_btop; + dinfo->di_btop = btgt; + hdp = au_hdentry(dinfo, btgt); + h_dentry = hdp->hd_dentry; + hdp->hd_dentry = hi_wh; + err = au_reopen_nondir(file); + hdp->hd_dentry = h_dentry; + dinfo->di_btop = btop; + + return err; +} + +static int au_ready_to_write_wh(struct file *file, loff_t len, + aufs_bindex_t bcpup, struct au_pin *pin) +{ + int err; + struct inode *inode, *h_inode; + struct dentry *h_dentry, *hi_wh; + struct au_cp_generic cpg = { + .dentry = file->f_path.dentry, + .bdst = bcpup, + .bsrc = -1, + .len = len, + .pin = pin + }; + + au_update_dbtop(cpg.dentry); + inode = d_inode(cpg.dentry); + h_inode = NULL; + if (au_dbtop(cpg.dentry) <= bcpup + && au_dbbot(cpg.dentry) >= bcpup) { + h_dentry = au_h_dptr(cpg.dentry, bcpup); + if (h_dentry && d_is_positive(h_dentry)) + h_inode = d_inode(h_dentry); + } + hi_wh = au_hi_wh(inode, bcpup); + if (!hi_wh && !h_inode) + err = au_sio_cpup_wh(&cpg, file); + else + /* already copied-up after unlink */ + err = au_reopen_wh(file, bcpup, hi_wh); + + if (!err + && (inode->i_nlink > 1 + || (inode->i_state & I_LINKABLE)) + && au_opt_test(au_mntflags(cpg.dentry->d_sb), PLINK)) + au_plink_append(inode, bcpup, au_h_dptr(cpg.dentry, bcpup)); + + return err; +} + +/* + * prepare the @file for writing. + */ +int au_ready_to_write(struct file *file, loff_t len, struct au_pin *pin) +{ + int err; + aufs_bindex_t dbtop; + struct dentry *parent; + struct inode *inode; + struct super_block *sb; + struct file *h_file; + struct au_cp_generic cpg = { + .dentry = file->f_path.dentry, + .bdst = -1, + .bsrc = -1, + .len = len, + .pin = pin, + .flags = AuCpup_DTIME + }; + + sb = cpg.dentry->d_sb; + inode = d_inode(cpg.dentry); + cpg.bsrc = au_fbtop(file); + err = au_test_ro(sb, cpg.bsrc, inode); + if (!err && (au_hf_top(file)->f_mode & FMODE_WRITE)) { + err = au_pin(pin, cpg.dentry, cpg.bsrc, AuOpt_UDBA_NONE, + /*flags*/0); + goto out; + } + + /* need to cpup or reopen */ + parent = dget_parent(cpg.dentry); + di_write_lock_parent(parent); + err = AuWbrCopyup(au_sbi(sb), cpg.dentry); + cpg.bdst = err; + if (unlikely(err < 0)) + goto out_dgrade; + err = 0; + + if (!d_unhashed(cpg.dentry) && !au_h_dptr(parent, cpg.bdst)) { + err = au_cpup_dirs(cpg.dentry, cpg.bdst); + if (unlikely(err)) + goto out_dgrade; + } + + err = au_pin(pin, cpg.dentry, cpg.bdst, AuOpt_UDBA_NONE, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_dgrade; + + dbtop = au_dbtop(cpg.dentry); + if (dbtop <= cpg.bdst) + cpg.bsrc = cpg.bdst; + + if (dbtop <= cpg.bdst /* just reopen */ + || !d_unhashed(cpg.dentry) /* copyup and reopen */ + ) { + h_file = au_h_open_pre(cpg.dentry, cpg.bsrc, /*force_wr*/0); + if (IS_ERR(h_file)) + err = PTR_ERR(h_file); + else { + di_downgrade_lock(parent, AuLock_IR); + if (dbtop > cpg.bdst) + err = au_sio_cpup_simple(&cpg); + if (!err) + err = au_reopen_nondir(file); + au_h_open_post(cpg.dentry, cpg.bsrc, h_file); + } + } else { /* copyup as wh and reopen */ + /* + * since writable hfsplus branch is not supported, + * h_open_pre/post() are unnecessary. + */ + err = au_ready_to_write_wh(file, len, cpg.bdst, pin); + di_downgrade_lock(parent, AuLock_IR); + } + + if (!err) { + au_pin_set_parent_lflag(pin, /*lflag*/0); + goto out_dput; /* success */ + } + au_unpin(pin); + goto out_unlock; + +out_dgrade: + di_downgrade_lock(parent, AuLock_IR); +out_unlock: + di_read_unlock(parent, AuLock_IR); +out_dput: + dput(parent); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_do_flush(struct file *file, fl_owner_t id, + int (*flush)(struct file *file, fl_owner_t id)) +{ + int err; + struct super_block *sb; + struct inode *inode; + + inode = file_inode(file); + sb = inode->i_sb; + si_noflush_read_lock(sb); + fi_read_lock(file); + ii_read_lock_child(inode); + + err = flush(file, id); + au_cpup_attr_timesizes(inode); + + ii_read_unlock(inode); + fi_read_unlock(file); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_file_refresh_by_inode(struct file *file, int *need_reopen) +{ + int err; + struct au_pin pin; + struct au_finfo *finfo; + struct dentry *parent, *hi_wh; + struct inode *inode; + struct super_block *sb; + struct au_cp_generic cpg = { + .dentry = file->f_path.dentry, + .bdst = -1, + .bsrc = -1, + .len = -1, + .pin = &pin, + .flags = AuCpup_DTIME + }; + + FiMustWriteLock(file); + + err = 0; + finfo = au_fi(file); + sb = cpg.dentry->d_sb; + inode = d_inode(cpg.dentry); + cpg.bdst = au_ibtop(inode); + if (cpg.bdst == finfo->fi_btop || IS_ROOT(cpg.dentry)) + goto out; + + parent = dget_parent(cpg.dentry); + if (au_test_ro(sb, cpg.bdst, inode)) { + di_read_lock_parent(parent, !AuLock_IR); + err = AuWbrCopyup(au_sbi(sb), cpg.dentry); + cpg.bdst = err; + di_read_unlock(parent, !AuLock_IR); + if (unlikely(err < 0)) + goto out_parent; + err = 0; + } + + di_read_lock_parent(parent, AuLock_IR); + hi_wh = au_hi_wh(inode, cpg.bdst); + if (!S_ISDIR(inode->i_mode) + && au_opt_test(au_mntflags(sb), PLINK) + && au_plink_test(inode) + && !d_unhashed(cpg.dentry) + && cpg.bdst < au_dbtop(cpg.dentry)) { + err = au_test_and_cpup_dirs(cpg.dentry, cpg.bdst); + if (unlikely(err)) + goto out_unlock; + + /* always superio. */ + err = au_pin(&pin, cpg.dentry, cpg.bdst, AuOpt_UDBA_NONE, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (!err) { + err = au_sio_cpup_simple(&cpg); + au_unpin(&pin); + } + } else if (hi_wh) { + /* already copied-up after unlink */ + err = au_reopen_wh(file, cpg.bdst, hi_wh); + *need_reopen = 0; + } + +out_unlock: + di_read_unlock(parent, AuLock_IR); +out_parent: + dput(parent); +out: + return err; +} + +static void au_do_refresh_dir(struct file *file) +{ + aufs_bindex_t bindex, bbot, new_bindex, brid; + struct au_hfile *p, tmp, *q; + struct au_finfo *finfo; + struct super_block *sb; + struct au_fidir *fidir; + + FiMustWriteLock(file); + + sb = file->f_path.dentry->d_sb; + finfo = au_fi(file); + fidir = finfo->fi_hdir; + AuDebugOn(!fidir); + p = fidir->fd_hfile + finfo->fi_btop; + brid = p->hf_br->br_id; + bbot = fidir->fd_bbot; + for (bindex = finfo->fi_btop; bindex <= bbot; bindex++, p++) { + if (!p->hf_file) + continue; + + new_bindex = au_br_index(sb, p->hf_br->br_id); + if (new_bindex == bindex) + continue; + if (new_bindex < 0) { + au_set_h_fptr(file, bindex, NULL); + continue; + } + + /* swap two lower inode, and loop again */ + q = fidir->fd_hfile + new_bindex; + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hf_file) { + bindex--; + p--; + } + } + + p = fidir->fd_hfile; + if (!au_test_mmapped(file) && !d_unlinked(file->f_path.dentry)) { + bbot = au_sbbot(sb); + for (finfo->fi_btop = 0; finfo->fi_btop <= bbot; + finfo->fi_btop++, p++) + if (p->hf_file) { + if (file_inode(p->hf_file)) + break; + au_hfput(p, /*execed*/0); + } + } else { + bbot = au_br_index(sb, brid); + for (finfo->fi_btop = 0; finfo->fi_btop < bbot; + finfo->fi_btop++, p++) + if (p->hf_file) + au_hfput(p, /*execed*/0); + bbot = au_sbbot(sb); + } + + p = fidir->fd_hfile + bbot; + for (fidir->fd_bbot = bbot; fidir->fd_bbot >= finfo->fi_btop; + fidir->fd_bbot--, p--) + if (p->hf_file) { + if (file_inode(p->hf_file)) + break; + au_hfput(p, /*execed*/0); + } + AuDebugOn(fidir->fd_bbot < finfo->fi_btop); +} + +/* + * after branch manipulating, refresh the file. + */ +static int refresh_file(struct file *file, int (*reopen)(struct file *file)) +{ + int err, need_reopen, nbr; + aufs_bindex_t bbot, bindex; + struct dentry *dentry; + struct super_block *sb; + struct au_finfo *finfo; + struct au_hfile *hfile; + + dentry = file->f_path.dentry; + sb = dentry->d_sb; + nbr = au_sbbot(sb) + 1; + finfo = au_fi(file); + if (!finfo->fi_hdir) { + hfile = &finfo->fi_htop; + AuDebugOn(!hfile->hf_file); + bindex = au_br_index(sb, hfile->hf_br->br_id); + AuDebugOn(bindex < 0); + if (bindex != finfo->fi_btop) + au_set_fbtop(file, bindex); + } else { + err = au_fidir_realloc(finfo, nbr, /*may_shrink*/0); + if (unlikely(err)) + goto out; + au_do_refresh_dir(file); + } + + err = 0; + need_reopen = 1; + if (!au_test_mmapped(file)) + err = au_file_refresh_by_inode(file, &need_reopen); + if (finfo->fi_hdir) + /* harmless if err */ + au_fidir_realloc(finfo, nbr, /*may_shrink*/1); + if (!err && need_reopen && !d_unlinked(dentry)) + err = reopen(file); + if (!err) { + au_update_figen(file); + goto out; /* success */ + } + + /* error, close all lower files */ + if (finfo->fi_hdir) { + bbot = au_fbbot_dir(file); + for (bindex = au_fbtop(file); bindex <= bbot; bindex++) + au_set_h_fptr(file, bindex, NULL); + } + +out: + return err; +} + +/* common function to regular file and dir */ +int au_reval_and_lock_fdi(struct file *file, int (*reopen)(struct file *file), + int wlock, unsigned int fi_lsc) +{ + int err; + unsigned int sigen, figen; + aufs_bindex_t btop; + unsigned char pseudo_link; + struct dentry *dentry; + struct inode *inode; + + err = 0; + dentry = file->f_path.dentry; + inode = d_inode(dentry); + sigen = au_sigen(dentry->d_sb); + fi_write_lock_nested(file, fi_lsc); + figen = au_figen(file); + if (!fi_lsc) + di_write_lock_child(dentry); + else + di_write_lock_child2(dentry); + btop = au_dbtop(dentry); + pseudo_link = (btop != au_ibtop(inode)); + if (sigen == figen && !pseudo_link && au_fbtop(file) == btop) { + if (!wlock) { + di_downgrade_lock(dentry, AuLock_IR); + fi_downgrade_lock(file); + } + goto out; /* success */ + } + + AuDbg("sigen %d, figen %d\n", sigen, figen); + if (au_digen_test(dentry, sigen)) { + err = au_reval_dpath(dentry, sigen); + AuDebugOn(!err && au_digen_test(dentry, sigen)); + } + + if (!err) + err = refresh_file(file, reopen); + if (!err) { + if (!wlock) { + di_downgrade_lock(dentry, AuLock_IR); + fi_downgrade_lock(file); + } + } else { + di_write_unlock(dentry); + fi_write_unlock(file); + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* cf. aufs_nopage() */ +/* for madvise(2) */ +static int aufs_readpage(struct file *file __maybe_unused, struct page *page) +{ + unlock_page(page); + return 0; +} + +/* it will never be called, but necessary to support O_DIRECT */ +static ssize_t aufs_direct_IO(struct kiocb *iocb, struct iov_iter *iter) +{ BUG(); return 0; } + +/* they will never be called. */ +#ifdef CONFIG_AUFS_DEBUG +static int aufs_write_begin(struct file *file, struct address_space *mapping, + loff_t pos, unsigned len, unsigned flags, + struct page **pagep, void **fsdata) +{ AuUnsupport(); return 0; } +static int aufs_write_end(struct file *file, struct address_space *mapping, + loff_t pos, unsigned len, unsigned copied, + struct page *page, void *fsdata) +{ AuUnsupport(); return 0; } +static int aufs_writepage(struct page *page, struct writeback_control *wbc) +{ AuUnsupport(); return 0; } + +static int aufs_set_page_dirty(struct page *page) +{ AuUnsupport(); return 0; } +static void aufs_invalidatepage(struct page *page, unsigned int offset, + unsigned int length) +{ AuUnsupport(); } +static int aufs_releasepage(struct page *page, gfp_t gfp) +{ AuUnsupport(); return 0; } +#if 0 /* called by memory compaction regardless file */ +static int aufs_migratepage(struct address_space *mapping, struct page *newpage, + struct page *page, enum migrate_mode mode) +{ AuUnsupport(); return 0; } +#endif +static bool aufs_isolate_page(struct page *page, isolate_mode_t mode) +{ AuUnsupport(); return true; } +static void aufs_putback_page(struct page *page) +{ AuUnsupport(); } +static int aufs_launder_page(struct page *page) +{ AuUnsupport(); return 0; } +static int aufs_is_partially_uptodate(struct page *page, + unsigned long from, + unsigned long count) +{ AuUnsupport(); return 0; } +static void aufs_is_dirty_writeback(struct page *page, bool *dirty, + bool *writeback) +{ AuUnsupport(); } +static int aufs_error_remove_page(struct address_space *mapping, + struct page *page) +{ AuUnsupport(); return 0; } +static int aufs_swap_activate(struct swap_info_struct *sis, struct file *file, + sector_t *span) +{ AuUnsupport(); return 0; } +static void aufs_swap_deactivate(struct file *file) +{ AuUnsupport(); } +#endif /* CONFIG_AUFS_DEBUG */ + +const struct address_space_operations aufs_aop = { + .readpage = aufs_readpage, + .direct_IO = aufs_direct_IO, +#ifdef CONFIG_AUFS_DEBUG + .writepage = aufs_writepage, + /* no writepages, because of writepage */ + .set_page_dirty = aufs_set_page_dirty, + /* no readpages, because of readpage */ + .write_begin = aufs_write_begin, + .write_end = aufs_write_end, + /* no bmap, no block device */ + .invalidatepage = aufs_invalidatepage, + .releasepage = aufs_releasepage, + /* is fallback_migrate_page ok? */ + /* .migratepage = aufs_migratepage, */ + .isolate_page = aufs_isolate_page, + .putback_page = aufs_putback_page, + .launder_page = aufs_launder_page, + .is_partially_uptodate = aufs_is_partially_uptodate, + .is_dirty_writeback = aufs_is_dirty_writeback, + .error_remove_page = aufs_error_remove_page, + .swap_activate = aufs_swap_activate, + .swap_deactivate = aufs_swap_deactivate +#endif /* CONFIG_AUFS_DEBUG */ +}; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/file.h +++ linux-azure-5.13-5.13.0/fs/aufs/file.h @@ -0,0 +1,342 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * file operations + */ + +#ifndef __AUFS_FILE_H__ +#define __AUFS_FILE_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include +#include "rwsem.h" + +struct au_branch; +struct au_hfile { + struct file *hf_file; + struct au_branch *hf_br; +}; + +struct au_vdir; +struct au_fidir { + aufs_bindex_t fd_bbot; + aufs_bindex_t fd_nent; + struct au_vdir *fd_vdir_cache; + struct au_hfile fd_hfile[]; +}; + +static inline int au_fidir_sz(int nent) +{ + AuDebugOn(nent < 0); + return sizeof(struct au_fidir) + sizeof(struct au_hfile) * nent; +} + +struct au_finfo { + atomic_t fi_generation; + + struct au_rwsem fi_rwsem; + aufs_bindex_t fi_btop; + + /* do not union them */ + struct { /* for non-dir */ + struct au_hfile fi_htop; + atomic_t fi_mmapped; + }; + struct au_fidir *fi_hdir; /* for dir only */ + + struct hlist_bl_node fi_hlist; + struct file *fi_file; /* very ugly */ + struct rcu_head rcu; +} ____cacheline_aligned_in_smp; + +/* ---------------------------------------------------------------------- */ + +/* file.c */ +extern const struct address_space_operations aufs_aop; +unsigned int au_file_roflags(unsigned int flags); +struct file *au_h_open(struct dentry *dentry, aufs_bindex_t bindex, int flags, + struct file *file, int force_wr); +struct au_do_open_args { + int aopen; + int (*open)(struct file *file, int flags, + struct file *h_file); + struct au_fidir *fidir; + struct file *h_file; +}; +int au_do_open(struct file *file, struct au_do_open_args *args); +int au_reopen_nondir(struct file *file); +struct au_pin; +int au_ready_to_write(struct file *file, loff_t len, struct au_pin *pin); +int au_reval_and_lock_fdi(struct file *file, int (*reopen)(struct file *file), + int wlock, unsigned int fi_lsc); +int au_do_flush(struct file *file, fl_owner_t id, + int (*flush)(struct file *file, fl_owner_t id)); + +/* poll.c */ +#ifdef CONFIG_AUFS_POLL +__poll_t aufs_poll(struct file *file, struct poll_table_struct *pt); +#endif + +#ifdef CONFIG_AUFS_BR_HFSPLUS +/* hfsplus.c */ +struct file *au_h_open_pre(struct dentry *dentry, aufs_bindex_t bindex, + int force_wr); +void au_h_open_post(struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file); +#else +AuStub(struct file *, au_h_open_pre, return NULL, struct dentry *dentry, + aufs_bindex_t bindex, int force_wr) +AuStubVoid(au_h_open_post, struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file); +#endif + +/* f_op.c */ +extern const struct file_operations aufs_file_fop; +int au_do_open_nondir(struct file *file, int flags, struct file *h_file); +int aufs_release_nondir(struct inode *inode __maybe_unused, struct file *file); +struct file *au_read_pre(struct file *file, int keep_fi, unsigned int lsc); + +/* finfo.c */ +void au_hfput(struct au_hfile *hf, int execed); +void au_set_h_fptr(struct file *file, aufs_bindex_t bindex, + struct file *h_file); + +void au_update_figen(struct file *file); +struct au_fidir *au_fidir_alloc(struct super_block *sb); +int au_fidir_realloc(struct au_finfo *finfo, int nbr, int may_shrink); + +void au_fi_init_once(void *_fi); +void au_finfo_fin(struct file *file); +int au_finfo_init(struct file *file, struct au_fidir *fidir); + +/* ioctl.c */ +long aufs_ioctl_nondir(struct file *file, unsigned int cmd, unsigned long arg); +#ifdef CONFIG_COMPAT +long aufs_compat_ioctl_dir(struct file *file, unsigned int cmd, + unsigned long arg); +long aufs_compat_ioctl_nondir(struct file *file, unsigned int cmd, + unsigned long arg); +#endif + +/* ---------------------------------------------------------------------- */ + +static inline struct au_finfo *au_fi(struct file *file) +{ + return file->private_data; +} + +/* ---------------------------------------------------------------------- */ + +#define fi_read_lock(f) au_rw_read_lock(&au_fi(f)->fi_rwsem) +#define fi_write_lock(f) au_rw_write_lock(&au_fi(f)->fi_rwsem) +#define fi_read_trylock(f) au_rw_read_trylock(&au_fi(f)->fi_rwsem) +#define fi_write_trylock(f) au_rw_write_trylock(&au_fi(f)->fi_rwsem) +/* +#define fi_read_trylock_nested(f) \ + au_rw_read_trylock_nested(&au_fi(f)->fi_rwsem) +#define fi_write_trylock_nested(f) \ + au_rw_write_trylock_nested(&au_fi(f)->fi_rwsem) +*/ + +#define fi_read_unlock(f) au_rw_read_unlock(&au_fi(f)->fi_rwsem) +#define fi_write_unlock(f) au_rw_write_unlock(&au_fi(f)->fi_rwsem) +#define fi_downgrade_lock(f) au_rw_dgrade_lock(&au_fi(f)->fi_rwsem) + +/* lock subclass for finfo */ +enum { + AuLsc_FI_1, + AuLsc_FI_2 +}; + +static inline void fi_read_lock_nested(struct file *f, unsigned int lsc) +{ + au_rw_read_lock_nested(&au_fi(f)->fi_rwsem, lsc); +} + +static inline void fi_write_lock_nested(struct file *f, unsigned int lsc) +{ + au_rw_write_lock_nested(&au_fi(f)->fi_rwsem, lsc); +} + +/* + * fi_read_lock_1, fi_write_lock_1, + * fi_read_lock_2, fi_write_lock_2 + */ +#define AuReadLockFunc(name) \ +static inline void fi_read_lock_##name(struct file *f) \ +{ fi_read_lock_nested(f, AuLsc_FI_##name); } + +#define AuWriteLockFunc(name) \ +static inline void fi_write_lock_##name(struct file *f) \ +{ fi_write_lock_nested(f, AuLsc_FI_##name); } + +#define AuRWLockFuncs(name) \ + AuReadLockFunc(name) \ + AuWriteLockFunc(name) + +AuRWLockFuncs(1); +AuRWLockFuncs(2); + +#undef AuReadLockFunc +#undef AuWriteLockFunc +#undef AuRWLockFuncs + +#define FiMustNoWaiters(f) AuRwMustNoWaiters(&au_fi(f)->fi_rwsem) +#define FiMustAnyLock(f) AuRwMustAnyLock(&au_fi(f)->fi_rwsem) +#define FiMustWriteLock(f) AuRwMustWriteLock(&au_fi(f)->fi_rwsem) + +/* ---------------------------------------------------------------------- */ + +/* todo: hard/soft set? */ +static inline aufs_bindex_t au_fbtop(struct file *file) +{ + FiMustAnyLock(file); + return au_fi(file)->fi_btop; +} + +static inline aufs_bindex_t au_fbbot_dir(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_bbot; +} + +static inline struct au_vdir *au_fvdir_cache(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_vdir_cache; +} + +static inline void au_set_fbtop(struct file *file, aufs_bindex_t bindex) +{ + FiMustWriteLock(file); + au_fi(file)->fi_btop = bindex; +} + +static inline void au_set_fbbot_dir(struct file *file, aufs_bindex_t bindex) +{ + FiMustWriteLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + au_fi(file)->fi_hdir->fd_bbot = bindex; +} + +static inline void au_set_fvdir_cache(struct file *file, + struct au_vdir *vdir_cache) +{ + FiMustWriteLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + au_fi(file)->fi_hdir->fd_vdir_cache = vdir_cache; +} + +static inline struct file *au_hf_top(struct file *file) +{ + FiMustAnyLock(file); + AuDebugOn(au_fi(file)->fi_hdir); + return au_fi(file)->fi_htop.hf_file; +} + +static inline struct file *au_hf_dir(struct file *file, aufs_bindex_t bindex) +{ + FiMustAnyLock(file); + AuDebugOn(!au_fi(file)->fi_hdir); + return au_fi(file)->fi_hdir->fd_hfile[0 + bindex].hf_file; +} + +/* todo: memory barrier? */ +static inline unsigned int au_figen(struct file *f) +{ + return atomic_read(&au_fi(f)->fi_generation); +} + +static inline void au_set_mmapped(struct file *f) +{ + if (atomic_inc_return(&au_fi(f)->fi_mmapped)) + return; + pr_warn("fi_mmapped wrapped around\n"); + while (!atomic_inc_return(&au_fi(f)->fi_mmapped)) + ; +} + +static inline void au_unset_mmapped(struct file *f) +{ + atomic_dec(&au_fi(f)->fi_mmapped); +} + +static inline int au_test_mmapped(struct file *f) +{ + return atomic_read(&au_fi(f)->fi_mmapped); +} + +/* customize vma->vm_file */ + +static inline void au_do_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + struct file *f; + + f = vma->vm_file; + get_file(file); + vma->vm_file = file; + fput(f); +} + +#ifdef CONFIG_MMU +#define AuDbgVmRegion(file, vma) do {} while (0) + +static inline void au_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + au_do_vm_file_reset(vma, file); +} +#else +#define AuDbgVmRegion(file, vma) \ + AuDebugOn((vma)->vm_region && (vma)->vm_region->vm_file != (file)) + +static inline void au_vm_file_reset(struct vm_area_struct *vma, + struct file *file) +{ + struct file *f; + + au_do_vm_file_reset(vma, file); + f = vma->vm_region->vm_file; + get_file(file); + vma->vm_region->vm_file = file; + fput(f); +} +#endif /* CONFIG_MMU */ + +/* handle vma->vm_prfile */ +static inline void au_vm_prfile_set(struct vm_area_struct *vma, + struct file *file) +{ + get_file(file); + vma->vm_prfile = file; +#ifndef CONFIG_MMU + get_file(file); + vma->vm_region->vm_prfile = file; +#endif +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FILE_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/finfo.c +++ linux-azure-5.13-5.13.0/fs/aufs/finfo.c @@ -0,0 +1,149 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * file private data + */ + +#include "aufs.h" + +void au_hfput(struct au_hfile *hf, int execed) +{ + if (execed) + allow_write_access(hf->hf_file); + fput(hf->hf_file); + hf->hf_file = NULL; + au_lcnt_dec(&hf->hf_br->br_nfiles); + hf->hf_br = NULL; +} + +void au_set_h_fptr(struct file *file, aufs_bindex_t bindex, struct file *val) +{ + struct au_finfo *finfo = au_fi(file); + struct au_hfile *hf; + struct au_fidir *fidir; + + fidir = finfo->fi_hdir; + if (!fidir) { + AuDebugOn(finfo->fi_btop != bindex); + hf = &finfo->fi_htop; + } else + hf = fidir->fd_hfile + bindex; + + if (hf && hf->hf_file) + au_hfput(hf, vfsub_file_execed(file)); + if (val) { + FiMustWriteLock(file); + AuDebugOn(IS_ERR_OR_NULL(file->f_path.dentry)); + hf->hf_file = val; + hf->hf_br = au_sbr(file->f_path.dentry->d_sb, bindex); + } +} + +void au_update_figen(struct file *file) +{ + atomic_set(&au_fi(file)->fi_generation, au_digen(file->f_path.dentry)); + /* smp_mb(); */ /* atomic_set */ +} + +/* ---------------------------------------------------------------------- */ + +struct au_fidir *au_fidir_alloc(struct super_block *sb) +{ + struct au_fidir *fidir; + int nbr; + + nbr = au_sbbot(sb) + 1; + if (nbr < 2) + nbr = 2; /* initial allocate for 2 branches */ + fidir = kzalloc(au_fidir_sz(nbr), GFP_NOFS); + if (fidir) { + fidir->fd_bbot = -1; + fidir->fd_nent = nbr; + } + + return fidir; +} + +int au_fidir_realloc(struct au_finfo *finfo, int nbr, int may_shrink) +{ + int err; + struct au_fidir *fidir, *p; + + AuRwMustWriteLock(&finfo->fi_rwsem); + fidir = finfo->fi_hdir; + AuDebugOn(!fidir); + + err = -ENOMEM; + p = au_kzrealloc(fidir, au_fidir_sz(fidir->fd_nent), au_fidir_sz(nbr), + GFP_NOFS, may_shrink); + if (p) { + p->fd_nent = nbr; + finfo->fi_hdir = p; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_finfo_fin(struct file *file) +{ + struct au_finfo *finfo; + + au_lcnt_dec(&au_sbi(file->f_path.dentry->d_sb)->si_nfiles); + + finfo = au_fi(file); + AuDebugOn(finfo->fi_hdir); + AuRwDestroy(&finfo->fi_rwsem); + au_cache_free_finfo(finfo); +} + +void au_fi_init_once(void *_finfo) +{ + struct au_finfo *finfo = _finfo; + + au_rw_init(&finfo->fi_rwsem); +} + +int au_finfo_init(struct file *file, struct au_fidir *fidir) +{ + int err; + struct au_finfo *finfo; + struct dentry *dentry; + + err = -ENOMEM; + dentry = file->f_path.dentry; + finfo = au_cache_alloc_finfo(); + if (unlikely(!finfo)) + goto out; + + err = 0; + au_lcnt_inc(&au_sbi(dentry->d_sb)->si_nfiles); + au_rw_write_lock(&finfo->fi_rwsem); + finfo->fi_btop = -1; + finfo->fi_hdir = fidir; + atomic_set(&finfo->fi_generation, au_digen(dentry)); + /* smp_mb(); */ /* atomic_set */ + + file->private_data = finfo; + +out: + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/fstype.h +++ linux-azure-5.13-5.13.0/fs/aufs/fstype.h @@ -0,0 +1,401 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * judging filesystem type + */ + +#ifndef __AUFS_FSTYPE_H__ +#define __AUFS_FSTYPE_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include + +static inline int au_test_aufs(struct super_block *sb) +{ + return sb->s_magic == AUFS_SUPER_MAGIC; +} + +static inline const char *au_sbtype(struct super_block *sb) +{ + return sb->s_type->name; +} + +static inline int au_test_iso9660(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_ISO9660_FS) + return sb->s_magic == ISOFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_romfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_ROMFS_FS) + return sb->s_magic == ROMFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_cramfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_CRAMFS) + return sb->s_magic == CRAMFS_MAGIC; +#endif + return 0; +} + +static inline int au_test_nfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_NFS_FS) + return sb->s_magic == NFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_fuse(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_FUSE_FS) + return sb->s_magic == FUSE_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_xfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_XFS_FS) + return sb->s_magic == XFS_SB_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_tmpfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_TMPFS + return sb->s_magic == TMPFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_ecryptfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_ECRYPT_FS) + return !strcmp(au_sbtype(sb), "ecryptfs"); +#else + return 0; +#endif +} + +static inline int au_test_ramfs(struct super_block *sb) +{ + return sb->s_magic == RAMFS_MAGIC; +} + +static inline int au_test_ubifs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_UBIFS_FS) + return sb->s_magic == UBIFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_procfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_PROC_FS + return sb->s_magic == PROC_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_sysfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_SYSFS + return sb->s_magic == SYSFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_configfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_CONFIGFS_FS) + return sb->s_magic == CONFIGFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_minix(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_MINIX_FS) + return sb->s_magic == MINIX3_SUPER_MAGIC + || sb->s_magic == MINIX2_SUPER_MAGIC + || sb->s_magic == MINIX2_SUPER_MAGIC2 + || sb->s_magic == MINIX_SUPER_MAGIC + || sb->s_magic == MINIX_SUPER_MAGIC2; +#else + return 0; +#endif +} + +static inline int au_test_fat(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_FAT_FS) + return sb->s_magic == MSDOS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_msdos(struct super_block *sb) +{ + return au_test_fat(sb); +} + +static inline int au_test_vfat(struct super_block *sb) +{ + return au_test_fat(sb); +} + +static inline int au_test_securityfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_SECURITYFS + return sb->s_magic == SECURITYFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_squashfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_SQUASHFS) + return sb->s_magic == SQUASHFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_btrfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_BTRFS_FS) + return sb->s_magic == BTRFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_xenfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_XENFS) + return sb->s_magic == XENFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_debugfs(struct super_block *sb __maybe_unused) +{ +#ifdef CONFIG_DEBUG_FS + return sb->s_magic == DEBUGFS_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_nilfs(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_NILFS) + return sb->s_magic == NILFS_SUPER_MAGIC; +#else + return 0; +#endif +} + +static inline int au_test_hfsplus(struct super_block *sb __maybe_unused) +{ +#if IS_ENABLED(CONFIG_HFSPLUS_FS) + return sb->s_magic == HFSPLUS_SUPER_MAGIC; +#else + return 0; +#endif +} + +/* ---------------------------------------------------------------------- */ +/* + * they can't be an aufs branch. + */ +static inline int au_test_fs_unsuppoted(struct super_block *sb) +{ + return +#ifndef CONFIG_AUFS_BR_RAMFS + au_test_ramfs(sb) || +#endif + au_test_procfs(sb) + || au_test_sysfs(sb) + || au_test_configfs(sb) + || au_test_debugfs(sb) + || au_test_securityfs(sb) + || au_test_xenfs(sb) + || au_test_ecryptfs(sb) + /* || !strcmp(au_sbtype(sb), "unionfs") */ + || au_test_aufs(sb); /* will be supported in next version */ +} + +static inline int au_test_fs_remote(struct super_block *sb) +{ + return !au_test_tmpfs(sb) +#ifdef CONFIG_AUFS_BR_RAMFS + && !au_test_ramfs(sb) +#endif + && !(sb->s_type->fs_flags & FS_REQUIRES_DEV); +} + +/* ---------------------------------------------------------------------- */ + +/* + * Note: these functions (below) are created after reading ->getattr() in all + * filesystems under linux/fs. it means we have to do so in every update... + */ + +/* + * some filesystems require getattr to refresh the inode attributes before + * referencing. + * in most cases, we can rely on the inode attribute in NFS (or every remote fs) + * and leave the work for d_revalidate() + */ +static inline int au_test_fs_refresh_iattr(struct super_block *sb) +{ + return au_test_nfs(sb) + || au_test_fuse(sb) + /* || au_test_btrfs(sb) */ /* untested */ + ; +} + +/* + * filesystems which don't maintain i_size or i_blocks. + */ +static inline int au_test_fs_bad_iattr_size(struct super_block *sb) +{ + return au_test_xfs(sb) + || au_test_btrfs(sb) + || au_test_ubifs(sb) + || au_test_hfsplus(sb) /* maintained, but incorrect */ + /* || au_test_minix(sb) */ /* untested */ + ; +} + +/* + * filesystems which don't store the correct value in some of their inode + * attributes. + */ +static inline int au_test_fs_bad_iattr(struct super_block *sb) +{ + return au_test_fs_bad_iattr_size(sb) + || au_test_fat(sb) + || au_test_msdos(sb) + || au_test_vfat(sb); +} + +/* they don't check i_nlink in link(2) */ +static inline int au_test_fs_no_limit_nlink(struct super_block *sb) +{ + return au_test_tmpfs(sb) +#ifdef CONFIG_AUFS_BR_RAMFS + || au_test_ramfs(sb) +#endif + || au_test_ubifs(sb) + || au_test_hfsplus(sb); +} + +/* + * filesystems which sets S_NOATIME and S_NOCMTIME. + */ +static inline int au_test_fs_notime(struct super_block *sb) +{ + return au_test_nfs(sb) + || au_test_fuse(sb) + || au_test_ubifs(sb) + ; +} + +/* temporary support for i#1 in cramfs */ +static inline int au_test_fs_unique_ino(struct inode *inode) +{ + if (au_test_cramfs(inode->i_sb)) + return inode->i_ino != 1; + return 1; +} + +/* ---------------------------------------------------------------------- */ + +/* + * the filesystem where the xino files placed must support i/o after unlink and + * maintain i_size and i_blocks. + */ +static inline int au_test_fs_bad_xino(struct super_block *sb) +{ + return au_test_fs_remote(sb) + || au_test_fs_bad_iattr_size(sb) + /* don't want unnecessary work for xino */ + || au_test_aufs(sb) + || au_test_ecryptfs(sb) + || au_test_nilfs(sb); +} + +static inline int au_test_fs_trunc_xino(struct super_block *sb) +{ + return au_test_tmpfs(sb) + || au_test_ramfs(sb); +} + +/* + * test if the @sb is real-readonly. + */ +static inline int au_test_fs_rr(struct super_block *sb) +{ + return au_test_squashfs(sb) + || au_test_iso9660(sb) + || au_test_cramfs(sb) + || au_test_romfs(sb); +} + +/* + * test if the @inode is nfs with 'noacl' option + * NFS always sets SB_POSIXACL regardless its mount option 'noacl.' + */ +static inline int au_test_nfs_noacl(struct inode *inode) +{ + return au_test_nfs(inode->i_sb) + /* && IS_POSIXACL(inode) */ + && !nfs_server_capable(inode, NFS_CAP_ACLS); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_FSTYPE_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/hbl.h +++ linux-azure-5.13-5.13.0/fs/aufs/hbl.h @@ -0,0 +1,65 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2017-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * helpers for hlist_bl.h + */ + +#ifndef __AUFS_HBL_H__ +#define __AUFS_HBL_H__ + +#ifdef __KERNEL__ + +#include + +static inline void au_hbl_add(struct hlist_bl_node *node, + struct hlist_bl_head *hbl) +{ + hlist_bl_lock(hbl); + hlist_bl_add_head(node, hbl); + hlist_bl_unlock(hbl); +} + +static inline void au_hbl_del(struct hlist_bl_node *node, + struct hlist_bl_head *hbl) +{ + hlist_bl_lock(hbl); + hlist_bl_del(node); + hlist_bl_unlock(hbl); +} + +#define au_hbl_for_each(pos, head) \ + for (pos = hlist_bl_first(head); \ + pos; \ + pos = pos->next) + +static inline unsigned long au_hbl_count(struct hlist_bl_head *hbl) +{ + unsigned long cnt; + struct hlist_bl_node *pos; + + cnt = 0; + hlist_bl_lock(hbl); + au_hbl_for_each(pos, hbl) + cnt++; + hlist_bl_unlock(hbl); + return cnt; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_HBL_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/hfsnotify.c +++ linux-azure-5.13-5.13.0/fs/aufs/hfsnotify.c @@ -0,0 +1,288 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * fsnotify for the lower directories + */ + +#include "aufs.h" + +/* FS_IN_IGNORED is unnecessary */ +static const __u32 AuHfsnMask = (FS_MOVED_TO | FS_MOVED_FROM | FS_DELETE + | FS_CREATE | FS_EVENT_ON_CHILD); +static DECLARE_WAIT_QUEUE_HEAD(au_hfsn_wq); +static __cacheline_aligned_in_smp atomic64_t au_hfsn_ifree = ATOMIC64_INIT(0); + +static void au_hfsn_free_mark(struct fsnotify_mark *mark) +{ + struct au_hnotify *hn = container_of(mark, struct au_hnotify, + hn_mark); + /* AuDbg("here\n"); */ + au_cache_free_hnotify(hn); + smp_mb__before_atomic(); /* for atomic64_dec */ + if (atomic64_dec_and_test(&au_hfsn_ifree)) + wake_up(&au_hfsn_wq); +} + +static int au_hfsn_alloc(struct au_hinode *hinode) +{ + int err; + struct au_hnotify *hn; + struct super_block *sb; + struct au_branch *br; + struct fsnotify_mark *mark; + aufs_bindex_t bindex; + + hn = hinode->hi_notify; + sb = hn->hn_aufs_inode->i_sb; + bindex = au_br_index(sb, hinode->hi_id); + br = au_sbr(sb, bindex); + AuDebugOn(!br->br_hfsn); + + mark = &hn->hn_mark; + fsnotify_init_mark(mark, br->br_hfsn->hfsn_group); + mark->mask = AuHfsnMask; + /* + * by udba rename or rmdir, aufs assign a new inode to the known + * h_inode, so specify 1 to allow dups. + */ + lockdep_off(); + err = fsnotify_add_inode_mark(mark, hinode->hi_inode, /*allow_dups*/1); + lockdep_on(); + + return err; +} + +static int au_hfsn_free(struct au_hinode *hinode, struct au_hnotify *hn) +{ + struct fsnotify_mark *mark; + unsigned long long ull; + struct fsnotify_group *group; + + ull = atomic64_inc_return(&au_hfsn_ifree); + BUG_ON(!ull); + + mark = &hn->hn_mark; + spin_lock(&mark->lock); + group = mark->group; + fsnotify_get_group(group); + spin_unlock(&mark->lock); + lockdep_off(); + fsnotify_destroy_mark(mark, group); + fsnotify_put_mark(mark); + fsnotify_put_group(group); + lockdep_on(); + + /* free hn by myself */ + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_ctl(struct au_hinode *hinode, int do_set) +{ + struct fsnotify_mark *mark; + + mark = &hinode->hi_notify->hn_mark; + spin_lock(&mark->lock); + if (do_set) { + AuDebugOn(mark->mask & AuHfsnMask); + mark->mask |= AuHfsnMask; + } else { + AuDebugOn(!(mark->mask & AuHfsnMask)); + mark->mask &= ~AuHfsnMask; + } + spin_unlock(&mark->lock); + /* fsnotify_recalc_inode_mask(hinode->hi_inode); */ +} + +/* ---------------------------------------------------------------------- */ + +/* #define AuDbgHnotify */ +#ifdef AuDbgHnotify +static char *au_hfsn_name(u32 mask) +{ +#ifdef CONFIG_AUFS_DEBUG +#define test_ret(flag) \ + do { \ + if (mask & flag) \ + return #flag; \ + } while (0) + test_ret(FS_ACCESS); + test_ret(FS_MODIFY); + test_ret(FS_ATTRIB); + test_ret(FS_CLOSE_WRITE); + test_ret(FS_CLOSE_NOWRITE); + test_ret(FS_OPEN); + test_ret(FS_MOVED_FROM); + test_ret(FS_MOVED_TO); + test_ret(FS_CREATE); + test_ret(FS_DELETE); + test_ret(FS_DELETE_SELF); + test_ret(FS_MOVE_SELF); + test_ret(FS_UNMOUNT); + test_ret(FS_Q_OVERFLOW); + test_ret(FS_IN_IGNORED); + test_ret(FS_ISDIR); + test_ret(FS_IN_ONESHOT); + test_ret(FS_EVENT_ON_CHILD); + return ""; +#undef test_ret +#else + return "??"; +#endif +} +#endif + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_free_group(struct fsnotify_group *group) +{ + struct au_br_hfsnotify *hfsn = group->private; + + /* AuDbg("here\n"); */ + au_kfree_try_rcu(hfsn); +} + +static int au_hfsn_handle_event(struct fsnotify_group *group, + u32 mask, const void *data, int data_type, + struct inode *dir, + const struct qstr *file_name, u32 cookie, + struct fsnotify_iter_info *iter_info) +{ + int err; + struct au_hnotify *hnotify; + struct inode *h_dir, *h_inode; + struct fsnotify_mark *inode_mark; + + AuDebugOn(data_type != FSNOTIFY_EVENT_INODE); + + err = 0; + /* if FS_UNMOUNT happens, there must be another bug */ + AuDebugOn(mask & FS_UNMOUNT); + if (mask & (FS_IN_IGNORED | FS_UNMOUNT)) + goto out; + + h_dir = dir; + h_inode = NULL; +#ifdef AuDbgHnotify + au_debug_on(); + if (1 || h_child_qstr.len != sizeof(AUFS_XINO_FNAME) - 1 + || strncmp(h_child_qstr.name, AUFS_XINO_FNAME, h_child_qstr.len)) { + AuDbg("i%lu, mask 0x%x %s, hcname %.*s, hi%lu\n", + h_dir->i_ino, mask, au_hfsn_name(mask), + AuLNPair(&h_child_qstr), h_inode ? h_inode->i_ino : 0); + /* WARN_ON(1); */ + } + au_debug_off(); +#endif + + inode_mark = fsnotify_iter_inode_mark(iter_info); + AuDebugOn(!inode_mark); + hnotify = container_of(inode_mark, struct au_hnotify, hn_mark); + err = au_hnotify(h_dir, hnotify, mask, file_name, h_inode); + +out: + return err; +} + +static struct fsnotify_ops au_hfsn_ops = { + .handle_event = au_hfsn_handle_event, + .free_group_priv = au_hfsn_free_group, + .free_mark = au_hfsn_free_mark +}; + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_fin_br(struct au_branch *br) +{ + struct au_br_hfsnotify *hfsn; + + hfsn = br->br_hfsn; + if (hfsn) { + lockdep_off(); + fsnotify_put_group(hfsn->hfsn_group); + lockdep_on(); + } +} + +static int au_hfsn_init_br(struct au_branch *br, int perm) +{ + int err; + struct fsnotify_group *group; + struct au_br_hfsnotify *hfsn; + + err = 0; + br->br_hfsn = NULL; + if (!au_br_hnotifyable(perm)) + goto out; + + err = -ENOMEM; + hfsn = kmalloc(sizeof(*hfsn), GFP_NOFS); + if (unlikely(!hfsn)) + goto out; + + err = 0; + group = fsnotify_alloc_group(&au_hfsn_ops); + if (IS_ERR(group)) { + err = PTR_ERR(group); + pr_err("fsnotify_alloc_group() failed, %d\n", err); + goto out_hfsn; + } + + group->private = hfsn; + hfsn->hfsn_group = group; + br->br_hfsn = hfsn; + goto out; /* success */ + +out_hfsn: + au_kfree_try_rcu(hfsn); +out: + return err; +} + +static int au_hfsn_reset_br(unsigned int udba, struct au_branch *br, int perm) +{ + int err; + + err = 0; + if (!br->br_hfsn) + err = au_hfsn_init_br(br, perm); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_hfsn_fin(void) +{ + AuDbg("au_hfsn_ifree %lld\n", (long long)atomic64_read(&au_hfsn_ifree)); + wait_event(au_hfsn_wq, !atomic64_read(&au_hfsn_ifree)); +} + +const struct au_hnotify_op au_hnotify_op = { + .ctl = au_hfsn_ctl, + .alloc = au_hfsn_alloc, + .free = au_hfsn_free, + + .fin = au_hfsn_fin, + + .reset_br = au_hfsn_reset_br, + .fin_br = au_hfsn_fin_br, + .init_br = au_hfsn_init_br +}; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/hfsplus.c +++ linux-azure-5.13-5.13.0/fs/aufs/hfsplus.c @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2010-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * special support for filesystems which acquires an inode mutex + * at final closing a file, eg, hfsplus. + * + * This trick is very simple and stupid, just to open the file before really + * necessary open to tell hfsplus that this is not the final closing. + * The caller should call au_h_open_pre() after acquiring the inode mutex, + * and au_h_open_post() after releasing it. + */ + +#include "aufs.h" + +struct file *au_h_open_pre(struct dentry *dentry, aufs_bindex_t bindex, + int force_wr) +{ + struct file *h_file; + struct dentry *h_dentry; + + h_dentry = au_h_dptr(dentry, bindex); + AuDebugOn(!h_dentry); + AuDebugOn(d_is_negative(h_dentry)); + + h_file = NULL; + if (au_test_hfsplus(h_dentry->d_sb) + && d_is_reg(h_dentry)) + h_file = au_h_open(dentry, bindex, + O_RDONLY | O_NOATIME | O_LARGEFILE, + /*file*/NULL, force_wr); + return h_file; +} + +void au_h_open_post(struct dentry *dentry, aufs_bindex_t bindex, + struct file *h_file) +{ + struct au_branch *br; + + if (h_file) { + fput(h_file); + br = au_sbr(dentry->d_sb, bindex); + au_lcnt_dec(&br->br_nfiles); + } +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/hnotify.c +++ linux-azure-5.13-5.13.0/fs/aufs/hnotify.c @@ -0,0 +1,715 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * abstraction to notify the direct changes on lower directories + */ + +/* #include */ +#include "aufs.h" + +int au_hn_alloc(struct au_hinode *hinode, struct inode *inode) +{ + int err; + struct au_hnotify *hn; + + err = -ENOMEM; + hn = au_cache_alloc_hnotify(); + if (hn) { + hn->hn_aufs_inode = inode; + hinode->hi_notify = hn; + err = au_hnotify_op.alloc(hinode); + AuTraceErr(err); + if (unlikely(err)) { + hinode->hi_notify = NULL; + au_cache_free_hnotify(hn); + /* + * The upper dir was removed by udba, but the same named + * dir left. In this case, aufs assigns a new inode + * number and set the monitor again. + * For the lower dir, the old monitor is still left. + */ + if (err == -EEXIST) + err = 0; + } + } + + AuTraceErr(err); + return err; +} + +void au_hn_free(struct au_hinode *hinode) +{ + struct au_hnotify *hn; + + hn = hinode->hi_notify; + if (hn) { + hinode->hi_notify = NULL; + if (au_hnotify_op.free(hinode, hn)) + au_cache_free_hnotify(hn); + } +} + +/* ---------------------------------------------------------------------- */ + +void au_hn_ctl(struct au_hinode *hinode, int do_set) +{ + if (hinode->hi_notify) + au_hnotify_op.ctl(hinode, do_set); +} + +void au_hn_reset(struct inode *inode, unsigned int flags) +{ + aufs_bindex_t bindex, bbot; + struct inode *hi; + struct dentry *iwhdentry; + + bbot = au_ibbot(inode); + for (bindex = au_ibtop(inode); bindex <= bbot; bindex++) { + hi = au_h_iptr(inode, bindex); + if (!hi) + continue; + + /* inode_lock_nested(hi, AuLsc_I_CHILD); */ + iwhdentry = au_hi_wh(inode, bindex); + if (iwhdentry) + dget(iwhdentry); + au_igrab(hi); + au_set_h_iptr(inode, bindex, NULL, 0); + au_set_h_iptr(inode, bindex, au_igrab(hi), + flags & ~AuHi_XINO); + iput(hi); + dput(iwhdentry); + /* inode_unlock(hi); */ + } +} + +/* ---------------------------------------------------------------------- */ + +static int hn_xino(struct inode *inode, struct inode *h_inode) +{ + int err; + aufs_bindex_t bindex, bbot, bfound, btop; + struct inode *h_i; + + err = 0; + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("branch root dir was changed\n"); + goto out; + } + + bfound = -1; + bbot = au_ibbot(inode); + btop = au_ibtop(inode); +#if 0 /* reserved for future use */ + if (bindex == bbot) { + /* keep this ino in rename case */ + goto out; + } +#endif + for (bindex = btop; bindex <= bbot; bindex++) + if (au_h_iptr(inode, bindex) == h_inode) { + bfound = bindex; + break; + } + if (bfound < 0) + goto out; + + for (bindex = btop; bindex <= bbot; bindex++) { + h_i = au_h_iptr(inode, bindex); + if (!h_i) + continue; + + err = au_xino_write(inode->i_sb, bindex, h_i->i_ino, /*ino*/0); + /* ignore this error */ + /* bad action? */ + } + + /* children inode number will be broken */ + +out: + AuTraceErr(err); + return err; +} + +static int hn_gen_tree(struct dentry *dentry) +{ + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, dentry, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + struct dentry *d; + + d = dentries[j]; + if (IS_ROOT(d)) + continue; + + au_digen_dec(d); + if (d_really_is_positive(d)) + /* todo: reset children xino? + cached children only? */ + au_iigen_dec(d_inode(d)); + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +/* + * return 0 if processed. + */ +static int hn_gen_by_inode(char *name, unsigned int nlen, struct inode *inode, + const unsigned int isdir) +{ + int err; + struct dentry *d; + struct qstr *dname; + + err = 1; + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("branch root dir was changed\n"); + err = 0; + goto out; + } + + if (!isdir) { + AuDebugOn(!name); + au_iigen_dec(inode); + spin_lock(&inode->i_lock); + hlist_for_each_entry(d, &inode->i_dentry, d_u.d_alias) { + spin_lock(&d->d_lock); + dname = &d->d_name; + if (dname->len != nlen + && memcmp(dname->name, name, nlen)) { + spin_unlock(&d->d_lock); + continue; + } + err = 0; + au_digen_dec(d); + spin_unlock(&d->d_lock); + break; + } + spin_unlock(&inode->i_lock); + } else { + au_fset_si(au_sbi(inode->i_sb), FAILED_REFRESH_DIR); + d = d_find_any_alias(inode); + if (!d) { + au_iigen_dec(inode); + goto out; + } + + spin_lock(&d->d_lock); + dname = &d->d_name; + if (dname->len == nlen && !memcmp(dname->name, name, nlen)) { + spin_unlock(&d->d_lock); + err = hn_gen_tree(d); + spin_lock(&d->d_lock); + } + spin_unlock(&d->d_lock); + dput(d); + } + +out: + AuTraceErr(err); + return err; +} + +static int hn_gen_by_name(struct dentry *dentry, const unsigned int isdir) +{ + int err; + + if (IS_ROOT(dentry)) { + pr_warn("branch root dir was changed\n"); + return 0; + } + + err = 0; + if (!isdir) { + au_digen_dec(dentry); + if (d_really_is_positive(dentry)) + au_iigen_dec(d_inode(dentry)); + } else { + au_fset_si(au_sbi(dentry->d_sb), FAILED_REFRESH_DIR); + if (d_really_is_positive(dentry)) + err = hn_gen_tree(dentry); + } + + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* hnotify job flags */ +#define AuHnJob_XINO0 1 +#define AuHnJob_GEN (1 << 1) +#define AuHnJob_DIRENT (1 << 2) +#define AuHnJob_ISDIR (1 << 3) +#define AuHnJob_TRYXINO0 (1 << 4) +#define AuHnJob_MNTPNT (1 << 5) +#define au_ftest_hnjob(flags, name) ((flags) & AuHnJob_##name) +#define au_fset_hnjob(flags, name) \ + do { (flags) |= AuHnJob_##name; } while (0) +#define au_fclr_hnjob(flags, name) \ + do { (flags) &= ~AuHnJob_##name; } while (0) + +enum { + AuHn_CHILD, + AuHn_PARENT, + AuHnLast +}; + +struct au_hnotify_args { + struct inode *h_dir, *dir, *h_child_inode; + u32 mask; + unsigned int flags[AuHnLast]; + unsigned int h_child_nlen; + char h_child_name[]; +}; + +struct hn_job_args { + unsigned int flags; + struct inode *inode, *h_inode, *dir, *h_dir; + struct dentry *dentry; + char *h_name; + int h_nlen; +}; + +static int hn_job(struct hn_job_args *a) +{ + const unsigned int isdir = au_ftest_hnjob(a->flags, ISDIR); + int e; + + /* reset xino */ + if (au_ftest_hnjob(a->flags, XINO0) && a->inode) + hn_xino(a->inode, a->h_inode); /* ignore this error */ + + if (au_ftest_hnjob(a->flags, TRYXINO0) + && a->inode + && a->h_inode) { + inode_lock_shared_nested(a->h_inode, AuLsc_I_CHILD); + if (!a->h_inode->i_nlink + && !(a->h_inode->i_state & I_LINKABLE)) + hn_xino(a->inode, a->h_inode); /* ignore this error */ + inode_unlock_shared(a->h_inode); + } + + /* make the generation obsolete */ + if (au_ftest_hnjob(a->flags, GEN)) { + e = -1; + if (a->inode) + e = hn_gen_by_inode(a->h_name, a->h_nlen, a->inode, + isdir); + if (e && a->dentry) + hn_gen_by_name(a->dentry, isdir); + /* ignore this error */ + } + + /* make dir entries obsolete */ + if (au_ftest_hnjob(a->flags, DIRENT) && a->inode) { + struct au_vdir *vdir; + + vdir = au_ivdir(a->inode); + if (vdir) + vdir->vd_jiffy = 0; + /* IMustLock(a->inode); */ + /* inode_inc_iversion(a->inode); */ + } + + /* can do nothing but warn */ + if (au_ftest_hnjob(a->flags, MNTPNT) + && a->dentry + && d_mountpoint(a->dentry)) + pr_warn("mount-point %pd is removed or renamed\n", a->dentry); + + return 0; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *lookup_wlock_by_name(char *name, unsigned int nlen, + struct inode *dir) +{ + struct dentry *dentry, *d, *parent; + struct qstr *dname; + + parent = d_find_any_alias(dir); + if (!parent) + return NULL; + + dentry = NULL; + spin_lock(&parent->d_lock); + list_for_each_entry(d, &parent->d_subdirs, d_child) { + /* AuDbg("%pd\n", d); */ + spin_lock_nested(&d->d_lock, DENTRY_D_LOCK_NESTED); + dname = &d->d_name; + if (dname->len != nlen || memcmp(dname->name, name, nlen)) + goto cont_unlock; + if (au_di(d)) + au_digen_dec(d); + else + goto cont_unlock; + if (au_dcount(d) > 0) { + dentry = dget_dlock(d); + spin_unlock(&d->d_lock); + break; + } + +cont_unlock: + spin_unlock(&d->d_lock); + } + spin_unlock(&parent->d_lock); + dput(parent); + + if (dentry) + di_write_lock_child(dentry); + + return dentry; +} + +static struct inode *lookup_wlock_by_ino(struct super_block *sb, + aufs_bindex_t bindex, ino_t h_ino) +{ + struct inode *inode; + ino_t ino; + int err; + + inode = NULL; + err = au_xino_read(sb, bindex, h_ino, &ino); + if (!err && ino) + inode = ilookup(sb, ino); + if (!inode) + goto out; + + if (unlikely(inode->i_ino == AUFS_ROOT_INO)) { + pr_warn("wrong root branch\n"); + iput(inode); + inode = NULL; + goto out; + } + + ii_write_lock_child(inode); + +out: + return inode; +} + +static void au_hn_bh(void *_args) +{ + struct au_hnotify_args *a = _args; + struct super_block *sb; + aufs_bindex_t bindex, bbot, bfound; + unsigned char xino, try_iput; + int err; + struct inode *inode; + ino_t h_ino; + struct hn_job_args args; + struct dentry *dentry; + struct au_sbinfo *sbinfo; + + AuDebugOn(!_args); + AuDebugOn(!a->h_dir); + AuDebugOn(!a->dir); + AuDebugOn(!a->mask); + AuDbg("mask 0x%x, i%lu, hi%lu, hci%lu\n", + a->mask, a->dir->i_ino, a->h_dir->i_ino, + a->h_child_inode ? a->h_child_inode->i_ino : 0); + + inode = NULL; + dentry = NULL; + /* + * do not lock a->dir->i_mutex here + * because of d_revalidate() may cause a deadlock. + */ + sb = a->dir->i_sb; + AuDebugOn(!sb); + sbinfo = au_sbi(sb); + AuDebugOn(!sbinfo); + si_write_lock(sb, AuLock_NOPLMW); + + if (au_opt_test(sbinfo->si_mntflags, DIRREN)) + switch (a->mask & FS_EVENTS_POSS_ON_CHILD) { + case FS_MOVED_FROM: + case FS_MOVED_TO: + AuWarn1("DIRREN with UDBA may not work correctly " + "for the direct rename(2)\n"); + } + + ii_read_lock_parent(a->dir); + bfound = -1; + bbot = au_ibbot(a->dir); + for (bindex = au_ibtop(a->dir); bindex <= bbot; bindex++) + if (au_h_iptr(a->dir, bindex) == a->h_dir) { + bfound = bindex; + break; + } + ii_read_unlock(a->dir); + if (unlikely(bfound < 0)) + goto out; + + xino = !!au_opt_test(au_mntflags(sb), XINO); + h_ino = 0; + if (a->h_child_inode) + h_ino = a->h_child_inode->i_ino; + + if (a->h_child_nlen + && (au_ftest_hnjob(a->flags[AuHn_CHILD], GEN) + || au_ftest_hnjob(a->flags[AuHn_CHILD], MNTPNT))) + dentry = lookup_wlock_by_name(a->h_child_name, a->h_child_nlen, + a->dir); + try_iput = 0; + if (dentry && d_really_is_positive(dentry)) + inode = d_inode(dentry); + if (xino && !inode && h_ino + && (au_ftest_hnjob(a->flags[AuHn_CHILD], XINO0) + || au_ftest_hnjob(a->flags[AuHn_CHILD], TRYXINO0) + || au_ftest_hnjob(a->flags[AuHn_CHILD], GEN))) { + inode = lookup_wlock_by_ino(sb, bfound, h_ino); + try_iput = 1; + } + + args.flags = a->flags[AuHn_CHILD]; + args.dentry = dentry; + args.inode = inode; + args.h_inode = a->h_child_inode; + args.dir = a->dir; + args.h_dir = a->h_dir; + args.h_name = a->h_child_name; + args.h_nlen = a->h_child_nlen; + err = hn_job(&args); + if (dentry) { + if (au_di(dentry)) + di_write_unlock(dentry); + dput(dentry); + } + if (inode && try_iput) { + ii_write_unlock(inode); + iput(inode); + } + + ii_write_lock_parent(a->dir); + args.flags = a->flags[AuHn_PARENT]; + args.dentry = NULL; + args.inode = a->dir; + args.h_inode = a->h_dir; + args.dir = NULL; + args.h_dir = NULL; + args.h_name = NULL; + args.h_nlen = 0; + err = hn_job(&args); + ii_write_unlock(a->dir); + +out: + iput(a->h_child_inode); + iput(a->h_dir); + iput(a->dir); + si_write_unlock(sb); + au_nwt_done(&sbinfo->si_nowait); + au_kfree_rcu(a); +} + +/* ---------------------------------------------------------------------- */ + +int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, + const struct qstr *h_child_qstr, struct inode *h_child_inode) +{ + int err, len; + unsigned int flags[AuHnLast], f; + unsigned char isdir, isroot, wh; + struct inode *dir; + struct au_hnotify_args *args; + char *p, *h_child_name; + + err = 0; + AuDebugOn(!hnotify || !hnotify->hn_aufs_inode); + dir = igrab(hnotify->hn_aufs_inode); + if (!dir) + goto out; + + isroot = (dir->i_ino == AUFS_ROOT_INO); + wh = 0; + h_child_name = (void *)h_child_qstr->name; + len = h_child_qstr->len; + if (h_child_name) { + if (len > AUFS_WH_PFX_LEN + && !memcmp(h_child_name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + h_child_name += AUFS_WH_PFX_LEN; + len -= AUFS_WH_PFX_LEN; + wh = 1; + } + } + + isdir = 0; + if (h_child_inode) + isdir = !!S_ISDIR(h_child_inode->i_mode); + flags[AuHn_PARENT] = AuHnJob_ISDIR; + flags[AuHn_CHILD] = 0; + if (isdir) + flags[AuHn_CHILD] = AuHnJob_ISDIR; + au_fset_hnjob(flags[AuHn_PARENT], DIRENT); + au_fset_hnjob(flags[AuHn_CHILD], GEN); + switch (mask & ALL_FSNOTIFY_DIRENT_EVENTS) { + case FS_MOVED_FROM: + case FS_MOVED_TO: + au_fset_hnjob(flags[AuHn_CHILD], XINO0); + au_fset_hnjob(flags[AuHn_CHILD], MNTPNT); + fallthrough; + case FS_CREATE: + AuDebugOn(!h_child_name); + break; + + case FS_DELETE: + /* + * aufs never be able to get this child inode. + * revalidation should be in d_revalidate() + * by checking i_nlink, i_generation or d_unhashed(). + */ + AuDebugOn(!h_child_name); + au_fset_hnjob(flags[AuHn_CHILD], TRYXINO0); + au_fset_hnjob(flags[AuHn_CHILD], MNTPNT); + break; + + default: + AuDebugOn(1); + } + + if (wh) + h_child_inode = NULL; + + err = -ENOMEM; + /* iput() and kfree() will be called in au_hnotify() */ + args = kmalloc(sizeof(*args) + len + 1, GFP_NOFS); + if (unlikely(!args)) { + AuErr1("no memory\n"); + iput(dir); + goto out; + } + args->flags[AuHn_PARENT] = flags[AuHn_PARENT]; + args->flags[AuHn_CHILD] = flags[AuHn_CHILD]; + args->mask = mask; + args->dir = dir; + args->h_dir = igrab(h_dir); + if (h_child_inode) + h_child_inode = igrab(h_child_inode); /* can be NULL */ + args->h_child_inode = h_child_inode; + args->h_child_nlen = len; + if (len) { + p = (void *)args; + p += sizeof(*args); + memcpy(p, h_child_name, len); + p[len] = 0; + } + + /* NFS fires the event for silly-renamed one from kworker */ + f = 0; + if (!dir->i_nlink + || (au_test_nfs(h_dir->i_sb) && (mask & FS_DELETE))) + f = AuWkq_NEST; + err = au_wkq_nowait(au_hn_bh, args, dir->i_sb, f); + if (unlikely(err)) { + pr_err("wkq %d\n", err); + iput(args->h_child_inode); + iput(args->h_dir); + iput(args->dir); + au_kfree_rcu(args); + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_hnotify_reset_br(unsigned int udba, struct au_branch *br, int perm) +{ + int err; + + AuDebugOn(!(udba & AuOptMask_UDBA)); + + err = 0; + if (au_hnotify_op.reset_br) + err = au_hnotify_op.reset_br(udba, br, perm); + + return err; +} + +int au_hnotify_init_br(struct au_branch *br, int perm) +{ + int err; + + err = 0; + if (au_hnotify_op.init_br) + err = au_hnotify_op.init_br(br, perm); + + return err; +} + +void au_hnotify_fin_br(struct au_branch *br) +{ + if (au_hnotify_op.fin_br) + au_hnotify_op.fin_br(br); +} + +static void au_hn_destroy_cache(void) +{ + kmem_cache_destroy(au_cache[AuCache_HNOTIFY]); + au_cache[AuCache_HNOTIFY] = NULL; +} + +int __init au_hnotify_init(void) +{ + int err; + + err = -ENOMEM; + au_cache[AuCache_HNOTIFY] = AuCache(au_hnotify); + if (au_cache[AuCache_HNOTIFY]) { + err = 0; + if (au_hnotify_op.init) + err = au_hnotify_op.init(); + if (unlikely(err)) + au_hn_destroy_cache(); + } + AuTraceErr(err); + return err; +} + +void au_hnotify_fin(void) +{ + if (au_hnotify_op.fin) + au_hnotify_op.fin(); + + /* cf. au_cache_fin() */ + if (au_cache[AuCache_HNOTIFY]) + au_hn_destroy_cache(); +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/i_op.c +++ linux-azure-5.13-5.13.0/fs/aufs/i_op.c @@ -0,0 +1,1513 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operations (except add/del/rename) + */ + +#include +#include +#include +#include +#include +#include "aufs.h" + +static int h_permission(struct inode *h_inode, int mask, + struct path *h_path, int brperm) +{ + int err; + const unsigned char write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); + struct user_namespace *h_userns; + + err = -EPERM; + if (write_mask && IS_IMMUTABLE(h_inode)) + goto out; + + err = -EACCES; + if (((mask & MAY_EXEC) + && S_ISREG(h_inode->i_mode) + && (path_noexec(h_path) + || !(h_inode->i_mode & 0111)))) + goto out; + + /* + * - skip the lower fs test in the case of write to ro branch. + * - nfs dir permission write check is optimized, but a policy for + * link/rename requires a real check. + * - nfs always sets SB_POSIXACL regardless its mount option 'noacl.' + * in this case, generic_permission() returns -EOPNOTSUPP. + */ + h_userns = mnt_user_ns(h_path->mnt); + if ((write_mask && !au_br_writable(brperm)) + || (au_test_nfs(h_inode->i_sb) && S_ISDIR(h_inode->i_mode) + && write_mask && !(mask & MAY_READ)) + || !h_inode->i_op->permission) { + /* AuLabel(generic_permission); */ + /* AuDbg("get_acl %ps\n", h_inode->i_op->get_acl); */ + err = generic_permission(h_userns, h_inode, mask); + if (err == -EOPNOTSUPP && au_test_nfs_noacl(h_inode)) + err = h_inode->i_op->permission(h_userns, h_inode, + mask); + AuTraceErr(err); + } else { + /* AuLabel(h_inode->permission); */ + err = h_inode->i_op->permission(h_userns, h_inode, mask); + AuTraceErr(err); + } + + if (!err) + err = devcgroup_inode_permission(h_inode, mask); + if (!err) + err = security_inode_permission(h_inode, mask); + +out: + return err; +} + +static int aufs_permission(struct user_namespace *userns, struct inode *inode, + int mask) +{ + int err; + aufs_bindex_t bindex, bbot; + const unsigned char isdir = !!S_ISDIR(inode->i_mode), + write_mask = !!(mask & (MAY_WRITE | MAY_APPEND)); + struct inode *h_inode; + struct super_block *sb; + struct au_branch *br; + + /* todo: support rcu-walk? */ + if (mask & MAY_NOT_BLOCK) + return -ECHILD; + + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH); + ii_read_lock_child(inode); +#if 0 /* reserved for future use */ + /* + * This test may be rather 'too much' since the test is essentially done + * in the aufs_lookup(). Theoretically it is possible that the inode + * generation doesn't match to the superblock's here. But it isn't a + * big deal I suppose. + */ + err = au_iigen_test(inode, au_sigen(sb)); + if (unlikely(err)) + goto out; +#endif + + if (!isdir + || write_mask + || au_opt_test(au_mntflags(sb), DIRPERM1)) { + err = au_busy_or_stale(); + h_inode = au_h_iptr(inode, au_ibtop(inode)); + if (unlikely(!h_inode + || (h_inode->i_mode & S_IFMT) + != (inode->i_mode & S_IFMT))) + goto out; + + err = 0; + bindex = au_ibtop(inode); + br = au_sbr(sb, bindex); + err = h_permission(h_inode, mask, &br->br_path, br->br_perm); + if (write_mask + && !err + && !special_file(h_inode->i_mode)) { + /* test whether the upper writable branch exists */ + err = -EROFS; + for (; bindex >= 0; bindex--) + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = 0; + break; + } + } + goto out; + } + + /* non-write to dir */ + err = 0; + bbot = au_ibbot(inode); + for (bindex = au_ibtop(inode); !err && bindex <= bbot; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (h_inode) { + err = au_busy_or_stale(); + if (unlikely(!S_ISDIR(h_inode->i_mode))) + break; + + br = au_sbr(sb, bindex); + err = h_permission(h_inode, mask, &br->br_path, + br->br_perm); + } + } + +out: + ii_read_unlock(inode); + si_read_unlock(sb); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *aufs_lookup(struct inode *dir, struct dentry *dentry, + unsigned int flags) +{ + struct dentry *ret, *parent; + struct inode *inode; + struct super_block *sb; + int err, npositive; + + IMustLock(dir); + + /* todo: support rcu-walk? */ + ret = ERR_PTR(-ECHILD); + if (flags & LOOKUP_RCU) + goto out; + + ret = ERR_PTR(-ENAMETOOLONG); + if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + goto out; + + sb = dir->i_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + ret = ERR_PTR(err); + if (unlikely(err)) + goto out; + + err = au_di_init(dentry); + ret = ERR_PTR(err); + if (unlikely(err)) + goto out_si; + + inode = NULL; + npositive = 0; /* suppress a warning */ + parent = dentry->d_parent; /* dir inode is locked */ + di_read_lock_parent(parent, AuLock_IR); + err = au_alive_dir(parent); + if (!err) + err = au_digen_test(parent, au_sigen(sb)); + if (!err) { + /* regardless LOOKUP_CREATE, always ALLOW_NEG */ + npositive = au_lkup_dentry(dentry, au_dbtop(parent), + AuLkup_ALLOW_NEG); + err = npositive; + } + di_read_unlock(parent, AuLock_IR); + ret = ERR_PTR(err); + if (unlikely(err < 0)) + goto out_unlock; + + if (npositive) { + inode = au_new_inode(dentry, /*must_new*/0); + if (IS_ERR(inode)) { + ret = (void *)inode; + inode = NULL; + goto out_unlock; + } + } + + if (inode) + atomic_inc(&inode->i_count); + ret = d_splice_alias(inode, dentry); +#if 0 /* reserved for future use */ + if (unlikely(d_need_lookup(dentry))) { + spin_lock(&dentry->d_lock); + dentry->d_flags &= ~DCACHE_NEED_LOOKUP; + spin_unlock(&dentry->d_lock); + } else +#endif + if (inode) { + if (!IS_ERR(ret)) { + iput(inode); + if (ret && ret != dentry) + ii_write_unlock(inode); + } else { + ii_write_unlock(inode); + iput(inode); + inode = NULL; + } + } + +out_unlock: + di_write_unlock(dentry); +out_si: + si_read_unlock(sb); +out: + return ret; +} + +/* ---------------------------------------------------------------------- */ + +/* + * very dirty and complicated aufs ->atomic_open(). + * aufs_atomic_open() + * + au_aopen_or_create() + * + add_simple() + * + vfsub_atomic_open() + * + branch fs ->atomic_open() + * may call the actual 'open' for h_file + * + inc br_nfiles only if opened + * + au_aopen_no_open() or au_aopen_do_open() + * + * au_aopen_do_open() + * + finish_open() + * + au_do_aopen() + * + au_do_open() the body of all 'open' + * + au_do_open_nondir() + * set the passed h_file + * + * au_aopen_no_open() + * + finish_no_open() + */ + +struct aopen_node { + struct hlist_bl_node hblist; + struct file *file, *h_file; +}; + +static int au_do_aopen(struct inode *inode, struct file *file) +{ + struct hlist_bl_head *aopen; + struct hlist_bl_node *pos; + struct aopen_node *node; + struct au_do_open_args args = { + .aopen = 1, + .open = au_do_open_nondir + }; + + aopen = &au_sbi(inode->i_sb)->si_aopen; + hlist_bl_lock(aopen); + hlist_bl_for_each_entry(node, pos, aopen, hblist) + if (node->file == file) { + args.h_file = node->h_file; + break; + } + hlist_bl_unlock(aopen); + /* AuDebugOn(!args.h_file); */ + + return au_do_open(file, &args); +} + +static int au_aopen_do_open(struct file *file, struct dentry *dentry, + struct aopen_node *aopen_node) +{ + int err; + struct hlist_bl_head *aopen; + + AuLabel(here); + aopen = &au_sbi(dentry->d_sb)->si_aopen; + au_hbl_add(&aopen_node->hblist, aopen); + err = finish_open(file, dentry, au_do_aopen); + au_hbl_del(&aopen_node->hblist, aopen); + /* AuDbgFile(file); */ + AuDbg("%pd%s%s\n", dentry, + (file->f_mode & FMODE_CREATED) ? " created" : "", + (file->f_mode & FMODE_OPENED) ? " opened" : ""); + + AuTraceErr(err); + return err; +} + +static int au_aopen_no_open(struct file *file, struct dentry *dentry) +{ + int err; + + AuLabel(here); + dget(dentry); + err = finish_no_open(file, dentry); + + AuTraceErr(err); + return err; +} + +static int aufs_atomic_open(struct inode *dir, struct dentry *dentry, + struct file *file, unsigned int open_flag, + umode_t create_mode) +{ + int err, did_open; + unsigned int lkup_flags; + aufs_bindex_t bindex; + struct super_block *sb; + struct dentry *parent, *d; + struct vfsub_aopen_args args = { + .open_flag = open_flag, + .create_mode = create_mode + }; + struct aopen_node aopen_node = { + .file = file + }; + + IMustLock(dir); + AuDbg("open_flag 0%o\n", open_flag); + AuDbgDentry(dentry); + + err = 0; + if (!au_di(dentry)) { + lkup_flags = LOOKUP_OPEN; + if (open_flag & O_CREAT) + lkup_flags |= LOOKUP_CREATE; + d = aufs_lookup(dir, dentry, lkup_flags); + if (IS_ERR(d)) { + err = PTR_ERR(d); + AuTraceErr(err); + goto out; + } else if (d) { + /* + * obsoleted dentry found. + * another error will be returned later. + */ + d_drop(d); + AuDbgDentry(d); + dput(d); + } + AuDbgDentry(dentry); + } + + if (d_is_positive(dentry) + || d_unhashed(dentry) + || d_unlinked(dentry) + || !(open_flag & O_CREAT)) { + err = au_aopen_no_open(file, dentry); + goto out; /* success */ + } + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_GEN); + if (unlikely(err)) + goto out; + + sb = dentry->d_sb; + parent = dentry->d_parent; /* dir is locked */ + di_write_lock_parent(parent); + err = au_lkup_dentry(dentry, /*btop*/0, AuLkup_ALLOW_NEG); + if (unlikely(err < 0)) + goto out_parent; + + AuDbgDentry(dentry); + if (d_is_positive(dentry)) { + err = au_aopen_no_open(file, dentry); + goto out_parent; /* success */ + } + + args.file = alloc_empty_file(file->f_flags, current_cred()); + err = PTR_ERR(args.file); + if (IS_ERR(args.file)) + goto out_parent; + + bindex = au_dbtop(dentry); + err = au_aopen_or_create(dir, dentry, &args); + AuTraceErr(err); + AuDbgFile(args.file); + file->f_mode = args.file->f_mode & ~FMODE_OPENED; + did_open = !!(args.file->f_mode & FMODE_OPENED); + if (!did_open) { + fput(args.file); + args.file = NULL; + } + di_write_unlock(parent); + di_write_unlock(dentry); + if (unlikely(err < 0)) { + if (args.file) + fput(args.file); + goto out_sb; + } + + if (!did_open) + err = au_aopen_no_open(file, dentry); + else { + aopen_node.h_file = args.file; + err = au_aopen_do_open(file, dentry, &aopen_node); + } + if (unlikely(err < 0)) { + if (args.file) + fput(args.file); + if (did_open) + au_lcnt_dec(&args.br->br_nfiles); + } + goto out_sb; /* success */ + +out_parent: + di_write_unlock(parent); + di_write_unlock(dentry); +out_sb: + si_read_unlock(sb); +out: + AuTraceErr(err); + AuDbgFile(file); + return err; +} + + +/* ---------------------------------------------------------------------- */ + +static int au_wr_dir_cpup(struct dentry *dentry, struct dentry *parent, + const unsigned char add_entry, aufs_bindex_t bcpup, + aufs_bindex_t btop) +{ + int err; + struct dentry *h_parent; + struct inode *h_dir; + + if (add_entry) + IMustLock(d_inode(parent)); + else + di_write_lock_parent(parent); + + err = 0; + if (!au_h_dptr(parent, bcpup)) { + if (btop > bcpup) + err = au_cpup_dirs(dentry, bcpup); + else if (btop < bcpup) + err = au_cpdown_dirs(dentry, bcpup); + else + BUG(); + } + if (!err && add_entry && !au_ftest_wrdir(add_entry, TMPFILE)) { + h_parent = au_h_dptr(parent, bcpup); + h_dir = d_inode(h_parent); + inode_lock_shared_nested(h_dir, AuLsc_I_PARENT); + err = au_lkup_neg(dentry, bcpup, /*wh*/0); + /* todo: no unlock here */ + inode_unlock_shared(h_dir); + + AuDbg("bcpup %d\n", bcpup); + if (!err) { + if (d_really_is_negative(dentry)) + au_set_h_dptr(dentry, btop, NULL); + au_update_dbrange(dentry, /*do_put_zero*/0); + } + } + + if (!add_entry) + di_write_unlock(parent); + if (!err) + err = bcpup; /* success */ + + AuTraceErr(err); + return err; +} + +/* + * decide the branch and the parent dir where we will create a new entry. + * returns new bindex or an error. + * copyup the parent dir if needed. + */ +int au_wr_dir(struct dentry *dentry, struct dentry *src_dentry, + struct au_wr_dir_args *args) +{ + int err; + unsigned int flags; + aufs_bindex_t bcpup, btop, src_btop; + const unsigned char add_entry + = au_ftest_wrdir(args->flags, ADD_ENTRY) + | au_ftest_wrdir(args->flags, TMPFILE); + struct super_block *sb; + struct dentry *parent; + struct au_sbinfo *sbinfo; + + sb = dentry->d_sb; + sbinfo = au_sbi(sb); + parent = dget_parent(dentry); + btop = au_dbtop(dentry); + bcpup = btop; + if (args->force_btgt < 0) { + if (src_dentry) { + src_btop = au_dbtop(src_dentry); + if (src_btop < btop) + bcpup = src_btop; + } else if (add_entry) { + flags = 0; + if (au_ftest_wrdir(args->flags, ISDIR)) + au_fset_wbr(flags, DIR); + err = AuWbrCreate(sbinfo, dentry, flags); + bcpup = err; + } + + if (bcpup < 0 || au_test_ro(sb, bcpup, d_inode(dentry))) { + if (add_entry) + err = AuWbrCopyup(sbinfo, dentry); + else { + if (!IS_ROOT(dentry)) { + di_read_lock_parent(parent, !AuLock_IR); + err = AuWbrCopyup(sbinfo, dentry); + di_read_unlock(parent, !AuLock_IR); + } else + err = AuWbrCopyup(sbinfo, dentry); + } + bcpup = err; + if (unlikely(err < 0)) + goto out; + } + } else { + bcpup = args->force_btgt; + AuDebugOn(au_test_ro(sb, bcpup, d_inode(dentry))); + } + + AuDbg("btop %d, bcpup %d\n", btop, bcpup); + err = bcpup; + if (bcpup == btop) + goto out; /* success */ + + /* copyup the new parent into the branch we process */ + err = au_wr_dir_cpup(dentry, parent, add_entry, bcpup, btop); + if (err >= 0) { + if (d_really_is_negative(dentry)) { + au_set_h_dptr(dentry, btop, NULL); + au_set_dbtop(dentry, bcpup); + au_set_dbbot(dentry, bcpup); + } + AuDebugOn(add_entry + && !au_ftest_wrdir(args->flags, TMPFILE) + && !au_h_dptr(dentry, bcpup)); + } + +out: + dput(parent); + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_pin_hdir_unlock(struct au_pin *p) +{ + if (p->hdir) + au_hn_inode_unlock(p->hdir); +} + +int au_pin_hdir_lock(struct au_pin *p) +{ + int err; + + err = 0; + if (!p->hdir) + goto out; + + /* even if an error happens later, keep this lock */ + au_hn_inode_lock_nested(p->hdir, p->lsc_hi); + + err = -EBUSY; + if (unlikely(p->hdir->hi_inode != d_inode(p->h_parent))) + goto out; + + err = 0; + if (p->h_dentry) + err = au_h_verify(p->h_dentry, p->udba, p->hdir->hi_inode, + p->h_parent, p->br); + +out: + return err; +} + +int au_pin_hdir_relock(struct au_pin *p) +{ + int err, i; + struct inode *h_i; + struct dentry *h_d[] = { + p->h_dentry, + p->h_parent + }; + + err = au_pin_hdir_lock(p); + if (unlikely(err)) + goto out; + + for (i = 0; !err && i < sizeof(h_d)/sizeof(*h_d); i++) { + if (!h_d[i]) + continue; + if (d_is_positive(h_d[i])) { + h_i = d_inode(h_d[i]); + err = !h_i->i_nlink; + } + } + +out: + return err; +} + +static void au_pin_hdir_set_owner(struct au_pin *p, struct task_struct *task) +{ + atomic_long_set(&p->hdir->hi_inode->i_rwsem.owner, (long)task); +} + +void au_pin_hdir_acquire_nest(struct au_pin *p) +{ + if (p->hdir) { + rwsem_acquire_nest(&p->hdir->hi_inode->i_rwsem.dep_map, + p->lsc_hi, 0, NULL, _RET_IP_); + au_pin_hdir_set_owner(p, current); + } +} + +void au_pin_hdir_release(struct au_pin *p) +{ + if (p->hdir) { + au_pin_hdir_set_owner(p, p->task); + rwsem_release(&p->hdir->hi_inode->i_rwsem.dep_map, _RET_IP_); + } +} + +struct dentry *au_pinned_h_parent(struct au_pin *pin) +{ + if (pin && pin->parent) + return au_h_dptr(pin->parent, pin->bindex); + return NULL; +} + +void au_unpin(struct au_pin *p) +{ + if (p->hdir) + au_pin_hdir_unlock(p); + if (p->h_mnt && au_ftest_pin(p->flags, MNT_WRITE)) + vfsub_mnt_drop_write(p->h_mnt); + if (!p->hdir) + return; + + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_unlock(p->parent, AuLock_IR); + iput(p->hdir->hi_inode); + dput(p->parent); + p->parent = NULL; + p->hdir = NULL; + p->h_mnt = NULL; + /* do not clear p->task */ +} + +int au_do_pin(struct au_pin *p) +{ + int err; + struct super_block *sb; + struct inode *h_dir; + + err = 0; + sb = p->dentry->d_sb; + p->br = au_sbr(sb, p->bindex); + if (IS_ROOT(p->dentry)) { + if (au_ftest_pin(p->flags, MNT_WRITE)) { + p->h_mnt = au_br_mnt(p->br); + err = vfsub_mnt_want_write(p->h_mnt); + if (unlikely(err)) { + au_fclr_pin(p->flags, MNT_WRITE); + goto out_err; + } + } + goto out; + } + + p->h_dentry = NULL; + if (p->bindex <= au_dbbot(p->dentry)) + p->h_dentry = au_h_dptr(p->dentry, p->bindex); + + p->parent = dget_parent(p->dentry); + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_lock(p->parent, AuLock_IR, p->lsc_di); + + h_dir = NULL; + p->h_parent = au_h_dptr(p->parent, p->bindex); + p->hdir = au_hi(d_inode(p->parent), p->bindex); + if (p->hdir) + h_dir = p->hdir->hi_inode; + + /* + * udba case, or + * if DI_LOCKED is not set, then p->parent may be different + * and h_parent can be NULL. + */ + if (unlikely(!p->hdir || !h_dir || !p->h_parent)) { + err = -EBUSY; + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_unlock(p->parent, AuLock_IR); + dput(p->parent); + p->parent = NULL; + goto out_err; + } + + if (au_ftest_pin(p->flags, MNT_WRITE)) { + p->h_mnt = au_br_mnt(p->br); + err = vfsub_mnt_want_write(p->h_mnt); + if (unlikely(err)) { + au_fclr_pin(p->flags, MNT_WRITE); + if (!au_ftest_pin(p->flags, DI_LOCKED)) + di_read_unlock(p->parent, AuLock_IR); + dput(p->parent); + p->parent = NULL; + goto out_err; + } + } + + au_igrab(h_dir); + err = au_pin_hdir_lock(p); + if (!err) + goto out; /* success */ + + au_unpin(p); + +out_err: + pr_err("err %d\n", err); + err = au_busy_or_stale(); +out: + return err; +} + +void au_pin_init(struct au_pin *p, struct dentry *dentry, + aufs_bindex_t bindex, int lsc_di, int lsc_hi, + unsigned int udba, unsigned char flags) +{ + p->dentry = dentry; + p->udba = udba; + p->lsc_di = lsc_di; + p->lsc_hi = lsc_hi; + p->flags = flags; + p->bindex = bindex; + + p->parent = NULL; + p->hdir = NULL; + p->h_mnt = NULL; + + p->h_dentry = NULL; + p->h_parent = NULL; + p->br = NULL; + p->task = current; +} + +int au_pin(struct au_pin *pin, struct dentry *dentry, aufs_bindex_t bindex, + unsigned int udba, unsigned char flags) +{ + au_pin_init(pin, dentry, bindex, AuLsc_DI_PARENT, AuLsc_I_PARENT2, + udba, flags); + return au_do_pin(pin); +} + +/* ---------------------------------------------------------------------- */ + +/* + * ->setattr() and ->getattr() are called in various cases. + * chmod, stat: dentry is revalidated. + * fchmod, fstat: file and dentry are not revalidated, additionally they may be + * unhashed. + * for ->setattr(), ia->ia_file is passed from ftruncate only. + */ +/* todo: consolidate with do_refresh() and simple_reval_dpath() */ +int au_reval_for_attr(struct dentry *dentry, unsigned int sigen) +{ + int err; + struct dentry *parent; + + err = 0; + if (au_digen_test(dentry, sigen)) { + parent = dget_parent(dentry); + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(dentry, parent); + di_read_unlock(parent, AuLock_IR); + dput(parent); + } + + AuTraceErr(err); + return err; +} + +int au_pin_and_icpup(struct dentry *dentry, struct iattr *ia, + struct au_icpup_args *a) +{ + int err; + loff_t sz; + aufs_bindex_t btop, ibtop; + struct dentry *hi_wh, *parent; + struct inode *inode; + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = 0 + }; + + if (d_is_dir(dentry)) + au_fset_wrdir(wr_dir_args.flags, ISDIR); + /* plink or hi_wh() case */ + btop = au_dbtop(dentry); + inode = d_inode(dentry); + ibtop = au_ibtop(inode); + if (btop != ibtop && !au_test_ro(inode->i_sb, ibtop, inode)) + wr_dir_args.force_btgt = ibtop; + err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); + if (unlikely(err < 0)) + goto out; + a->btgt = err; + if (err != btop) + au_fset_icpup(a->flags, DID_CPUP); + + err = 0; + a->pin_flags = AuPin_MNT_WRITE; + parent = NULL; + if (!IS_ROOT(dentry)) { + au_fset_pin(a->pin_flags, DI_LOCKED); + parent = dget_parent(dentry); + di_write_lock_parent(parent); + } + + err = au_pin(&a->pin, dentry, a->btgt, a->udba, a->pin_flags); + if (unlikely(err)) + goto out_parent; + + sz = -1; + a->h_path.dentry = au_h_dptr(dentry, btop); + a->h_inode = d_inode(a->h_path.dentry); + if (ia && (ia->ia_valid & ATTR_SIZE)) { + inode_lock_shared_nested(a->h_inode, AuLsc_I_CHILD); + if (ia->ia_size < i_size_read(a->h_inode)) + sz = ia->ia_size; + inode_unlock_shared(a->h_inode); + } + + hi_wh = NULL; + if (au_ftest_icpup(a->flags, DID_CPUP) && d_unlinked(dentry)) { + hi_wh = au_hi_wh(inode, a->btgt); + if (!hi_wh) { + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = a->btgt, + .bsrc = -1, + .len = sz, + .pin = &a->pin + }; + err = au_sio_cpup_wh(&cpg, /*file*/NULL); + if (unlikely(err)) + goto out_unlock; + hi_wh = au_hi_wh(inode, a->btgt); + /* todo: revalidate hi_wh? */ + } + } + + if (parent) { + au_pin_set_parent_lflag(&a->pin, /*lflag*/0); + di_downgrade_lock(parent, AuLock_IR); + dput(parent); + parent = NULL; + } + if (!au_ftest_icpup(a->flags, DID_CPUP)) + goto out; /* success */ + + if (!d_unhashed(dentry)) { + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = a->btgt, + .bsrc = btop, + .len = sz, + .pin = &a->pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + err = au_sio_cpup_simple(&cpg); + if (!err) + a->h_path.dentry = au_h_dptr(dentry, a->btgt); + } else if (!hi_wh) + a->h_path.dentry = au_h_dptr(dentry, a->btgt); + else + a->h_path.dentry = hi_wh; /* do not dget here */ + +out_unlock: + a->h_inode = d_inode(a->h_path.dentry); + if (!err) + goto out; /* success */ + au_unpin(&a->pin); +out_parent: + if (parent) { + di_write_unlock(parent); + dput(parent); + } +out: + if (!err) + inode_lock_nested(a->h_inode, AuLsc_I_CHILD); + return err; +} + +static int aufs_setattr(struct user_namespace *userns, struct dentry *dentry, + struct iattr *ia) +{ + int err; + struct inode *inode, *delegated; + struct super_block *sb; + struct file *file; + struct au_icpup_args *a; + struct user_namespace *h_userns; + + inode = d_inode(dentry); + IMustLock(inode); + + err = setattr_prepare(userns, dentry, ia); + if (unlikely(err)) + goto out; + + err = -ENOMEM; + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + if (ia->ia_valid & (ATTR_KILL_SUID | ATTR_KILL_SGID)) + ia->ia_valid &= ~ATTR_MODE; + + file = NULL; + sb = dentry->d_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_kfree; + + if (ia->ia_valid & ATTR_FILE) { + /* currently ftruncate(2) only */ + AuDebugOn(!d_is_reg(dentry)); + file = ia->ia_file; + err = au_reval_and_lock_fdi(file, au_reopen_nondir, /*wlock*/1, + /*fi_lsc*/0); + if (unlikely(err)) + goto out_si; + ia->ia_file = au_hf_top(file); + a->udba = AuOpt_UDBA_NONE; + } else { + /* fchmod() doesn't pass ia_file */ + a->udba = au_opt_udba(sb); + di_write_lock_child(dentry); + /* no d_unlinked(), to set UDBA_NONE for root */ + if (d_unhashed(dentry)) + a->udba = AuOpt_UDBA_NONE; + if (a->udba != AuOpt_UDBA_NONE) { + AuDebugOn(IS_ROOT(dentry)); + err = au_reval_for_attr(dentry, au_sigen(sb)); + if (unlikely(err)) + goto out_dentry; + } + } + + err = au_pin_and_icpup(dentry, ia, a); + if (unlikely(err < 0)) + goto out_dentry; + if (au_ftest_icpup(a->flags, DID_CPUP)) { + ia->ia_file = NULL; + ia->ia_valid &= ~ATTR_FILE; + } + + a->h_path.mnt = au_sbr_mnt(sb, a->btgt); + if ((ia->ia_valid & (ATTR_MODE | ATTR_CTIME)) + == (ATTR_MODE | ATTR_CTIME)) { + err = security_path_chmod(&a->h_path, ia->ia_mode); + if (unlikely(err)) + goto out_unlock; + } else if ((ia->ia_valid & (ATTR_UID | ATTR_GID)) + && (ia->ia_valid & ATTR_CTIME)) { + err = security_path_chown(&a->h_path, ia->ia_uid, ia->ia_gid); + if (unlikely(err)) + goto out_unlock; + } + + if (ia->ia_valid & ATTR_SIZE) { + struct file *f; + + if (ia->ia_size < i_size_read(inode)) + /* unmap only */ + truncate_setsize(inode, ia->ia_size); + + f = NULL; + if (ia->ia_valid & ATTR_FILE) + f = ia->ia_file; + inode_unlock(a->h_inode); + err = vfsub_trunc(&a->h_path, ia->ia_size, ia->ia_valid, f); + inode_lock_nested(a->h_inode, AuLsc_I_CHILD); + } else { + delegated = NULL; + while (1) { + err = vfsub_notify_change(&a->h_path, ia, &delegated); + if (delegated) { + err = break_deleg_wait(&delegated); + if (!err) + continue; + } + break; + } + } + /* + * regardless aufs 'acl' option setting. + * why don't all acl-aware fs call this func from their ->setattr()? + */ + if (!err && (ia->ia_valid & ATTR_MODE)) { + h_userns = mnt_user_ns(a->h_path.mnt); + err = vfsub_acl_chmod(h_userns, a->h_inode, ia->ia_mode); + } + if (!err) + au_cpup_attr_changeable(inode); + +out_unlock: + inode_unlock(a->h_inode); + au_unpin(&a->pin); + if (unlikely(err)) + au_update_dbtop(dentry); +out_dentry: + di_write_unlock(dentry); + if (file) { + fi_write_unlock(file); + ia->ia_file = file; + ia->ia_valid |= ATTR_FILE; + } +out_si: + si_read_unlock(sb); +out_kfree: + au_kfree_rcu(a); +out: + AuTraceErr(err); + return err; +} + +#if IS_ENABLED(CONFIG_AUFS_XATTR) || IS_ENABLED(CONFIG_FS_POSIX_ACL) +static int au_h_path_to_set_attr(struct dentry *dentry, + struct au_icpup_args *a, struct path *h_path) +{ + int err; + struct super_block *sb; + + sb = dentry->d_sb; + a->udba = au_opt_udba(sb); + /* no d_unlinked(), to set UDBA_NONE for root */ + if (d_unhashed(dentry)) + a->udba = AuOpt_UDBA_NONE; + if (a->udba != AuOpt_UDBA_NONE) { + AuDebugOn(IS_ROOT(dentry)); + err = au_reval_for_attr(dentry, au_sigen(sb)); + if (unlikely(err)) + goto out; + } + err = au_pin_and_icpup(dentry, /*ia*/NULL, a); + if (unlikely(err < 0)) + goto out; + + h_path->dentry = a->h_path.dentry; + h_path->mnt = au_sbr_mnt(sb, a->btgt); + +out: + return err; +} + +ssize_t au_sxattr(struct dentry *dentry, struct inode *inode, + struct au_sxattr *arg) +{ + int err; + struct path h_path; + struct super_block *sb; + struct au_icpup_args *a; + struct inode *h_inode; + struct user_namespace *h_userns; + + IMustLock(inode); + + err = -ENOMEM; + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + sb = dentry->d_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_kfree; + + h_path.dentry = NULL; /* silence gcc */ + di_write_lock_child(dentry); + err = au_h_path_to_set_attr(dentry, a, &h_path); + if (unlikely(err)) + goto out_di; + h_userns = mnt_user_ns(h_path.mnt); + + inode_unlock(a->h_inode); + switch (arg->type) { + case AU_XATTR_SET: + AuDebugOn(d_is_negative(h_path.dentry)); + err = vfsub_setxattr(h_userns, h_path.dentry, + arg->u.set.name, arg->u.set.value, + arg->u.set.size, arg->u.set.flags); + break; + case AU_ACL_SET: + err = -EOPNOTSUPP; + h_inode = d_inode(h_path.dentry); + if (h_inode->i_op->set_acl) { + /* this will call posix_acl_update_mode */ + err = h_inode->i_op->set_acl(h_userns, h_inode, + arg->u.acl_set.acl, + arg->u.acl_set.type); + } + break; + } + if (!err) + au_cpup_attr_timesizes(inode); + + au_unpin(&a->pin); + if (unlikely(err)) + au_update_dbtop(dentry); + +out_di: + di_write_unlock(dentry); + si_read_unlock(sb); +out_kfree: + au_kfree_rcu(a); +out: + AuTraceErr(err); + return err; +} +#endif + +static void au_refresh_iattr(struct inode *inode, struct kstat *st, + unsigned int nlink) +{ + unsigned int n; + + inode->i_mode = st->mode; + /* don't i_[ug]id_write() here */ + inode->i_uid = st->uid; + inode->i_gid = st->gid; + inode->i_atime = st->atime; + inode->i_mtime = st->mtime; + inode->i_ctime = st->ctime; + + au_cpup_attr_nlink(inode, /*force*/0); + if (S_ISDIR(inode->i_mode)) { + n = inode->i_nlink; + n -= nlink; + n += st->nlink; + smp_mb(); /* for i_nlink */ + /* 0 can happen */ + set_nlink(inode, n); + } + + spin_lock(&inode->i_lock); + inode->i_blocks = st->blocks; + i_size_write(inode, st->size); + spin_unlock(&inode->i_lock); +} + +/* + * common routine for aufs_getattr() and au_getxattr(). + * returns zero or negative (an error). + * @dentry will be read-locked in success. + */ +int au_h_path_getattr(struct dentry *dentry, struct inode *inode, int force, + struct path *h_path, int locked) +{ + int err; + unsigned int mnt_flags, sigen; + unsigned char udba_none; + aufs_bindex_t bindex; + struct super_block *sb, *h_sb; + + h_path->mnt = NULL; + h_path->dentry = NULL; + + err = 0; + sb = dentry->d_sb; + mnt_flags = au_mntflags(sb); + udba_none = !!au_opt_test(mnt_flags, UDBA_NONE); + + if (unlikely(locked)) + goto body; /* skip locking dinfo */ + + /* support fstat(2) */ + if (!d_unlinked(dentry) && !udba_none) { + sigen = au_sigen(sb); + err = au_digen_test(dentry, sigen); + if (!err) { + di_read_lock_child(dentry, AuLock_IR); + err = au_dbrange_test(dentry); + if (unlikely(err)) { + di_read_unlock(dentry, AuLock_IR); + goto out; + } + } else { + AuDebugOn(IS_ROOT(dentry)); + di_write_lock_child(dentry); + err = au_dbrange_test(dentry); + if (!err) + err = au_reval_for_attr(dentry, sigen); + if (!err) + di_downgrade_lock(dentry, AuLock_IR); + else { + di_write_unlock(dentry); + goto out; + } + } + } else + di_read_lock_child(dentry, AuLock_IR); + +body: + if (!inode) { + inode = d_inode(dentry); + if (unlikely(!inode)) + goto out; + } + bindex = au_ibtop(inode); + h_path->mnt = au_sbr_mnt(sb, bindex); + h_sb = h_path->mnt->mnt_sb; + if (!force + && !au_test_fs_bad_iattr(h_sb) + && udba_none) + goto out; /* success */ + + if (au_dbtop(dentry) == bindex) + h_path->dentry = au_h_dptr(dentry, bindex); + else if (au_opt_test(mnt_flags, PLINK) && au_plink_test(inode)) { + h_path->dentry = au_plink_lkup(inode, bindex); + if (IS_ERR(h_path->dentry)) + /* pretending success */ + h_path->dentry = NULL; + else + dput(h_path->dentry); + } + +out: + return err; +} + +static int aufs_getattr(struct user_namespace *userns, const struct path *path, + struct kstat *st, u32 request, unsigned int query) +{ + int err; + unsigned char positive; + struct path h_path; + struct dentry *dentry; + struct inode *inode; + struct super_block *sb; + + dentry = path->dentry; + inode = d_inode(dentry); + sb = dentry->d_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + err = au_h_path_getattr(dentry, /*inode*/NULL, /*force*/0, &h_path, + /*locked*/0); + if (unlikely(err)) + goto out_si; + if (unlikely(!h_path.dentry)) + /* illegally overlapped or something */ + goto out_fill; /* pretending success */ + + positive = d_is_positive(h_path.dentry); + if (positive) + /* no vfsub version */ + err = vfs_getattr(&h_path, st, request, query); + if (!err) { + if (positive) + au_refresh_iattr(inode, st, + d_inode(h_path.dentry)->i_nlink); + goto out_fill; /* success */ + } + AuTraceErr(err); + goto out_di; + +out_fill: + generic_fillattr(userns, inode, st); +out_di: + di_read_unlock(dentry, AuLock_IR); +out_si: + si_read_unlock(sb); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static const char *aufs_get_link(struct dentry *dentry, struct inode *inode, + struct delayed_call *done) +{ + const char *ret; + struct dentry *h_dentry; + struct inode *h_inode; + int err; + aufs_bindex_t bindex; + + ret = NULL; /* suppress a warning */ + err = -ECHILD; + if (!dentry) + goto out; + + err = aufs_read_lock(dentry, AuLock_IR | AuLock_GEN); + if (unlikely(err)) + goto out; + + err = au_d_hashed_positive(dentry); + if (unlikely(err)) + goto out_unlock; + + err = -EINVAL; + inode = d_inode(dentry); + bindex = au_ibtop(inode); + h_inode = au_h_iptr(inode, bindex); + if (unlikely(!h_inode->i_op->get_link)) + goto out_unlock; + + err = -EBUSY; + h_dentry = NULL; + if (au_dbtop(dentry) <= bindex) { + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry) + dget(h_dentry); + } + if (!h_dentry) { + h_dentry = d_find_any_alias(h_inode); + if (IS_ERR(h_dentry)) { + err = PTR_ERR(h_dentry); + goto out_unlock; + } + } + if (unlikely(!h_dentry)) + goto out_unlock; + + err = 0; + AuDbg("%ps\n", h_inode->i_op->get_link); + AuDbgDentry(h_dentry); + ret = vfs_get_link(h_dentry, done); + dput(h_dentry); + if (IS_ERR(ret)) + err = PTR_ERR(ret); + +out_unlock: + aufs_read_unlock(dentry, AuLock_IR); +out: + if (unlikely(err)) + ret = ERR_PTR(err); + AuTraceErrPtr(ret); + return ret; +} + +/* ---------------------------------------------------------------------- */ + +static int au_is_special(struct inode *inode) +{ + return (inode->i_mode & (S_IFBLK | S_IFCHR | S_IFIFO | S_IFSOCK)); +} + +static int aufs_update_time(struct inode *inode, struct timespec64 *ts, + int flags) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb; + struct inode *h_inode; + struct vfsmount *h_mnt; + + sb = inode->i_sb; + WARN_ONCE((flags & S_ATIME) && !IS_NOATIME(inode), + "unexpected s_flags 0x%lx", sb->s_flags); + + /* mmap_sem might be acquired already, cf. aufs_mmap() */ + lockdep_off(); + si_read_lock(sb, AuLock_FLUSH); + ii_write_lock_child(inode); + + err = 0; + bindex = au_ibtop(inode); + h_inode = au_h_iptr(inode, bindex); + if (!au_test_ro(sb, bindex, inode)) { + h_mnt = au_sbr_mnt(sb, bindex); + err = vfsub_mnt_want_write(h_mnt); + if (!err) { + err = vfsub_update_time(h_inode, ts, flags); + vfsub_mnt_drop_write(h_mnt); + } + } else if (au_is_special(h_inode)) { + /* + * Never copy-up here. + * These special files may already be opened and used for + * communicating. If we copied it up, then the communication + * would be corrupted. + */ + AuWarn1("timestamps for i%lu are ignored " + "since it is on readonly branch (hi%lu).\n", + inode->i_ino, h_inode->i_ino); + } else if (flags & ~S_ATIME) { + err = -EIO; + AuIOErr1("unexpected flags 0x%x\n", flags); + AuDebugOn(1); + } + + if (!err) + au_cpup_attr_timesizes(inode); + ii_write_unlock(inode); + si_read_unlock(sb); + lockdep_on(); + + if (!err && (flags & S_VERSION)) + inode_inc_iversion(inode); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* no getattr version will be set by module.c:aufs_init() */ +struct inode_operations aufs_iop_nogetattr[AuIop_Last], + aufs_iop[] = { + [AuIop_SYMLINK] = { + .permission = aufs_permission, +#ifdef CONFIG_FS_POSIX_ACL + .get_acl = aufs_get_acl, + .set_acl = aufs_set_acl, /* unsupport for symlink? */ +#endif + + .setattr = aufs_setattr, + .getattr = aufs_getattr, + +#ifdef CONFIG_AUFS_XATTR + .listxattr = aufs_listxattr, +#endif + + .get_link = aufs_get_link, + + /* .update_time = aufs_update_time */ + }, + [AuIop_DIR] = { + .create = aufs_create, + .lookup = aufs_lookup, + .link = aufs_link, + .unlink = aufs_unlink, + .symlink = aufs_symlink, + .mkdir = aufs_mkdir, + .rmdir = aufs_rmdir, + .mknod = aufs_mknod, + .rename = aufs_rename, + + .permission = aufs_permission, +#ifdef CONFIG_FS_POSIX_ACL + .get_acl = aufs_get_acl, + .set_acl = aufs_set_acl, +#endif + + .setattr = aufs_setattr, + .getattr = aufs_getattr, + +#ifdef CONFIG_AUFS_XATTR + .listxattr = aufs_listxattr, +#endif + + .update_time = aufs_update_time, + .atomic_open = aufs_atomic_open, + .tmpfile = aufs_tmpfile + }, + [AuIop_OTHER] = { + .permission = aufs_permission, +#ifdef CONFIG_FS_POSIX_ACL + .get_acl = aufs_get_acl, + .set_acl = aufs_set_acl, +#endif + + .setattr = aufs_setattr, + .getattr = aufs_getattr, + +#ifdef CONFIG_AUFS_XATTR + .listxattr = aufs_listxattr, +#endif + + .update_time = aufs_update_time + } +}; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/i_op_add.c +++ linux-azure-5.13-5.13.0/fs/aufs/i_op_add.c @@ -0,0 +1,941 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operations (add entry) + */ + +#include +#include "aufs.h" + +/* + * final procedure of adding a new entry, except link(2). + * remove whiteout, instantiate, copyup the parent dir's times and size + * and update version. + * if it failed, re-create the removed whiteout. + */ +static int epilog(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct dentry *dentry) +{ + int err, rerr; + aufs_bindex_t bwh; + struct path h_path; + struct super_block *sb; + struct inode *inode, *h_dir; + struct dentry *wh; + + bwh = -1; + sb = dir->i_sb; + if (wh_dentry) { + h_dir = d_inode(wh_dentry->d_parent); /* dir inode is locked */ + IMustLock(h_dir); + AuDebugOn(au_h_iptr(dir, bindex) != h_dir); + bwh = au_dbwh(dentry); + h_path.dentry = wh_dentry; + h_path.mnt = au_sbr_mnt(sb, bindex); + err = au_wh_unlink_dentry(au_h_iptr(dir, bindex), &h_path, + dentry); + if (unlikely(err)) + goto out; + } + + inode = au_new_inode(dentry, /*must_new*/1); + if (!IS_ERR(inode)) { + d_instantiate(dentry, inode); + dir = d_inode(dentry->d_parent); /* dir inode is locked */ + IMustLock(dir); + au_dir_ts(dir, bindex); + inode_inc_iversion(dir); + au_fhsm_wrote(sb, bindex, /*force*/0); + return 0; /* success */ + } + + err = PTR_ERR(inode); + if (!wh_dentry) + goto out; + + /* revert */ + /* dir inode is locked */ + wh = au_wh_create(dentry, bwh, wh_dentry->d_parent); + rerr = PTR_ERR(wh); + if (IS_ERR(wh)) { + AuIOErr("%pd reverting whiteout failed(%d, %d)\n", + dentry, err, rerr); + err = -EIO; + } else + dput(wh); + +out: + return err; +} + +static int au_d_may_add(struct dentry *dentry) +{ + int err; + + err = 0; + if (unlikely(d_unhashed(dentry))) + err = -ENOENT; + if (unlikely(d_really_is_positive(dentry))) + err = -EEXIST; + return err; +} + +/* + * simple tests for the adding inode operations. + * following the checks in vfs, plus the parent-child relationship. + */ +int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir) +{ + int err; + umode_t h_mode; + struct dentry *h_dentry; + struct inode *h_inode; + + err = -ENAMETOOLONG; + if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + goto out; + + h_dentry = au_h_dptr(dentry, bindex); + if (d_really_is_negative(dentry)) { + err = -EEXIST; + if (unlikely(d_is_positive(h_dentry))) + goto out; + } else { + /* rename(2) case */ + err = -EIO; + if (unlikely(d_is_negative(h_dentry))) + goto out; + h_inode = d_inode(h_dentry); + if (unlikely(!h_inode->i_nlink)) + goto out; + + h_mode = h_inode->i_mode; + if (!isdir) { + err = -EISDIR; + if (unlikely(S_ISDIR(h_mode))) + goto out; + } else if (unlikely(!S_ISDIR(h_mode))) { + err = -ENOTDIR; + goto out; + } + } + + err = 0; + /* expected parent dir is locked */ + if (unlikely(h_parent != h_dentry->d_parent)) + err = -EIO; + +out: + AuTraceErr(err); + return err; +} + +/* + * initial procedure of adding a new entry. + * prepare writable branch and the parent dir, lock it, + * and lookup whiteout for the new entry. + */ +static struct dentry* +lock_hdir_lkup_wh(struct dentry *dentry, struct au_dtime *dt, + struct dentry *src_dentry, struct au_pin *pin, + struct au_wr_dir_args *wr_dir_args) +{ + struct dentry *wh_dentry, *h_parent; + struct super_block *sb; + struct au_branch *br; + int err; + unsigned int udba; + aufs_bindex_t bcpup; + + AuDbg("%pd\n", dentry); + + err = au_wr_dir(dentry, src_dentry, wr_dir_args); + bcpup = err; + wh_dentry = ERR_PTR(err); + if (unlikely(err < 0)) + goto out; + + sb = dentry->d_sb; + udba = au_opt_udba(sb); + err = au_pin(pin, dentry, bcpup, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out; + + h_parent = au_pinned_h_parent(pin); + if (udba != AuOpt_UDBA_NONE + && au_dbtop(dentry) == bcpup) + err = au_may_add(dentry, bcpup, h_parent, + au_ftest_wrdir(wr_dir_args->flags, ISDIR)); + else if (unlikely(dentry->d_name.len > AUFS_MAX_NAMELEN)) + err = -ENAMETOOLONG; + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_unpin; + + br = au_sbr(sb, bcpup); + if (dt) { + struct path tmp = { + .dentry = h_parent, + .mnt = au_br_mnt(br) + }; + au_dtime_store(dt, au_pinned_parent(pin), &tmp); + } + + wh_dentry = NULL; + if (bcpup != au_dbwh(dentry)) + goto out; /* success */ + + /* + * ENAMETOOLONG here means that if we allowed create such name, then it + * would not be able to removed in the future. So we don't allow such + * name here and we don't handle ENAMETOOLONG differently here. + */ + wh_dentry = au_wh_lkup(h_parent, &dentry->d_name, br); + +out_unpin: + if (IS_ERR(wh_dentry)) + au_unpin(pin); +out: + return wh_dentry; +} + +/* ---------------------------------------------------------------------- */ + +enum { Mknod, Symlink, Creat }; +struct simple_arg { + int type; + union { + struct { + umode_t mode; + bool want_excl; + bool try_aopen; + struct vfsub_aopen_args *aopen; + } c; + struct { + const char *symname; + } s; + struct { + umode_t mode; + dev_t dev; + } m; + } u; +}; + +static int add_simple(struct inode *dir, struct dentry *dentry, + struct simple_arg *arg) +{ + int err, rerr; + aufs_bindex_t btop; + unsigned char created; + const unsigned char try_aopen + = (arg->type == Creat && arg->u.c.try_aopen); + struct vfsub_aopen_args *aopen = arg->u.c.aopen; + struct dentry *wh_dentry, *parent; + struct inode *h_dir; + struct super_block *sb; + struct au_branch *br; + /* to reduce stack size */ + struct { + struct au_dtime dt; + struct au_pin pin; + struct path h_path; + struct au_wr_dir_args wr_dir_args; + } *a; + + AuDbg("%pd\n", dentry); + IMustLock(dir); + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + a->wr_dir_args.force_btgt = -1; + a->wr_dir_args.flags = AuWrDir_ADD_ENTRY; + + parent = dentry->d_parent; /* dir inode is locked */ + if (!try_aopen) { + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out_free; + } + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + if (!try_aopen) + di_write_lock_parent(parent); + wh_dentry = lock_hdir_lkup_wh(dentry, &a->dt, /*src_dentry*/NULL, + &a->pin, &a->wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + btop = au_dbtop(dentry); + sb = dentry->d_sb; + br = au_sbr(sb, btop); + a->h_path.dentry = au_h_dptr(dentry, btop); + a->h_path.mnt = au_br_mnt(br); + h_dir = au_pinned_h_dir(&a->pin); + switch (arg->type) { + case Creat: + if (!try_aopen || !h_dir->i_op->atomic_open) { + err = vfsub_create(h_dir, &a->h_path, arg->u.c.mode, + arg->u.c.want_excl); + created = !err; + if (!err && try_aopen) + aopen->file->f_mode |= FMODE_CREATED; + } else { + aopen->br = br; + err = vfsub_atomic_open(h_dir, a->h_path.dentry, aopen); + AuDbg("err %d\n", err); + AuDbgFile(aopen->file); + created = err >= 0 + && !!(aopen->file->f_mode & FMODE_CREATED); + } + break; + case Symlink: + err = vfsub_symlink(h_dir, &a->h_path, arg->u.s.symname); + created = !err; + break; + case Mknod: + err = vfsub_mknod(h_dir, &a->h_path, arg->u.m.mode, + arg->u.m.dev); + created = !err; + break; + default: + BUG(); + } + if (unlikely(err < 0)) + goto out_unpin; + + err = epilog(dir, btop, wh_dentry, dentry); + if (!err) + goto out_unpin; /* success */ + + /* revert */ + if (created /* && d_is_positive(a->h_path.dentry) */) { + /* no delegation since it is just created */ + rerr = vfsub_unlink(h_dir, &a->h_path, /*delegated*/NULL, + /*force*/0); + if (rerr) { + AuIOErr("%pd revert failure(%d, %d)\n", + dentry, err, rerr); + err = -EIO; + } + au_dtime_revert(&a->dt); + } + if (try_aopen && h_dir->i_op->atomic_open + && (aopen->file->f_mode & FMODE_OPENED)) + /* aopen->file is still opened */ + au_lcnt_dec(&aopen->br->br_nfiles); + +out_unpin: + au_unpin(&a->pin); + dput(wh_dentry); +out_parent: + if (!try_aopen) + di_write_unlock(parent); +out_unlock: + if (unlikely(err)) { + au_update_dbtop(dentry); + d_drop(dentry); + } + if (!try_aopen) + aufs_read_unlock(dentry, AuLock_DW); +out_free: + au_kfree_rcu(a); +out: + return err; +} + +int aufs_mknod(struct user_namespace *userns, struct inode *dir, + struct dentry *dentry, umode_t mode, dev_t dev) +{ + struct simple_arg arg = { + .type = Mknod, + .u.m = { + .mode = mode, + .dev = dev + } + }; + return add_simple(dir, dentry, &arg); +} + +int aufs_symlink(struct user_namespace *userns, struct inode *dir, + struct dentry *dentry, const char *symname) +{ + struct simple_arg arg = { + .type = Symlink, + .u.s.symname = symname + }; + return add_simple(dir, dentry, &arg); +} + +int aufs_create(struct user_namespace *userns, struct inode *dir, + struct dentry *dentry, umode_t mode, bool want_excl) +{ + struct simple_arg arg = { + .type = Creat, + .u.c = { + .mode = mode, + .want_excl = want_excl + } + }; + return add_simple(dir, dentry, &arg); +} + +int au_aopen_or_create(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *aopen_args) +{ + struct simple_arg arg = { + .type = Creat, + .u.c = { + .mode = aopen_args->create_mode, + .want_excl = aopen_args->open_flag & O_EXCL, + .try_aopen = true, + .aopen = aopen_args + } + }; + return add_simple(dir, dentry, &arg); +} + +int aufs_tmpfile(struct user_namespace *userns, struct inode *dir, + struct dentry *dentry, umode_t mode) +{ + int err; + aufs_bindex_t bindex; + struct super_block *sb; + struct dentry *parent, *h_parent, *h_dentry; + struct inode *h_dir, *inode; + struct vfsmount *h_mnt; + struct user_namespace *h_userns; + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = AuWrDir_TMPFILE + }; + + /* copy-up may happen */ + inode_lock(dir); + + sb = dir->i_sb; + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + + err = au_di_init(dentry); + if (unlikely(err)) + goto out_si; + + err = -EBUSY; + parent = d_find_any_alias(dir); + AuDebugOn(!parent); + di_write_lock_parent(parent); + if (unlikely(d_inode(parent) != dir)) + goto out_parent; + + err = au_digen_test(parent, au_sigen(sb)); + if (unlikely(err)) + goto out_parent; + + bindex = au_dbtop(parent); + au_set_dbtop(dentry, bindex); + au_set_dbbot(dentry, bindex); + err = au_wr_dir(dentry, /*src_dentry*/NULL, &wr_dir_args); + bindex = err; + if (unlikely(err < 0)) + goto out_parent; + + err = -EOPNOTSUPP; + h_dir = au_h_iptr(dir, bindex); + if (unlikely(!h_dir->i_op->tmpfile)) + goto out_parent; + + h_mnt = au_sbr_mnt(sb, bindex); + err = vfsub_mnt_want_write(h_mnt); + if (unlikely(err)) + goto out_parent; + + h_userns = mnt_user_ns(h_mnt); + h_parent = au_h_dptr(parent, bindex); + h_dentry = vfs_tmpfile(h_userns, h_parent, mode, /*open_flag*/0); + if (IS_ERR(h_dentry)) { + err = PTR_ERR(h_dentry); + goto out_mnt; + } + + au_set_dbtop(dentry, bindex); + au_set_dbbot(dentry, bindex); + au_set_h_dptr(dentry, bindex, dget(h_dentry)); + inode = au_new_inode(dentry, /*must_new*/1); + if (IS_ERR(inode)) { + err = PTR_ERR(inode); + au_set_h_dptr(dentry, bindex, NULL); + au_set_dbtop(dentry, -1); + au_set_dbbot(dentry, -1); + } else { + if (!inode->i_nlink) + set_nlink(inode, 1); + d_tmpfile(dentry, inode); + au_di(dentry)->di_tmpfile = 1; + + /* update without i_mutex */ + if (au_ibtop(dir) == au_dbtop(dentry)) + au_cpup_attr_timesizes(dir); + } + dput(h_dentry); + +out_mnt: + vfsub_mnt_drop_write(h_mnt); +out_parent: + di_write_unlock(parent); + dput(parent); + di_write_unlock(dentry); + if (unlikely(err)) { + au_di_fin(dentry); + dentry->d_fsdata = NULL; + } +out_si: + si_read_unlock(sb); +out: + inode_unlock(dir); + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_link_args { + aufs_bindex_t bdst, bsrc; + struct au_pin pin; + struct path h_path; + struct dentry *src_parent, *parent; +}; + +static int au_cpup_before_link(struct dentry *src_dentry, + struct au_link_args *a) +{ + int err; + struct dentry *h_src_dentry; + struct au_cp_generic cpg = { + .dentry = src_dentry, + .bdst = a->bdst, + .bsrc = a->bsrc, + .len = -1, + .pin = &a->pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN /* | AuCpup_KEEPLINO */ + }; + + di_read_lock_parent(a->src_parent, AuLock_IR); + err = au_test_and_cpup_dirs(src_dentry, a->bdst); + if (unlikely(err)) + goto out; + + h_src_dentry = au_h_dptr(src_dentry, a->bsrc); + err = au_pin(&a->pin, src_dentry, a->bdst, + au_opt_udba(src_dentry->d_sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out; + + err = au_sio_cpup_simple(&cpg); + au_unpin(&a->pin); + +out: + di_read_unlock(a->src_parent, AuLock_IR); + return err; +} + +static int au_cpup_or_link(struct dentry *src_dentry, struct dentry *dentry, + struct au_link_args *a) +{ + int err; + unsigned char plink; + aufs_bindex_t bbot; + struct dentry *h_src_dentry; + struct inode *h_inode, *inode, *delegated; + struct super_block *sb; + struct file *h_file; + + plink = 0; + h_inode = NULL; + sb = src_dentry->d_sb; + inode = d_inode(src_dentry); + if (au_ibtop(inode) <= a->bdst) + h_inode = au_h_iptr(inode, a->bdst); + if (!h_inode || !h_inode->i_nlink) { + /* copyup src_dentry as the name of dentry. */ + bbot = au_dbbot(dentry); + if (bbot < a->bsrc) + au_set_dbbot(dentry, a->bsrc); + au_set_h_dptr(dentry, a->bsrc, + dget(au_h_dptr(src_dentry, a->bsrc))); + dget(a->h_path.dentry); + au_set_h_dptr(dentry, a->bdst, NULL); + AuDbg("temporary d_inode...\n"); + spin_lock(&dentry->d_lock); + dentry->d_inode = d_inode(src_dentry); /* tmp */ + spin_unlock(&dentry->d_lock); + h_file = au_h_open_pre(dentry, a->bsrc, /*force_wr*/0); + if (IS_ERR(h_file)) + err = PTR_ERR(h_file); + else { + struct au_cp_generic cpg = { + .dentry = dentry, + .bdst = a->bdst, + .bsrc = -1, + .len = -1, + .pin = &a->pin, + .flags = AuCpup_KEEPLINO + }; + err = au_sio_cpup_simple(&cpg); + au_h_open_post(dentry, a->bsrc, h_file); + if (!err) { + dput(a->h_path.dentry); + a->h_path.dentry = au_h_dptr(dentry, a->bdst); + } else + au_set_h_dptr(dentry, a->bdst, + a->h_path.dentry); + } + spin_lock(&dentry->d_lock); + dentry->d_inode = NULL; /* restore */ + spin_unlock(&dentry->d_lock); + AuDbg("temporary d_inode...done\n"); + au_set_h_dptr(dentry, a->bsrc, NULL); + au_set_dbbot(dentry, bbot); + } else { + /* the inode of src_dentry already exists on a.bdst branch */ + h_src_dentry = d_find_alias(h_inode); + if (!h_src_dentry && au_plink_test(inode)) { + plink = 1; + h_src_dentry = au_plink_lkup(inode, a->bdst); + err = PTR_ERR(h_src_dentry); + if (IS_ERR(h_src_dentry)) + goto out; + + if (unlikely(d_is_negative(h_src_dentry))) { + dput(h_src_dentry); + h_src_dentry = NULL; + } + + } + if (h_src_dentry) { + delegated = NULL; + err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), + &a->h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + dput(h_src_dentry); + } else { + AuIOErr("no dentry found for hi%lu on b%d\n", + h_inode->i_ino, a->bdst); + err = -EIO; + } + } + + if (!err && !plink) + au_plink_append(inode, a->bdst, a->h_path.dentry); + +out: + AuTraceErr(err); + return err; +} + +int aufs_link(struct dentry *src_dentry, struct inode *dir, + struct dentry *dentry) +{ + int err, rerr; + struct au_dtime dt; + struct au_link_args *a; + struct dentry *wh_dentry, *h_src_dentry; + struct inode *inode, *delegated; + struct super_block *sb; + struct au_wr_dir_args wr_dir_args = { + /* .force_btgt = -1, */ + .flags = AuWrDir_ADD_ENTRY + }; + + IMustLock(dir); + inode = d_inode(src_dentry); + IMustLock(inode); + + err = -ENOMEM; + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + a->parent = dentry->d_parent; /* dir inode is locked */ + err = aufs_read_and_write_lock2(dentry, src_dentry, + AuLock_NOPLM | AuLock_GEN); + if (unlikely(err)) + goto out_kfree; + err = au_d_linkable(src_dentry); + if (unlikely(err)) + goto out_unlock; + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + + a->src_parent = dget_parent(src_dentry); + wr_dir_args.force_btgt = au_ibtop(inode); + + di_write_lock_parent(a->parent); + wr_dir_args.force_btgt = au_wbr(dentry, wr_dir_args.force_btgt); + wh_dentry = lock_hdir_lkup_wh(dentry, &dt, src_dentry, &a->pin, + &wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + err = 0; + sb = dentry->d_sb; + a->bdst = au_dbtop(dentry); + a->h_path.dentry = au_h_dptr(dentry, a->bdst); + a->h_path.mnt = au_sbr_mnt(sb, a->bdst); + a->bsrc = au_ibtop(inode); + h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); + if (!h_src_dentry && au_di(src_dentry)->di_tmpfile) + h_src_dentry = dget(au_hi_wh(inode, a->bsrc)); + if (!h_src_dentry) { + a->bsrc = au_dbtop(src_dentry); + h_src_dentry = au_h_d_alias(src_dentry, a->bsrc); + AuDebugOn(!h_src_dentry); + } else if (IS_ERR(h_src_dentry)) { + err = PTR_ERR(h_src_dentry); + goto out_parent; + } + + /* + * aufs doesn't touch the credential so + * security_dentry_create_files_as() is unnecessary. + */ + if (au_opt_test(au_mntflags(sb), PLINK)) { + if (a->bdst < a->bsrc + /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) + err = au_cpup_or_link(src_dentry, dentry, a); + else { + delegated = NULL; + err = vfsub_link(h_src_dentry, au_pinned_h_dir(&a->pin), + &a->h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + } + dput(h_src_dentry); + } else { + /* + * copyup src_dentry to the branch we process, + * and then link(2) to it. + */ + dput(h_src_dentry); + if (a->bdst < a->bsrc + /* && h_src_dentry->d_sb != a->h_path.dentry->d_sb */) { + au_unpin(&a->pin); + di_write_unlock(a->parent); + err = au_cpup_before_link(src_dentry, a); + di_write_lock_parent(a->parent); + if (!err) + err = au_pin(&a->pin, dentry, a->bdst, + au_opt_udba(sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (unlikely(err)) + goto out_wh; + } + if (!err) { + h_src_dentry = au_h_dptr(src_dentry, a->bdst); + err = -ENOENT; + if (h_src_dentry && d_is_positive(h_src_dentry)) { + delegated = NULL; + err = vfsub_link(h_src_dentry, + au_pinned_h_dir(&a->pin), + &a->h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry" + " for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + } + } + } + if (unlikely(err)) + goto out_unpin; + + if (wh_dentry) { + a->h_path.dentry = wh_dentry; + err = au_wh_unlink_dentry(au_pinned_h_dir(&a->pin), &a->h_path, + dentry); + if (unlikely(err)) + goto out_revert; + } + + au_dir_ts(dir, a->bdst); + inode_inc_iversion(dir); + inc_nlink(inode); + inode->i_ctime = dir->i_ctime; + d_instantiate(dentry, au_igrab(inode)); + if (d_unhashed(a->h_path.dentry)) + /* some filesystem calls d_drop() */ + d_drop(dentry); + /* some filesystems consume an inode even hardlink */ + au_fhsm_wrote(sb, a->bdst, /*force*/0); + goto out_unpin; /* success */ + +out_revert: + /* no delegation since it is just created */ + rerr = vfsub_unlink(au_pinned_h_dir(&a->pin), &a->h_path, + /*delegated*/NULL, /*force*/0); + if (unlikely(rerr)) { + AuIOErr("%pd reverting failed(%d, %d)\n", dentry, err, rerr); + err = -EIO; + } + au_dtime_revert(&dt); +out_unpin: + au_unpin(&a->pin); +out_wh: + dput(wh_dentry); +out_parent: + di_write_unlock(a->parent); + dput(a->src_parent); +out_unlock: + if (unlikely(err)) { + au_update_dbtop(dentry); + d_drop(dentry); + } + aufs_read_and_write_unlock2(dentry, src_dentry); +out_kfree: + au_kfree_rcu(a); +out: + AuTraceErr(err); + return err; +} + +int aufs_mkdir(struct user_namespace *userns, struct inode *dir, + struct dentry *dentry, umode_t mode) +{ + int err, rerr; + aufs_bindex_t bindex; + unsigned char diropq; + struct path h_path; + struct dentry *wh_dentry, *parent, *opq_dentry; + struct inode *h_inode; + struct super_block *sb; + struct { + struct au_pin pin; + struct au_dtime dt; + } *a; /* reduce the stack usage */ + struct au_wr_dir_args wr_dir_args = { + .force_btgt = -1, + .flags = AuWrDir_ADD_ENTRY | AuWrDir_ISDIR + }; + + IMustLock(dir); + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out_free; + err = au_d_may_add(dentry); + if (unlikely(err)) + goto out_unlock; + + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + wh_dentry = lock_hdir_lkup_wh(dentry, &a->dt, /*src_dentry*/NULL, + &a->pin, &wr_dir_args); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + sb = dentry->d_sb; + bindex = au_dbtop(dentry); + h_path.dentry = au_h_dptr(dentry, bindex); + h_path.mnt = au_sbr_mnt(sb, bindex); + err = vfsub_mkdir(au_pinned_h_dir(&a->pin), &h_path, mode); + if (unlikely(err)) + goto out_unpin; + + /* make the dir opaque */ + diropq = 0; + h_inode = d_inode(h_path.dentry); + if (wh_dentry + || au_opt_test(au_mntflags(sb), ALWAYS_DIROPQ)) { + inode_lock_nested(h_inode, AuLsc_I_CHILD); + opq_dentry = au_diropq_create(dentry, bindex); + inode_unlock(h_inode); + err = PTR_ERR(opq_dentry); + if (IS_ERR(opq_dentry)) + goto out_dir; + dput(opq_dentry); + diropq = 1; + } + + err = epilog(dir, bindex, wh_dentry, dentry); + if (!err) { + inc_nlink(dir); + goto out_unpin; /* success */ + } + + /* revert */ + if (diropq) { + AuLabel(revert opq); + inode_lock_nested(h_inode, AuLsc_I_CHILD); + rerr = au_diropq_remove(dentry, bindex); + inode_unlock(h_inode); + if (rerr) { + AuIOErr("%pd reverting diropq failed(%d, %d)\n", + dentry, err, rerr); + err = -EIO; + } + } + +out_dir: + AuLabel(revert dir); + rerr = vfsub_rmdir(au_pinned_h_dir(&a->pin), &h_path); + if (rerr) { + AuIOErr("%pd reverting dir failed(%d, %d)\n", + dentry, err, rerr); + err = -EIO; + } + au_dtime_revert(&a->dt); +out_unpin: + au_unpin(&a->pin); + dput(wh_dentry); +out_parent: + di_write_unlock(parent); +out_unlock: + if (unlikely(err)) { + au_update_dbtop(dentry); + d_drop(dentry); + } + aufs_read_unlock(dentry, AuLock_DW); +out_free: + au_kfree_rcu(a); +out: + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/i_op_del.c +++ linux-azure-5.13-5.13.0/fs/aufs/i_op_del.c @@ -0,0 +1,515 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operations (del entry) + */ + +#include +#include "aufs.h" + +/* + * decide if a new whiteout for @dentry is necessary or not. + * when it is necessary, prepare the parent dir for the upper branch whose + * branch index is @bcpup for creation. the actual creation of the whiteout will + * be done by caller. + * return value: + * 0: wh is unnecessary + * plus: wh is necessary + * minus: error + */ +int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup) +{ + int need_wh, err; + aufs_bindex_t btop; + struct super_block *sb; + + sb = dentry->d_sb; + btop = au_dbtop(dentry); + if (*bcpup < 0) { + *bcpup = btop; + if (au_test_ro(sb, btop, d_inode(dentry))) { + err = AuWbrCopyup(au_sbi(sb), dentry); + *bcpup = err; + if (unlikely(err < 0)) + goto out; + } + } else + AuDebugOn(btop < *bcpup + || au_test_ro(sb, *bcpup, d_inode(dentry))); + AuDbg("bcpup %d, btop %d\n", *bcpup, btop); + + if (*bcpup != btop) { + err = au_cpup_dirs(dentry, *bcpup); + if (unlikely(err)) + goto out; + need_wh = 1; + } else { + struct au_dinfo *dinfo, *tmp; + + need_wh = -ENOMEM; + dinfo = au_di(dentry); + tmp = au_di_alloc(sb, AuLsc_DI_TMP); + if (tmp) { + au_di_cp(tmp, dinfo); + au_di_swap(tmp, dinfo); + /* returns the number of positive dentries */ + need_wh = au_lkup_dentry(dentry, btop + 1, + /* AuLkup_IGNORE_PERM */ 0); + au_di_swap(tmp, dinfo); + au_rw_write_unlock(&tmp->di_rwsem); + au_di_free(tmp); + } + } + AuDbg("need_wh %d\n", need_wh); + err = need_wh; + +out: + return err; +} + +/* + * simple tests for the del-entry operations. + * following the checks in vfs, plus the parent-child relationship. + */ +int au_may_del(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir) +{ + int err; + umode_t h_mode; + struct dentry *h_dentry, *h_latest; + struct inode *h_inode; + struct user_namespace *h_userns; + + h_dentry = au_h_dptr(dentry, bindex); + if (d_really_is_positive(dentry)) { + err = -ENOENT; + if (unlikely(d_is_negative(h_dentry))) + goto out; + h_inode = d_inode(h_dentry); + if (unlikely(!h_inode->i_nlink)) + goto out; + + h_mode = h_inode->i_mode; + if (!isdir) { + err = -EISDIR; + if (unlikely(S_ISDIR(h_mode))) + goto out; + } else if (unlikely(!S_ISDIR(h_mode))) { + err = -ENOTDIR; + goto out; + } + } else { + /* rename(2) case */ + err = -EIO; + if (unlikely(d_is_positive(h_dentry))) + goto out; + } + + err = -ENOENT; + /* expected parent dir is locked */ + if (unlikely(h_parent != h_dentry->d_parent)) + goto out; + err = 0; + + /* + * rmdir a dir may break the consistency on some filesystem. + * let's try heavy test. + */ + err = -EACCES; + h_userns = au_sbr_userns(dentry->d_sb, bindex); + if (unlikely(!au_opt_test(au_mntflags(dentry->d_sb), DIRPERM1) + && au_test_h_perm(h_userns, d_inode(h_parent), + MAY_EXEC | MAY_WRITE))) + goto out; + + h_latest = au_sio_lkup_one(h_userns, &dentry->d_name, h_parent); + err = -EIO; + if (IS_ERR(h_latest)) + goto out; + if (h_latest == h_dentry) + err = 0; + dput(h_latest); + +out: + return err; +} + +/* + * decide the branch where we operate for @dentry. the branch index will be set + * @rbcpup. after deciding it, 'pin' it and store the timestamps of the parent + * dir for reverting. + * when a new whiteout is necessary, create it. + */ +static struct dentry* +lock_hdir_create_wh(struct dentry *dentry, int isdir, aufs_bindex_t *rbcpup, + struct au_dtime *dt, struct au_pin *pin) +{ + struct dentry *wh_dentry; + struct super_block *sb; + struct path h_path; + int err, need_wh; + unsigned int udba; + aufs_bindex_t bcpup; + + need_wh = au_wr_dir_need_wh(dentry, isdir, rbcpup); + wh_dentry = ERR_PTR(need_wh); + if (unlikely(need_wh < 0)) + goto out; + + sb = dentry->d_sb; + udba = au_opt_udba(sb); + bcpup = *rbcpup; + err = au_pin(pin, dentry, bcpup, udba, + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out; + + h_path.dentry = au_pinned_h_parent(pin); + if (udba != AuOpt_UDBA_NONE + && au_dbtop(dentry) == bcpup) { + err = au_may_del(dentry, bcpup, h_path.dentry, isdir); + wh_dentry = ERR_PTR(err); + if (unlikely(err)) + goto out_unpin; + } + + h_path.mnt = au_sbr_mnt(sb, bcpup); + au_dtime_store(dt, au_pinned_parent(pin), &h_path); + wh_dentry = NULL; + if (!need_wh) + goto out; /* success, no need to create whiteout */ + + wh_dentry = au_wh_create(dentry, bcpup, h_path.dentry); + if (IS_ERR(wh_dentry)) + goto out_unpin; + + /* returns with the parent is locked and wh_dentry is dget-ed */ + goto out; /* success */ + +out_unpin: + au_unpin(pin); +out: + return wh_dentry; +} + +/* + * when removing a dir, rename it to a unique temporary whiteout-ed name first + * in order to be revertible and save time for removing many child whiteouts + * under the dir. + * returns 1 when there are too many child whiteout and caller should remove + * them asynchronously. returns 0 when the number of children is enough small to + * remove now or the branch fs is a remote fs. + * otherwise return an error. + */ +static int renwh_and_rmdir(struct dentry *dentry, aufs_bindex_t bindex, + struct au_nhash *whlist, struct inode *dir) +{ + int rmdir_later, err, dirwh; + struct dentry *h_dentry; + struct super_block *sb; + struct inode *inode; + + sb = dentry->d_sb; + SiMustAnyLock(sb); + h_dentry = au_h_dptr(dentry, bindex); + err = au_whtmp_ren(h_dentry, au_sbr(sb, bindex)); + if (unlikely(err)) + goto out; + + /* stop monitoring */ + inode = d_inode(dentry); + au_hn_free(au_hi(inode, bindex)); + + if (!au_test_fs_remote(h_dentry->d_sb)) { + dirwh = au_sbi(sb)->si_dirwh; + rmdir_later = (dirwh <= 1); + if (!rmdir_later) + rmdir_later = au_nhash_test_longer_wh(whlist, bindex, + dirwh); + if (rmdir_later) + return rmdir_later; + } + + err = au_whtmp_rmdir(dir, bindex, h_dentry, whlist); + if (unlikely(err)) { + AuIOErr("rmdir %pd, b%d failed, %d. ignored\n", + h_dentry, bindex, err); + err = 0; + } + +out: + AuTraceErr(err); + return err; +} + +/* + * final procedure for deleting a entry. + * maintain dentry and iattr. + */ +static void epilog(struct inode *dir, struct dentry *dentry, + aufs_bindex_t bindex) +{ + struct inode *inode; + + inode = d_inode(dentry); + d_drop(dentry); + inode->i_ctime = dir->i_ctime; + + au_dir_ts(dir, bindex); + inode_inc_iversion(dir); +} + +/* + * when an error happened, remove the created whiteout and revert everything. + */ +static int do_revert(int err, struct inode *dir, aufs_bindex_t bindex, + aufs_bindex_t bwh, struct dentry *wh_dentry, + struct dentry *dentry, struct au_dtime *dt) +{ + int rerr; + struct path h_path = { + .dentry = wh_dentry, + .mnt = au_sbr_mnt(dir->i_sb, bindex) + }; + + rerr = au_wh_unlink_dentry(au_h_iptr(dir, bindex), &h_path, dentry); + if (!rerr) { + au_set_dbwh(dentry, bwh); + au_dtime_revert(dt); + return 0; + } + + AuIOErr("%pd reverting whiteout failed(%d, %d)\n", dentry, err, rerr); + return -EIO; +} + +/* ---------------------------------------------------------------------- */ + +int aufs_unlink(struct inode *dir, struct dentry *dentry) +{ + int err; + aufs_bindex_t bwh, bindex, btop; + struct inode *inode, *h_dir, *delegated; + struct dentry *parent, *wh_dentry; + /* to reduce stack size */ + struct { + struct au_dtime dt; + struct au_pin pin; + struct path h_path; + } *a; + + IMustLock(dir); + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_GEN); + if (unlikely(err)) + goto out_free; + err = au_d_hashed_positive(dentry); + if (unlikely(err)) + goto out_unlock; + inode = d_inode(dentry); + IMustLock(inode); + err = -EISDIR; + if (unlikely(d_is_dir(dentry))) + goto out_unlock; /* possible? */ + + btop = au_dbtop(dentry); + bwh = au_dbwh(dentry); + bindex = -1; + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + wh_dentry = lock_hdir_create_wh(dentry, /*isdir*/0, &bindex, &a->dt, + &a->pin); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + a->h_path.mnt = au_sbr_mnt(dentry->d_sb, btop); + a->h_path.dentry = au_h_dptr(dentry, btop); + dget(a->h_path.dentry); + if (bindex == btop) { + h_dir = au_pinned_h_dir(&a->pin); + delegated = NULL; + err = vfsub_unlink(h_dir, &a->h_path, &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + } else { + /* dir inode is locked */ + h_dir = d_inode(wh_dentry->d_parent); + IMustLock(h_dir); + err = 0; + } + + if (!err) { + vfsub_drop_nlink(inode); + epilog(dir, dentry, bindex); + + /* update target timestamps */ + if (bindex == btop) { + vfsub_update_h_iattr(&a->h_path, /*did*/NULL); + /*ignore*/ + inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime; + } else + /* todo: this timestamp may be reverted later */ + inode->i_ctime = h_dir->i_ctime; + goto out_unpin; /* success */ + } + + /* revert */ + if (wh_dentry) { + int rerr; + + rerr = do_revert(err, dir, bindex, bwh, wh_dentry, dentry, + &a->dt); + if (rerr) + err = rerr; + } + +out_unpin: + au_unpin(&a->pin); + dput(wh_dentry); + dput(a->h_path.dentry); +out_parent: + di_write_unlock(parent); +out_unlock: + aufs_read_unlock(dentry, AuLock_DW); +out_free: + au_kfree_rcu(a); +out: + return err; +} + +int aufs_rmdir(struct inode *dir, struct dentry *dentry) +{ + int err, rmdir_later; + aufs_bindex_t bwh, bindex, btop; + struct inode *inode; + struct dentry *parent, *wh_dentry, *h_dentry; + struct au_whtmp_rmdir *args; + /* to reduce stack size */ + struct { + struct au_dtime dt; + struct au_pin pin; + } *a; + + IMustLock(dir); + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_GEN); + if (unlikely(err)) + goto out_free; + err = au_alive_dir(dentry); + if (unlikely(err)) + goto out_unlock; + inode = d_inode(dentry); + IMustLock(inode); + err = -ENOTDIR; + if (unlikely(!d_is_dir(dentry))) + goto out_unlock; /* possible? */ + + err = -ENOMEM; + args = au_whtmp_rmdir_alloc(dir->i_sb, GFP_NOFS); + if (unlikely(!args)) + goto out_unlock; + + parent = dentry->d_parent; /* dir inode is locked */ + di_write_lock_parent(parent); + err = au_test_empty(dentry, &args->whlist); + if (unlikely(err)) + goto out_parent; + + btop = au_dbtop(dentry); + bwh = au_dbwh(dentry); + bindex = -1; + wh_dentry = lock_hdir_create_wh(dentry, /*isdir*/1, &bindex, &a->dt, + &a->pin); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) + goto out_parent; + + h_dentry = au_h_dptr(dentry, btop); + dget(h_dentry); + rmdir_later = 0; + if (bindex == btop) { + err = renwh_and_rmdir(dentry, btop, &args->whlist, dir); + if (err > 0) { + rmdir_later = err; + err = 0; + } + } else { + /* stop monitoring */ + au_hn_free(au_hi(inode, btop)); + + /* dir inode is locked */ + IMustLock(d_inode(wh_dentry->d_parent)); + err = 0; + } + + if (!err) { + vfsub_dead_dir(inode); + au_set_dbdiropq(dentry, -1); + epilog(dir, dentry, bindex); + + if (rmdir_later) { + au_whtmp_kick_rmdir(dir, btop, h_dentry, args); + args = NULL; + } + + goto out_unpin; /* success */ + } + + /* revert */ + AuLabel(revert); + if (wh_dentry) { + int rerr; + + rerr = do_revert(err, dir, bindex, bwh, wh_dentry, dentry, + &a->dt); + if (rerr) + err = rerr; + } + +out_unpin: + au_unpin(&a->pin); + dput(wh_dentry); + dput(h_dentry); +out_parent: + di_write_unlock(parent); + if (args) + au_whtmp_rmdir_free(args); +out_unlock: + aufs_read_unlock(dentry, AuLock_DW); +out_free: + au_kfree_rcu(a); +out: + AuTraceErr(err); + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/i_op_ren.c +++ linux-azure-5.13-5.13.0/fs/aufs/i_op_ren.c @@ -0,0 +1,1251 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operation (rename entry) + * todo: this is crazy monster + */ + +#include +#include "aufs.h" + +enum { AuSRC, AuDST, AuSrcDst }; +enum { AuPARENT, AuCHILD, AuParentChild }; + +#define AuRen_ISDIR_SRC 1 +#define AuRen_ISDIR_DST (1 << 1) +#define AuRen_ISSAMEDIR (1 << 2) +#define AuRen_WHSRC (1 << 3) +#define AuRen_WHDST (1 << 4) +#define AuRen_MNT_WRITE (1 << 5) +#define AuRen_DT_DSTDIR (1 << 6) +#define AuRen_DIROPQ_SRC (1 << 7) +#define AuRen_DIROPQ_DST (1 << 8) +#define AuRen_DIRREN (1 << 9) +#define AuRen_DROPPED_SRC (1 << 10) +#define AuRen_DROPPED_DST (1 << 11) +#define au_ftest_ren(flags, name) ((flags) & AuRen_##name) +#define au_fset_ren(flags, name) \ + do { (flags) |= AuRen_##name; } while (0) +#define au_fclr_ren(flags, name) \ + do { (flags) &= ~AuRen_##name; } while (0) + +#ifndef CONFIG_AUFS_DIRREN +#undef AuRen_DIRREN +#define AuRen_DIRREN 0 +#endif + +struct au_ren_args { + struct { + struct dentry *dentry, *h_dentry, *parent, *h_parent, + *wh_dentry; + struct inode *dir, *inode; + struct au_hinode *hdir, *hinode; + struct au_dtime dt[AuParentChild]; + aufs_bindex_t btop, bdiropq; + } sd[AuSrcDst]; + +#define src_dentry sd[AuSRC].dentry +#define src_dir sd[AuSRC].dir +#define src_inode sd[AuSRC].inode +#define src_h_dentry sd[AuSRC].h_dentry +#define src_parent sd[AuSRC].parent +#define src_h_parent sd[AuSRC].h_parent +#define src_wh_dentry sd[AuSRC].wh_dentry +#define src_hdir sd[AuSRC].hdir +#define src_hinode sd[AuSRC].hinode +#define src_h_dir sd[AuSRC].hdir->hi_inode +#define src_dt sd[AuSRC].dt +#define src_btop sd[AuSRC].btop +#define src_bdiropq sd[AuSRC].bdiropq + +#define dst_dentry sd[AuDST].dentry +#define dst_dir sd[AuDST].dir +#define dst_inode sd[AuDST].inode +#define dst_h_dentry sd[AuDST].h_dentry +#define dst_parent sd[AuDST].parent +#define dst_h_parent sd[AuDST].h_parent +#define dst_wh_dentry sd[AuDST].wh_dentry +#define dst_hdir sd[AuDST].hdir +#define dst_hinode sd[AuDST].hinode +#define dst_h_dir sd[AuDST].hdir->hi_inode +#define dst_dt sd[AuDST].dt +#define dst_btop sd[AuDST].btop +#define dst_bdiropq sd[AuDST].bdiropq + + struct dentry *h_trap; + struct au_branch *br; + struct path h_path; + struct au_nhash whlist; + aufs_bindex_t btgt, src_bwh; + + struct { + unsigned short auren_flags; + unsigned char flags; /* syscall parameter */ + unsigned char exchange; + } __packed; + + struct au_whtmp_rmdir *thargs; + struct dentry *h_dst; + struct au_hinode *h_root; +}; + +/* ---------------------------------------------------------------------- */ + +/* + * functions for reverting. + * when an error happened in a single rename systemcall, we should revert + * everything as if nothing happened. + * we don't need to revert the copied-up/down the parent dir since they are + * harmless. + */ + +#define RevertFailure(fmt, ...) do { \ + AuIOErr("revert failure: " fmt " (%d, %d)\n", \ + ##__VA_ARGS__, err, rerr); \ + err = -EIO; \ +} while (0) + +static void au_ren_do_rev_diropq(int err, struct au_ren_args *a, int idx) +{ + int rerr; + struct dentry *d; +#define src_or_dst(member) a->sd[idx].member + + d = src_or_dst(dentry); /* {src,dst}_dentry */ + au_hn_inode_lock_nested(src_or_dst(hinode), AuLsc_I_CHILD); + rerr = au_diropq_remove(d, a->btgt); + au_hn_inode_unlock(src_or_dst(hinode)); + au_set_dbdiropq(d, src_or_dst(bdiropq)); + if (rerr) + RevertFailure("remove diropq %pd", d); + +#undef src_or_dst_ +} + +static void au_ren_rev_diropq(int err, struct au_ren_args *a) +{ + if (au_ftest_ren(a->auren_flags, DIROPQ_SRC)) + au_ren_do_rev_diropq(err, a, AuSRC); + if (au_ftest_ren(a->auren_flags, DIROPQ_DST)) + au_ren_do_rev_diropq(err, a, AuDST); +} + +static void au_ren_rev_rename(int err, struct au_ren_args *a) +{ + int rerr; + struct inode *delegated; + + a->h_path.dentry = vfsub_lkup_one(&a->src_dentry->d_name, + a->src_h_parent); + rerr = PTR_ERR(a->h_path.dentry); + if (IS_ERR(a->h_path.dentry)) { + RevertFailure("lkup one %pd", a->src_dentry); + return; + } + + delegated = NULL; + rerr = vfsub_rename(a->dst_h_dir, + au_h_dptr(a->src_dentry, a->btgt), + a->src_h_dir, &a->h_path, &delegated, a->flags); + if (unlikely(rerr == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal rename\n"); + iput(delegated); + } + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + /* au_set_h_dptr(a->src_dentry, a->btgt, NULL); */ + if (rerr) + RevertFailure("rename %pd", a->src_dentry); +} + +static void au_ren_rev_whtmp(int err, struct au_ren_args *a) +{ + int rerr; + struct inode *delegated; + + a->h_path.dentry = vfsub_lkup_one(&a->dst_dentry->d_name, + a->dst_h_parent); + rerr = PTR_ERR(a->h_path.dentry); + if (IS_ERR(a->h_path.dentry)) { + RevertFailure("lkup one %pd", a->dst_dentry); + return; + } + if (d_is_positive(a->h_path.dentry)) { + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + return; + } + + delegated = NULL; + rerr = vfsub_rename(a->dst_h_dir, a->h_dst, a->dst_h_dir, &a->h_path, + &delegated, a->flags); + if (unlikely(rerr == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal rename\n"); + iput(delegated); + } + d_drop(a->h_path.dentry); + dput(a->h_path.dentry); + if (!rerr) + au_set_h_dptr(a->dst_dentry, a->btgt, dget(a->h_dst)); + else + RevertFailure("rename %pd", a->h_dst); +} + +static void au_ren_rev_whsrc(int err, struct au_ren_args *a) +{ + int rerr; + + a->h_path.dentry = a->src_wh_dentry; + rerr = au_wh_unlink_dentry(a->src_h_dir, &a->h_path, a->src_dentry); + au_set_dbwh(a->src_dentry, a->src_bwh); + if (rerr) + RevertFailure("unlink %pd", a->src_wh_dentry); +} +#undef RevertFailure + +/* ---------------------------------------------------------------------- */ + +/* + * when we have to copyup the renaming entry, do it with the rename-target name + * in order to minimize the cost (the later actual rename is unnecessary). + * otherwise rename it on the target branch. + */ +static int au_ren_or_cpup(struct au_ren_args *a) +{ + int err; + struct dentry *d; + struct inode *delegated; + + d = a->src_dentry; + if (au_dbtop(d) == a->btgt) { + a->h_path.dentry = a->dst_h_dentry; + AuDebugOn(au_dbtop(d) != a->btgt); + delegated = NULL; + err = vfsub_rename(a->src_h_dir, au_h_dptr(d, a->btgt), + a->dst_h_dir, &a->h_path, &delegated, + a->flags); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal rename\n"); + iput(delegated); + } + } else + BUG(); + + if (!err && a->h_dst) + /* it will be set to dinfo later */ + dget(a->h_dst); + + return err; +} + +/* cf. aufs_rmdir() */ +static int au_ren_del_whtmp(struct au_ren_args *a) +{ + int err; + struct inode *dir; + + dir = a->dst_dir; + SiMustAnyLock(dir->i_sb); + if (!au_nhash_test_longer_wh(&a->whlist, a->btgt, + au_sbi(dir->i_sb)->si_dirwh) + || au_test_fs_remote(a->h_dst->d_sb)) { + err = au_whtmp_rmdir(dir, a->btgt, a->h_dst, &a->whlist); + if (unlikely(err)) + pr_warn("failed removing whtmp dir %pd (%d), " + "ignored.\n", a->h_dst, err); + } else { + au_nhash_wh_free(&a->thargs->whlist); + a->thargs->whlist = a->whlist; + a->whlist.nh_num = 0; + au_whtmp_kick_rmdir(dir, a->btgt, a->h_dst, a->thargs); + dput(a->h_dst); + a->thargs = NULL; + } + + return 0; +} + +/* make it 'opaque' dir. */ +static int au_ren_do_diropq(struct au_ren_args *a, int idx) +{ + int err; + struct dentry *d, *diropq; +#define src_or_dst(member) a->sd[idx].member + + err = 0; + d = src_or_dst(dentry); /* {src,dst}_dentry */ + src_or_dst(bdiropq) = au_dbdiropq(d); + src_or_dst(hinode) = au_hi(src_or_dst(inode), a->btgt); + au_hn_inode_lock_nested(src_or_dst(hinode), AuLsc_I_CHILD); + diropq = au_diropq_create(d, a->btgt); + au_hn_inode_unlock(src_or_dst(hinode)); + if (IS_ERR(diropq)) + err = PTR_ERR(diropq); + else + dput(diropq); + +#undef src_or_dst_ + return err; +} + +static int au_ren_diropq(struct au_ren_args *a) +{ + int err; + unsigned char always; + struct dentry *d; + + err = 0; + d = a->dst_dentry; /* already renamed on the branch */ + always = !!au_opt_test(au_mntflags(d->d_sb), ALWAYS_DIROPQ); + if (au_ftest_ren(a->auren_flags, ISDIR_SRC) + && !au_ftest_ren(a->auren_flags, DIRREN) + && a->btgt != au_dbdiropq(a->src_dentry) + && (a->dst_wh_dentry + || a->btgt <= au_dbdiropq(d) + /* hide the lower to keep xino */ + /* the lowers may not be a dir, but we hide them anyway */ + || a->btgt < au_dbbot(d) + || always)) { + AuDbg("here\n"); + err = au_ren_do_diropq(a, AuSRC); + if (unlikely(err)) + goto out; + au_fset_ren(a->auren_flags, DIROPQ_SRC); + } + if (!a->exchange) + goto out; /* success */ + + d = a->src_dentry; /* already renamed on the branch */ + if (au_ftest_ren(a->auren_flags, ISDIR_DST) + && a->btgt != au_dbdiropq(a->dst_dentry) + && (a->btgt < au_dbdiropq(d) + || a->btgt < au_dbbot(d) + || always)) { + AuDbgDentry(a->src_dentry); + AuDbgDentry(a->dst_dentry); + err = au_ren_do_diropq(a, AuDST); + if (unlikely(err)) + goto out_rev_src; + au_fset_ren(a->auren_flags, DIROPQ_DST); + } + goto out; /* success */ + +out_rev_src: + AuDbg("err %d, reverting src\n", err); + au_ren_rev_diropq(err, a); +out: + return err; +} + +static int do_rename(struct au_ren_args *a) +{ + int err; + struct dentry *d, *h_d; + + if (!a->exchange) { + /* prepare workqueue args for asynchronous rmdir */ + h_d = a->dst_h_dentry; + if (au_ftest_ren(a->auren_flags, ISDIR_DST) + /* && !au_ftest_ren(a->auren_flags, DIRREN) */ + && d_is_positive(h_d)) { + err = -ENOMEM; + a->thargs = au_whtmp_rmdir_alloc(a->src_dentry->d_sb, + GFP_NOFS); + if (unlikely(!a->thargs)) + goto out; + a->h_dst = dget(h_d); + } + + /* create whiteout for src_dentry */ + if (au_ftest_ren(a->auren_flags, WHSRC)) { + a->src_bwh = au_dbwh(a->src_dentry); + AuDebugOn(a->src_bwh >= 0); + a->src_wh_dentry = au_wh_create(a->src_dentry, a->btgt, + a->src_h_parent); + err = PTR_ERR(a->src_wh_dentry); + if (IS_ERR(a->src_wh_dentry)) + goto out_thargs; + } + + /* lookup whiteout for dentry */ + if (au_ftest_ren(a->auren_flags, WHDST)) { + h_d = au_wh_lkup(a->dst_h_parent, + &a->dst_dentry->d_name, a->br); + err = PTR_ERR(h_d); + if (IS_ERR(h_d)) + goto out_whsrc; + if (d_is_negative(h_d)) + dput(h_d); + else + a->dst_wh_dentry = h_d; + } + + /* rename dentry to tmpwh */ + if (a->thargs) { + err = au_whtmp_ren(a->dst_h_dentry, a->br); + if (unlikely(err)) + goto out_whdst; + + d = a->dst_dentry; + au_set_h_dptr(d, a->btgt, NULL); + err = au_lkup_neg(d, a->btgt, /*wh*/0); + if (unlikely(err)) + goto out_whtmp; + a->dst_h_dentry = au_h_dptr(d, a->btgt); + } + } + + BUG_ON(d_is_positive(a->dst_h_dentry) && a->src_btop != a->btgt); +#if 0 /* debugging */ + BUG_ON(!au_ftest_ren(a->auren_flags, DIRREN) + && d_is_positive(a->dst_h_dentry) + && a->src_btop != a->btgt); +#endif + + /* rename by vfs_rename or cpup */ + err = au_ren_or_cpup(a); + if (unlikely(err)) + /* leave the copied-up one */ + goto out_whtmp; + + /* make dir opaque */ + err = au_ren_diropq(a); + if (unlikely(err)) + goto out_rename; + + /* update target timestamps */ + if (a->exchange) { + AuDebugOn(au_dbtop(a->dst_dentry) != a->btgt); + a->h_path.dentry = au_h_dptr(a->dst_dentry, a->btgt); + vfsub_update_h_iattr(&a->h_path, /*did*/NULL); /*ignore*/ + a->dst_inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime; + } + AuDebugOn(au_dbtop(a->src_dentry) != a->btgt); + a->h_path.dentry = au_h_dptr(a->src_dentry, a->btgt); + vfsub_update_h_iattr(&a->h_path, /*did*/NULL); /*ignore*/ + a->src_inode->i_ctime = d_inode(a->h_path.dentry)->i_ctime; + + if (!a->exchange) { + /* remove whiteout for dentry */ + if (a->dst_wh_dentry) { + a->h_path.dentry = a->dst_wh_dentry; + err = au_wh_unlink_dentry(a->dst_h_dir, &a->h_path, + a->dst_dentry); + if (unlikely(err)) + goto out_diropq; + } + + /* remove whtmp */ + if (a->thargs) + au_ren_del_whtmp(a); /* ignore this error */ + + au_fhsm_wrote(a->src_dentry->d_sb, a->btgt, /*force*/0); + } + err = 0; + goto out_success; + +out_diropq: + au_ren_rev_diropq(err, a); +out_rename: + au_ren_rev_rename(err, a); + dput(a->h_dst); +out_whtmp: + if (a->thargs) + au_ren_rev_whtmp(err, a); +out_whdst: + dput(a->dst_wh_dentry); + a->dst_wh_dentry = NULL; +out_whsrc: + if (a->src_wh_dentry) + au_ren_rev_whsrc(err, a); +out_success: + dput(a->src_wh_dentry); + dput(a->dst_wh_dentry); +out_thargs: + if (a->thargs) { + dput(a->h_dst); + au_whtmp_rmdir_free(a->thargs); + a->thargs = NULL; + } +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * test if @dentry dir can be rename destination or not. + * success means, it is a logically empty dir. + */ +static int may_rename_dstdir(struct dentry *dentry, struct au_nhash *whlist) +{ + return au_test_empty(dentry, whlist); +} + +/* + * test if @a->src_dentry dir can be rename source or not. + * if it can, return 0. + * success means, + * - it is a logically empty dir. + * - or, it exists on writable branch and has no children including whiteouts + * on the lower branch unless DIRREN is on. + */ +static int may_rename_srcdir(struct au_ren_args *a) +{ + int err; + unsigned int rdhash; + aufs_bindex_t btop, btgt; + struct dentry *dentry; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + dentry = a->src_dentry; + sb = dentry->d_sb; + sbinfo = au_sbi(sb); + if (au_opt_test(sbinfo->si_mntflags, DIRREN)) + au_fset_ren(a->auren_flags, DIRREN); + + btgt = a->btgt; + btop = au_dbtop(dentry); + if (btop != btgt) { + struct au_nhash whlist; + + SiMustAnyLock(sb); + rdhash = sbinfo->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, + dentry)); + err = au_nhash_alloc(&whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_test_empty(dentry, &whlist); + au_nhash_wh_free(&whlist); + goto out; + } + + if (btop == au_dbtaildir(dentry)) + return 0; /* success */ + + err = au_test_empty_lower(dentry); + +out: + if (err == -ENOTEMPTY) { + if (au_ftest_ren(a->auren_flags, DIRREN)) { + err = 0; + } else { + AuWarn1("renaming dir who has child(ren) on multiple " + "branches, is not supported\n"); + err = -EXDEV; + } + } + return err; +} + +/* side effect: sets whlist and h_dentry */ +static int au_ren_may_dir(struct au_ren_args *a) +{ + int err; + unsigned int rdhash; + struct dentry *d; + + d = a->dst_dentry; + SiMustAnyLock(d->d_sb); + + err = 0; + if (au_ftest_ren(a->auren_flags, ISDIR_DST) && a->dst_inode) { + rdhash = au_sbi(d->d_sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(/*file*/NULL, d)); + err = au_nhash_alloc(&a->whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + + if (!a->exchange) { + au_set_dbtop(d, a->dst_btop); + err = may_rename_dstdir(d, &a->whlist); + au_set_dbtop(d, a->btgt); + } else + err = may_rename_srcdir(a); + } + a->dst_h_dentry = au_h_dptr(d, au_dbtop(d)); + if (unlikely(err)) + goto out; + + d = a->src_dentry; + a->src_h_dentry = au_h_dptr(d, au_dbtop(d)); + if (au_ftest_ren(a->auren_flags, ISDIR_SRC)) { + err = may_rename_srcdir(a); + if (unlikely(err)) { + au_nhash_wh_free(&a->whlist); + a->whlist.nh_num = 0; + } + } +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * simple tests for rename. + * following the checks in vfs, plus the parent-child relationship. + */ +static int au_may_ren(struct au_ren_args *a) +{ + int err, isdir; + struct inode *h_inode; + + if (a->src_btop == a->btgt) { + err = au_may_del(a->src_dentry, a->btgt, a->src_h_parent, + au_ftest_ren(a->auren_flags, ISDIR_SRC)); + if (unlikely(err)) + goto out; + err = -EINVAL; + if (unlikely(a->src_h_dentry == a->h_trap)) + goto out; + } + + err = 0; + if (a->dst_btop != a->btgt) + goto out; + + err = -ENOTEMPTY; + if (unlikely(a->dst_h_dentry == a->h_trap)) + goto out; + + err = -EIO; + isdir = !!au_ftest_ren(a->auren_flags, ISDIR_DST); + if (d_really_is_negative(a->dst_dentry)) { + if (d_is_negative(a->dst_h_dentry)) + err = au_may_add(a->dst_dentry, a->btgt, + a->dst_h_parent, isdir); + } else { + if (unlikely(d_is_negative(a->dst_h_dentry))) + goto out; + h_inode = d_inode(a->dst_h_dentry); + if (h_inode->i_nlink) + err = au_may_del(a->dst_dentry, a->btgt, + a->dst_h_parent, isdir); + } + +out: + if (unlikely(err == -ENOENT || err == -EEXIST)) + err = -EIO; + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * locking order + * (VFS) + * - src_dir and dir by lock_rename() + * - inode if exists + * (aufs) + * - lock all + * + src_dentry and dentry by aufs_read_and_write_lock2() which calls, + * + si_read_lock + * + di_write_lock2_child() + * + di_write_lock_child() + * + ii_write_lock_child() + * + di_write_lock_child2() + * + ii_write_lock_child2() + * + src_parent and parent + * + di_write_lock_parent() + * + ii_write_lock_parent() + * + di_write_lock_parent2() + * + ii_write_lock_parent2() + * + lower src_dir and dir by vfsub_lock_rename() + * + verify the every relationships between child and parent. if any + * of them failed, unlock all and return -EBUSY. + */ +static void au_ren_unlock(struct au_ren_args *a) +{ + vfsub_unlock_rename(a->src_h_parent, a->src_hdir, + a->dst_h_parent, a->dst_hdir); + if (au_ftest_ren(a->auren_flags, DIRREN) + && a->h_root) + au_hn_inode_unlock(a->h_root); + if (au_ftest_ren(a->auren_flags, MNT_WRITE)) + vfsub_mnt_drop_write(au_br_mnt(a->br)); +} + +static int au_ren_lock(struct au_ren_args *a) +{ + int err; + unsigned int udba; + + err = 0; + a->src_h_parent = au_h_dptr(a->src_parent, a->btgt); + a->src_hdir = au_hi(a->src_dir, a->btgt); + a->dst_h_parent = au_h_dptr(a->dst_parent, a->btgt); + a->dst_hdir = au_hi(a->dst_dir, a->btgt); + + err = vfsub_mnt_want_write(au_br_mnt(a->br)); + if (unlikely(err)) + goto out; + au_fset_ren(a->auren_flags, MNT_WRITE); + if (au_ftest_ren(a->auren_flags, DIRREN)) { + struct dentry *root; + struct inode *dir; + + /* + * sbinfo is already locked, so this ii_read_lock is + * unnecessary. but our debugging feature checks it. + */ + root = a->src_inode->i_sb->s_root; + if (root != a->src_parent && root != a->dst_parent) { + dir = d_inode(root); + ii_read_lock_parent3(dir); + a->h_root = au_hi(dir, a->btgt); + ii_read_unlock(dir); + au_hn_inode_lock_nested(a->h_root, AuLsc_I_PARENT3); + } + } + a->h_trap = vfsub_lock_rename(a->src_h_parent, a->src_hdir, + a->dst_h_parent, a->dst_hdir); + udba = au_opt_udba(a->src_dentry->d_sb); + if (unlikely(a->src_hdir->hi_inode != d_inode(a->src_h_parent) + || a->dst_hdir->hi_inode != d_inode(a->dst_h_parent))) + err = au_busy_or_stale(); + if (!err && au_dbtop(a->src_dentry) == a->btgt) + err = au_h_verify(a->src_h_dentry, udba, + d_inode(a->src_h_parent), a->src_h_parent, + a->br); + if (!err && au_dbtop(a->dst_dentry) == a->btgt) + err = au_h_verify(a->dst_h_dentry, udba, + d_inode(a->dst_h_parent), a->dst_h_parent, + a->br); + if (!err) + goto out; /* success */ + + err = au_busy_or_stale(); + au_ren_unlock(a); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +static void au_ren_refresh_dir(struct au_ren_args *a) +{ + struct inode *dir; + + dir = a->dst_dir; + inode_inc_iversion(dir); + if (au_ftest_ren(a->auren_flags, ISDIR_SRC)) { + /* is this updating defined in POSIX? */ + au_cpup_attr_timesizes(a->src_inode); + au_cpup_attr_nlink(dir, /*force*/1); + } + au_dir_ts(dir, a->btgt); + + if (a->exchange) { + dir = a->src_dir; + inode_inc_iversion(dir); + if (au_ftest_ren(a->auren_flags, ISDIR_DST)) { + /* is this updating defined in POSIX? */ + au_cpup_attr_timesizes(a->dst_inode); + au_cpup_attr_nlink(dir, /*force*/1); + } + au_dir_ts(dir, a->btgt); + } + + if (au_ftest_ren(a->auren_flags, ISSAMEDIR)) + return; + + dir = a->src_dir; + inode_inc_iversion(dir); + if (au_ftest_ren(a->auren_flags, ISDIR_SRC)) + au_cpup_attr_nlink(dir, /*force*/1); + au_dir_ts(dir, a->btgt); +} + +static void au_ren_refresh(struct au_ren_args *a) +{ + aufs_bindex_t bbot, bindex; + struct dentry *d, *h_d; + struct inode *i, *h_i; + struct super_block *sb; + + d = a->dst_dentry; + d_drop(d); + if (a->h_dst) + /* already dget-ed by au_ren_or_cpup() */ + au_set_h_dptr(d, a->btgt, a->h_dst); + + i = a->dst_inode; + if (i) { + if (!a->exchange) { + if (!au_ftest_ren(a->auren_flags, ISDIR_DST)) + vfsub_drop_nlink(i); + else { + vfsub_dead_dir(i); + au_cpup_attr_timesizes(i); + } + au_update_dbrange(d, /*do_put_zero*/1); + } else + au_cpup_attr_nlink(i, /*force*/1); + } else { + bbot = a->btgt; + for (bindex = au_dbtop(d); bindex < bbot; bindex++) + au_set_h_dptr(d, bindex, NULL); + bbot = au_dbbot(d); + for (bindex = a->btgt + 1; bindex <= bbot; bindex++) + au_set_h_dptr(d, bindex, NULL); + au_update_dbrange(d, /*do_put_zero*/0); + } + + if (a->exchange + || au_ftest_ren(a->auren_flags, DIRREN)) { + d_drop(a->src_dentry); + if (au_ftest_ren(a->auren_flags, DIRREN)) + au_set_dbwh(a->src_dentry, -1); + return; + } + + d = a->src_dentry; + au_set_dbwh(d, -1); + bbot = au_dbbot(d); + for (bindex = a->btgt + 1; bindex <= bbot; bindex++) { + h_d = au_h_dptr(d, bindex); + if (h_d) + au_set_h_dptr(d, bindex, NULL); + } + au_set_dbbot(d, a->btgt); + + sb = d->d_sb; + i = a->src_inode; + if (au_opt_test(au_mntflags(sb), PLINK) && au_plink_test(i)) + return; /* success */ + + bbot = au_ibbot(i); + for (bindex = a->btgt + 1; bindex <= bbot; bindex++) { + h_i = au_h_iptr(i, bindex); + if (h_i) { + au_xino_write(sb, bindex, h_i->i_ino, /*ino*/0); + /* ignore this error */ + au_set_h_iptr(i, bindex, NULL, 0); + } + } + au_set_ibbot(i, a->btgt); +} + +/* ---------------------------------------------------------------------- */ + +/* mainly for link(2) and rename(2) */ +int au_wbr(struct dentry *dentry, aufs_bindex_t btgt) +{ + aufs_bindex_t bdiropq, bwh; + struct dentry *parent; + struct au_branch *br; + + parent = dentry->d_parent; + IMustLock(d_inode(parent)); /* dir is locked */ + + bdiropq = au_dbdiropq(parent); + bwh = au_dbwh(dentry); + br = au_sbr(dentry->d_sb, btgt); + if (au_br_rdonly(br) + || (0 <= bdiropq && bdiropq < btgt) + || (0 <= bwh && bwh < btgt)) + btgt = -1; + + AuDbg("btgt %d\n", btgt); + return btgt; +} + +/* sets src_btop, dst_btop and btgt */ +static int au_ren_wbr(struct au_ren_args *a) +{ + int err; + struct au_wr_dir_args wr_dir_args = { + /* .force_btgt = -1, */ + .flags = AuWrDir_ADD_ENTRY + }; + + a->src_btop = au_dbtop(a->src_dentry); + a->dst_btop = au_dbtop(a->dst_dentry); + if (au_ftest_ren(a->auren_flags, ISDIR_SRC) + || au_ftest_ren(a->auren_flags, ISDIR_DST)) + au_fset_wrdir(wr_dir_args.flags, ISDIR); + wr_dir_args.force_btgt = a->src_btop; + if (a->dst_inode && a->dst_btop < a->src_btop) + wr_dir_args.force_btgt = a->dst_btop; + wr_dir_args.force_btgt = au_wbr(a->dst_dentry, wr_dir_args.force_btgt); + err = au_wr_dir(a->dst_dentry, a->src_dentry, &wr_dir_args); + a->btgt = err; + if (a->exchange) + au_update_dbtop(a->dst_dentry); + + return err; +} + +static void au_ren_dt(struct au_ren_args *a) +{ + a->h_path.dentry = a->src_h_parent; + au_dtime_store(a->src_dt + AuPARENT, a->src_parent, &a->h_path); + if (!au_ftest_ren(a->auren_flags, ISSAMEDIR)) { + a->h_path.dentry = a->dst_h_parent; + au_dtime_store(a->dst_dt + AuPARENT, a->dst_parent, &a->h_path); + } + + au_fclr_ren(a->auren_flags, DT_DSTDIR); + if (!au_ftest_ren(a->auren_flags, ISDIR_SRC) + && !a->exchange) + return; + + a->h_path.dentry = a->src_h_dentry; + au_dtime_store(a->src_dt + AuCHILD, a->src_dentry, &a->h_path); + if (d_is_positive(a->dst_h_dentry)) { + au_fset_ren(a->auren_flags, DT_DSTDIR); + a->h_path.dentry = a->dst_h_dentry; + au_dtime_store(a->dst_dt + AuCHILD, a->dst_dentry, &a->h_path); + } +} + +static void au_ren_rev_dt(int err, struct au_ren_args *a) +{ + struct dentry *h_d; + struct inode *h_inode; + + au_dtime_revert(a->src_dt + AuPARENT); + if (!au_ftest_ren(a->auren_flags, ISSAMEDIR)) + au_dtime_revert(a->dst_dt + AuPARENT); + + if (au_ftest_ren(a->auren_flags, ISDIR_SRC) && err != -EIO) { + h_d = a->src_dt[AuCHILD].dt_h_path.dentry; + h_inode = d_inode(h_d); + inode_lock_nested(h_inode, AuLsc_I_CHILD); + au_dtime_revert(a->src_dt + AuCHILD); + inode_unlock(h_inode); + + if (au_ftest_ren(a->auren_flags, DT_DSTDIR)) { + h_d = a->dst_dt[AuCHILD].dt_h_path.dentry; + h_inode = d_inode(h_d); + inode_lock_nested(h_inode, AuLsc_I_CHILD); + au_dtime_revert(a->dst_dt + AuCHILD); + inode_unlock(h_inode); + } + } +} + +/* ---------------------------------------------------------------------- */ + +int aufs_rename(struct user_namespace *userns, + struct inode *_src_dir, struct dentry *_src_dentry, + struct inode *_dst_dir, struct dentry *_dst_dentry, + unsigned int _flags) +{ + int err, lock_flags; + void *rev; + /* reduce stack space */ + struct au_ren_args *a; + struct au_pin pin; + + AuDbg("%pd, %pd, 0x%x\n", _src_dentry, _dst_dentry, _flags); + IMustLock(_src_dir); + IMustLock(_dst_dir); + + err = -EINVAL; + if (unlikely(_flags & RENAME_WHITEOUT)) + goto out; + + err = -ENOMEM; + BUILD_BUG_ON(sizeof(*a) > PAGE_SIZE); + a = kzalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + a->flags = _flags; + BUILD_BUG_ON(sizeof(a->exchange) == sizeof(u8) + && RENAME_EXCHANGE > U8_MAX); + a->exchange = _flags & RENAME_EXCHANGE; + a->src_dir = _src_dir; + a->src_dentry = _src_dentry; + a->src_inode = NULL; + if (d_really_is_positive(a->src_dentry)) + a->src_inode = d_inode(a->src_dentry); + a->src_parent = a->src_dentry->d_parent; /* dir inode is locked */ + a->dst_dir = _dst_dir; + a->dst_dentry = _dst_dentry; + a->dst_inode = NULL; + if (d_really_is_positive(a->dst_dentry)) + a->dst_inode = d_inode(a->dst_dentry); + a->dst_parent = a->dst_dentry->d_parent; /* dir inode is locked */ + if (a->dst_inode) { + /* + * if EXCHANGE && src is non-dir && dst is dir, + * dst is not locked. + */ + /* IMustLock(a->dst_inode); */ + au_igrab(a->dst_inode); + } + + err = -ENOTDIR; + lock_flags = AuLock_FLUSH | AuLock_NOPLM | AuLock_GEN; + if (d_is_dir(a->src_dentry)) { + au_fset_ren(a->auren_flags, ISDIR_SRC); + if (unlikely(!a->exchange + && d_really_is_positive(a->dst_dentry) + && !d_is_dir(a->dst_dentry))) + goto out_free; + lock_flags |= AuLock_DIRS; + } + if (a->dst_inode && d_is_dir(a->dst_dentry)) { + au_fset_ren(a->auren_flags, ISDIR_DST); + if (unlikely(!a->exchange + && d_really_is_positive(a->src_dentry) + && !d_is_dir(a->src_dentry))) + goto out_free; + lock_flags |= AuLock_DIRS; + } + err = aufs_read_and_write_lock2(a->dst_dentry, a->src_dentry, + lock_flags); + if (unlikely(err)) + goto out_free; + + err = au_d_hashed_positive(a->src_dentry); + if (unlikely(err)) + goto out_unlock; + err = -ENOENT; + if (a->dst_inode) { + /* + * If it is a dir, VFS unhash it before this + * function. It means we cannot rely upon d_unhashed(). + */ + if (unlikely(!a->dst_inode->i_nlink)) + goto out_unlock; + if (!au_ftest_ren(a->auren_flags, ISDIR_DST)) { + err = au_d_hashed_positive(a->dst_dentry); + if (unlikely(err && !a->exchange)) + goto out_unlock; + } else if (unlikely(IS_DEADDIR(a->dst_inode))) + goto out_unlock; + } else if (unlikely(d_unhashed(a->dst_dentry))) + goto out_unlock; + + /* + * is it possible? + * yes, it happened (in linux-3.3-rcN) but I don't know why. + * there may exist a problem somewhere else. + */ + err = -EINVAL; + if (unlikely(d_inode(a->dst_parent) == d_inode(a->src_dentry))) + goto out_unlock; + + au_fset_ren(a->auren_flags, ISSAMEDIR); /* temporary */ + di_write_lock_parent(a->dst_parent); + + /* which branch we process */ + err = au_ren_wbr(a); + if (unlikely(err < 0)) + goto out_parent; + a->br = au_sbr(a->dst_dentry->d_sb, a->btgt); + a->h_path.mnt = au_br_mnt(a->br); + + /* are they available to be renamed */ + err = au_ren_may_dir(a); + if (unlikely(err)) + goto out_children; + + /* prepare the writable parent dir on the same branch */ + if (a->dst_btop == a->btgt) { + au_fset_ren(a->auren_flags, WHDST); + } else { + err = au_cpup_dirs(a->dst_dentry, a->btgt); + if (unlikely(err)) + goto out_children; + } + + err = 0; + if (!a->exchange) { + if (a->src_dir != a->dst_dir) { + /* + * this temporary unlock is safe, + * because both dir->i_mutex are locked. + */ + di_write_unlock(a->dst_parent); + di_write_lock_parent(a->src_parent); + err = au_wr_dir_need_wh(a->src_dentry, + au_ftest_ren(a->auren_flags, + ISDIR_SRC), + &a->btgt); + di_write_unlock(a->src_parent); + di_write_lock2_parent(a->src_parent, a->dst_parent, + /*isdir*/1); + au_fclr_ren(a->auren_flags, ISSAMEDIR); + } else + err = au_wr_dir_need_wh(a->src_dentry, + au_ftest_ren(a->auren_flags, + ISDIR_SRC), + &a->btgt); + } + if (unlikely(err < 0)) + goto out_children; + if (err) + au_fset_ren(a->auren_flags, WHSRC); + + /* cpup src */ + if (a->src_btop != a->btgt) { + err = au_pin(&pin, a->src_dentry, a->btgt, + au_opt_udba(a->src_dentry->d_sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (!err) { + struct au_cp_generic cpg = { + .dentry = a->src_dentry, + .bdst = a->btgt, + .bsrc = a->src_btop, + .len = -1, + .pin = &pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + AuDebugOn(au_dbtop(a->src_dentry) != a->src_btop); + err = au_sio_cpup_simple(&cpg); + au_unpin(&pin); + } + if (unlikely(err)) + goto out_children; + a->src_btop = a->btgt; + a->src_h_dentry = au_h_dptr(a->src_dentry, a->btgt); + if (!a->exchange) + au_fset_ren(a->auren_flags, WHSRC); + } + + /* cpup dst */ + if (a->exchange && a->dst_inode + && a->dst_btop != a->btgt) { + err = au_pin(&pin, a->dst_dentry, a->btgt, + au_opt_udba(a->dst_dentry->d_sb), + AuPin_DI_LOCKED | AuPin_MNT_WRITE); + if (!err) { + struct au_cp_generic cpg = { + .dentry = a->dst_dentry, + .bdst = a->btgt, + .bsrc = a->dst_btop, + .len = -1, + .pin = &pin, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + err = au_sio_cpup_simple(&cpg); + au_unpin(&pin); + } + if (unlikely(err)) + goto out_children; + a->dst_btop = a->btgt; + a->dst_h_dentry = au_h_dptr(a->dst_dentry, a->btgt); + } + + /* lock them all */ + err = au_ren_lock(a); + if (unlikely(err)) + /* leave the copied-up one */ + goto out_children; + + if (!a->exchange) { + if (!au_opt_test(au_mntflags(a->dst_dir->i_sb), UDBA_NONE)) + err = au_may_ren(a); + else if (unlikely(a->dst_dentry->d_name.len > AUFS_MAX_NAMELEN)) + err = -ENAMETOOLONG; + if (unlikely(err)) + goto out_hdir; + } + + /* store timestamps to be revertible */ + au_ren_dt(a); + + /* store dirren info */ + if (au_ftest_ren(a->auren_flags, DIRREN)) { + err = au_dr_rename(a->src_dentry, a->btgt, + &a->dst_dentry->d_name, &rev); + AuTraceErr(err); + if (unlikely(err)) + goto out_dt; + } + + /* here we go */ + err = do_rename(a); + if (unlikely(err)) + goto out_dirren; + + if (au_ftest_ren(a->auren_flags, DIRREN)) + au_dr_rename_fin(a->src_dentry, a->btgt, rev); + + /* update dir attributes */ + au_ren_refresh_dir(a); + + /* dput/iput all lower dentries */ + au_ren_refresh(a); + + goto out_hdir; /* success */ + +out_dirren: + if (au_ftest_ren(a->auren_flags, DIRREN)) + au_dr_rename_rev(a->src_dentry, a->btgt, rev); +out_dt: + au_ren_rev_dt(err, a); +out_hdir: + au_ren_unlock(a); +out_children: + au_nhash_wh_free(&a->whlist); + if (err && a->dst_inode && a->dst_btop != a->btgt) { + AuDbg("btop %d, btgt %d\n", a->dst_btop, a->btgt); + au_set_h_dptr(a->dst_dentry, a->btgt, NULL); + au_set_dbtop(a->dst_dentry, a->dst_btop); + } +out_parent: + if (!err) { + if (d_unhashed(a->src_dentry)) + au_fset_ren(a->auren_flags, DROPPED_SRC); + if (d_unhashed(a->dst_dentry)) + au_fset_ren(a->auren_flags, DROPPED_DST); + if (!a->exchange) + d_move(a->src_dentry, a->dst_dentry); + else { + d_exchange(a->src_dentry, a->dst_dentry); + if (au_ftest_ren(a->auren_flags, DROPPED_DST)) + d_drop(a->dst_dentry); + } + if (au_ftest_ren(a->auren_flags, DROPPED_SRC)) + d_drop(a->src_dentry); + } else { + au_update_dbtop(a->dst_dentry); + if (!a->dst_inode) + d_drop(a->dst_dentry); + } + if (au_ftest_ren(a->auren_flags, ISSAMEDIR)) + di_write_unlock(a->dst_parent); + else + di_write_unlock2(a->src_parent, a->dst_parent); +out_unlock: + aufs_read_and_write_unlock2(a->dst_dentry, a->src_dentry); +out_free: + iput(a->dst_inode); + if (a->thargs) + au_whtmp_rmdir_free(a->thargs); + au_kfree_rcu(a); +out: + AuTraceErr(err); + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/iinfo.c +++ linux-azure-5.13-5.13.0/fs/aufs/iinfo.c @@ -0,0 +1,286 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode private data + */ + +#include "aufs.h" + +struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex) +{ + struct inode *h_inode; + struct au_hinode *hinode; + + IiMustAnyLock(inode); + + hinode = au_hinode(au_ii(inode), bindex); + h_inode = hinode->hi_inode; + AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); + return h_inode; +} + +/* todo: hard/soft set? */ +void au_hiput(struct au_hinode *hinode) +{ + au_hn_free(hinode); + dput(hinode->hi_whdentry); + iput(hinode->hi_inode); +} + +unsigned int au_hi_flags(struct inode *inode, int isdir) +{ + unsigned int flags; + const unsigned int mnt_flags = au_mntflags(inode->i_sb); + + flags = 0; + if (au_opt_test(mnt_flags, XINO)) + au_fset_hi(flags, XINO); + if (isdir && au_opt_test(mnt_flags, UDBA_HNOTIFY)) + au_fset_hi(flags, HNOTIFY); + return flags; +} + +void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode, unsigned int flags) +{ + struct au_hinode *hinode; + struct inode *hi; + struct au_iinfo *iinfo = au_ii(inode); + + IiMustWriteLock(inode); + + hinode = au_hinode(iinfo, bindex); + hi = hinode->hi_inode; + AuDebugOn(h_inode && atomic_read(&h_inode->i_count) <= 0); + + if (hi) + au_hiput(hinode); + hinode->hi_inode = h_inode; + if (h_inode) { + int err; + struct super_block *sb = inode->i_sb; + struct au_branch *br; + + AuDebugOn(inode->i_mode + && (h_inode->i_mode & S_IFMT) + != (inode->i_mode & S_IFMT)); + if (bindex == iinfo->ii_btop) + au_cpup_igen(inode, h_inode); + br = au_sbr(sb, bindex); + hinode->hi_id = br->br_id; + if (au_ftest_hi(flags, XINO)) { + err = au_xino_write(sb, bindex, h_inode->i_ino, + inode->i_ino); + if (unlikely(err)) + AuIOErr1("failed au_xino_write() %d\n", err); + } + + if (au_ftest_hi(flags, HNOTIFY) + && au_br_hnotifyable(br->br_perm)) { + err = au_hn_alloc(hinode, inode); + if (unlikely(err)) + AuIOErr1("au_hn_alloc() %d\n", err); + } + } +} + +void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_wh) +{ + struct au_hinode *hinode; + + IiMustWriteLock(inode); + + hinode = au_hinode(au_ii(inode), bindex); + AuDebugOn(hinode->hi_whdentry); + hinode->hi_whdentry = h_wh; +} + +void au_update_iigen(struct inode *inode, int half) +{ + struct au_iinfo *iinfo; + struct au_iigen *iigen; + unsigned int sigen; + + sigen = au_sigen(inode->i_sb); + iinfo = au_ii(inode); + iigen = &iinfo->ii_generation; + spin_lock(&iigen->ig_spin); + iigen->ig_generation = sigen; + if (half) + au_ig_fset(iigen->ig_flags, HALF_REFRESHED); + else + au_ig_fclr(iigen->ig_flags, HALF_REFRESHED); + spin_unlock(&iigen->ig_spin); +} + +/* it may be called at remount time, too */ +void au_update_ibrange(struct inode *inode, int do_put_zero) +{ + struct au_iinfo *iinfo; + aufs_bindex_t bindex, bbot; + + AuDebugOn(au_is_bad_inode(inode)); + IiMustWriteLock(inode); + + iinfo = au_ii(inode); + if (do_put_zero && iinfo->ii_btop >= 0) { + for (bindex = iinfo->ii_btop; bindex <= iinfo->ii_bbot; + bindex++) { + struct inode *h_i; + + h_i = au_hinode(iinfo, bindex)->hi_inode; + if (h_i + && !h_i->i_nlink + && !(h_i->i_state & I_LINKABLE)) + au_set_h_iptr(inode, bindex, NULL, 0); + } + } + + iinfo->ii_btop = -1; + iinfo->ii_bbot = -1; + bbot = au_sbbot(inode->i_sb); + for (bindex = 0; bindex <= bbot; bindex++) + if (au_hinode(iinfo, bindex)->hi_inode) { + iinfo->ii_btop = bindex; + break; + } + if (iinfo->ii_btop >= 0) + for (bindex = bbot; bindex >= iinfo->ii_btop; bindex--) + if (au_hinode(iinfo, bindex)->hi_inode) { + iinfo->ii_bbot = bindex; + break; + } + AuDebugOn(iinfo->ii_btop > iinfo->ii_bbot); +} + +/* ---------------------------------------------------------------------- */ + +void au_icntnr_init_once(void *_c) +{ + struct au_icntnr *c = _c; + struct au_iinfo *iinfo = &c->iinfo; + + spin_lock_init(&iinfo->ii_generation.ig_spin); + au_rw_init(&iinfo->ii_rwsem); + inode_init_once(&c->vfs_inode); +} + +void au_hinode_init(struct au_hinode *hinode) +{ + hinode->hi_inode = NULL; + hinode->hi_id = -1; + au_hn_init(hinode); + hinode->hi_whdentry = NULL; +} + +int au_iinfo_init(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct super_block *sb; + struct au_hinode *hi; + int nbr, i; + + sb = inode->i_sb; + iinfo = &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); + nbr = au_sbbot(sb) + 1; + if (unlikely(nbr <= 0)) + nbr = 1; + hi = kmalloc_array(nbr, sizeof(*iinfo->ii_hinode), GFP_NOFS); + if (hi) { + au_lcnt_inc(&au_sbi(sb)->si_ninodes); + + iinfo->ii_hinode = hi; + for (i = 0; i < nbr; i++, hi++) + au_hinode_init(hi); + + iinfo->ii_generation.ig_generation = au_sigen(sb); + iinfo->ii_btop = -1; + iinfo->ii_bbot = -1; + iinfo->ii_vdir = NULL; + return 0; + } + return -ENOMEM; +} + +int au_hinode_realloc(struct au_iinfo *iinfo, int nbr, int may_shrink) +{ + int err, i; + struct au_hinode *hip; + + AuRwMustWriteLock(&iinfo->ii_rwsem); + + err = -ENOMEM; + hip = au_krealloc(iinfo->ii_hinode, sizeof(*hip) * nbr, GFP_NOFS, + may_shrink); + if (hip) { + iinfo->ii_hinode = hip; + i = iinfo->ii_bbot + 1; + hip += i; + for (; i < nbr; i++, hip++) + au_hinode_init(hip); + err = 0; + } + + return err; +} + +void au_iinfo_fin(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct au_hinode *hi; + struct super_block *sb; + aufs_bindex_t bindex, bbot; + const unsigned char unlinked = !inode->i_nlink; + + AuDebugOn(au_is_bad_inode(inode)); + + sb = inode->i_sb; + au_lcnt_dec(&au_sbi(sb)->si_ninodes); + if (si_pid_test(sb)) + au_xino_delete_inode(inode, unlinked); + else { + /* + * it is safe to hide the dependency between sbinfo and + * sb->s_umount. + */ + lockdep_off(); + si_noflush_read_lock(sb); + au_xino_delete_inode(inode, unlinked); + si_read_unlock(sb); + lockdep_on(); + } + + iinfo = au_ii(inode); + if (iinfo->ii_vdir) + au_vdir_free(iinfo->ii_vdir); + + bindex = iinfo->ii_btop; + if (bindex >= 0) { + hi = au_hinode(iinfo, bindex); + bbot = iinfo->ii_bbot; + while (bindex++ <= bbot) { + if (hi->hi_inode) + au_hiput(hi); + hi++; + } + } + au_kfree_rcu(iinfo->ii_hinode); + AuRwDestroy(&iinfo->ii_rwsem); +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/inode.c +++ linux-azure-5.13-5.13.0/fs/aufs/inode.c @@ -0,0 +1,531 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode functions + */ + +#include +#include "aufs.h" + +struct inode *au_igrab(struct inode *inode) +{ + if (inode) { + AuDebugOn(!atomic_read(&inode->i_count)); + ihold(inode); + } + return inode; +} + +static void au_refresh_hinode_attr(struct inode *inode, int do_version) +{ + au_cpup_attr_all(inode, /*force*/0); + au_update_iigen(inode, /*half*/1); + if (do_version) + inode_inc_iversion(inode); +} + +static int au_ii_refresh(struct inode *inode, int *update) +{ + int err, e, nbr; + umode_t type; + aufs_bindex_t bindex, new_bindex; + struct super_block *sb; + struct au_iinfo *iinfo; + struct au_hinode *p, *q, tmp; + + AuDebugOn(au_is_bad_inode(inode)); + IiMustWriteLock(inode); + + *update = 0; + sb = inode->i_sb; + nbr = au_sbbot(sb) + 1; + type = inode->i_mode & S_IFMT; + iinfo = au_ii(inode); + err = au_hinode_realloc(iinfo, nbr, /*may_shrink*/0); + if (unlikely(err)) + goto out; + + AuDebugOn(iinfo->ii_btop < 0); + p = au_hinode(iinfo, iinfo->ii_btop); + for (bindex = iinfo->ii_btop; bindex <= iinfo->ii_bbot; + bindex++, p++) { + if (!p->hi_inode) + continue; + + AuDebugOn(type != (p->hi_inode->i_mode & S_IFMT)); + new_bindex = au_br_index(sb, p->hi_id); + if (new_bindex == bindex) + continue; + + if (new_bindex < 0) { + *update = 1; + au_hiput(p); + p->hi_inode = NULL; + continue; + } + + if (new_bindex < iinfo->ii_btop) + iinfo->ii_btop = new_bindex; + if (iinfo->ii_bbot < new_bindex) + iinfo->ii_bbot = new_bindex; + /* swap two lower inode, and loop again */ + q = au_hinode(iinfo, new_bindex); + tmp = *q; + *q = *p; + *p = tmp; + if (tmp.hi_inode) { + bindex--; + p--; + } + } + au_update_ibrange(inode, /*do_put_zero*/0); + au_hinode_realloc(iinfo, nbr, /*may_shrink*/1); /* harmless if err */ + e = au_dy_irefresh(inode); + if (unlikely(e && !err)) + err = e; + +out: + AuTraceErr(err); + return err; +} + +void au_refresh_iop(struct inode *inode, int force_getattr) +{ + int type; + struct au_sbinfo *sbi = au_sbi(inode->i_sb); + const struct inode_operations *iop + = force_getattr ? aufs_iop : sbi->si_iop_array; + + if (inode->i_op == iop) + return; + + switch (inode->i_mode & S_IFMT) { + case S_IFDIR: + type = AuIop_DIR; + break; + case S_IFLNK: + type = AuIop_SYMLINK; + break; + default: + type = AuIop_OTHER; + break; + } + + inode->i_op = iop + type; + /* unnecessary smp_wmb() */ +} + +int au_refresh_hinode_self(struct inode *inode) +{ + int err, update; + + err = au_ii_refresh(inode, &update); + if (!err) + au_refresh_hinode_attr(inode, update && S_ISDIR(inode->i_mode)); + + AuTraceErr(err); + return err; +} + +int au_refresh_hinode(struct inode *inode, struct dentry *dentry) +{ + int err, e, update; + unsigned int flags; + umode_t mode; + aufs_bindex_t bindex, bbot; + unsigned char isdir; + struct au_hinode *p; + struct au_iinfo *iinfo; + + err = au_ii_refresh(inode, &update); + if (unlikely(err)) + goto out; + + update = 0; + iinfo = au_ii(inode); + p = au_hinode(iinfo, iinfo->ii_btop); + mode = (inode->i_mode & S_IFMT); + isdir = S_ISDIR(mode); + flags = au_hi_flags(inode, isdir); + bbot = au_dbbot(dentry); + for (bindex = au_dbtop(dentry); bindex <= bbot; bindex++) { + struct inode *h_i, *h_inode; + struct dentry *h_d; + + h_d = au_h_dptr(dentry, bindex); + if (!h_d || d_is_negative(h_d)) + continue; + + h_inode = d_inode(h_d); + AuDebugOn(mode != (h_inode->i_mode & S_IFMT)); + if (iinfo->ii_btop <= bindex && bindex <= iinfo->ii_bbot) { + h_i = au_h_iptr(inode, bindex); + if (h_i) { + if (h_i == h_inode) + continue; + err = -EIO; + break; + } + } + if (bindex < iinfo->ii_btop) + iinfo->ii_btop = bindex; + if (iinfo->ii_bbot < bindex) + iinfo->ii_bbot = bindex; + au_set_h_iptr(inode, bindex, au_igrab(h_inode), flags); + update = 1; + } + au_update_ibrange(inode, /*do_put_zero*/0); + e = au_dy_irefresh(inode); + if (unlikely(e && !err)) + err = e; + if (!err) + au_refresh_hinode_attr(inode, update && isdir); + +out: + AuTraceErr(err); + return err; +} + +static int set_inode(struct inode *inode, struct dentry *dentry) +{ + int err; + unsigned int flags; + umode_t mode; + aufs_bindex_t bindex, btop, btail; + unsigned char isdir; + struct dentry *h_dentry; + struct inode *h_inode; + struct au_iinfo *iinfo; + const struct inode_operations *iop; + + IiMustWriteLock(inode); + + err = 0; + isdir = 0; + iop = au_sbi(inode->i_sb)->si_iop_array; + btop = au_dbtop(dentry); + h_dentry = au_h_dptr(dentry, btop); + h_inode = d_inode(h_dentry); + mode = h_inode->i_mode; + switch (mode & S_IFMT) { + case S_IFREG: + btail = au_dbtail(dentry); + inode->i_op = iop + AuIop_OTHER; + inode->i_fop = &aufs_file_fop; + err = au_dy_iaop(inode, btop, h_inode); + if (unlikely(err)) + goto out; + break; + case S_IFDIR: + isdir = 1; + btail = au_dbtaildir(dentry); + inode->i_op = iop + AuIop_DIR; + inode->i_fop = &aufs_dir_fop; + break; + case S_IFLNK: + btail = au_dbtail(dentry); + inode->i_op = iop + AuIop_SYMLINK; + break; + case S_IFBLK: + case S_IFCHR: + case S_IFIFO: + case S_IFSOCK: + btail = au_dbtail(dentry); + inode->i_op = iop + AuIop_OTHER; + init_special_inode(inode, mode, h_inode->i_rdev); + break; + default: + AuIOErr("Unknown file type 0%o\n", mode); + err = -EIO; + goto out; + } + + /* do not set hnotify for whiteouted dirs (SHWH mode) */ + flags = au_hi_flags(inode, isdir); + if (au_opt_test(au_mntflags(dentry->d_sb), SHWH) + && au_ftest_hi(flags, HNOTIFY) + && dentry->d_name.len > AUFS_WH_PFX_LEN + && !memcmp(dentry->d_name.name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) + au_fclr_hi(flags, HNOTIFY); + iinfo = au_ii(inode); + iinfo->ii_btop = btop; + iinfo->ii_bbot = btail; + for (bindex = btop; bindex <= btail; bindex++) { + h_dentry = au_h_dptr(dentry, bindex); + if (h_dentry) + au_set_h_iptr(inode, bindex, + au_igrab(d_inode(h_dentry)), flags); + } + au_cpup_attr_all(inode, /*force*/1); + /* + * to force calling aufs_get_acl() every time, + * do not call cache_no_acl() for aufs inode. + */ + +out: + return err; +} + +/* + * successful returns with iinfo write_locked + * minus: errno + * zero: success, matched + * plus: no error, but unmatched + */ +static int reval_inode(struct inode *inode, struct dentry *dentry) +{ + int err; + unsigned int gen, igflags; + aufs_bindex_t bindex, bbot; + struct inode *h_inode, *h_dinode; + struct dentry *h_dentry; + + /* + * before this function, if aufs got any iinfo lock, it must be only + * one, the parent dir. + * it can happen by UDBA and the obsoleted inode number. + */ + err = -EIO; + if (unlikely(inode->i_ino == parent_ino(dentry))) + goto out; + + err = 1; + ii_write_lock_new_child(inode); + h_dentry = au_h_dptr(dentry, au_dbtop(dentry)); + h_dinode = d_inode(h_dentry); + bbot = au_ibbot(inode); + for (bindex = au_ibtop(inode); bindex <= bbot; bindex++) { + h_inode = au_h_iptr(inode, bindex); + if (!h_inode || h_inode != h_dinode) + continue; + + err = 0; + gen = au_iigen(inode, &igflags); + if (gen == au_digen(dentry) + && !au_ig_ftest(igflags, HALF_REFRESHED)) + break; + + /* fully refresh inode using dentry */ + err = au_refresh_hinode(inode, dentry); + if (!err) + au_update_iigen(inode, /*half*/0); + break; + } + + if (unlikely(err)) + ii_write_unlock(inode); +out: + return err; +} + +int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + unsigned int d_type, ino_t *ino) +{ + int err, idx; + const int isnondir = d_type != DT_DIR; + + /* prevent hardlinked inode number from race condition */ + if (isnondir) { + err = au_xinondir_enter(sb, bindex, h_ino, &idx); + if (unlikely(err)) + goto out; + } + + err = au_xino_read(sb, bindex, h_ino, ino); + if (unlikely(err)) + goto out_xinondir; + + if (!*ino) { + err = -EIO; + *ino = au_xino_new_ino(sb); + if (unlikely(!*ino)) + goto out_xinondir; + err = au_xino_write(sb, bindex, h_ino, *ino); + if (unlikely(err)) + goto out_xinondir; + } + +out_xinondir: + if (isnondir && idx >= 0) + au_xinondir_leave(sb, bindex, h_ino, idx); +out: + return err; +} + +/* successful returns with iinfo write_locked */ +/* todo: return with unlocked? */ +struct inode *au_new_inode(struct dentry *dentry, int must_new) +{ + struct inode *inode, *h_inode; + struct dentry *h_dentry; + struct super_block *sb; + ino_t h_ino, ino; + int err, idx, hlinked; + aufs_bindex_t btop; + + sb = dentry->d_sb; + btop = au_dbtop(dentry); + h_dentry = au_h_dptr(dentry, btop); + h_inode = d_inode(h_dentry); + h_ino = h_inode->i_ino; + hlinked = !d_is_dir(h_dentry) && h_inode->i_nlink > 1; + +new_ino: + /* + * stop 'race'-ing between hardlinks under different + * parents. + */ + if (hlinked) { + err = au_xinondir_enter(sb, btop, h_ino, &idx); + inode = ERR_PTR(err); + if (unlikely(err)) + goto out; + } + + err = au_xino_read(sb, btop, h_ino, &ino); + inode = ERR_PTR(err); + if (unlikely(err)) + goto out_xinondir; + + if (!ino) { + ino = au_xino_new_ino(sb); + if (unlikely(!ino)) { + inode = ERR_PTR(-EIO); + goto out_xinondir; + } + } + + AuDbg("i%lu\n", (unsigned long)ino); + inode = au_iget_locked(sb, ino); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out_xinondir; + + AuDbg("%lx, new %d\n", inode->i_state, !!(inode->i_state & I_NEW)); + if (inode->i_state & I_NEW) { + ii_write_lock_new_child(inode); + err = set_inode(inode, dentry); + if (!err) { + unlock_new_inode(inode); + goto out_xinondir; /* success */ + } + + /* + * iget_failed() calls iput(), but we need to call + * ii_write_unlock() after iget_failed(). so dirty hack for + * i_count. + */ + atomic_inc(&inode->i_count); + iget_failed(inode); + ii_write_unlock(inode); + au_xino_write(sb, btop, h_ino, /*ino*/0); + /* ignore this error */ + goto out_iput; + } else if (!must_new && !IS_DEADDIR(inode) && inode->i_nlink) { + /* + * horrible race condition between lookup, readdir and copyup + * (or something). + */ + if (hlinked && idx >= 0) + au_xinondir_leave(sb, btop, h_ino, idx); + err = reval_inode(inode, dentry); + if (unlikely(err < 0)) { + hlinked = 0; + goto out_iput; + } + if (!err) + goto out; /* success */ + else if (hlinked && idx >= 0) { + err = au_xinondir_enter(sb, btop, h_ino, &idx); + if (unlikely(err)) { + iput(inode); + inode = ERR_PTR(err); + goto out; + } + } + } + + if (unlikely(au_test_fs_unique_ino(h_inode))) + AuWarn1("Warning: Un-notified UDBA or repeatedly renamed dir," + " b%d, %s, %pd, hi%lu, i%lu.\n", + btop, au_sbtype(h_dentry->d_sb), dentry, + (unsigned long)h_ino, (unsigned long)ino); + ino = 0; + err = au_xino_write(sb, btop, h_ino, /*ino*/0); + if (!err) { + iput(inode); + if (hlinked && idx >= 0) + au_xinondir_leave(sb, btop, h_ino, idx); + goto new_ino; + } + +out_iput: + iput(inode); + inode = ERR_PTR(err); +out_xinondir: + if (hlinked && idx >= 0) + au_xinondir_leave(sb, btop, h_ino, idx); +out: + return inode; +} + +/* ---------------------------------------------------------------------- */ + +int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, + struct inode *inode) +{ + int err; + struct inode *hi; + + err = au_br_rdonly(au_sbr(sb, bindex)); + + /* pseudo-link after flushed may happen out of bounds */ + if (!err + && inode + && au_ibtop(inode) <= bindex + && bindex <= au_ibbot(inode)) { + /* + * permission check is unnecessary since vfsub routine + * will be called later + */ + hi = au_h_iptr(inode, bindex); + if (hi) + err = IS_IMMUTABLE(hi) ? -EROFS : 0; + } + + return err; +} + +int au_test_h_perm(struct user_namespace *h_userns, struct inode *h_inode, + int mask) +{ + if (uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) + return 0; + return inode_permission(h_userns, h_inode, mask); +} + +int au_test_h_perm_sio(struct user_namespace *h_userns, struct inode *h_inode, + int mask) +{ + if (au_test_nfs(h_inode->i_sb) + && (mask & MAY_WRITE) + && S_ISDIR(h_inode->i_mode)) + mask |= MAY_READ; /* force permission check */ + return au_test_h_perm(h_userns, h_inode, mask); +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/inode.h +++ linux-azure-5.13-5.13.0/fs/aufs/inode.h @@ -0,0 +1,705 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * inode operations + */ + +#ifndef __AUFS_INODE_H__ +#define __AUFS_INODE_H__ + +#ifdef __KERNEL__ + +#include +#include "rwsem.h" + +struct vfsmount; + +struct au_hnotify { +#ifdef CONFIG_AUFS_HNOTIFY +#ifdef CONFIG_AUFS_HFSNOTIFY + /* never use fsnotify_add_vfsmount_mark() */ + struct fsnotify_mark hn_mark; +#endif + struct inode *hn_aufs_inode; /* no get/put */ + struct rcu_head rcu; +#endif +} ____cacheline_aligned_in_smp; + +struct au_hinode { + struct inode *hi_inode; + aufs_bindex_t hi_id; +#ifdef CONFIG_AUFS_HNOTIFY + struct au_hnotify *hi_notify; +#endif + + /* reference to the copied-up whiteout with get/put */ + struct dentry *hi_whdentry; +}; + +/* ig_flags */ +#define AuIG_HALF_REFRESHED 1 +#define au_ig_ftest(flags, name) ((flags) & AuIG_##name) +#define au_ig_fset(flags, name) \ + do { (flags) |= AuIG_##name; } while (0) +#define au_ig_fclr(flags, name) \ + do { (flags) &= ~AuIG_##name; } while (0) + +struct au_iigen { + spinlock_t ig_spin; + __u32 ig_generation, ig_flags; +}; + +struct au_vdir; +struct au_iinfo { + struct au_iigen ii_generation; + struct super_block *ii_hsb1; /* no get/put */ + + struct au_rwsem ii_rwsem; + aufs_bindex_t ii_btop, ii_bbot; + __u32 ii_higen; + struct au_hinode *ii_hinode; + struct au_vdir *ii_vdir; +}; + +struct au_icntnr { + struct au_iinfo iinfo; + struct inode vfs_inode; + struct hlist_bl_node plink; + struct rcu_head rcu; +} ____cacheline_aligned_in_smp; + +/* au_pin flags */ +#define AuPin_DI_LOCKED 1 +#define AuPin_MNT_WRITE (1 << 1) +#define au_ftest_pin(flags, name) ((flags) & AuPin_##name) +#define au_fset_pin(flags, name) \ + do { (flags) |= AuPin_##name; } while (0) +#define au_fclr_pin(flags, name) \ + do { (flags) &= ~AuPin_##name; } while (0) + +struct au_pin { + /* input */ + struct dentry *dentry; + unsigned int udba; + unsigned char lsc_di, lsc_hi, flags; + aufs_bindex_t bindex; + + /* output */ + struct dentry *parent; + struct au_hinode *hdir; + struct vfsmount *h_mnt; + + /* temporary unlock/relock for copyup */ + struct dentry *h_dentry, *h_parent; + struct au_branch *br; + struct task_struct *task; +}; + +void au_pin_hdir_unlock(struct au_pin *p); +int au_pin_hdir_lock(struct au_pin *p); +int au_pin_hdir_relock(struct au_pin *p); +void au_pin_hdir_acquire_nest(struct au_pin *p); +void au_pin_hdir_release(struct au_pin *p); + +/* ---------------------------------------------------------------------- */ + +static inline struct au_iinfo *au_ii(struct inode *inode) +{ + BUG_ON(is_bad_inode(inode)); + return &(container_of(inode, struct au_icntnr, vfs_inode)->iinfo); +} + +/* ---------------------------------------------------------------------- */ + +/* inode.c */ +struct inode *au_igrab(struct inode *inode); +void au_refresh_iop(struct inode *inode, int force_getattr); +int au_refresh_hinode_self(struct inode *inode); +int au_refresh_hinode(struct inode *inode, struct dentry *dentry); +int au_ino(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + unsigned int d_type, ino_t *ino); +struct inode *au_new_inode(struct dentry *dentry, int must_new); +int au_test_ro(struct super_block *sb, aufs_bindex_t bindex, + struct inode *inode); +int au_test_h_perm(struct user_namespace *h_userns, struct inode *h_inode, + int mask); +int au_test_h_perm_sio(struct user_namespace *h_userns, struct inode *h_inode, + int mask); + +static inline int au_wh_ino(struct super_block *sb, aufs_bindex_t bindex, + ino_t h_ino, unsigned int d_type, ino_t *ino) +{ +#ifdef CONFIG_AUFS_SHWH + return au_ino(sb, bindex, h_ino, d_type, ino); +#else + return 0; +#endif +} + +/* i_op.c */ +enum { + AuIop_SYMLINK, + AuIop_DIR, + AuIop_OTHER, + AuIop_Last +}; +extern struct inode_operations aufs_iop[AuIop_Last], /* not const */ + aufs_iop_nogetattr[AuIop_Last]; + +/* au_wr_dir flags */ +#define AuWrDir_ADD_ENTRY 1 +#define AuWrDir_ISDIR (1 << 1) +#define AuWrDir_TMPFILE (1 << 2) +#define au_ftest_wrdir(flags, name) ((flags) & AuWrDir_##name) +#define au_fset_wrdir(flags, name) \ + do { (flags) |= AuWrDir_##name; } while (0) +#define au_fclr_wrdir(flags, name) \ + do { (flags) &= ~AuWrDir_##name; } while (0) + +struct au_wr_dir_args { + aufs_bindex_t force_btgt; + unsigned char flags; +}; +int au_wr_dir(struct dentry *dentry, struct dentry *src_dentry, + struct au_wr_dir_args *args); + +struct dentry *au_pinned_h_parent(struct au_pin *pin); +void au_pin_init(struct au_pin *pin, struct dentry *dentry, + aufs_bindex_t bindex, int lsc_di, int lsc_hi, + unsigned int udba, unsigned char flags); +int au_pin(struct au_pin *pin, struct dentry *dentry, aufs_bindex_t bindex, + unsigned int udba, unsigned char flags) __must_check; +int au_do_pin(struct au_pin *pin) __must_check; +void au_unpin(struct au_pin *pin); +int au_reval_for_attr(struct dentry *dentry, unsigned int sigen); + +#define AuIcpup_DID_CPUP 1 +#define au_ftest_icpup(flags, name) ((flags) & AuIcpup_##name) +#define au_fset_icpup(flags, name) \ + do { (flags) |= AuIcpup_##name; } while (0) +#define au_fclr_icpup(flags, name) \ + do { (flags) &= ~AuIcpup_##name; } while (0) + +struct au_icpup_args { + unsigned char flags; + unsigned char pin_flags; + aufs_bindex_t btgt; + unsigned int udba; + struct au_pin pin; + struct path h_path; + struct inode *h_inode; +}; + +int au_pin_and_icpup(struct dentry *dentry, struct iattr *ia, + struct au_icpup_args *a); + +int au_h_path_getattr(struct dentry *dentry, struct inode *inode, int force, + struct path *h_path, int locked); + +/* i_op_add.c */ +int au_may_add(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir); +int aufs_mknod(struct user_namespace *userns, struct inode *dir, + struct dentry *dentry, umode_t mode, dev_t dev); +int aufs_symlink(struct user_namespace *userns, struct inode *dir, + struct dentry *dentry, const char *symname); +int aufs_create(struct user_namespace *userns, struct inode *dir, + struct dentry *dentry, umode_t mode, bool want_excl); +struct vfsub_aopen_args; +int au_aopen_or_create(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *args); +int aufs_tmpfile(struct user_namespace *userns, struct inode *dir, + struct dentry *dentry, umode_t mode); +int aufs_link(struct dentry *src_dentry, struct inode *dir, + struct dentry *dentry); +int aufs_mkdir(struct user_namespace *userns, struct inode *dir, + struct dentry *dentry, umode_t mode); + +/* i_op_del.c */ +int au_wr_dir_need_wh(struct dentry *dentry, int isdir, aufs_bindex_t *bcpup); +int au_may_del(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent, int isdir); +int aufs_unlink(struct inode *dir, struct dentry *dentry); +int aufs_rmdir(struct inode *dir, struct dentry *dentry); + +/* i_op_ren.c */ +int au_wbr(struct dentry *dentry, aufs_bindex_t btgt); +int aufs_rename(struct user_namespace *userns, + struct inode *_src_dir, struct dentry *_src_dentry, + struct inode *_dst_dir, struct dentry *_dst_dentry, + unsigned int _flags); + +/* iinfo.c */ +struct inode *au_h_iptr(struct inode *inode, aufs_bindex_t bindex); +void au_hiput(struct au_hinode *hinode); +void au_set_hi_wh(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_wh); +unsigned int au_hi_flags(struct inode *inode, int isdir); + +/* hinode flags */ +#define AuHi_XINO 1 +#define AuHi_HNOTIFY (1 << 1) +#define au_ftest_hi(flags, name) ((flags) & AuHi_##name) +#define au_fset_hi(flags, name) \ + do { (flags) |= AuHi_##name; } while (0) +#define au_fclr_hi(flags, name) \ + do { (flags) &= ~AuHi_##name; } while (0) + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuHi_HNOTIFY +#define AuHi_HNOTIFY 0 +#endif + +void au_set_h_iptr(struct inode *inode, aufs_bindex_t bindex, + struct inode *h_inode, unsigned int flags); + +void au_update_iigen(struct inode *inode, int half); +void au_update_ibrange(struct inode *inode, int do_put_zero); + +void au_icntnr_init_once(void *_c); +void au_hinode_init(struct au_hinode *hinode); +int au_iinfo_init(struct inode *inode); +void au_iinfo_fin(struct inode *inode); +int au_hinode_realloc(struct au_iinfo *iinfo, int nbr, int may_shrink); + +#ifdef CONFIG_PROC_FS +/* plink.c */ +int au_plink_maint(struct super_block *sb, int flags); +struct au_sbinfo; +void au_plink_maint_leave(struct au_sbinfo *sbinfo); +int au_plink_maint_enter(struct super_block *sb); +#ifdef CONFIG_AUFS_DEBUG +void au_plink_list(struct super_block *sb); +#else +AuStubVoid(au_plink_list, struct super_block *sb) +#endif +int au_plink_test(struct inode *inode); +struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex); +void au_plink_append(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry); +void au_plink_put(struct super_block *sb, int verbose); +void au_plink_clean(struct super_block *sb, int verbose); +void au_plink_half_refresh(struct super_block *sb, aufs_bindex_t br_id); +#else +AuStubInt0(au_plink_maint, struct super_block *sb, int flags); +AuStubVoid(au_plink_maint_leave, struct au_sbinfo *sbinfo); +AuStubInt0(au_plink_maint_enter, struct super_block *sb); +AuStubVoid(au_plink_list, struct super_block *sb); +AuStubInt0(au_plink_test, struct inode *inode); +AuStub(struct dentry *, au_plink_lkup, return NULL, + struct inode *inode, aufs_bindex_t bindex); +AuStubVoid(au_plink_append, struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry); +AuStubVoid(au_plink_put, struct super_block *sb, int verbose); +AuStubVoid(au_plink_clean, struct super_block *sb, int verbose); +AuStubVoid(au_plink_half_refresh, struct super_block *sb, aufs_bindex_t br_id); +#endif /* CONFIG_PROC_FS */ + +#ifdef CONFIG_AUFS_XATTR +/* xattr.c */ +int au_cpup_xattr(struct path *h_dst, struct path *h_src, int ignore_flags, + unsigned int verbose); +ssize_t aufs_listxattr(struct dentry *dentry, char *list, size_t size); +void au_xattr_init(struct super_block *sb); +#else +AuStubInt0(au_cpup_xattr, struct path *h_dst, struct path *h_src, + int ignore_flags, unsigned int verbose); +AuStubVoid(au_xattr_init, struct super_block *sb); +#endif + +#ifdef CONFIG_FS_POSIX_ACL +struct posix_acl *aufs_get_acl(struct inode *inode, int type); +int aufs_set_acl(struct user_namespace *userns, struct inode *inode, + struct posix_acl *acl, int type); +#endif + +#if IS_ENABLED(CONFIG_AUFS_XATTR) || IS_ENABLED(CONFIG_FS_POSIX_ACL) +enum { + AU_XATTR_SET, + AU_ACL_SET +}; + +struct au_sxattr { + int type; + union { + struct { + const char *name; + const void *value; + size_t size; + int flags; + } set; + struct { + struct posix_acl *acl; + int type; + } acl_set; + } u; +}; +ssize_t au_sxattr(struct dentry *dentry, struct inode *inode, + struct au_sxattr *arg); +#endif + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for iinfo */ +enum { + AuLsc_II_CHILD, /* child first */ + AuLsc_II_CHILD2, /* rename(2), link(2), and cpup at hnotify */ + AuLsc_II_CHILD3, /* copyup dirs */ + AuLsc_II_PARENT, /* see AuLsc_I_PARENT in vfsub.h */ + AuLsc_II_PARENT2, + AuLsc_II_PARENT3, /* copyup dirs */ + AuLsc_II_NEW_CHILD +}; + +/* + * ii_read_lock_child, ii_write_lock_child, + * ii_read_lock_child2, ii_write_lock_child2, + * ii_read_lock_child3, ii_write_lock_child3, + * ii_read_lock_parent, ii_write_lock_parent, + * ii_read_lock_parent2, ii_write_lock_parent2, + * ii_read_lock_parent3, ii_write_lock_parent3, + * ii_read_lock_new_child, ii_write_lock_new_child, + */ +#define AuReadLockFunc(name, lsc) \ +static inline void ii_read_lock_##name(struct inode *i) \ +{ \ + au_rw_read_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ +} + +#define AuWriteLockFunc(name, lsc) \ +static inline void ii_write_lock_##name(struct inode *i) \ +{ \ + au_rw_write_lock_nested(&au_ii(i)->ii_rwsem, AuLsc_II_##lsc); \ +} + +#define AuRWLockFuncs(name, lsc) \ + AuReadLockFunc(name, lsc) \ + AuWriteLockFunc(name, lsc) + +AuRWLockFuncs(child, CHILD); +AuRWLockFuncs(child2, CHILD2); +AuRWLockFuncs(child3, CHILD3); +AuRWLockFuncs(parent, PARENT); +AuRWLockFuncs(parent2, PARENT2); +AuRWLockFuncs(parent3, PARENT3); +AuRWLockFuncs(new_child, NEW_CHILD); + +#undef AuReadLockFunc +#undef AuWriteLockFunc +#undef AuRWLockFuncs + +#define ii_read_unlock(i) au_rw_read_unlock(&au_ii(i)->ii_rwsem) +#define ii_write_unlock(i) au_rw_write_unlock(&au_ii(i)->ii_rwsem) +#define ii_downgrade_lock(i) au_rw_dgrade_lock(&au_ii(i)->ii_rwsem) + +#define IiMustNoWaiters(i) AuRwMustNoWaiters(&au_ii(i)->ii_rwsem) +#define IiMustAnyLock(i) AuRwMustAnyLock(&au_ii(i)->ii_rwsem) +#define IiMustWriteLock(i) AuRwMustWriteLock(&au_ii(i)->ii_rwsem) + +/* ---------------------------------------------------------------------- */ + +static inline void au_icntnr_init(struct au_icntnr *c) +{ +#ifdef CONFIG_AUFS_DEBUG + c->vfs_inode.i_mode = 0; +#endif +} + +static inline unsigned int au_iigen(struct inode *inode, unsigned int *igflags) +{ + unsigned int gen; + struct au_iinfo *iinfo; + struct au_iigen *iigen; + + iinfo = au_ii(inode); + iigen = &iinfo->ii_generation; + spin_lock(&iigen->ig_spin); + if (igflags) + *igflags = iigen->ig_flags; + gen = iigen->ig_generation; + spin_unlock(&iigen->ig_spin); + + return gen; +} + +/* tiny test for inode number */ +/* tmpfs generation is too rough */ +static inline int au_test_higen(struct inode *inode, struct inode *h_inode) +{ + struct au_iinfo *iinfo; + + iinfo = au_ii(inode); + AuRwMustAnyLock(&iinfo->ii_rwsem); + return !(iinfo->ii_hsb1 == h_inode->i_sb + && iinfo->ii_higen == h_inode->i_generation); +} + +static inline void au_iigen_dec(struct inode *inode) +{ + struct au_iinfo *iinfo; + struct au_iigen *iigen; + + iinfo = au_ii(inode); + iigen = &iinfo->ii_generation; + spin_lock(&iigen->ig_spin); + iigen->ig_generation--; + spin_unlock(&iigen->ig_spin); +} + +static inline int au_iigen_test(struct inode *inode, unsigned int sigen) +{ + int err; + + err = 0; + if (unlikely(inode && au_iigen(inode, NULL) != sigen)) + err = -EIO; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static inline struct au_hinode *au_hinode(struct au_iinfo *iinfo, + aufs_bindex_t bindex) +{ + return iinfo->ii_hinode + bindex; +} + +static inline int au_is_bad_inode(struct inode *inode) +{ + return !!(is_bad_inode(inode) || !au_hinode(au_ii(inode), 0)); +} + +static inline aufs_bindex_t au_ii_br_id(struct inode *inode, + aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_hinode(au_ii(inode), bindex)->hi_id; +} + +static inline aufs_bindex_t au_ibtop(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_btop; +} + +static inline aufs_bindex_t au_ibbot(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_bbot; +} + +static inline struct au_vdir *au_ivdir(struct inode *inode) +{ + IiMustAnyLock(inode); + return au_ii(inode)->ii_vdir; +} + +static inline struct dentry *au_hi_wh(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_hinode(au_ii(inode), bindex)->hi_whdentry; +} + +static inline void au_set_ibtop(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_btop = bindex; +} + +static inline void au_set_ibbot(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_bbot = bindex; +} + +static inline void au_set_ivdir(struct inode *inode, struct au_vdir *vdir) +{ + IiMustWriteLock(inode); + au_ii(inode)->ii_vdir = vdir; +} + +static inline struct au_hinode *au_hi(struct inode *inode, aufs_bindex_t bindex) +{ + IiMustAnyLock(inode); + return au_hinode(au_ii(inode), bindex); +} + +/* ---------------------------------------------------------------------- */ + +static inline struct dentry *au_pinned_parent(struct au_pin *pin) +{ + if (pin) + return pin->parent; + return NULL; +} + +static inline struct inode *au_pinned_h_dir(struct au_pin *pin) +{ + if (pin && pin->hdir) + return pin->hdir->hi_inode; + return NULL; +} + +static inline struct au_hinode *au_pinned_hdir(struct au_pin *pin) +{ + if (pin) + return pin->hdir; + return NULL; +} + +static inline void au_pin_set_dentry(struct au_pin *pin, struct dentry *dentry) +{ + if (pin) + pin->dentry = dentry; +} + +static inline void au_pin_set_parent_lflag(struct au_pin *pin, + unsigned char lflag) +{ + if (pin) { + if (lflag) + au_fset_pin(pin->flags, DI_LOCKED); + else + au_fclr_pin(pin->flags, DI_LOCKED); + } +} + +#if 0 /* reserved */ +static inline void au_pin_set_parent(struct au_pin *pin, struct dentry *parent) +{ + if (pin) { + dput(pin->parent); + pin->parent = dget(parent); + } +} +#endif + +/* ---------------------------------------------------------------------- */ + +struct au_branch; +#ifdef CONFIG_AUFS_HNOTIFY +struct au_hnotify_op { + void (*ctl)(struct au_hinode *hinode, int do_set); + int (*alloc)(struct au_hinode *hinode); + + /* + * if it returns true, the caller should free hinode->hi_notify, + * otherwise ->free() frees it. + */ + int (*free)(struct au_hinode *hinode, + struct au_hnotify *hn) __must_check; + + void (*fin)(void); + int (*init)(void); + + int (*reset_br)(unsigned int udba, struct au_branch *br, int perm); + void (*fin_br)(struct au_branch *br); + int (*init_br)(struct au_branch *br, int perm); +}; + +/* hnotify.c */ +int au_hn_alloc(struct au_hinode *hinode, struct inode *inode); +void au_hn_free(struct au_hinode *hinode); +void au_hn_ctl(struct au_hinode *hinode, int do_set); +void au_hn_reset(struct inode *inode, unsigned int flags); +int au_hnotify(struct inode *h_dir, struct au_hnotify *hnotify, u32 mask, + const struct qstr *h_child_qstr, struct inode *h_child_inode); +int au_hnotify_reset_br(unsigned int udba, struct au_branch *br, int perm); +int au_hnotify_init_br(struct au_branch *br, int perm); +void au_hnotify_fin_br(struct au_branch *br); +int __init au_hnotify_init(void); +void au_hnotify_fin(void); + +/* hfsnotify.c */ +extern const struct au_hnotify_op au_hnotify_op; + +static inline +void au_hn_init(struct au_hinode *hinode) +{ + hinode->hi_notify = NULL; +} + +static inline struct au_hnotify *au_hn(struct au_hinode *hinode) +{ + return hinode->hi_notify; +} + +#else +AuStub(int, au_hn_alloc, return -EOPNOTSUPP, + struct au_hinode *hinode __maybe_unused, + struct inode *inode __maybe_unused) +AuStub(struct au_hnotify *, au_hn, return NULL, struct au_hinode *hinode) +AuStubVoid(au_hn_free, struct au_hinode *hinode __maybe_unused) +AuStubVoid(au_hn_ctl, struct au_hinode *hinode __maybe_unused, + int do_set __maybe_unused) +AuStubVoid(au_hn_reset, struct inode *inode __maybe_unused, + unsigned int flags __maybe_unused) +AuStubInt0(au_hnotify_reset_br, unsigned int udba __maybe_unused, + struct au_branch *br __maybe_unused, + int perm __maybe_unused) +AuStubInt0(au_hnotify_init_br, struct au_branch *br __maybe_unused, + int perm __maybe_unused) +AuStubVoid(au_hnotify_fin_br, struct au_branch *br __maybe_unused) +AuStubInt0(__init au_hnotify_init, void) +AuStubVoid(au_hnotify_fin, void) +AuStubVoid(au_hn_init, struct au_hinode *hinode __maybe_unused) +#endif /* CONFIG_AUFS_HNOTIFY */ + +static inline void au_hn_suspend(struct au_hinode *hdir) +{ + au_hn_ctl(hdir, /*do_set*/0); +} + +static inline void au_hn_resume(struct au_hinode *hdir) +{ + au_hn_ctl(hdir, /*do_set*/1); +} + +static inline void au_hn_inode_lock(struct au_hinode *hdir) +{ + inode_lock(hdir->hi_inode); + au_hn_suspend(hdir); +} + +static inline void au_hn_inode_lock_nested(struct au_hinode *hdir, + unsigned int sc __maybe_unused) +{ + inode_lock_nested(hdir->hi_inode, sc); + au_hn_suspend(hdir); +} + +#if 0 /* unused */ +#include "vfsub.h" +static inline void au_hn_inode_lock_shared_nested(struct au_hinode *hdir, + unsigned int sc) +{ + inode_lock_shared_nested(hdir->hi_inode, sc); + au_hn_suspend(hdir); +} +#endif + +static inline void au_hn_inode_unlock(struct au_hinode *hdir) +{ + au_hn_resume(hdir); + inode_unlock(hdir->hi_inode); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_INODE_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/ioctl.c +++ linux-azure-5.13-5.13.0/fs/aufs/ioctl.c @@ -0,0 +1,220 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * ioctl + * plink-management and readdir in userspace. + * assist the pathconf(3) wrapper library. + * move-down + * File-based Hierarchical Storage Management. + */ + +#include +#include +#include "aufs.h" + +static int au_wbr_fd(struct path *path, struct aufs_wbr_fd __user *arg) +{ + int err, fd; + aufs_bindex_t wbi, bindex, bbot; + struct file *h_file; + struct super_block *sb; + struct dentry *root; + struct au_branch *br; + struct aufs_wbr_fd wbrfd = { + .oflags = au_dir_roflags, + .brid = -1 + }; + const int valid = O_RDONLY | O_NONBLOCK | O_LARGEFILE | O_DIRECTORY + | O_NOATIME | O_CLOEXEC; + + AuDebugOn(wbrfd.oflags & ~valid); + + if (arg) { + err = copy_from_user(&wbrfd, arg, sizeof(wbrfd)); + if (unlikely(err)) { + err = -EFAULT; + goto out; + } + + err = -EINVAL; + AuDbg("wbrfd{0%o, %d}\n", wbrfd.oflags, wbrfd.brid); + wbrfd.oflags |= au_dir_roflags; + AuDbg("0%o\n", wbrfd.oflags); + if (unlikely(wbrfd.oflags & ~valid)) + goto out; + } + + fd = get_unused_fd_flags(0); + err = fd; + if (unlikely(fd < 0)) + goto out; + + h_file = ERR_PTR(-EINVAL); + wbi = 0; + br = NULL; + sb = path->dentry->d_sb; + root = sb->s_root; + aufs_read_lock(root, AuLock_IR); + bbot = au_sbbot(sb); + if (wbrfd.brid >= 0) { + wbi = au_br_index(sb, wbrfd.brid); + if (unlikely(wbi < 0 || wbi > bbot)) + goto out_unlock; + } + + h_file = ERR_PTR(-ENOENT); + br = au_sbr(sb, wbi); + if (!au_br_writable(br->br_perm)) { + if (arg) + goto out_unlock; + + bindex = wbi + 1; + wbi = -1; + for (; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_writable(br->br_perm)) { + wbi = bindex; + br = au_sbr(sb, wbi); + break; + } + } + } + AuDbg("wbi %d\n", wbi); + if (wbi >= 0) + h_file = au_h_open(root, wbi, wbrfd.oflags, NULL, + /*force_wr*/0); + +out_unlock: + aufs_read_unlock(root, AuLock_IR); + err = PTR_ERR(h_file); + if (IS_ERR(h_file)) + goto out_fd; + + au_lcnt_dec(&br->br_nfiles); /* cf. au_h_open() */ + fd_install(fd, h_file); + err = fd; + goto out; /* success */ + +out_fd: + put_unused_fd(fd); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +long aufs_ioctl_dir(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err; + struct dentry *dentry; + + switch (cmd) { + case AUFS_CTL_RDU: + case AUFS_CTL_RDU_INO: + err = au_rdu_ioctl(file, cmd, arg); + break; + + case AUFS_CTL_WBR_FD: + err = au_wbr_fd(&file->f_path, (void __user *)arg); + break; + + case AUFS_CTL_IBUSY: + err = au_ibusy_ioctl(file, arg); + break; + + case AUFS_CTL_BRINFO: + err = au_brinfo_ioctl(file, arg); + break; + + case AUFS_CTL_FHSM_FD: + dentry = file->f_path.dentry; + if (IS_ROOT(dentry)) + err = au_fhsm_fd(dentry->d_sb, arg); + else + err = -ENOTTY; + break; + + default: + /* do not call the lower */ + AuDbg("0x%x\n", cmd); + err = -ENOTTY; + } + + AuTraceErr(err); + return err; +} + +long aufs_ioctl_nondir(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err; + + switch (cmd) { + case AUFS_CTL_MVDOWN: + err = au_mvdown(file->f_path.dentry, (void __user *)arg); + break; + + case AUFS_CTL_WBR_FD: + err = au_wbr_fd(&file->f_path, (void __user *)arg); + break; + + default: + /* do not call the lower */ + AuDbg("0x%x\n", cmd); + err = -ENOTTY; + } + + AuTraceErr(err); + return err; +} + +#ifdef CONFIG_COMPAT +long aufs_compat_ioctl_dir(struct file *file, unsigned int cmd, + unsigned long arg) +{ + long err; + + switch (cmd) { + case AUFS_CTL_RDU: + case AUFS_CTL_RDU_INO: + err = au_rdu_compat_ioctl(file, cmd, arg); + break; + + case AUFS_CTL_IBUSY: + err = au_ibusy_compat_ioctl(file, arg); + break; + + case AUFS_CTL_BRINFO: + err = au_brinfo_compat_ioctl(file, arg); + break; + + default: + err = aufs_ioctl_dir(file, cmd, arg); + } + + AuTraceErr(err); + return err; +} + +long aufs_compat_ioctl_nondir(struct file *file, unsigned int cmd, + unsigned long arg) +{ + return aufs_ioctl_nondir(file, cmd, (unsigned long)compat_ptr(arg)); +} +#endif only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/lcnt.h +++ linux-azure-5.13-5.13.0/fs/aufs/lcnt.h @@ -0,0 +1,186 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2018-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * simple long counter wrapper + */ + +#ifndef __AUFS_LCNT_H__ +#define __AUFS_LCNT_H__ + +#ifdef __KERNEL__ + +#include "debug.h" + +#define AuLCntATOMIC 1 +#define AuLCntPCPUCNT 2 +/* + * why does percpu_refcount require extra synchronize_rcu()s in + * au_br_do_free() + */ +#define AuLCntPCPUREF 3 + +/* #define AuLCntChosen AuLCntATOMIC */ +#define AuLCntChosen AuLCntPCPUCNT +/* #define AuLCntChosen AuLCntPCPUREF */ + +#if AuLCntChosen == AuLCntATOMIC +#include + +typedef atomic_long_t au_lcnt_t; + +static inline int au_lcnt_init(au_lcnt_t *cnt, void *release __maybe_unused) +{ + atomic_long_set(cnt, 0); + return 0; +} + +static inline void au_lcnt_wait_for_fin(au_lcnt_t *cnt __maybe_unused) +{ + /* empty */ +} + +static inline void au_lcnt_fin(au_lcnt_t *cnt __maybe_unused, + int do_sync __maybe_unused) +{ + /* empty */ +} + +static inline void au_lcnt_inc(au_lcnt_t *cnt) +{ + atomic_long_inc(cnt); +} + +static inline void au_lcnt_dec(au_lcnt_t *cnt) +{ + atomic_long_dec(cnt); +} + +static inline long au_lcnt_read(au_lcnt_t *cnt, int do_rev __maybe_unused) +{ + return atomic_long_read(cnt); +} +#endif + +#if AuLCntChosen == AuLCntPCPUCNT +#include + +typedef struct percpu_counter au_lcnt_t; + +static inline int au_lcnt_init(au_lcnt_t *cnt, void *release __maybe_unused) +{ + return percpu_counter_init(cnt, 0, GFP_NOFS); +} + +static inline void au_lcnt_wait_for_fin(au_lcnt_t *cnt __maybe_unused) +{ + /* empty */ +} + +static inline void au_lcnt_fin(au_lcnt_t *cnt, int do_sync __maybe_unused) +{ + percpu_counter_destroy(cnt); +} + +static inline void au_lcnt_inc(au_lcnt_t *cnt) +{ + percpu_counter_inc(cnt); +} + +static inline void au_lcnt_dec(au_lcnt_t *cnt) +{ + percpu_counter_dec(cnt); +} + +static inline long au_lcnt_read(au_lcnt_t *cnt, int do_rev __maybe_unused) +{ + s64 n; + + n = percpu_counter_sum(cnt); + BUG_ON(n < 0); + if (LONG_MAX != LLONG_MAX + && n > LONG_MAX) + AuWarn1("%s\n", "wrap-around"); + + return n; +} +#endif + +#if AuLCntChosen == AuLCntPCPUREF +#include + +typedef struct percpu_ref au_lcnt_t; + +static inline int au_lcnt_init(au_lcnt_t *cnt, percpu_ref_func_t *release) +{ + if (!release) + release = percpu_ref_exit; + return percpu_ref_init(cnt, release, /*percpu mode*/0, GFP_NOFS); +} + +static inline void au_lcnt_wait_for_fin(au_lcnt_t *cnt __maybe_unused) +{ + synchronize_rcu(); +} + +static inline void au_lcnt_fin(au_lcnt_t *cnt, int do_sync) +{ + percpu_ref_kill(cnt); + if (do_sync) + au_lcnt_wait_for_fin(cnt); +} + +static inline void au_lcnt_inc(au_lcnt_t *cnt) +{ + percpu_ref_get(cnt); +} + +static inline void au_lcnt_dec(au_lcnt_t *cnt) +{ + percpu_ref_put(cnt); +} + +/* + * avoid calling this func as possible. + */ +static inline long au_lcnt_read(au_lcnt_t *cnt, int do_rev) +{ + long l; + + percpu_ref_switch_to_atomic_sync(cnt); + l = atomic_long_read(&cnt->count); + if (do_rev) + percpu_ref_switch_to_percpu(cnt); + + /* percpu_ref is initialized by 1 instead of 0 */ + return l - 1; +} +#endif + +#ifdef CONFIG_AUFS_DEBUG +#define AuLCntZero(val) do { \ + long l = val; \ + if (l) \ + AuDbg("%s = %ld\n", #val, l); \ +} while (0) +#else +#define AuLCntZero(val) do {} while (0) +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_LCNT_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/loop.c +++ linux-azure-5.13-5.13.0/fs/aufs/loop.c @@ -0,0 +1,164 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * support for loopback block device as a branch + */ + +#include "aufs.h" + +/* added into drivers/block/loop.c */ +static struct file *(*backing_file_func)(struct super_block *sb); + +/* + * test if two lower dentries have overlapping branches. + */ +int au_test_loopback_overlap(struct super_block *sb, struct dentry *h_adding) +{ + struct super_block *h_sb; + struct file *backing_file; + + if (unlikely(!backing_file_func)) { + /* don't load "loop" module here */ + backing_file_func = symbol_get(loop_backing_file); + if (unlikely(!backing_file_func)) + /* "loop" module is not loaded */ + return 0; + } + + h_sb = h_adding->d_sb; + backing_file = backing_file_func(h_sb); + if (!backing_file) + return 0; + + h_adding = backing_file->f_path.dentry; + /* + * h_adding can be local NFS. + * in this case aufs cannot detect the loop. + */ + if (unlikely(h_adding->d_sb == sb)) + return 1; + return !!au_test_subdir(h_adding, sb->s_root); +} + +/* true if a kernel thread named 'loop[0-9].*' accesses a file */ +int au_test_loopback_kthread(void) +{ + int ret; + struct task_struct *tsk = current; + char c, comm[sizeof(tsk->comm)]; + + ret = 0; + if (tsk->flags & PF_KTHREAD) { + get_task_comm(comm, tsk); + c = comm[4]; + ret = ('0' <= c && c <= '9' + && !strncmp(comm, "loop", 4)); + } + + return ret; +} + +/* ---------------------------------------------------------------------- */ + +#define au_warn_loopback_step 16 +static int au_warn_loopback_nelem = au_warn_loopback_step; +static unsigned long *au_warn_loopback_array; + +void au_warn_loopback(struct super_block *h_sb) +{ + int i, new_nelem; + unsigned long *a, magic; + static DEFINE_SPINLOCK(spin); + + magic = h_sb->s_magic; + spin_lock(&spin); + a = au_warn_loopback_array; + for (i = 0; i < au_warn_loopback_nelem && *a; i++) + if (a[i] == magic) { + spin_unlock(&spin); + return; + } + + /* h_sb is new to us, print it */ + if (i < au_warn_loopback_nelem) { + a[i] = magic; + goto pr; + } + + /* expand the array */ + new_nelem = au_warn_loopback_nelem + au_warn_loopback_step; + a = au_kzrealloc(au_warn_loopback_array, + au_warn_loopback_nelem * sizeof(unsigned long), + new_nelem * sizeof(unsigned long), GFP_ATOMIC, + /*may_shrink*/0); + if (a) { + au_warn_loopback_nelem = new_nelem; + au_warn_loopback_array = a; + a[i] = magic; + goto pr; + } + + spin_unlock(&spin); + AuWarn1("realloc failed, ignored\n"); + return; + +pr: + spin_unlock(&spin); + pr_warn("you may want to try another patch for loopback file " + "on %s(0x%lx) branch\n", au_sbtype(h_sb), magic); +} + +int au_loopback_init(void) +{ + int err; + struct super_block *sb __maybe_unused; + + BUILD_BUG_ON(sizeof(sb->s_magic) != sizeof(*au_warn_loopback_array)); + + err = 0; + au_warn_loopback_array = kcalloc(au_warn_loopback_step, + sizeof(unsigned long), GFP_NOFS); + if (unlikely(!au_warn_loopback_array)) + err = -ENOMEM; + + return err; +} + +void au_loopback_fin(void) +{ + if (backing_file_func) + symbol_put(loop_backing_file); + au_kfree_try_rcu(au_warn_loopback_array); +} + +/* ---------------------------------------------------------------------- */ + +/* support the loopback block device insude aufs */ + +struct file *aufs_real_loop(struct file *file) +{ + struct file *f; + + BUG_ON(!au_test_aufs(file->f_path.dentry->d_sb)); + fi_read_lock(file); + f = au_hf_top(file); + fi_read_unlock(file); + AuDebugOn(!f); + return f; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/loop.h +++ linux-azure-5.13-5.13.0/fs/aufs/loop.h @@ -0,0 +1,59 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * support for loopback mount as a branch + */ + +#ifndef __AUFS_LOOP_H__ +#define __AUFS_LOOP_H__ + +#ifdef __KERNEL__ + +struct dentry; +struct super_block; + +#ifdef CONFIG_AUFS_BDEV_LOOP +/* drivers/block/loop.c */ +struct file *loop_backing_file(struct super_block *sb); + +/* loop.c */ +int au_test_loopback_overlap(struct super_block *sb, struct dentry *h_adding); +int au_test_loopback_kthread(void); +void au_warn_loopback(struct super_block *h_sb); + +int au_loopback_init(void); +void au_loopback_fin(void); + +struct file *aufs_real_loop(struct file *file); +#else +AuStub(struct file *, loop_backing_file, return NULL, struct super_block *sb) + +AuStubInt0(au_test_loopback_overlap, struct super_block *sb, + struct dentry *h_adding) +AuStubInt0(au_test_loopback_kthread, void) +AuStubVoid(au_warn_loopback, struct super_block *h_sb) + +AuStubInt0(au_loopback_init, void) +AuStubVoid(au_loopback_fin, void) + +AuStub(struct file *, aufs_real_loop, return NULL, struct file *file) +#endif /* BLK_DEV_LOOP */ + +#endif /* __KERNEL__ */ +#endif /* __AUFS_LOOP_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/magic.mk +++ linux-azure-5.13-5.13.0/fs/aufs/magic.mk @@ -0,0 +1,31 @@ +# SPDX-License-Identifier: GPL-2.0 + +# defined in ${srctree}/fs/fuse/inode.c +# tristate +ifdef CONFIG_FUSE_FS +ccflags-y += -DFUSE_SUPER_MAGIC=0x65735546 +endif + +# defined in ${srctree}/fs/xfs/xfs_sb.h +# tristate +ifdef CONFIG_XFS_FS +ccflags-y += -DXFS_SB_MAGIC=0x58465342 +endif + +# defined in ${srctree}/fs/configfs/mount.c +# tristate +ifdef CONFIG_CONFIGFS_FS +ccflags-y += -DCONFIGFS_MAGIC=0x62656570 +endif + +# defined in ${srctree}/fs/ubifs/ubifs.h +# tristate +ifdef CONFIG_UBIFS_FS +ccflags-y += -DUBIFS_SUPER_MAGIC=0x24051905 +endif + +# defined in ${srctree}/fs/hfsplus/hfsplus_raw.h +# tristate +ifdef CONFIG_HFSPLUS_FS +ccflags-y += -DHFSPLUS_SUPER_MAGIC=0x482b +endif only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/module.c +++ linux-azure-5.13-5.13.0/fs/aufs/module.c @@ -0,0 +1,273 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * module global variables and operations + */ + +#include +#include +#include "aufs.h" + +/* shrinkable realloc */ +void *au_krealloc(void *p, unsigned int new_sz, gfp_t gfp, int may_shrink) +{ + size_t sz; + int diff; + + sz = 0; + diff = -1; + if (p) { +#if 0 /* unused */ + if (!new_sz) { + au_kfree_rcu(p); + p = NULL; + goto out; + } +#else + AuDebugOn(!new_sz); +#endif + sz = ksize(p); + diff = au_kmidx_sub(sz, new_sz); + } + if (sz && !diff) + goto out; + + if (sz < new_sz) + /* expand or SLOB */ + p = krealloc(p, new_sz, gfp); + else if (new_sz < sz && may_shrink) { + /* shrink */ + void *q; + + q = kmalloc(new_sz, gfp); + if (q) { + if (p) { + memcpy(q, p, new_sz); + au_kfree_try_rcu(p); + } + p = q; + } else + p = NULL; + } + +out: + return p; +} + +void *au_kzrealloc(void *p, unsigned int nused, unsigned int new_sz, gfp_t gfp, + int may_shrink) +{ + p = au_krealloc(p, new_sz, gfp, may_shrink); + if (p && new_sz > nused) + memset(p + nused, 0, new_sz - nused); + return p; +} + +/* ---------------------------------------------------------------------- */ +/* + * aufs caches + */ +struct kmem_cache *au_cache[AuCache_Last]; + +static void au_cache_fin(void) +{ + int i; + + /* + * Make sure all delayed rcu free inodes are flushed before we + * destroy cache. + */ + rcu_barrier(); + + /* excluding AuCache_HNOTIFY */ + BUILD_BUG_ON(AuCache_HNOTIFY + 1 != AuCache_Last); + for (i = 0; i < AuCache_HNOTIFY; i++) { + kmem_cache_destroy(au_cache[i]); + au_cache[i] = NULL; + } +} + +static int __init au_cache_init(void) +{ + au_cache[AuCache_DINFO] = AuCacheCtor(au_dinfo, au_di_init_once); + if (au_cache[AuCache_DINFO]) + /* SLAB_DESTROY_BY_RCU */ + au_cache[AuCache_ICNTNR] = AuCacheCtor(au_icntnr, + au_icntnr_init_once); + if (au_cache[AuCache_ICNTNR]) + au_cache[AuCache_FINFO] = AuCacheCtor(au_finfo, + au_fi_init_once); + if (au_cache[AuCache_FINFO]) + au_cache[AuCache_VDIR] = AuCache(au_vdir); + if (au_cache[AuCache_VDIR]) + au_cache[AuCache_DEHSTR] = AuCache(au_vdir_dehstr); + if (au_cache[AuCache_DEHSTR]) + return 0; + + au_cache_fin(); + return -ENOMEM; +} + +/* ---------------------------------------------------------------------- */ + +int au_dir_roflags; + +#ifdef CONFIG_AUFS_SBILIST +/* + * iterate_supers_type() doesn't protect us from + * remounting (branch management) + */ +struct hlist_bl_head au_sbilist; +#endif + +/* + * functions for module interface. + */ +MODULE_LICENSE("GPL"); +/* MODULE_LICENSE("GPL v2"); */ +MODULE_AUTHOR("Junjiro R. Okajima "); +MODULE_DESCRIPTION(AUFS_NAME + " -- Advanced multi layered unification filesystem"); +MODULE_VERSION(AUFS_VERSION); +MODULE_ALIAS_FS(AUFS_NAME); + +/* this module parameter has no meaning when SYSFS is disabled */ +int sysaufs_brs = 1; +MODULE_PARM_DESC(brs, "use /fs/aufs/si_*/brN"); +module_param_named(brs, sysaufs_brs, int, 0444); + +/* this module parameter has no meaning when USER_NS is disabled */ +bool au_userns; +MODULE_PARM_DESC(allow_userns, "allow unprivileged to mount under userns"); +module_param_named(allow_userns, au_userns, bool, 0444); + +/* ---------------------------------------------------------------------- */ + +static char au_esc_chars[0x20 + 3]; /* 0x01-0x20, backslash, del, and NULL */ + +int au_seq_path(struct seq_file *seq, struct path *path) +{ + int err; + + err = seq_path(seq, path, au_esc_chars); + if (err >= 0) + err = 0; + else + err = -ENOMEM; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int __init aufs_init(void) +{ + int err, i; + char *p; + + p = au_esc_chars; + for (i = 1; i <= ' '; i++) + *p++ = i; + *p++ = '\\'; + *p++ = '\x7f'; + *p = 0; + + au_dir_roflags = au_file_roflags(O_DIRECTORY | O_LARGEFILE); + + memcpy(aufs_iop_nogetattr, aufs_iop, sizeof(aufs_iop)); + for (i = 0; i < AuIop_Last; i++) + aufs_iop_nogetattr[i].getattr = NULL; + + memset(au_cache, 0, sizeof(au_cache)); /* including hnotify */ + + au_sbilist_init(); + sysaufs_brs_init(); + au_debug_init(); + au_dy_init(); + err = sysaufs_init(); + if (unlikely(err)) + goto out; + err = dbgaufs_init(); + if (unlikely(err)) + goto out_sysaufs; + err = au_procfs_init(); + if (unlikely(err)) + goto out_dbgaufs; + err = au_wkq_init(); + if (unlikely(err)) + goto out_procfs; + err = au_loopback_init(); + if (unlikely(err)) + goto out_wkq; + err = au_hnotify_init(); + if (unlikely(err)) + goto out_loopback; + err = au_sysrq_init(); + if (unlikely(err)) + goto out_hin; + err = au_cache_init(); + if (unlikely(err)) + goto out_sysrq; + + aufs_fs_type.fs_flags |= au_userns ? FS_USERNS_MOUNT : 0; + err = register_filesystem(&aufs_fs_type); + if (unlikely(err)) + goto out_cache; + + /* since we define pr_fmt, call printk directly */ + printk(KERN_INFO AUFS_NAME " " AUFS_VERSION "\n"); + goto out; /* success */ + +out_cache: + au_cache_fin(); +out_sysrq: + au_sysrq_fin(); +out_hin: + au_hnotify_fin(); +out_loopback: + au_loopback_fin(); +out_wkq: + au_wkq_fin(); +out_procfs: + au_procfs_fin(); +out_dbgaufs: + dbgaufs_fin(); +out_sysaufs: + sysaufs_fin(); + au_dy_fin(); +out: + return err; +} + +static void __exit aufs_exit(void) +{ + unregister_filesystem(&aufs_fs_type); + au_cache_fin(); + au_sysrq_fin(); + au_hnotify_fin(); + au_loopback_fin(); + au_wkq_fin(); + au_procfs_fin(); + dbgaufs_fin(); + sysaufs_fin(); + au_dy_fin(); +} + +module_init(aufs_init); +module_exit(aufs_exit); only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/module.h +++ linux-azure-5.13-5.13.0/fs/aufs/module.h @@ -0,0 +1,166 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * module initialization and module-global + */ + +#ifndef __AUFS_MODULE_H__ +#define __AUFS_MODULE_H__ + +#ifdef __KERNEL__ + +#include +#include "debug.h" +#include "dentry.h" +#include "dir.h" +#include "file.h" +#include "inode.h" + +struct path; +struct seq_file; + +/* module parameters */ +extern int sysaufs_brs; +extern bool au_userns; + +/* ---------------------------------------------------------------------- */ + +extern int au_dir_roflags; + +void *au_krealloc(void *p, unsigned int new_sz, gfp_t gfp, int may_shrink); +void *au_kzrealloc(void *p, unsigned int nused, unsigned int new_sz, gfp_t gfp, + int may_shrink); + +/* + * Comparing the size of the object with sizeof(struct rcu_head) + * case 1: object is always larger + * --> au_kfree_rcu() or au_kfree_do_rcu() + * case 2: object is always smaller + * --> au_kfree_small() + * case 3: object can be any size + * --> au_kfree_try_rcu() + */ + +static inline void au_kfree_do_rcu(const void *p) +{ + struct { + struct rcu_head rcu; + } *a = (void *)p; + + kfree_rcu(a, rcu); +} + +#define au_kfree_rcu(_p) do { \ + typeof(_p) p = (_p); \ + BUILD_BUG_ON(sizeof(*p) < sizeof(struct rcu_head)); \ + if (p) \ + au_kfree_do_rcu(p); \ + } while (0) + +#define au_kfree_do_sz_test(sz) (sz >= sizeof(struct rcu_head)) +#define au_kfree_sz_test(p) (p && au_kfree_do_sz_test(ksize(p))) + +static inline void au_kfree_try_rcu(const void *p) +{ + if (!p) + return; + if (au_kfree_sz_test(p)) + au_kfree_do_rcu(p); + else + kfree(p); +} + +static inline void au_kfree_small(const void *p) +{ + if (!p) + return; + AuDebugOn(au_kfree_sz_test(p)); + kfree(p); +} + +static inline int au_kmidx_sub(size_t sz, size_t new_sz) +{ +#ifndef CONFIG_SLOB + return __kmalloc_index(sz, false) - __kmalloc_index(new_sz, false); +#else + return -1; /* SLOB is untested */ +#endif +} + +int au_seq_path(struct seq_file *seq, struct path *path); + +#ifdef CONFIG_PROC_FS +/* procfs.c */ +int __init au_procfs_init(void); +void au_procfs_fin(void); +#else +AuStubInt0(au_procfs_init, void); +AuStubVoid(au_procfs_fin, void); +#endif + +/* ---------------------------------------------------------------------- */ + +/* kmem cache */ +enum { + AuCache_DINFO, + AuCache_ICNTNR, + AuCache_FINFO, + AuCache_VDIR, + AuCache_DEHSTR, + AuCache_HNOTIFY, /* must be last */ + AuCache_Last +}; + +extern struct kmem_cache *au_cache[AuCache_Last]; + +#define AuCacheFlags (SLAB_RECLAIM_ACCOUNT | SLAB_MEM_SPREAD) +#define AuCache(type) KMEM_CACHE(type, AuCacheFlags) +#define AuCacheCtor(type, ctor) \ + kmem_cache_create(#type, sizeof(struct type), \ + __alignof__(struct type), AuCacheFlags, ctor) + +#define AuCacheFuncs(name, index) \ + static inline struct au_##name *au_cache_alloc_##name(void) \ + { return kmem_cache_alloc(au_cache[AuCache_##index], GFP_NOFS); } \ + static inline void au_cache_free_##name##_norcu(struct au_##name *p) \ + { kmem_cache_free(au_cache[AuCache_##index], p); } \ + \ + static inline void au_cache_free_##name##_rcu_cb(struct rcu_head *rcu) \ + { void *p = rcu; \ + p -= offsetof(struct au_##name, rcu); \ + kmem_cache_free(au_cache[AuCache_##index], p); } \ + static inline void au_cache_free_##name##_rcu(struct au_##name *p) \ + { BUILD_BUG_ON(sizeof(struct au_##name) < sizeof(struct rcu_head)); \ + call_rcu(&p->rcu, au_cache_free_##name##_rcu_cb); } \ + \ + static inline void au_cache_free_##name(struct au_##name *p) \ + { /* au_cache_free_##name##_norcu(p); */ \ + au_cache_free_##name##_rcu(p); } + +AuCacheFuncs(dinfo, DINFO); +AuCacheFuncs(icntnr, ICNTNR); +AuCacheFuncs(finfo, FINFO); +AuCacheFuncs(vdir, VDIR); +AuCacheFuncs(vdir_dehstr, DEHSTR); +#ifdef CONFIG_AUFS_HNOTIFY +AuCacheFuncs(hnotify, HNOTIFY); +#endif + +#endif /* __KERNEL__ */ +#endif /* __AUFS_MODULE_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/mvdown.c +++ linux-azure-5.13-5.13.0/fs/aufs/mvdown.c @@ -0,0 +1,706 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2011-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * move-down, opposite of copy-up + */ + +#include "aufs.h" + +struct au_mvd_args { + struct { + struct super_block *h_sb; + struct dentry *h_parent; + struct au_hinode *hdir; + struct inode *h_dir, *h_inode; + struct au_pin pin; + } info[AUFS_MVDOWN_NARRAY]; + + struct aufs_mvdown mvdown; + struct dentry *dentry, *parent; + struct inode *inode, *dir; + struct super_block *sb; + aufs_bindex_t bopq, bwh, bfound; + unsigned char rename_lock; +}; + +#define mvd_errno mvdown.au_errno +#define mvd_bsrc mvdown.stbr[AUFS_MVDOWN_UPPER].bindex +#define mvd_src_brid mvdown.stbr[AUFS_MVDOWN_UPPER].brid +#define mvd_bdst mvdown.stbr[AUFS_MVDOWN_LOWER].bindex +#define mvd_dst_brid mvdown.stbr[AUFS_MVDOWN_LOWER].brid + +#define mvd_h_src_sb info[AUFS_MVDOWN_UPPER].h_sb +#define mvd_h_src_parent info[AUFS_MVDOWN_UPPER].h_parent +#define mvd_hdir_src info[AUFS_MVDOWN_UPPER].hdir +#define mvd_h_src_dir info[AUFS_MVDOWN_UPPER].h_dir +#define mvd_h_src_inode info[AUFS_MVDOWN_UPPER].h_inode +#define mvd_pin_src info[AUFS_MVDOWN_UPPER].pin + +#define mvd_h_dst_sb info[AUFS_MVDOWN_LOWER].h_sb +#define mvd_h_dst_parent info[AUFS_MVDOWN_LOWER].h_parent +#define mvd_hdir_dst info[AUFS_MVDOWN_LOWER].hdir +#define mvd_h_dst_dir info[AUFS_MVDOWN_LOWER].h_dir +#define mvd_h_dst_inode info[AUFS_MVDOWN_LOWER].h_inode +#define mvd_pin_dst info[AUFS_MVDOWN_LOWER].pin + +#define AU_MVD_PR(flag, ...) do { \ + if (flag) \ + pr_err(__VA_ARGS__); \ + } while (0) + +static int find_lower_writable(struct au_mvd_args *a) +{ + struct super_block *sb; + aufs_bindex_t bindex, bbot; + struct au_branch *br; + + sb = a->sb; + bindex = a->mvd_bsrc; + bbot = au_sbbot(sb); + if (a->mvdown.flags & AUFS_MVDOWN_FHSM_LOWER) + for (bindex++; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_fhsm(br->br_perm) + && !sb_rdonly(au_br_sb(br))) + return bindex; + } + else if (!(a->mvdown.flags & AUFS_MVDOWN_ROLOWER)) + for (bindex++; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (!au_br_rdonly(br)) + return bindex; + } + else + for (bindex++; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (!sb_rdonly(au_br_sb(br))) { + if (au_br_rdonly(br)) + a->mvdown.flags + |= AUFS_MVDOWN_ROLOWER_R; + return bindex; + } + } + + return -1; +} + +/* make the parent dir on bdst */ +static int au_do_mkdir(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + + err = 0; + a->mvd_hdir_src = au_hi(a->dir, a->mvd_bsrc); + a->mvd_hdir_dst = au_hi(a->dir, a->mvd_bdst); + a->mvd_h_src_parent = au_h_dptr(a->parent, a->mvd_bsrc); + a->mvd_h_dst_parent = NULL; + if (au_dbbot(a->parent) >= a->mvd_bdst) + a->mvd_h_dst_parent = au_h_dptr(a->parent, a->mvd_bdst); + if (!a->mvd_h_dst_parent) { + err = au_cpdown_dirs(a->dentry, a->mvd_bdst); + if (unlikely(err)) { + AU_MVD_PR(dmsg, "cpdown_dirs failed\n"); + goto out; + } + a->mvd_h_dst_parent = au_h_dptr(a->parent, a->mvd_bdst); + } + +out: + AuTraceErr(err); + return err; +} + +/* lock them all */ +static int au_do_lock(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct dentry *h_trap; + + a->mvd_h_src_sb = au_sbr_sb(a->sb, a->mvd_bsrc); + a->mvd_h_dst_sb = au_sbr_sb(a->sb, a->mvd_bdst); + err = au_pin(&a->mvd_pin_dst, a->dentry, a->mvd_bdst, + au_opt_udba(a->sb), + AuPin_MNT_WRITE | AuPin_DI_LOCKED); + AuTraceErr(err); + if (unlikely(err)) { + AU_MVD_PR(dmsg, "pin_dst failed\n"); + goto out; + } + + if (a->mvd_h_src_sb != a->mvd_h_dst_sb) { + a->rename_lock = 0; + au_pin_init(&a->mvd_pin_src, a->dentry, a->mvd_bsrc, + AuLsc_DI_PARENT, AuLsc_I_PARENT3, + au_opt_udba(a->sb), + AuPin_MNT_WRITE | AuPin_DI_LOCKED); + err = au_do_pin(&a->mvd_pin_src); + AuTraceErr(err); + a->mvd_h_src_dir = d_inode(a->mvd_h_src_parent); + if (unlikely(err)) { + AU_MVD_PR(dmsg, "pin_src failed\n"); + goto out_dst; + } + goto out; /* success */ + } + + a->rename_lock = 1; + au_pin_hdir_unlock(&a->mvd_pin_dst); + err = au_pin(&a->mvd_pin_src, a->dentry, a->mvd_bsrc, + au_opt_udba(a->sb), + AuPin_MNT_WRITE | AuPin_DI_LOCKED); + AuTraceErr(err); + a->mvd_h_src_dir = d_inode(a->mvd_h_src_parent); + if (unlikely(err)) { + AU_MVD_PR(dmsg, "pin_src failed\n"); + au_pin_hdir_lock(&a->mvd_pin_dst); + goto out_dst; + } + au_pin_hdir_unlock(&a->mvd_pin_src); + h_trap = vfsub_lock_rename(a->mvd_h_src_parent, a->mvd_hdir_src, + a->mvd_h_dst_parent, a->mvd_hdir_dst); + if (h_trap) { + err = (h_trap != a->mvd_h_src_parent); + if (err) + err = (h_trap != a->mvd_h_dst_parent); + } + BUG_ON(err); /* it should never happen */ + if (unlikely(a->mvd_h_src_dir != au_pinned_h_dir(&a->mvd_pin_src))) { + err = -EBUSY; + AuTraceErr(err); + vfsub_unlock_rename(a->mvd_h_src_parent, a->mvd_hdir_src, + a->mvd_h_dst_parent, a->mvd_hdir_dst); + au_pin_hdir_lock(&a->mvd_pin_src); + au_unpin(&a->mvd_pin_src); + au_pin_hdir_lock(&a->mvd_pin_dst); + goto out_dst; + } + goto out; /* success */ + +out_dst: + au_unpin(&a->mvd_pin_dst); +out: + AuTraceErr(err); + return err; +} + +static void au_do_unlock(const unsigned char dmsg, struct au_mvd_args *a) +{ + if (!a->rename_lock) + au_unpin(&a->mvd_pin_src); + else { + vfsub_unlock_rename(a->mvd_h_src_parent, a->mvd_hdir_src, + a->mvd_h_dst_parent, a->mvd_hdir_dst); + au_pin_hdir_lock(&a->mvd_pin_src); + au_unpin(&a->mvd_pin_src); + au_pin_hdir_lock(&a->mvd_pin_dst); + } + au_unpin(&a->mvd_pin_dst); +} + +/* copy-down the file */ +static int au_do_cpdown(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct au_cp_generic cpg = { + .dentry = a->dentry, + .bdst = a->mvd_bdst, + .bsrc = a->mvd_bsrc, + .len = -1, + .pin = &a->mvd_pin_dst, + .flags = AuCpup_DTIME | AuCpup_HOPEN + }; + + AuDbg("b%d, b%d\n", cpg.bsrc, cpg.bdst); + if (a->mvdown.flags & AUFS_MVDOWN_OWLOWER) + au_fset_cpup(cpg.flags, OVERWRITE); + if (a->mvdown.flags & AUFS_MVDOWN_ROLOWER) + au_fset_cpup(cpg.flags, RWDST); + err = au_sio_cpdown_simple(&cpg); + if (unlikely(err)) + AU_MVD_PR(dmsg, "cpdown failed\n"); + + AuTraceErr(err); + return err; +} + +/* + * unlink the whiteout on bdst if exist which may be created by UDBA while we + * were sleeping + */ +static int au_do_unlink_wh(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct path h_path; + struct au_branch *br; + struct inode *delegated; + + br = au_sbr(a->sb, a->mvd_bdst); + h_path.dentry = au_wh_lkup(a->mvd_h_dst_parent, &a->dentry->d_name, br); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) { + AU_MVD_PR(dmsg, "wh_lkup failed\n"); + goto out; + } + + err = 0; + if (d_is_positive(h_path.dentry)) { + h_path.mnt = au_br_mnt(br); + delegated = NULL; + err = vfsub_unlink(d_inode(a->mvd_h_dst_parent), &h_path, + &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + if (unlikely(err)) + AU_MVD_PR(dmsg, "wh_unlink failed\n"); + } + dput(h_path.dentry); + +out: + AuTraceErr(err); + return err; +} + +/* + * unlink the topmost h_dentry + */ +static int au_do_unlink(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct path h_path; + struct inode *delegated; + + h_path.mnt = au_sbr_mnt(a->sb, a->mvd_bsrc); + h_path.dentry = au_h_dptr(a->dentry, a->mvd_bsrc); + delegated = NULL; + err = vfsub_unlink(a->mvd_h_src_dir, &h_path, &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + if (unlikely(err)) + AU_MVD_PR(dmsg, "unlink failed\n"); + + AuTraceErr(err); + return err; +} + +/* Since mvdown succeeded, we ignore an error of this function */ +static void au_do_stfs(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct au_branch *br; + + a->mvdown.flags |= AUFS_MVDOWN_STFS_FAILED; + br = au_sbr(a->sb, a->mvd_bsrc); + err = au_br_stfs(br, &a->mvdown.stbr[AUFS_MVDOWN_UPPER].stfs); + if (!err) { + br = au_sbr(a->sb, a->mvd_bdst); + a->mvdown.stbr[AUFS_MVDOWN_LOWER].brid = br->br_id; + err = au_br_stfs(br, &a->mvdown.stbr[AUFS_MVDOWN_LOWER].stfs); + } + if (!err) + a->mvdown.flags &= ~AUFS_MVDOWN_STFS_FAILED; + else + AU_MVD_PR(dmsg, "statfs failed (%d), ignored\n", err); +} + +/* + * copy-down the file and unlink the bsrc file. + * - unlink the bdst whout if exist + * - copy-down the file (with whtmp name and rename) + * - unlink the bsrc file + */ +static int au_do_mvdown(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + + err = au_do_mkdir(dmsg, a); + if (!err) + err = au_do_lock(dmsg, a); + if (unlikely(err)) + goto out; + + /* + * do not revert the activities we made on bdst since they should be + * harmless in aufs. + */ + + err = au_do_cpdown(dmsg, a); + if (!err) + err = au_do_unlink_wh(dmsg, a); + if (!err && !(a->mvdown.flags & AUFS_MVDOWN_KUPPER)) + err = au_do_unlink(dmsg, a); + if (unlikely(err)) + goto out_unlock; + + AuDbg("%pd2, 0x%x, %d --> %d\n", + a->dentry, a->mvdown.flags, a->mvd_bsrc, a->mvd_bdst); + if (find_lower_writable(a) < 0) + a->mvdown.flags |= AUFS_MVDOWN_BOTTOM; + + if (a->mvdown.flags & AUFS_MVDOWN_STFS) + au_do_stfs(dmsg, a); + + /* maintain internal array */ + if (!(a->mvdown.flags & AUFS_MVDOWN_KUPPER)) { + au_set_h_dptr(a->dentry, a->mvd_bsrc, NULL); + au_set_dbtop(a->dentry, a->mvd_bdst); + au_set_h_iptr(a->inode, a->mvd_bsrc, NULL, /*flags*/0); + au_set_ibtop(a->inode, a->mvd_bdst); + } else { + /* hide the lower */ + au_set_h_dptr(a->dentry, a->mvd_bdst, NULL); + au_set_dbbot(a->dentry, a->mvd_bsrc); + au_set_h_iptr(a->inode, a->mvd_bdst, NULL, /*flags*/0); + au_set_ibbot(a->inode, a->mvd_bsrc); + } + if (au_dbbot(a->dentry) < a->mvd_bdst) + au_set_dbbot(a->dentry, a->mvd_bdst); + if (au_ibbot(a->inode) < a->mvd_bdst) + au_set_ibbot(a->inode, a->mvd_bdst); + +out_unlock: + au_do_unlock(dmsg, a); +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* make sure the file is idle */ +static int au_mvd_args_busy(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err, plinked; + + err = 0; + plinked = !!au_opt_test(au_mntflags(a->sb), PLINK); + if (au_dbtop(a->dentry) == a->mvd_bsrc + && au_dcount(a->dentry) == 1 + && atomic_read(&a->inode->i_count) == 1 + /* && a->mvd_h_src_inode->i_nlink == 1 */ + && (!plinked || !au_plink_test(a->inode)) + && a->inode->i_nlink == 1) + goto out; + + err = -EBUSY; + AU_MVD_PR(dmsg, + "b%d, d{b%d, c%d?}, i{c%d?, l%u}, hi{l%u}, p{%d, %d}\n", + a->mvd_bsrc, au_dbtop(a->dentry), au_dcount(a->dentry), + atomic_read(&a->inode->i_count), a->inode->i_nlink, + a->mvd_h_src_inode->i_nlink, + plinked, plinked ? au_plink_test(a->inode) : 0); + +out: + AuTraceErr(err); + return err; +} + +/* make sure the parent dir is fine */ +static int au_mvd_args_parent(const unsigned char dmsg, + struct au_mvd_args *a) +{ + int err; + aufs_bindex_t bindex; + + err = 0; + if (unlikely(au_alive_dir(a->parent))) { + err = -ENOENT; + AU_MVD_PR(dmsg, "parent dir is dead\n"); + goto out; + } + + a->bopq = au_dbdiropq(a->parent); + bindex = au_wbr_nonopq(a->dentry, a->mvd_bdst); + AuDbg("b%d\n", bindex); + if (unlikely((bindex >= 0 && bindex < a->mvd_bdst) + || (a->bopq != -1 && a->bopq < a->mvd_bdst))) { + err = -EINVAL; + a->mvd_errno = EAU_MVDOWN_OPAQUE; + AU_MVD_PR(dmsg, "ancestor is opaque b%d, b%d\n", + a->bopq, a->mvd_bdst); + } + +out: + AuTraceErr(err); + return err; +} + +static int au_mvd_args_intermediate(const unsigned char dmsg, + struct au_mvd_args *a) +{ + int err; + struct au_dinfo *dinfo, *tmp; + + /* lookup the next lower positive entry */ + err = -ENOMEM; + tmp = au_di_alloc(a->sb, AuLsc_DI_TMP); + if (unlikely(!tmp)) + goto out; + + a->bfound = -1; + a->bwh = -1; + dinfo = au_di(a->dentry); + au_di_cp(tmp, dinfo); + au_di_swap(tmp, dinfo); + + /* returns the number of positive dentries */ + err = au_lkup_dentry(a->dentry, a->mvd_bsrc + 1, + /* AuLkup_IGNORE_PERM */ 0); + if (!err) + a->bwh = au_dbwh(a->dentry); + else if (err > 0) + a->bfound = au_dbtop(a->dentry); + + au_di_swap(tmp, dinfo); + au_rw_write_unlock(&tmp->di_rwsem); + au_di_free(tmp); + if (unlikely(err < 0)) + AU_MVD_PR(dmsg, "failed look-up lower\n"); + + /* + * here, we have these cases. + * bfound == -1 + * no positive dentry under bsrc. there are more sub-cases. + * bwh < 0 + * there no whiteout, we can safely move-down. + * bwh <= bsrc + * impossible + * bsrc < bwh && bwh < bdst + * there is a whiteout on RO branch. cannot proceed. + * bwh == bdst + * there is a whiteout on the RW target branch. it should + * be removed. + * bdst < bwh + * there is a whiteout somewhere unrelated branch. + * -1 < bfound && bfound <= bsrc + * impossible. + * bfound < bdst + * found, but it is on RO branch between bsrc and bdst. cannot + * proceed. + * bfound == bdst + * found, replace it if AUFS_MVDOWN_FORCE is set. otherwise return + * error. + * bdst < bfound + * found, after we create the file on bdst, it will be hidden. + */ + + AuDebugOn(a->bfound == -1 + && a->bwh != -1 + && a->bwh <= a->mvd_bsrc); + AuDebugOn(-1 < a->bfound + && a->bfound <= a->mvd_bsrc); + + err = -EINVAL; + if (a->bfound == -1 + && a->mvd_bsrc < a->bwh + && a->bwh != -1 + && a->bwh < a->mvd_bdst) { + a->mvd_errno = EAU_MVDOWN_WHITEOUT; + AU_MVD_PR(dmsg, "bsrc %d, bdst %d, bfound %d, bwh %d\n", + a->mvd_bsrc, a->mvd_bdst, a->bfound, a->bwh); + goto out; + } else if (a->bfound != -1 && a->bfound < a->mvd_bdst) { + a->mvd_errno = EAU_MVDOWN_UPPER; + AU_MVD_PR(dmsg, "bdst %d, bfound %d\n", + a->mvd_bdst, a->bfound); + goto out; + } + + err = 0; /* success */ + +out: + AuTraceErr(err); + return err; +} + +static int au_mvd_args_exist(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + + err = 0; + if (!(a->mvdown.flags & AUFS_MVDOWN_OWLOWER) + && a->bfound == a->mvd_bdst) + err = -EEXIST; + AuTraceErr(err); + return err; +} + +static int au_mvd_args(const unsigned char dmsg, struct au_mvd_args *a) +{ + int err; + struct au_branch *br; + + err = -EISDIR; + if (unlikely(S_ISDIR(a->inode->i_mode))) + goto out; + + err = -EINVAL; + if (!(a->mvdown.flags & AUFS_MVDOWN_BRID_UPPER)) + a->mvd_bsrc = au_ibtop(a->inode); + else { + a->mvd_bsrc = au_br_index(a->sb, a->mvd_src_brid); + if (unlikely(a->mvd_bsrc < 0 + || (a->mvd_bsrc < au_dbtop(a->dentry) + || au_dbbot(a->dentry) < a->mvd_bsrc + || !au_h_dptr(a->dentry, a->mvd_bsrc)) + || (a->mvd_bsrc < au_ibtop(a->inode) + || au_ibbot(a->inode) < a->mvd_bsrc + || !au_h_iptr(a->inode, a->mvd_bsrc)))) { + a->mvd_errno = EAU_MVDOWN_NOUPPER; + AU_MVD_PR(dmsg, "no upper\n"); + goto out; + } + } + if (unlikely(a->mvd_bsrc == au_sbbot(a->sb))) { + a->mvd_errno = EAU_MVDOWN_BOTTOM; + AU_MVD_PR(dmsg, "on the bottom\n"); + goto out; + } + a->mvd_h_src_inode = au_h_iptr(a->inode, a->mvd_bsrc); + br = au_sbr(a->sb, a->mvd_bsrc); + err = au_br_rdonly(br); + if (!(a->mvdown.flags & AUFS_MVDOWN_ROUPPER)) { + if (unlikely(err)) + goto out; + } else if (!(vfsub_native_ro(a->mvd_h_src_inode) + || IS_APPEND(a->mvd_h_src_inode))) { + if (err) + a->mvdown.flags |= AUFS_MVDOWN_ROUPPER_R; + /* go on */ + } else + goto out; + + err = -EINVAL; + if (!(a->mvdown.flags & AUFS_MVDOWN_BRID_LOWER)) { + a->mvd_bdst = find_lower_writable(a); + if (unlikely(a->mvd_bdst < 0)) { + a->mvd_errno = EAU_MVDOWN_BOTTOM; + AU_MVD_PR(dmsg, "no writable lower branch\n"); + goto out; + } + } else { + a->mvd_bdst = au_br_index(a->sb, a->mvd_dst_brid); + if (unlikely(a->mvd_bdst < 0 + || au_sbbot(a->sb) < a->mvd_bdst)) { + a->mvd_errno = EAU_MVDOWN_NOLOWERBR; + AU_MVD_PR(dmsg, "no lower brid\n"); + goto out; + } + } + + err = au_mvd_args_busy(dmsg, a); + if (!err) + err = au_mvd_args_parent(dmsg, a); + if (!err) + err = au_mvd_args_intermediate(dmsg, a); + if (!err) + err = au_mvd_args_exist(dmsg, a); + if (!err) + AuDbg("b%d, b%d\n", a->mvd_bsrc, a->mvd_bdst); + +out: + AuTraceErr(err); + return err; +} + +int au_mvdown(struct dentry *dentry, struct aufs_mvdown __user *uarg) +{ + int err, e; + unsigned char dmsg; + struct au_mvd_args *args; + struct inode *inode; + + inode = d_inode(dentry); + err = -EPERM; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = -ENOMEM; + args = kmalloc(sizeof(*args), GFP_NOFS); + if (unlikely(!args)) + goto out; + + err = copy_from_user(&args->mvdown, uarg, sizeof(args->mvdown)); + if (!err) + /* VERIFY_WRITE */ + err = !access_ok(uarg, sizeof(*uarg)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out_free; + } + AuDbg("flags 0x%x\n", args->mvdown.flags); + args->mvdown.flags &= ~(AUFS_MVDOWN_ROLOWER_R | AUFS_MVDOWN_ROUPPER_R); + args->mvdown.au_errno = 0; + args->dentry = dentry; + args->inode = inode; + args->sb = dentry->d_sb; + + err = -ENOENT; + dmsg = !!(args->mvdown.flags & AUFS_MVDOWN_DMSG); + args->parent = dget_parent(dentry); + args->dir = d_inode(args->parent); + inode_lock_nested(args->dir, I_MUTEX_PARENT); + dput(args->parent); + if (unlikely(args->parent != dentry->d_parent)) { + AU_MVD_PR(dmsg, "parent dir is moved\n"); + goto out_dir; + } + + inode_lock_nested(inode, I_MUTEX_CHILD); + err = aufs_read_lock(dentry, AuLock_DW | AuLock_FLUSH | AuLock_NOPLMW); + if (unlikely(err)) + goto out_inode; + + di_write_lock_parent(args->parent); + err = au_mvd_args(dmsg, args); + if (unlikely(err)) + goto out_parent; + + err = au_do_mvdown(dmsg, args); + if (unlikely(err)) + goto out_parent; + + au_cpup_attr_timesizes(args->dir); + au_cpup_attr_timesizes(inode); + if (!(args->mvdown.flags & AUFS_MVDOWN_KUPPER)) + au_cpup_igen(inode, au_h_iptr(inode, args->mvd_bdst)); + /* au_digen_dec(dentry); */ + +out_parent: + di_write_unlock(args->parent); + aufs_read_unlock(dentry, AuLock_DW); +out_inode: + inode_unlock(inode); +out_dir: + inode_unlock(args->dir); +out_free: + e = copy_to_user(uarg, &args->mvdown, sizeof(args->mvdown)); + if (unlikely(e)) + err = -EFAULT; + au_kfree_rcu(args); +out: + AuTraceErr(err); + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/opts.c +++ linux-azure-5.13-5.13.0/fs/aufs/opts.c @@ -0,0 +1,1880 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * mount options/flags + */ + +#include +#include /* a distribution requires */ +#include +#include "aufs.h" + +/* ---------------------------------------------------------------------- */ + +enum { + Opt_br, + Opt_add, Opt_del, Opt_mod, Opt_append, Opt_prepend, + Opt_idel, Opt_imod, + Opt_dirwh, Opt_rdcache, Opt_rdblk, Opt_rdhash, + Opt_rdblk_def, Opt_rdhash_def, + Opt_xino, Opt_noxino, + Opt_trunc_xino, Opt_trunc_xino_v, Opt_notrunc_xino, + Opt_trunc_xino_path, Opt_itrunc_xino, + Opt_trunc_xib, Opt_notrunc_xib, + Opt_shwh, Opt_noshwh, + Opt_plink, Opt_noplink, Opt_list_plink, + Opt_udba, + Opt_dio, Opt_nodio, + Opt_diropq_a, Opt_diropq_w, + Opt_warn_perm, Opt_nowarn_perm, + Opt_wbr_copyup, Opt_wbr_create, + Opt_fhsm_sec, + Opt_verbose, Opt_noverbose, + Opt_sum, Opt_nosum, Opt_wsum, + Opt_dirperm1, Opt_nodirperm1, + Opt_dirren, Opt_nodirren, + Opt_acl, Opt_noacl, + Opt_tail, Opt_ignore, Opt_ignore_silent, Opt_err +}; + +static match_table_t options = { + {Opt_br, "br=%s"}, + {Opt_br, "br:%s"}, + + {Opt_add, "add=%d:%s"}, + {Opt_add, "add:%d:%s"}, + {Opt_add, "ins=%d:%s"}, + {Opt_add, "ins:%d:%s"}, + {Opt_append, "append=%s"}, + {Opt_append, "append:%s"}, + {Opt_prepend, "prepend=%s"}, + {Opt_prepend, "prepend:%s"}, + + {Opt_del, "del=%s"}, + {Opt_del, "del:%s"}, + /* {Opt_idel, "idel:%d"}, */ + {Opt_mod, "mod=%s"}, + {Opt_mod, "mod:%s"}, + /* {Opt_imod, "imod:%d:%s"}, */ + + {Opt_dirwh, "dirwh=%d"}, + + {Opt_xino, "xino=%s"}, + {Opt_noxino, "noxino"}, + {Opt_trunc_xino, "trunc_xino"}, + {Opt_trunc_xino_v, "trunc_xino_v=%d:%d"}, + {Opt_notrunc_xino, "notrunc_xino"}, + {Opt_trunc_xino_path, "trunc_xino=%s"}, + {Opt_itrunc_xino, "itrunc_xino=%d"}, + /* {Opt_zxino, "zxino=%s"}, */ + {Opt_trunc_xib, "trunc_xib"}, + {Opt_notrunc_xib, "notrunc_xib"}, + +#ifdef CONFIG_PROC_FS + {Opt_plink, "plink"}, +#else + {Opt_ignore_silent, "plink"}, +#endif + + {Opt_noplink, "noplink"}, + +#ifdef CONFIG_AUFS_DEBUG + {Opt_list_plink, "list_plink"}, +#endif + + {Opt_udba, "udba=%s"}, + + {Opt_dio, "dio"}, + {Opt_nodio, "nodio"}, + +#ifdef CONFIG_AUFS_DIRREN + {Opt_dirren, "dirren"}, + {Opt_nodirren, "nodirren"}, +#else + {Opt_ignore, "dirren"}, + {Opt_ignore_silent, "nodirren"}, +#endif + +#ifdef CONFIG_AUFS_FHSM + {Opt_fhsm_sec, "fhsm_sec=%d"}, +#else + {Opt_ignore, "fhsm_sec=%d"}, +#endif + + {Opt_diropq_a, "diropq=always"}, + {Opt_diropq_a, "diropq=a"}, + {Opt_diropq_w, "diropq=whiteouted"}, + {Opt_diropq_w, "diropq=w"}, + + {Opt_warn_perm, "warn_perm"}, + {Opt_nowarn_perm, "nowarn_perm"}, + + /* keep them temporary */ + {Opt_ignore_silent, "nodlgt"}, + {Opt_ignore, "clean_plink"}, + +#ifdef CONFIG_AUFS_SHWH + {Opt_shwh, "shwh"}, +#endif + {Opt_noshwh, "noshwh"}, + + {Opt_dirperm1, "dirperm1"}, + {Opt_nodirperm1, "nodirperm1"}, + + {Opt_verbose, "verbose"}, + {Opt_verbose, "v"}, + {Opt_noverbose, "noverbose"}, + {Opt_noverbose, "quiet"}, + {Opt_noverbose, "q"}, + {Opt_noverbose, "silent"}, + + {Opt_sum, "sum"}, + {Opt_nosum, "nosum"}, + {Opt_wsum, "wsum"}, + + {Opt_rdcache, "rdcache=%d"}, + {Opt_rdblk, "rdblk=%d"}, + {Opt_rdblk_def, "rdblk=def"}, + {Opt_rdhash, "rdhash=%d"}, + {Opt_rdhash_def, "rdhash=def"}, + + {Opt_wbr_create, "create=%s"}, + {Opt_wbr_create, "create_policy=%s"}, + {Opt_wbr_copyup, "cpup=%s"}, + {Opt_wbr_copyup, "copyup=%s"}, + {Opt_wbr_copyup, "copyup_policy=%s"}, + + /* generic VFS flag */ +#ifdef CONFIG_FS_POSIX_ACL + {Opt_acl, "acl"}, + {Opt_noacl, "noacl"}, +#else + {Opt_ignore, "acl"}, + {Opt_ignore_silent, "noacl"}, +#endif + + /* internal use for the scripts */ + {Opt_ignore_silent, "si=%s"}, + + {Opt_br, "dirs=%s"}, + {Opt_ignore, "debug=%d"}, + {Opt_ignore, "delete=whiteout"}, + {Opt_ignore, "delete=all"}, + {Opt_ignore, "imap=%s"}, + + /* temporary workaround, due to old mount(8)? */ + {Opt_ignore_silent, "relatime"}, + + {Opt_err, NULL} +}; + +/* ---------------------------------------------------------------------- */ + +static const char *au_parser_pattern(int val, match_table_t tbl) +{ + struct match_token *p; + + p = tbl; + while (p->pattern) { + if (p->token == val) + return p->pattern; + p++; + } + BUG(); + return "??"; +} + +static const char *au_optstr(int *val, match_table_t tbl) +{ + struct match_token *p; + int v; + + v = *val; + if (!v) + goto out; + p = tbl; + while (p->pattern) { + if (p->token + && (v & p->token) == p->token) { + *val &= ~p->token; + return p->pattern; + } + p++; + } + +out: + return NULL; +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t brperm = { + {AuBrPerm_RO, AUFS_BRPERM_RO}, + {AuBrPerm_RR, AUFS_BRPERM_RR}, + {AuBrPerm_RW, AUFS_BRPERM_RW}, + {0, NULL} +}; + +static match_table_t brattr = { + /* general */ + {AuBrAttr_COO_REG, AUFS_BRATTR_COO_REG}, + {AuBrAttr_COO_ALL, AUFS_BRATTR_COO_ALL}, + /* 'unpin' attrib is meaningless since linux-3.18-rc1 */ + {AuBrAttr_UNPIN, AUFS_BRATTR_UNPIN}, +#ifdef CONFIG_AUFS_FHSM + {AuBrAttr_FHSM, AUFS_BRATTR_FHSM}, +#endif +#ifdef CONFIG_AUFS_XATTR + {AuBrAttr_ICEX, AUFS_BRATTR_ICEX}, + {AuBrAttr_ICEX_SEC, AUFS_BRATTR_ICEX_SEC}, + {AuBrAttr_ICEX_SYS, AUFS_BRATTR_ICEX_SYS}, + {AuBrAttr_ICEX_TR, AUFS_BRATTR_ICEX_TR}, + {AuBrAttr_ICEX_USR, AUFS_BRATTR_ICEX_USR}, + {AuBrAttr_ICEX_OTH, AUFS_BRATTR_ICEX_OTH}, +#endif + + /* ro/rr branch */ + {AuBrRAttr_WH, AUFS_BRRATTR_WH}, + + /* rw branch */ + {AuBrWAttr_MOO, AUFS_BRWATTR_MOO}, + {AuBrWAttr_NoLinkWH, AUFS_BRWATTR_NLWH}, + + {0, NULL} +}; + +static int br_attr_val(char *str, match_table_t table, substring_t args[]) +{ + int attr, v; + char *p; + + attr = 0; + do { + p = strchr(str, '+'); + if (p) + *p = 0; + v = match_token(str, table, args); + if (v) { + if (v & AuBrAttr_CMOO_Mask) + attr &= ~AuBrAttr_CMOO_Mask; + attr |= v; + } else { + if (p) + *p = '+'; + pr_warn("ignored branch attribute %s\n", str); + break; + } + if (p) + str = p + 1; + } while (p); + + return attr; +} + +static int au_do_optstr_br_attr(au_br_perm_str_t *str, int perm) +{ + int sz; + const char *p; + char *q; + + q = str->a; + *q = 0; + p = au_optstr(&perm, brattr); + if (p) { + sz = strlen(p); + memcpy(q, p, sz + 1); + q += sz; + } else + goto out; + + do { + p = au_optstr(&perm, brattr); + if (p) { + *q++ = '+'; + sz = strlen(p); + memcpy(q, p, sz + 1); + q += sz; + } + } while (p); + +out: + return q - str->a; +} + +static int noinline_for_stack br_perm_val(char *perm) +{ + int val, bad, sz; + char *p; + substring_t args[MAX_OPT_ARGS]; + au_br_perm_str_t attr; + + p = strchr(perm, '+'); + if (p) + *p = 0; + val = match_token(perm, brperm, args); + if (!val) { + if (p) + *p = '+'; + pr_warn("ignored branch permission %s\n", perm); + val = AuBrPerm_RO; + goto out; + } + if (!p) + goto out; + + val |= br_attr_val(p + 1, brattr, args); + + bad = 0; + switch (val & AuBrPerm_Mask) { + case AuBrPerm_RO: + case AuBrPerm_RR: + bad = val & AuBrWAttr_Mask; + val &= ~AuBrWAttr_Mask; + break; + case AuBrPerm_RW: + bad = val & AuBrRAttr_Mask; + val &= ~AuBrRAttr_Mask; + break; + } + + /* + * 'unpin' attrib becomes meaningless since linux-3.18-rc1, but aufs + * does not treat it as an error, just warning. + * this is a tiny guard for the user operation. + */ + if (val & AuBrAttr_UNPIN) { + bad |= AuBrAttr_UNPIN; + val &= ~AuBrAttr_UNPIN; + } + + if (unlikely(bad)) { + sz = au_do_optstr_br_attr(&attr, bad); + AuDebugOn(!sz); + pr_warn("ignored branch attribute %s\n", attr.a); + } + +out: + return val; +} + +void au_optstr_br_perm(au_br_perm_str_t *str, int perm) +{ + au_br_perm_str_t attr; + const char *p; + char *q; + int sz; + + q = str->a; + p = au_optstr(&perm, brperm); + AuDebugOn(!p || !*p); + sz = strlen(p); + memcpy(q, p, sz + 1); + q += sz; + + sz = au_do_optstr_br_attr(&attr, perm); + if (sz) { + *q++ = '+'; + memcpy(q, attr.a, sz + 1); + } + + AuDebugOn(strlen(str->a) >= sizeof(str->a)); +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t udbalevel = { + {AuOpt_UDBA_REVAL, "reval"}, + {AuOpt_UDBA_NONE, "none"}, +#ifdef CONFIG_AUFS_HNOTIFY + {AuOpt_UDBA_HNOTIFY, "notify"}, /* abstraction */ +#ifdef CONFIG_AUFS_HFSNOTIFY + {AuOpt_UDBA_HNOTIFY, "fsnotify"}, +#endif +#endif + {-1, NULL} +}; + +static int noinline_for_stack udba_val(char *str) +{ + substring_t args[MAX_OPT_ARGS]; + + return match_token(str, udbalevel, args); +} + +const char *au_optstr_udba(int udba) +{ + return au_parser_pattern(udba, udbalevel); +} + +/* ---------------------------------------------------------------------- */ + +static match_table_t au_wbr_create_policy = { + {AuWbrCreate_TDP, "tdp"}, + {AuWbrCreate_TDP, "top-down-parent"}, + {AuWbrCreate_RR, "rr"}, + {AuWbrCreate_RR, "round-robin"}, + {AuWbrCreate_MFS, "mfs"}, + {AuWbrCreate_MFS, "most-free-space"}, + {AuWbrCreate_MFSV, "mfs:%d"}, + {AuWbrCreate_MFSV, "most-free-space:%d"}, + + /* top-down regardless the parent, and then mfs */ + {AuWbrCreate_TDMFS, "tdmfs:%d"}, + {AuWbrCreate_TDMFSV, "tdmfs:%d:%d"}, + + {AuWbrCreate_MFSRR, "mfsrr:%d"}, + {AuWbrCreate_MFSRRV, "mfsrr:%d:%d"}, + {AuWbrCreate_PMFS, "pmfs"}, + {AuWbrCreate_PMFSV, "pmfs:%d"}, + {AuWbrCreate_PMFSRR, "pmfsrr:%d"}, + {AuWbrCreate_PMFSRRV, "pmfsrr:%d:%d"}, + + {-1, NULL} +}; + +static int au_wbr_mfs_wmark(substring_t *arg, char *str, + struct au_opt_wbr_create *create) +{ + int err; + unsigned long long ull; + + err = 0; + if (!match_u64(arg, &ull)) + create->mfsrr_watermark = ull; + else { + pr_err("bad integer in %s\n", str); + err = -EINVAL; + } + + return err; +} + +static int au_wbr_mfs_sec(substring_t *arg, char *str, + struct au_opt_wbr_create *create) +{ + int n, err; + + err = 0; + if (!match_int(arg, &n) && 0 <= n && n <= AUFS_MFS_MAX_SEC) + create->mfs_second = n; + else { + pr_err("bad integer in %s\n", str); + err = -EINVAL; + } + + return err; +} + +static int noinline_for_stack +au_wbr_create_val(char *str, struct au_opt_wbr_create *create) +{ + int err, e; + substring_t args[MAX_OPT_ARGS]; + + err = match_token(str, au_wbr_create_policy, args); + create->wbr_create = err; + switch (err) { + case AuWbrCreate_MFSRRV: + case AuWbrCreate_TDMFSV: + case AuWbrCreate_PMFSRRV: + e = au_wbr_mfs_wmark(&args[0], str, create); + if (!e) + e = au_wbr_mfs_sec(&args[1], str, create); + if (unlikely(e)) + err = e; + break; + case AuWbrCreate_MFSRR: + case AuWbrCreate_TDMFS: + case AuWbrCreate_PMFSRR: + e = au_wbr_mfs_wmark(&args[0], str, create); + if (unlikely(e)) { + err = e; + break; + } + fallthrough; + case AuWbrCreate_MFS: + case AuWbrCreate_PMFS: + create->mfs_second = AUFS_MFS_DEF_SEC; + break; + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFSV: + e = au_wbr_mfs_sec(&args[0], str, create); + if (unlikely(e)) + err = e; + break; + } + + return err; +} + +const char *au_optstr_wbr_create(int wbr_create) +{ + return au_parser_pattern(wbr_create, au_wbr_create_policy); +} + +static match_table_t au_wbr_copyup_policy = { + {AuWbrCopyup_TDP, "tdp"}, + {AuWbrCopyup_TDP, "top-down-parent"}, + {AuWbrCopyup_BUP, "bup"}, + {AuWbrCopyup_BUP, "bottom-up-parent"}, + {AuWbrCopyup_BU, "bu"}, + {AuWbrCopyup_BU, "bottom-up"}, + {-1, NULL} +}; + +static int noinline_for_stack au_wbr_copyup_val(char *str) +{ + substring_t args[MAX_OPT_ARGS]; + + return match_token(str, au_wbr_copyup_policy, args); +} + +const char *au_optstr_wbr_copyup(int wbr_copyup) +{ + return au_parser_pattern(wbr_copyup, au_wbr_copyup_policy); +} + +/* ---------------------------------------------------------------------- */ + +static const int lkup_dirflags = LOOKUP_FOLLOW | LOOKUP_DIRECTORY; + +static void dump_opts(struct au_opts *opts) +{ +#ifdef CONFIG_AUFS_DEBUG + /* reduce stack space */ + union { + struct au_opt_add *add; + struct au_opt_del *del; + struct au_opt_mod *mod; + struct au_opt_xino *xino; + struct au_opt_xino_itrunc *xino_itrunc; + struct au_opt_wbr_create *create; + } u; + struct au_opt *opt; + + opt = opts->opt; + while (opt->type != Opt_tail) { + switch (opt->type) { + case Opt_add: + u.add = &opt->add; + AuDbg("add {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_del: + case Opt_idel: + u.del = &opt->del; + AuDbg("del {%s, %p}\n", + u.del->pathname, u.del->h_path.dentry); + break; + case Opt_mod: + case Opt_imod: + u.mod = &opt->mod; + AuDbg("mod {%s, 0x%x, %p}\n", + u.mod->path, u.mod->perm, u.mod->h_root); + break; + case Opt_append: + u.add = &opt->add; + AuDbg("append {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_prepend: + u.add = &opt->add; + AuDbg("prepend {b%d, %s, 0x%x, %p}\n", + u.add->bindex, u.add->pathname, u.add->perm, + u.add->path.dentry); + break; + case Opt_dirwh: + AuDbg("dirwh %d\n", opt->dirwh); + break; + case Opt_rdcache: + AuDbg("rdcache %d\n", opt->rdcache); + break; + case Opt_rdblk: + AuDbg("rdblk %u\n", opt->rdblk); + break; + case Opt_rdblk_def: + AuDbg("rdblk_def\n"); + break; + case Opt_rdhash: + AuDbg("rdhash %u\n", opt->rdhash); + break; + case Opt_rdhash_def: + AuDbg("rdhash_def\n"); + break; + case Opt_xino: + u.xino = &opt->xino; + AuDbg("xino {%s %pD}\n", u.xino->path, u.xino->file); + break; + case Opt_trunc_xino: + AuLabel(trunc_xino); + break; + case Opt_notrunc_xino: + AuLabel(notrunc_xino); + break; + case Opt_trunc_xino_path: + case Opt_itrunc_xino: + u.xino_itrunc = &opt->xino_itrunc; + AuDbg("trunc_xino %d\n", u.xino_itrunc->bindex); + break; + case Opt_noxino: + AuLabel(noxino); + break; + case Opt_trunc_xib: + AuLabel(trunc_xib); + break; + case Opt_notrunc_xib: + AuLabel(notrunc_xib); + break; + case Opt_shwh: + AuLabel(shwh); + break; + case Opt_noshwh: + AuLabel(noshwh); + break; + case Opt_dirperm1: + AuLabel(dirperm1); + break; + case Opt_nodirperm1: + AuLabel(nodirperm1); + break; + case Opt_plink: + AuLabel(plink); + break; + case Opt_noplink: + AuLabel(noplink); + break; + case Opt_list_plink: + AuLabel(list_plink); + break; + case Opt_udba: + AuDbg("udba %d, %s\n", + opt->udba, au_optstr_udba(opt->udba)); + break; + case Opt_dio: + AuLabel(dio); + break; + case Opt_nodio: + AuLabel(nodio); + break; + case Opt_diropq_a: + AuLabel(diropq_a); + break; + case Opt_diropq_w: + AuLabel(diropq_w); + break; + case Opt_warn_perm: + AuLabel(warn_perm); + break; + case Opt_nowarn_perm: + AuLabel(nowarn_perm); + break; + case Opt_verbose: + AuLabel(verbose); + break; + case Opt_noverbose: + AuLabel(noverbose); + break; + case Opt_sum: + AuLabel(sum); + break; + case Opt_nosum: + AuLabel(nosum); + break; + case Opt_wsum: + AuLabel(wsum); + break; + case Opt_wbr_create: + u.create = &opt->wbr_create; + AuDbg("create %d, %s\n", u.create->wbr_create, + au_optstr_wbr_create(u.create->wbr_create)); + switch (u.create->wbr_create) { + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFSV: + AuDbg("%d sec\n", u.create->mfs_second); + break; + case AuWbrCreate_MFSRR: + case AuWbrCreate_TDMFS: + AuDbg("%llu watermark\n", + u.create->mfsrr_watermark); + break; + case AuWbrCreate_MFSRRV: + case AuWbrCreate_TDMFSV: + case AuWbrCreate_PMFSRRV: + AuDbg("%llu watermark, %d sec\n", + u.create->mfsrr_watermark, + u.create->mfs_second); + break; + } + break; + case Opt_wbr_copyup: + AuDbg("copyup %d, %s\n", opt->wbr_copyup, + au_optstr_wbr_copyup(opt->wbr_copyup)); + break; + case Opt_fhsm_sec: + AuDbg("fhsm_sec %u\n", opt->fhsm_second); + break; + case Opt_dirren: + AuLabel(dirren); + break; + case Opt_nodirren: + AuLabel(nodirren); + break; + case Opt_acl: + AuLabel(acl); + break; + case Opt_noacl: + AuLabel(noacl); + break; + default: + BUG(); + } + opt++; + } +#endif +} + +void au_opts_free(struct au_opts *opts) +{ + struct au_opt *opt; + + opt = opts->opt; + while (opt->type != Opt_tail) { + switch (opt->type) { + case Opt_add: + case Opt_append: + case Opt_prepend: + path_put(&opt->add.path); + break; + case Opt_del: + case Opt_idel: + path_put(&opt->del.h_path); + break; + case Opt_mod: + case Opt_imod: + dput(opt->mod.h_root); + break; + case Opt_xino: + fput(opt->xino.file); + break; + } + opt++; + } +} + +static int opt_add(struct au_opt *opt, char *opt_str, unsigned long sb_flags, + aufs_bindex_t bindex) +{ + int err; + struct au_opt_add *add = &opt->add; + char *p; + + add->bindex = bindex; + add->perm = AuBrPerm_RO; + add->pathname = opt_str; + p = strchr(opt_str, '='); + if (p) { + *p++ = 0; + if (*p) + add->perm = br_perm_val(p); + } + + err = vfsub_kern_path(add->pathname, lkup_dirflags, &add->path); + if (!err) { + if (!p) { + add->perm = AuBrPerm_RO; + if (au_test_fs_rr(add->path.dentry->d_sb)) + add->perm = AuBrPerm_RR; + else if (!bindex && !(sb_flags & SB_RDONLY)) + add->perm = AuBrPerm_RW; + } + opt->type = Opt_add; + goto out; + } + pr_err("lookup failed %s (%d)\n", add->pathname, err); + err = -EINVAL; + +out: + return err; +} + +static int au_opts_parse_del(struct au_opt_del *del, substring_t args[]) +{ + int err; + + del->pathname = args[0].from; + AuDbg("del path %s\n", del->pathname); + + err = vfsub_kern_path(del->pathname, lkup_dirflags, &del->h_path); + if (unlikely(err)) + pr_err("lookup failed %s (%d)\n", del->pathname, err); + + return err; +} + +#if 0 /* reserved for future use */ +static int au_opts_parse_idel(struct super_block *sb, aufs_bindex_t bindex, + struct au_opt_del *del, substring_t args[]) +{ + int err; + struct dentry *root; + + err = -EINVAL; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + if (bindex < 0 || au_sbbot(sb) < bindex) { + pr_err("out of bounds, %d\n", bindex); + goto out; + } + + err = 0; + del->h_path.dentry = dget(au_h_dptr(root, bindex)); + del->h_path.mnt = mntget(au_sbr_mnt(sb, bindex)); + +out: + aufs_read_unlock(root, !AuLock_IR); + return err; +} +#endif + +static int noinline_for_stack +au_opts_parse_mod(struct au_opt_mod *mod, substring_t args[]) +{ + int err; + struct path path; + char *p; + + err = -EINVAL; + mod->path = args[0].from; + p = strchr(mod->path, '='); + if (unlikely(!p)) { + pr_err("no permission %s\n", args[0].from); + goto out; + } + + *p++ = 0; + err = vfsub_kern_path(mod->path, lkup_dirflags, &path); + if (unlikely(err)) { + pr_err("lookup failed %s (%d)\n", mod->path, err); + goto out; + } + + mod->perm = br_perm_val(p); + AuDbg("mod path %s, perm 0x%x, %s\n", mod->path, mod->perm, p); + mod->h_root = dget(path.dentry); + path_put(&path); + +out: + return err; +} + +#if 0 /* reserved for future use */ +static int au_opts_parse_imod(struct super_block *sb, aufs_bindex_t bindex, + struct au_opt_mod *mod, substring_t args[]) +{ + int err; + struct dentry *root; + + err = -EINVAL; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + if (bindex < 0 || au_sbbot(sb) < bindex) { + pr_err("out of bounds, %d\n", bindex); + goto out; + } + + err = 0; + mod->perm = br_perm_val(args[1].from); + AuDbg("mod path %s, perm 0x%x, %s\n", + mod->path, mod->perm, args[1].from); + mod->h_root = dget(au_h_dptr(root, bindex)); + +out: + aufs_read_unlock(root, !AuLock_IR); + return err; +} +#endif + +static int au_opts_parse_xino(struct super_block *sb, struct au_opt_xino *xino, + substring_t args[]) +{ + int err; + struct file *file; + + file = au_xino_create(sb, args[0].from, /*silent*/0, /*wbrtop*/0); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + + err = -EINVAL; + if (unlikely(file->f_path.dentry->d_sb == sb)) { + fput(file); + pr_err("%s must be outside\n", args[0].from); + goto out; + } + + err = 0; + xino->file = file; + xino->path = args[0].from; + +out: + return err; +} + +static int noinline_for_stack +au_opts_parse_xino_itrunc_path(struct super_block *sb, + struct au_opt_xino_itrunc *xino_itrunc, + substring_t args[]) +{ + int err; + aufs_bindex_t bbot, bindex; + struct path path; + struct dentry *root; + + err = vfsub_kern_path(args[0].from, lkup_dirflags, &path); + if (unlikely(err)) { + pr_err("lookup failed %s (%d)\n", args[0].from, err); + goto out; + } + + xino_itrunc->bindex = -1; + root = sb->s_root; + aufs_read_lock(root, AuLock_FLUSH); + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + if (au_h_dptr(root, bindex) == path.dentry) { + xino_itrunc->bindex = bindex; + break; + } + } + aufs_read_unlock(root, !AuLock_IR); + path_put(&path); + + if (unlikely(xino_itrunc->bindex < 0)) { + pr_err("no such branch %s\n", args[0].from); + err = -EINVAL; + } + +out: + return err; +} + +/* called without aufs lock */ +int au_opts_parse(struct super_block *sb, char *str, struct au_opts *opts) +{ + int err, n, token; + aufs_bindex_t bindex; + unsigned char skipped; + struct dentry *root; + struct au_opt *opt, *opt_tail; + char *opt_str; + /* reduce the stack space */ + union { + struct au_opt_xino_itrunc *xino_itrunc; + struct au_opt_wbr_create *create; + } u; + struct { + substring_t args[MAX_OPT_ARGS]; + } *a; + + err = -ENOMEM; + a = kmalloc(sizeof(*a), GFP_NOFS); + if (unlikely(!a)) + goto out; + + root = sb->s_root; + err = 0; + bindex = 0; + opt = opts->opt; + opt_tail = opt + opts->max_opt - 1; + opt->type = Opt_tail; + while (!err && (opt_str = strsep(&str, ",")) && *opt_str) { + err = -EINVAL; + skipped = 0; + token = match_token(opt_str, options, a->args); + switch (token) { + case Opt_br: + err = 0; + while (!err && (opt_str = strsep(&a->args[0].from, ":")) + && *opt_str) { + err = opt_add(opt, opt_str, opts->sb_flags, + bindex++); + if (unlikely(!err && ++opt > opt_tail)) { + err = -E2BIG; + break; + } + opt->type = Opt_tail; + skipped = 1; + } + break; + case Opt_add: + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + bindex = n; + err = opt_add(opt, a->args[1].from, opts->sb_flags, + bindex); + if (!err) + opt->type = token; + break; + case Opt_append: + err = opt_add(opt, a->args[0].from, opts->sb_flags, + /*dummy bindex*/1); + if (!err) + opt->type = token; + break; + case Opt_prepend: + err = opt_add(opt, a->args[0].from, opts->sb_flags, + /*bindex*/0); + if (!err) + opt->type = token; + break; + case Opt_del: + err = au_opts_parse_del(&opt->del, a->args); + if (!err) + opt->type = token; + break; +#if 0 /* reserved for future use */ + case Opt_idel: + del->pathname = "(indexed)"; + if (unlikely(match_int(&args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + err = au_opts_parse_idel(sb, n, &opt->del, a->args); + if (!err) + opt->type = token; + break; +#endif + case Opt_mod: + err = au_opts_parse_mod(&opt->mod, a->args); + if (!err) + opt->type = token; + break; +#ifdef IMOD /* reserved for future use */ + case Opt_imod: + u.mod->path = "(indexed)"; + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + err = au_opts_parse_imod(sb, n, &opt->mod, a->args); + if (!err) + opt->type = token; + break; +#endif + case Opt_xino: + err = au_opts_parse_xino(sb, &opt->xino, a->args); + if (!err) + opt->type = token; + break; + + case Opt_trunc_xino_path: + err = au_opts_parse_xino_itrunc_path + (sb, &opt->xino_itrunc, a->args); + if (!err) + opt->type = token; + break; + + case Opt_itrunc_xino: + u.xino_itrunc = &opt->xino_itrunc; + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + u.xino_itrunc->bindex = n; + aufs_read_lock(root, AuLock_FLUSH); + if (n < 0 || au_sbbot(sb) < n) { + pr_err("out of bounds, %d\n", n); + aufs_read_unlock(root, !AuLock_IR); + break; + } + aufs_read_unlock(root, !AuLock_IR); + err = 0; + opt->type = token; + break; + + case Opt_dirwh: + if (unlikely(match_int(&a->args[0], &opt->dirwh))) + break; + err = 0; + opt->type = token; + break; + + case Opt_rdcache: + if (unlikely(match_int(&a->args[0], &n))) { + pr_err("bad integer in %s\n", opt_str); + break; + } + if (unlikely(n > AUFS_RDCACHE_MAX)) { + pr_err("rdcache must be smaller than %d\n", + AUFS_RDCACHE_MAX); + break; + } + opt->rdcache = n; + err = 0; + opt->type = token; + break; + case Opt_rdblk: + if (unlikely(match_int(&a->args[0], &n) + || n < 0 + || n > KMALLOC_MAX_SIZE)) { + pr_err("bad integer in %s\n", opt_str); + break; + } + if (unlikely(n && n < NAME_MAX)) { + pr_err("rdblk must be larger than %d\n", + NAME_MAX); + break; + } + opt->rdblk = n; + err = 0; + opt->type = token; + break; + case Opt_rdhash: + if (unlikely(match_int(&a->args[0], &n) + || n < 0 + || n * sizeof(struct hlist_head) + > KMALLOC_MAX_SIZE)) { + pr_err("bad integer in %s\n", opt_str); + break; + } + opt->rdhash = n; + err = 0; + opt->type = token; + break; + + case Opt_trunc_xino: + case Opt_notrunc_xino: + case Opt_noxino: + case Opt_trunc_xib: + case Opt_notrunc_xib: + case Opt_shwh: + case Opt_noshwh: + case Opt_dirperm1: + case Opt_nodirperm1: + case Opt_plink: + case Opt_noplink: + case Opt_list_plink: + case Opt_dio: + case Opt_nodio: + case Opt_diropq_a: + case Opt_diropq_w: + case Opt_warn_perm: + case Opt_nowarn_perm: + case Opt_verbose: + case Opt_noverbose: + case Opt_sum: + case Opt_nosum: + case Opt_wsum: + case Opt_rdblk_def: + case Opt_rdhash_def: + case Opt_dirren: + case Opt_nodirren: + case Opt_acl: + case Opt_noacl: + err = 0; + opt->type = token; + break; + + case Opt_udba: + opt->udba = udba_val(a->args[0].from); + if (opt->udba >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + + case Opt_wbr_create: + u.create = &opt->wbr_create; + u.create->wbr_create + = au_wbr_create_val(a->args[0].from, u.create); + if (u.create->wbr_create >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + case Opt_wbr_copyup: + opt->wbr_copyup = au_wbr_copyup_val(a->args[0].from); + if (opt->wbr_copyup >= 0) { + err = 0; + opt->type = token; + } else + pr_err("wrong value, %s\n", opt_str); + break; + + case Opt_fhsm_sec: + if (unlikely(match_int(&a->args[0], &n) + || n < 0)) { + pr_err("bad integer in %s\n", opt_str); + break; + } + if (sysaufs_brs) { + opt->fhsm_second = n; + opt->type = token; + } else + pr_warn("ignored %s\n", opt_str); + err = 0; + break; + + case Opt_ignore: + pr_warn("ignored %s\n", opt_str); + fallthrough; + case Opt_ignore_silent: + skipped = 1; + err = 0; + break; + case Opt_err: + pr_err("unknown option %s\n", opt_str); + break; + } + + if (!err && !skipped) { + if (unlikely(++opt > opt_tail)) { + err = -E2BIG; + opt--; + opt->type = Opt_tail; + break; + } + opt->type = Opt_tail; + } + } + + au_kfree_rcu(a); + dump_opts(opts); + if (unlikely(err)) + au_opts_free(opts); + +out: + return err; +} + +static int au_opt_wbr_create(struct super_block *sb, + struct au_opt_wbr_create *create) +{ + int err; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 1; /* handled */ + sbinfo = au_sbi(sb); + if (sbinfo->si_wbr_create_ops->fin) { + err = sbinfo->si_wbr_create_ops->fin(sb); + if (!err) + err = 1; + } + + sbinfo->si_wbr_create = create->wbr_create; + sbinfo->si_wbr_create_ops = au_wbr_create_ops + create->wbr_create; + switch (create->wbr_create) { + case AuWbrCreate_MFSRRV: + case AuWbrCreate_MFSRR: + case AuWbrCreate_TDMFS: + case AuWbrCreate_TDMFSV: + case AuWbrCreate_PMFSRR: + case AuWbrCreate_PMFSRRV: + sbinfo->si_wbr_mfs.mfsrr_watermark = create->mfsrr_watermark; + fallthrough; + case AuWbrCreate_MFS: + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFS: + case AuWbrCreate_PMFSV: + sbinfo->si_wbr_mfs.mfs_expire + = msecs_to_jiffies(create->mfs_second * MSEC_PER_SEC); + break; + } + + if (sbinfo->si_wbr_create_ops->init) + sbinfo->si_wbr_create_ops->init(sb); /* ignore */ + + return err; +} + +/* + * returns, + * plus: processed without an error + * zero: unprocessed + */ +static int au_opt_simple(struct super_block *sb, struct au_opt *opt, + struct au_opts *opts) +{ + int err; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = 1; /* handled */ + sbinfo = au_sbi(sb); + switch (opt->type) { + case Opt_udba: + sbinfo->si_mntflags &= ~AuOptMask_UDBA; + sbinfo->si_mntflags |= opt->udba; + opts->given_udba |= opt->udba; + break; + + case Opt_plink: + au_opt_set(sbinfo->si_mntflags, PLINK); + break; + case Opt_noplink: + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_put(sb, /*verbose*/1); + au_opt_clr(sbinfo->si_mntflags, PLINK); + break; + case Opt_list_plink: + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_list(sb); + break; + + case Opt_dio: + au_opt_set(sbinfo->si_mntflags, DIO); + au_fset_opts(opts->flags, REFRESH_DYAOP); + break; + case Opt_nodio: + au_opt_clr(sbinfo->si_mntflags, DIO); + au_fset_opts(opts->flags, REFRESH_DYAOP); + break; + + case Opt_fhsm_sec: + au_fhsm_set(sbinfo, opt->fhsm_second); + break; + + case Opt_diropq_a: + au_opt_set(sbinfo->si_mntflags, ALWAYS_DIROPQ); + break; + case Opt_diropq_w: + au_opt_clr(sbinfo->si_mntflags, ALWAYS_DIROPQ); + break; + + case Opt_warn_perm: + au_opt_set(sbinfo->si_mntflags, WARN_PERM); + break; + case Opt_nowarn_perm: + au_opt_clr(sbinfo->si_mntflags, WARN_PERM); + break; + + case Opt_verbose: + au_opt_set(sbinfo->si_mntflags, VERBOSE); + break; + case Opt_noverbose: + au_opt_clr(sbinfo->si_mntflags, VERBOSE); + break; + + case Opt_sum: + au_opt_set(sbinfo->si_mntflags, SUM); + break; + case Opt_wsum: + au_opt_clr(sbinfo->si_mntflags, SUM); + au_opt_set(sbinfo->si_mntflags, SUM_W); + break; + case Opt_nosum: + au_opt_clr(sbinfo->si_mntflags, SUM); + au_opt_clr(sbinfo->si_mntflags, SUM_W); + break; + + case Opt_wbr_create: + err = au_opt_wbr_create(sb, &opt->wbr_create); + break; + case Opt_wbr_copyup: + sbinfo->si_wbr_copyup = opt->wbr_copyup; + sbinfo->si_wbr_copyup_ops = au_wbr_copyup_ops + opt->wbr_copyup; + break; + + case Opt_dirwh: + sbinfo->si_dirwh = opt->dirwh; + break; + + case Opt_rdcache: + sbinfo->si_rdcache + = msecs_to_jiffies(opt->rdcache * MSEC_PER_SEC); + break; + case Opt_rdblk: + sbinfo->si_rdblk = opt->rdblk; + break; + case Opt_rdblk_def: + sbinfo->si_rdblk = AUFS_RDBLK_DEF; + break; + case Opt_rdhash: + sbinfo->si_rdhash = opt->rdhash; + break; + case Opt_rdhash_def: + sbinfo->si_rdhash = AUFS_RDHASH_DEF; + break; + + case Opt_shwh: + au_opt_set(sbinfo->si_mntflags, SHWH); + break; + case Opt_noshwh: + au_opt_clr(sbinfo->si_mntflags, SHWH); + break; + + case Opt_dirperm1: + au_opt_set(sbinfo->si_mntflags, DIRPERM1); + break; + case Opt_nodirperm1: + au_opt_clr(sbinfo->si_mntflags, DIRPERM1); + break; + + case Opt_trunc_xino: + au_opt_set(sbinfo->si_mntflags, TRUNC_XINO); + break; + case Opt_notrunc_xino: + au_opt_clr(sbinfo->si_mntflags, TRUNC_XINO); + break; + + case Opt_trunc_xino_path: + case Opt_itrunc_xino: + err = au_xino_trunc(sb, opt->xino_itrunc.bindex, + /*idx_begin*/0); + if (!err) + err = 1; + break; + + case Opt_trunc_xib: + au_fset_opts(opts->flags, TRUNC_XIB); + break; + case Opt_notrunc_xib: + au_fclr_opts(opts->flags, TRUNC_XIB); + break; + + case Opt_dirren: + err = 1; + if (!au_opt_test(sbinfo->si_mntflags, DIRREN)) { + err = au_dr_opt_set(sb); + if (!err) + err = 1; + } + if (err == 1) + au_opt_set(sbinfo->si_mntflags, DIRREN); + break; + case Opt_nodirren: + err = 1; + if (au_opt_test(sbinfo->si_mntflags, DIRREN)) { + err = au_dr_opt_clr(sb, au_ftest_opts(opts->flags, + DR_FLUSHED)); + if (!err) + err = 1; + } + if (err == 1) + au_opt_clr(sbinfo->si_mntflags, DIRREN); + break; + + case Opt_acl: + sb->s_flags |= SB_POSIXACL; + break; + case Opt_noacl: + sb->s_flags &= ~SB_POSIXACL; + break; + + default: + err = 0; + break; + } + + return err; +} + +/* + * returns tri-state. + * plus: processed without an error + * zero: unprocessed + * minus: error + */ +static int au_opt_br(struct super_block *sb, struct au_opt *opt, + struct au_opts *opts) +{ + int err, do_refresh; + + err = 0; + switch (opt->type) { + case Opt_append: + opt->add.bindex = au_sbbot(sb) + 1; + if (opt->add.bindex < 0) + opt->add.bindex = 0; + goto add; + /* Always goto add, not fallthrough */ + case Opt_prepend: + opt->add.bindex = 0; + fallthrough; + add: /* indented label */ + case Opt_add: + err = au_br_add(sb, &opt->add, + au_ftest_opts(opts->flags, REMOUNT)); + if (!err) { + err = 1; + au_fset_opts(opts->flags, REFRESH); + } + break; + + case Opt_del: + case Opt_idel: + err = au_br_del(sb, &opt->del, + au_ftest_opts(opts->flags, REMOUNT)); + if (!err) { + err = 1; + au_fset_opts(opts->flags, TRUNC_XIB); + au_fset_opts(opts->flags, REFRESH); + } + break; + + case Opt_mod: + case Opt_imod: + err = au_br_mod(sb, &opt->mod, + au_ftest_opts(opts->flags, REMOUNT), + &do_refresh); + if (!err) { + err = 1; + if (do_refresh) + au_fset_opts(opts->flags, REFRESH); + } + break; + } + return err; +} + +static int au_opt_xino(struct super_block *sb, struct au_opt *opt, + struct au_opt_xino **opt_xino, + struct au_opts *opts) +{ + int err; + + err = 0; + switch (opt->type) { + case Opt_xino: + err = au_xino_set(sb, &opt->xino, + !!au_ftest_opts(opts->flags, REMOUNT)); + if (unlikely(err)) + break; + + *opt_xino = &opt->xino; + break; + + case Opt_noxino: + au_xino_clr(sb); + *opt_xino = (void *)-1; + break; + } + + return err; +} + +int au_opts_verify(struct super_block *sb, unsigned long sb_flags, + unsigned int pending) +{ + int err, fhsm; + aufs_bindex_t bindex, bbot; + unsigned char do_plink, skip, do_free, can_no_dreval; + struct au_branch *br; + struct au_wbr *wbr; + struct dentry *root, *dentry; + struct inode *dir, *h_dir; + struct au_sbinfo *sbinfo; + struct au_hinode *hdir; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!(sbinfo->si_mntflags & AuOptMask_UDBA)); + + if (!(sb_flags & SB_RDONLY)) { + if (unlikely(!au_br_writable(au_sbr_perm(sb, 0)))) + pr_warn("first branch should be rw\n"); + if (unlikely(au_opt_test(sbinfo->si_mntflags, SHWH))) + pr_warn_once("shwh should be used with ro\n"); + } + + if (au_opt_test((sbinfo->si_mntflags | pending), UDBA_HNOTIFY) + && !au_opt_test(sbinfo->si_mntflags, XINO)) + pr_warn_once("udba=*notify requires xino\n"); + + if (au_opt_test(sbinfo->si_mntflags, DIRPERM1)) + pr_warn_once("dirperm1 breaks the protection" + " by the permission bits on the lower branch\n"); + + err = 0; + fhsm = 0; + root = sb->s_root; + dir = d_inode(root); + do_plink = !!au_opt_test(sbinfo->si_mntflags, PLINK); + can_no_dreval = !!au_opt_test((sbinfo->si_mntflags | pending), + UDBA_NONE); + bbot = au_sbbot(sb); + for (bindex = 0; !err && bindex <= bbot; bindex++) { + skip = 0; + h_dir = au_h_iptr(dir, bindex); + br = au_sbr(sb, bindex); + + if ((br->br_perm & AuBrAttr_ICEX) + && !h_dir->i_op->listxattr) + br->br_perm &= ~AuBrAttr_ICEX; +#if 0 /* untested */ + if ((br->br_perm & AuBrAttr_ICEX_SEC) + && (au_br_sb(br)->s_flags & SB_NOSEC)) + br->br_perm &= ~AuBrAttr_ICEX_SEC; +#endif + + do_free = 0; + wbr = br->br_wbr; + if (wbr) + wbr_wh_read_lock(wbr); + + if (!au_br_writable(br->br_perm)) { + do_free = !!wbr; + skip = (!wbr + || (!wbr->wbr_whbase + && !wbr->wbr_plink + && !wbr->wbr_orph)); + } else if (!au_br_wh_linkable(br->br_perm)) { + /* skip = (!br->br_whbase && !br->br_orph); */ + skip = (!wbr || !wbr->wbr_whbase); + if (skip && wbr) { + if (do_plink) + skip = !!wbr->wbr_plink; + else + skip = !wbr->wbr_plink; + } + } else { + /* skip = (br->br_whbase && br->br_ohph); */ + skip = (wbr && wbr->wbr_whbase); + if (skip) { + if (do_plink) + skip = !!wbr->wbr_plink; + else + skip = !wbr->wbr_plink; + } + } + if (wbr) + wbr_wh_read_unlock(wbr); + + if (can_no_dreval) { + dentry = br->br_path.dentry; + spin_lock(&dentry->d_lock); + if (dentry->d_flags & + (DCACHE_OP_REVALIDATE | DCACHE_OP_WEAK_REVALIDATE)) + can_no_dreval = 0; + spin_unlock(&dentry->d_lock); + } + + if (au_br_fhsm(br->br_perm)) { + fhsm++; + AuDebugOn(!br->br_fhsm); + } + + if (skip) + continue; + + hdir = au_hi(dir, bindex); + au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); + if (wbr) + wbr_wh_write_lock(wbr); + err = au_wh_init(br, sb); + if (wbr) + wbr_wh_write_unlock(wbr); + au_hn_inode_unlock(hdir); + + if (!err && do_free) { + au_kfree_rcu(wbr); + br->br_wbr = NULL; + } + } + + if (can_no_dreval) + au_fset_si(sbinfo, NO_DREVAL); + else + au_fclr_si(sbinfo, NO_DREVAL); + + if (fhsm >= 2) { + au_fset_si(sbinfo, FHSM); + for (bindex = bbot; bindex >= 0; bindex--) { + br = au_sbr(sb, bindex); + if (au_br_fhsm(br->br_perm)) { + au_fhsm_set_bottom(sb, bindex); + break; + } + } + } else { + au_fclr_si(sbinfo, FHSM); + au_fhsm_set_bottom(sb, -1); + } + + return err; +} + +int au_opts_mount(struct super_block *sb, struct au_opts *opts) +{ + int err; + unsigned int tmp; + aufs_bindex_t bindex, bbot; + struct au_opt *opt; + struct au_opt_xino *opt_xino, xino; + struct au_sbinfo *sbinfo; + struct au_branch *br; + struct inode *dir; + + SiMustWriteLock(sb); + + err = 0; + opt_xino = NULL; + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) + err = au_opt_simple(sb, opt++, opts); + if (err > 0) + err = 0; + else if (unlikely(err < 0)) + goto out; + + /* disable xino and udba temporary */ + sbinfo = au_sbi(sb); + tmp = sbinfo->si_mntflags; + au_opt_clr(sbinfo->si_mntflags, XINO); + au_opt_set_udba(sbinfo->si_mntflags, UDBA_REVAL); + + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) + err = au_opt_br(sb, opt++, opts); + if (err > 0) + err = 0; + else if (unlikely(err < 0)) + goto out; + + bbot = au_sbbot(sb); + if (unlikely(bbot < 0)) { + err = -EINVAL; + pr_err("no branches\n"); + goto out; + } + + if (au_opt_test(tmp, XINO)) + au_opt_set(sbinfo->si_mntflags, XINO); + opt = opts->opt; + while (!err && opt->type != Opt_tail) + err = au_opt_xino(sb, opt++, &opt_xino, opts); + if (unlikely(err)) + goto out; + + err = au_opts_verify(sb, sb->s_flags, tmp); + if (unlikely(err)) + goto out; + + /* restore xino */ + if (au_opt_test(tmp, XINO) && !opt_xino) { + xino.file = au_xino_def(sb); + err = PTR_ERR(xino.file); + if (IS_ERR(xino.file)) + goto out; + + err = au_xino_set(sb, &xino, /*remount*/0); + fput(xino.file); + if (unlikely(err)) + goto out; + } + + /* restore udba */ + tmp &= AuOptMask_UDBA; + sbinfo->si_mntflags &= ~AuOptMask_UDBA; + sbinfo->si_mntflags |= tmp; + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + err = au_hnotify_reset_br(tmp, br, br->br_perm); + if (unlikely(err)) + AuIOErr("hnotify failed on br %d, %d, ignored\n", + bindex, err); + /* go on even if err */ + } + if (au_opt_test(tmp, UDBA_HNOTIFY)) { + dir = d_inode(sb->s_root); + au_hn_reset(dir, au_hi_flags(dir, /*isdir*/1) & ~AuHi_XINO); + } + +out: + return err; +} + +int au_opts_remount(struct super_block *sb, struct au_opts *opts) +{ + int err, rerr; + unsigned char no_dreval; + struct inode *dir; + struct au_opt_xino *opt_xino; + struct au_opt *opt; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + err = au_dr_opt_flush(sb); + if (unlikely(err)) + goto out; + au_fset_opts(opts->flags, DR_FLUSHED); + + dir = d_inode(sb->s_root); + sbinfo = au_sbi(sb); + opt_xino = NULL; + opt = opts->opt; + while (err >= 0 && opt->type != Opt_tail) { + err = au_opt_simple(sb, opt, opts); + if (!err) + err = au_opt_br(sb, opt, opts); + if (!err) + err = au_opt_xino(sb, opt, &opt_xino, opts); + opt++; + } + if (err > 0) + err = 0; + AuTraceErr(err); + /* go on even err */ + + no_dreval = !!au_ftest_si(sbinfo, NO_DREVAL); + rerr = au_opts_verify(sb, opts->sb_flags, /*pending*/0); + if (unlikely(rerr && !err)) + err = rerr; + + if (no_dreval != !!au_ftest_si(sbinfo, NO_DREVAL)) + au_fset_opts(opts->flags, REFRESH_IDOP); + + if (au_ftest_opts(opts->flags, TRUNC_XIB)) { + rerr = au_xib_trunc(sb); + if (unlikely(rerr && !err)) + err = rerr; + } + + /* will be handled by the caller */ + if (!au_ftest_opts(opts->flags, REFRESH) + && (opts->given_udba + || au_opt_test(sbinfo->si_mntflags, XINO) + || au_ftest_opts(opts->flags, REFRESH_IDOP) + )) + au_fset_opts(opts->flags, REFRESH); + + AuDbg("status 0x%x\n", opts->flags); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +unsigned int au_opt_udba(struct super_block *sb) +{ + return au_mntflags(sb) & AuOptMask_UDBA; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/opts.h +++ linux-azure-5.13-5.13.0/fs/aufs/opts.h @@ -0,0 +1,225 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * mount options/flags + */ + +#ifndef __AUFS_OPTS_H__ +#define __AUFS_OPTS_H__ + +#ifdef __KERNEL__ + +#include + +struct file; + +/* ---------------------------------------------------------------------- */ + +/* mount flags */ +#define AuOpt_XINO 1 /* external inode number bitmap + and translation table */ +#define AuOpt_TRUNC_XINO (1 << 1) /* truncate xino files */ +#define AuOpt_UDBA_NONE (1 << 2) /* users direct branch access */ +#define AuOpt_UDBA_REVAL (1 << 3) +#define AuOpt_UDBA_HNOTIFY (1 << 4) +#define AuOpt_SHWH (1 << 5) /* show whiteout */ +#define AuOpt_PLINK (1 << 6) /* pseudo-link */ +#define AuOpt_DIRPERM1 (1 << 7) /* ignore the lower dir's perm + bits */ +#define AuOpt_ALWAYS_DIROPQ (1 << 9) /* policy to creating diropq */ +#define AuOpt_SUM (1 << 10) /* summation for statfs(2) */ +#define AuOpt_SUM_W (1 << 11) /* unimplemented */ +#define AuOpt_WARN_PERM (1 << 12) /* warn when add-branch */ +#define AuOpt_VERBOSE (1 << 13) /* print the cause of error */ +#define AuOpt_DIO (1 << 14) /* direct io */ +#define AuOpt_DIRREN (1 << 15) /* directory rename */ + +#ifndef CONFIG_AUFS_HNOTIFY +#undef AuOpt_UDBA_HNOTIFY +#define AuOpt_UDBA_HNOTIFY 0 +#endif +#ifndef CONFIG_AUFS_DIRREN +#undef AuOpt_DIRREN +#define AuOpt_DIRREN 0 +#endif +#ifndef CONFIG_AUFS_SHWH +#undef AuOpt_SHWH +#define AuOpt_SHWH 0 +#endif + +#define AuOpt_Def (AuOpt_XINO \ + | AuOpt_UDBA_REVAL \ + | AuOpt_PLINK \ + /* | AuOpt_DIRPERM1 */ \ + | AuOpt_WARN_PERM) +#define AuOptMask_UDBA (AuOpt_UDBA_NONE \ + | AuOpt_UDBA_REVAL \ + | AuOpt_UDBA_HNOTIFY) + +#define au_opt_test(flags, name) (flags & AuOpt_##name) +#define au_opt_set(flags, name) do { \ + BUILD_BUG_ON(AuOpt_##name & AuOptMask_UDBA); \ + ((flags) |= AuOpt_##name); \ +} while (0) +#define au_opt_set_udba(flags, name) do { \ + (flags) &= ~AuOptMask_UDBA; \ + ((flags) |= AuOpt_##name); \ +} while (0) +#define au_opt_clr(flags, name) do { \ + ((flags) &= ~AuOpt_##name); \ +} while (0) + +static inline unsigned int au_opts_plink(unsigned int mntflags) +{ +#ifdef CONFIG_PROC_FS + return mntflags; +#else + return mntflags & ~AuOpt_PLINK; +#endif +} + +/* ---------------------------------------------------------------------- */ + +/* policies to select one among multiple writable branches */ +enum { + AuWbrCreate_TDP, /* top down parent */ + AuWbrCreate_RR, /* round robin */ + AuWbrCreate_MFS, /* most free space */ + AuWbrCreate_MFSV, /* mfs with seconds */ + AuWbrCreate_MFSRR, /* mfs then rr */ + AuWbrCreate_MFSRRV, /* mfs then rr with seconds */ + AuWbrCreate_TDMFS, /* top down regardless parent and mfs */ + AuWbrCreate_TDMFSV, /* top down regardless parent and mfs */ + AuWbrCreate_PMFS, /* parent and mfs */ + AuWbrCreate_PMFSV, /* parent and mfs with seconds */ + AuWbrCreate_PMFSRR, /* parent, mfs and round-robin */ + AuWbrCreate_PMFSRRV, /* plus seconds */ + + AuWbrCreate_Def = AuWbrCreate_TDP +}; + +enum { + AuWbrCopyup_TDP, /* top down parent */ + AuWbrCopyup_BUP, /* bottom up parent */ + AuWbrCopyup_BU, /* bottom up */ + + AuWbrCopyup_Def = AuWbrCopyup_TDP +}; + +/* ---------------------------------------------------------------------- */ + +struct au_opt_add { + aufs_bindex_t bindex; + char *pathname; + int perm; + struct path path; +}; + +struct au_opt_del { + char *pathname; + struct path h_path; +}; + +struct au_opt_mod { + char *path; + int perm; + struct dentry *h_root; +}; + +struct au_opt_xino { + char *path; + struct file *file; +}; + +struct au_opt_xino_itrunc { + aufs_bindex_t bindex; +}; + +struct au_opt_wbr_create { + int wbr_create; + int mfs_second; + unsigned long long mfsrr_watermark; +}; + +struct au_opt { + int type; + union { + struct au_opt_xino xino; + struct au_opt_xino_itrunc xino_itrunc; + struct au_opt_add add; + struct au_opt_del del; + struct au_opt_mod mod; + int dirwh; + int rdcache; + unsigned int rdblk; + unsigned int rdhash; + int udba; + struct au_opt_wbr_create wbr_create; + int wbr_copyup; + unsigned int fhsm_second; + }; +}; + +/* opts flags */ +#define AuOpts_REMOUNT 1 +#define AuOpts_REFRESH (1 << 1) +#define AuOpts_TRUNC_XIB (1 << 2) +#define AuOpts_REFRESH_DYAOP (1 << 3) +#define AuOpts_REFRESH_IDOP (1 << 4) +#define AuOpts_DR_FLUSHED (1 << 5) +#define au_ftest_opts(flags, name) ((flags) & AuOpts_##name) +#define au_fset_opts(flags, name) \ + do { (flags) |= AuOpts_##name; } while (0) +#define au_fclr_opts(flags, name) \ + do { (flags) &= ~AuOpts_##name; } while (0) + +#ifndef CONFIG_AUFS_DIRREN +#undef AuOpts_DR_FLUSHED +#define AuOpts_DR_FLUSHED 0 +#endif + +struct au_opts { + struct au_opt *opt; + int max_opt; + + unsigned int given_udba; + unsigned int flags; + unsigned long sb_flags; +}; + +/* ---------------------------------------------------------------------- */ + +/* opts.c */ +void au_optstr_br_perm(au_br_perm_str_t *str, int perm); +const char *au_optstr_udba(int udba); +const char *au_optstr_wbr_copyup(int wbr_copyup); +const char *au_optstr_wbr_create(int wbr_create); + +void au_opts_free(struct au_opts *opts); +struct super_block; +int au_opts_parse(struct super_block *sb, char *str, struct au_opts *opts); +int au_opts_verify(struct super_block *sb, unsigned long sb_flags, + unsigned int pending); +int au_opts_mount(struct super_block *sb, struct au_opts *opts); +int au_opts_remount(struct super_block *sb, struct au_opts *opts); + +unsigned int au_opt_udba(struct super_block *sb); + +#endif /* __KERNEL__ */ +#endif /* __AUFS_OPTS_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/plink.c +++ linux-azure-5.13-5.13.0/fs/aufs/plink.c @@ -0,0 +1,516 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * pseudo-link + */ + +#include "aufs.h" + +/* + * the pseudo-link maintenance mode. + * during a user process maintains the pseudo-links, + * prohibit adding a new plink and branch manipulation. + * + * Flags + * NOPLM: + * For entry functions which will handle plink, and i_mutex is already held + * in VFS. + * They cannot wait and should return an error at once. + * Callers has to check the error. + * NOPLMW: + * For entry functions which will handle plink, but i_mutex is not held + * in VFS. + * They can wait the plink maintenance mode to finish. + * + * They behave like F_SETLK and F_SETLKW. + * If the caller never handle plink, then both flags are unnecessary. + */ + +int au_plink_maint(struct super_block *sb, int flags) +{ + int err; + pid_t pid, ppid; + struct task_struct *parent, *prev; + struct au_sbinfo *sbi; + + SiMustAnyLock(sb); + + err = 0; + if (!au_opt_test(au_mntflags(sb), PLINK)) + goto out; + + sbi = au_sbi(sb); + pid = sbi->si_plink_maint_pid; + if (!pid || pid == current->pid) + goto out; + + /* todo: it highly depends upon /sbin/mount.aufs */ + prev = NULL; + parent = current; + ppid = 0; + rcu_read_lock(); + while (1) { + parent = rcu_dereference(parent->real_parent); + if (parent == prev) + break; + ppid = task_pid_vnr(parent); + if (pid == ppid) { + rcu_read_unlock(); + goto out; + } + prev = parent; + } + rcu_read_unlock(); + + if (au_ftest_lock(flags, NOPLMW)) { + /* if there is no i_mutex lock in VFS, we don't need to wait */ + /* AuDebugOn(!lockdep_depth(current)); */ + while (sbi->si_plink_maint_pid) { + si_read_unlock(sb); + /* gave up wake_up_bit() */ + wait_event(sbi->si_plink_wq, !sbi->si_plink_maint_pid); + + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&sbi->si_nowait); + si_noflush_read_lock(sb); + } + } else if (au_ftest_lock(flags, NOPLM)) { + AuDbg("ppid %d, pid %d\n", ppid, pid); + err = -EAGAIN; + } + +out: + return err; +} + +void au_plink_maint_leave(struct au_sbinfo *sbinfo) +{ + spin_lock(&sbinfo->si_plink_maint_lock); + sbinfo->si_plink_maint_pid = 0; + spin_unlock(&sbinfo->si_plink_maint_lock); + wake_up_all(&sbinfo->si_plink_wq); +} + +int au_plink_maint_enter(struct super_block *sb) +{ + int err; + struct au_sbinfo *sbinfo; + + err = 0; + sbinfo = au_sbi(sb); + /* make sure i am the only one in this fs */ + si_write_lock(sb, AuLock_FLUSH); + if (au_opt_test(au_mntflags(sb), PLINK)) { + spin_lock(&sbinfo->si_plink_maint_lock); + if (!sbinfo->si_plink_maint_pid) + sbinfo->si_plink_maint_pid = current->pid; + else + err = -EBUSY; + spin_unlock(&sbinfo->si_plink_maint_lock); + } + si_write_unlock(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_DEBUG +void au_plink_list(struct super_block *sb) +{ + int i; + struct au_sbinfo *sbinfo; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + struct au_icntnr *icntnr; + + SiMustAnyLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + for (i = 0; i < AuPlink_NHASH; i++) { + hbl = sbinfo->si_plink + i; + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(icntnr, pos, hbl, plink) + AuDbg("%lu\n", icntnr->vfs_inode.i_ino); + hlist_bl_unlock(hbl); + } +} +#endif + +/* is the inode pseudo-linked? */ +int au_plink_test(struct inode *inode) +{ + int found, i; + struct au_sbinfo *sbinfo; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + struct au_icntnr *icntnr; + + sbinfo = au_sbi(inode->i_sb); + AuRwMustAnyLock(&sbinfo->si_rwsem); + AuDebugOn(!au_opt_test(au_mntflags(inode->i_sb), PLINK)); + AuDebugOn(au_plink_maint(inode->i_sb, AuLock_NOPLM)); + + found = 0; + i = au_plink_hash(inode->i_ino); + hbl = sbinfo->si_plink + i; + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(icntnr, pos, hbl, plink) + if (&icntnr->vfs_inode == inode) { + found = 1; + break; + } + hlist_bl_unlock(hbl); + return found; +} + +/* ---------------------------------------------------------------------- */ + +/* + * generate a name for plink. + * the file will be stored under AUFS_WH_PLINKDIR. + */ +/* 20 is max digits length of ulong 64 */ +#define PLINK_NAME_LEN ((20 + 1) * 2) + +static int plink_name(char *name, int len, struct inode *inode, + aufs_bindex_t bindex) +{ + int rlen; + struct inode *h_inode; + + h_inode = au_h_iptr(inode, bindex); + rlen = snprintf(name, len, "%lu.%lu", inode->i_ino, h_inode->i_ino); + return rlen; +} + +struct au_do_plink_lkup_args { + struct dentry **errp; + struct qstr *tgtname; + struct dentry *h_parent; + struct au_branch *br; +}; + +static struct dentry *au_do_plink_lkup(struct qstr *tgtname, + struct dentry *h_parent, + struct au_branch *br) +{ + struct dentry *h_dentry; + struct inode *h_inode; + + h_inode = d_inode(h_parent); + inode_lock_shared_nested(h_inode, AuLsc_I_CHILD2); + h_dentry = vfsub_lkup_one(tgtname, h_parent); + inode_unlock_shared(h_inode); + return h_dentry; +} + +static void au_call_do_plink_lkup(void *args) +{ + struct au_do_plink_lkup_args *a = args; + *a->errp = au_do_plink_lkup(a->tgtname, a->h_parent, a->br); +} + +/* lookup the plink-ed @inode under the branch at @bindex */ +struct dentry *au_plink_lkup(struct inode *inode, aufs_bindex_t bindex) +{ + struct dentry *h_dentry, *h_parent; + struct au_branch *br; + int wkq_err; + char a[PLINK_NAME_LEN]; + struct qstr tgtname = QSTR_INIT(a, 0); + + AuDebugOn(au_plink_maint(inode->i_sb, AuLock_NOPLM)); + + br = au_sbr(inode->i_sb, bindex); + h_parent = br->br_wbr->wbr_plink; + tgtname.len = plink_name(a, sizeof(a), inode, bindex); + + if (!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) { + struct au_do_plink_lkup_args args = { + .errp = &h_dentry, + .tgtname = &tgtname, + .h_parent = h_parent, + .br = br + }; + + wkq_err = au_wkq_wait(au_call_do_plink_lkup, &args); + if (unlikely(wkq_err)) + h_dentry = ERR_PTR(wkq_err); + } else + h_dentry = au_do_plink_lkup(&tgtname, h_parent, br); + + return h_dentry; +} + +/* create a pseudo-link */ +static int do_whplink(struct qstr *tgt, struct dentry *h_parent, + struct dentry *h_dentry, struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = au_br_mnt(br) + }; + struct inode *h_dir, *delegated; + + h_dir = d_inode(h_parent); + inode_lock_nested(h_dir, AuLsc_I_CHILD2); +again: + h_path.dentry = vfsub_lkup_one(tgt, h_parent); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + err = 0; + /* wh.plink dir is not monitored */ + /* todo: is it really safe? */ + if (d_is_positive(h_path.dentry) + && d_inode(h_path.dentry) != d_inode(h_dentry)) { + delegated = NULL; + err = vfsub_unlink(h_dir, &h_path, &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + dput(h_path.dentry); + h_path.dentry = NULL; + if (!err) + goto again; + } + if (!err && d_is_negative(h_path.dentry)) { + delegated = NULL; + err = vfsub_link(h_dentry, h_dir, &h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + } + dput(h_path.dentry); + +out: + inode_unlock(h_dir); + return err; +} + +struct do_whplink_args { + int *errp; + struct qstr *tgt; + struct dentry *h_parent; + struct dentry *h_dentry; + struct au_branch *br; +}; + +static void call_do_whplink(void *args) +{ + struct do_whplink_args *a = args; + *a->errp = do_whplink(a->tgt, a->h_parent, a->h_dentry, a->br); +} + +static int whplink(struct dentry *h_dentry, struct inode *inode, + aufs_bindex_t bindex, struct au_branch *br) +{ + int err, wkq_err; + struct au_wbr *wbr; + struct dentry *h_parent; + char a[PLINK_NAME_LEN]; + struct qstr tgtname = QSTR_INIT(a, 0); + + wbr = au_sbr(inode->i_sb, bindex)->br_wbr; + h_parent = wbr->wbr_plink; + tgtname.len = plink_name(a, sizeof(a), inode, bindex); + + /* always superio. */ + if (!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)) { + struct do_whplink_args args = { + .errp = &err, + .tgt = &tgtname, + .h_parent = h_parent, + .h_dentry = h_dentry, + .br = br + }; + wkq_err = au_wkq_wait(call_do_whplink, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } else + err = do_whplink(&tgtname, h_parent, h_dentry, br); + + return err; +} + +/* + * create a new pseudo-link for @h_dentry on @bindex. + * the linked inode is held in aufs @inode. + */ +void au_plink_append(struct inode *inode, aufs_bindex_t bindex, + struct dentry *h_dentry) +{ + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + struct au_icntnr *icntnr; + int found, err, cnt, i; + + sb = inode->i_sb; + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + found = au_plink_test(inode); + if (found) + return; + + i = au_plink_hash(inode->i_ino); + hbl = sbinfo->si_plink + i; + au_igrab(inode); + + hlist_bl_lock(hbl); + hlist_bl_for_each_entry(icntnr, pos, hbl, plink) { + if (&icntnr->vfs_inode == inode) { + found = 1; + break; + } + } + if (!found) { + icntnr = container_of(inode, struct au_icntnr, vfs_inode); + hlist_bl_add_head(&icntnr->plink, hbl); + } + hlist_bl_unlock(hbl); + if (!found) { + cnt = au_hbl_count(hbl); +#define msg "unexpectedly unbalanced or too many pseudo-links" + if (cnt > AUFS_PLINK_WARN) + AuWarn1(msg ", %d\n", cnt); +#undef msg + err = whplink(h_dentry, inode, bindex, au_sbr(sb, bindex)); + if (unlikely(err)) { + pr_warn("err %d, damaged pseudo link.\n", err); + au_hbl_del(&icntnr->plink, hbl); + iput(&icntnr->vfs_inode); + } + } else + iput(&icntnr->vfs_inode); +} + +/* free all plinks */ +void au_plink_put(struct super_block *sb, int verbose) +{ + int i, warned; + struct au_sbinfo *sbinfo; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos, *tmp; + struct au_icntnr *icntnr; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + /* no spin_lock since sbinfo is write-locked */ + warned = 0; + for (i = 0; i < AuPlink_NHASH; i++) { + hbl = sbinfo->si_plink + i; + if (!warned && verbose && !hlist_bl_empty(hbl)) { + pr_warn("pseudo-link is not flushed"); + warned = 1; + } + hlist_bl_for_each_entry_safe(icntnr, pos, tmp, hbl, plink) + iput(&icntnr->vfs_inode); + INIT_HLIST_BL_HEAD(hbl); + } +} + +void au_plink_clean(struct super_block *sb, int verbose) +{ + struct dentry *root; + + root = sb->s_root; + aufs_write_lock(root); + if (au_opt_test(au_mntflags(sb), PLINK)) + au_plink_put(sb, verbose); + aufs_write_unlock(root); +} + +static int au_plink_do_half_refresh(struct inode *inode, aufs_bindex_t br_id) +{ + int do_put; + aufs_bindex_t btop, bbot, bindex; + + do_put = 0; + btop = au_ibtop(inode); + bbot = au_ibbot(inode); + if (btop >= 0) { + for (bindex = btop; bindex <= bbot; bindex++) { + if (!au_h_iptr(inode, bindex) + || au_ii_br_id(inode, bindex) != br_id) + continue; + au_set_h_iptr(inode, bindex, NULL, 0); + do_put = 1; + break; + } + if (do_put) + for (bindex = btop; bindex <= bbot; bindex++) + if (au_h_iptr(inode, bindex)) { + do_put = 0; + break; + } + } else + do_put = 1; + + return do_put; +} + +/* free the plinks on a branch specified by @br_id */ +void au_plink_half_refresh(struct super_block *sb, aufs_bindex_t br_id) +{ + struct au_sbinfo *sbinfo; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos, *tmp; + struct au_icntnr *icntnr; + struct inode *inode; + int i, do_put; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + AuDebugOn(!au_opt_test(au_mntflags(sb), PLINK)); + AuDebugOn(au_plink_maint(sb, AuLock_NOPLM)); + + /* no bit_lock since sbinfo is write-locked */ + for (i = 0; i < AuPlink_NHASH; i++) { + hbl = sbinfo->si_plink + i; + hlist_bl_for_each_entry_safe(icntnr, pos, tmp, hbl, plink) { + inode = au_igrab(&icntnr->vfs_inode); + ii_write_lock_child(inode); + do_put = au_plink_do_half_refresh(inode, br_id); + if (do_put) { + hlist_bl_del(&icntnr->plink); + iput(inode); + } + ii_write_unlock(inode); + iput(inode); + } + } +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/poll.c +++ linux-azure-5.13-5.13.0/fs/aufs/poll.c @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * poll operation + * There is only one filesystem which implements ->poll operation, currently. + */ + +#include "aufs.h" + +__poll_t aufs_poll(struct file *file, struct poll_table_struct *pt) +{ + __poll_t mask; + struct file *h_file; + struct super_block *sb; + + /* We should pretend an error happened. */ + mask = EPOLLERR /* | EPOLLIN | EPOLLOUT */; + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLMW); + + h_file = au_read_pre(file, /*keep_fi*/0, /*lsc*/0); + if (IS_ERR(h_file)) { + AuDbg("h_file %ld\n", PTR_ERR(h_file)); + goto out; + } + + mask = vfs_poll(h_file, pt); + fput(h_file); /* instead of au_read_post() */ + +out: + si_read_unlock(sb); + if (mask & EPOLLERR) + AuDbg("mask 0x%x\n", mask); + return mask; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/posix_acl.c +++ linux-azure-5.13-5.13.0/fs/aufs/posix_acl.c @@ -0,0 +1,106 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2014-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * posix acl operations + */ + +#include +#include "aufs.h" + +struct posix_acl *aufs_get_acl(struct inode *inode, int type) +{ + struct posix_acl *acl; + int err; + aufs_bindex_t bindex; + struct inode *h_inode; + struct super_block *sb; + + acl = NULL; + sb = inode->i_sb; + si_read_lock(sb, AuLock_FLUSH); + ii_read_lock_child(inode); + if (!(sb->s_flags & SB_POSIXACL)) + goto out; + + bindex = au_ibtop(inode); + h_inode = au_h_iptr(inode, bindex); + if (unlikely(!h_inode + || ((h_inode->i_mode & S_IFMT) + != (inode->i_mode & S_IFMT)))) { + err = au_busy_or_stale(); + acl = ERR_PTR(err); + goto out; + } + + /* always topmost only */ + acl = get_acl(h_inode, type); + if (IS_ERR(acl)) + forget_cached_acl(inode, type); + else + set_cached_acl(inode, type, acl); + +out: + ii_read_unlock(inode); + si_read_unlock(sb); + + AuTraceErrPtr(acl); + return acl; +} + +int aufs_set_acl(struct user_namespace *userns, struct inode *inode, + struct posix_acl *acl, int type) +{ + int err; + ssize_t ssz; + struct dentry *dentry; + struct au_sxattr arg = { + .type = AU_ACL_SET, + .u.acl_set = { + .acl = acl, + .type = type + }, + }; + + IMustLock(inode); + + if (inode->i_ino == AUFS_ROOT_INO) + dentry = dget(inode->i_sb->s_root); + else { + dentry = d_find_alias(inode); + if (!dentry) + dentry = d_find_any_alias(inode); + if (!dentry) { + pr_warn("cannot handle this inode, " + "please report to aufs-users ML\n"); + err = -ENOENT; + goto out; + } + } + + ssz = au_sxattr(dentry, inode, &arg); + /* forget even it if succeeds since the branch might set differently */ + forget_cached_acl(inode, type); + dput(dentry); + err = ssz; + if (ssz >= 0) + err = 0; + +out: + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/procfs.c +++ linux-azure-5.13-5.13.0/fs/aufs/procfs.c @@ -0,0 +1,170 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2010-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * procfs interfaces + */ + +#include +#include "aufs.h" + +static int au_procfs_plm_release(struct inode *inode, struct file *file) +{ + struct au_sbinfo *sbinfo; + + sbinfo = file->private_data; + if (sbinfo) { + au_plink_maint_leave(sbinfo); + kobject_put(&sbinfo->si_kobj); + } + + return 0; +} + +static void au_procfs_plm_write_clean(struct file *file) +{ + struct au_sbinfo *sbinfo; + + sbinfo = file->private_data; + if (sbinfo) + au_plink_clean(sbinfo->si_sb, /*verbose*/0); +} + +static int au_procfs_plm_write_si(struct file *file, unsigned long id) +{ + int err; + struct super_block *sb; + struct au_sbinfo *sbinfo; + struct hlist_bl_node *pos; + + err = -EBUSY; + if (unlikely(file->private_data)) + goto out; + + sb = NULL; + /* don't use au_sbilist_lock() here */ + hlist_bl_lock(&au_sbilist); + hlist_bl_for_each_entry(sbinfo, pos, &au_sbilist, si_list) + if (id == sysaufs_si_id(sbinfo)) { + if (kobject_get_unless_zero(&sbinfo->si_kobj)) + sb = sbinfo->si_sb; + break; + } + hlist_bl_unlock(&au_sbilist); + + err = -EINVAL; + if (unlikely(!sb)) + goto out; + + err = au_plink_maint_enter(sb); + if (!err) + /* keep kobject_get() */ + file->private_data = sbinfo; + else + kobject_put(&sbinfo->si_kobj); +out: + return err; +} + +/* + * Accept a valid "si=xxxx" only. + * Once it is accepted successfully, accept "clean" too. + */ +static ssize_t au_procfs_plm_write(struct file *file, const char __user *ubuf, + size_t count, loff_t *ppos) +{ + ssize_t err; + unsigned long id; + /* last newline is allowed */ + char buf[3 + sizeof(unsigned long) * 2 + 1]; + + err = -EACCES; + if (unlikely(!capable(CAP_SYS_ADMIN))) + goto out; + + err = -EINVAL; + if (unlikely(count > sizeof(buf))) + goto out; + + err = copy_from_user(buf, ubuf, count); + if (unlikely(err)) { + err = -EFAULT; + goto out; + } + buf[count] = 0; + + err = -EINVAL; + if (!strcmp("clean", buf)) { + au_procfs_plm_write_clean(file); + goto out_success; + } else if (unlikely(strncmp("si=", buf, 3))) + goto out; + + err = kstrtoul(buf + 3, 16, &id); + if (unlikely(err)) + goto out; + + err = au_procfs_plm_write_si(file, id); + if (unlikely(err)) + goto out; + +out_success: + err = count; /* success */ +out: + return err; +} + +static const struct proc_ops au_procfs_plm_op = { + .proc_write = au_procfs_plm_write, + .proc_release = au_procfs_plm_release +}; + +/* ---------------------------------------------------------------------- */ + +static struct proc_dir_entry *au_procfs_dir; + +void au_procfs_fin(void) +{ + remove_proc_entry(AUFS_PLINK_MAINT_NAME, au_procfs_dir); + remove_proc_entry(AUFS_PLINK_MAINT_DIR, NULL); +} + +int __init au_procfs_init(void) +{ + int err; + struct proc_dir_entry *entry; + + err = -ENOMEM; + au_procfs_dir = proc_mkdir(AUFS_PLINK_MAINT_DIR, NULL); + if (unlikely(!au_procfs_dir)) + goto out; + + entry = proc_create(AUFS_PLINK_MAINT_NAME, S_IFREG | 0200, + au_procfs_dir, &au_procfs_plm_op); + if (unlikely(!entry)) + goto out_dir; + + err = 0; + goto out; /* success */ + + +out_dir: + remove_proc_entry(AUFS_PLINK_MAINT_DIR, NULL); +out: + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/rdu.c +++ linux-azure-5.13-5.13.0/fs/aufs/rdu.c @@ -0,0 +1,384 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * readdir in userspace. + */ + +#include +#include +#include +#include "aufs.h" + +/* bits for struct aufs_rdu.flags */ +#define AuRdu_CALLED 1 +#define AuRdu_CONT (1 << 1) +#define AuRdu_FULL (1 << 2) +#define au_ftest_rdu(flags, name) ((flags) & AuRdu_##name) +#define au_fset_rdu(flags, name) \ + do { (flags) |= AuRdu_##name; } while (0) +#define au_fclr_rdu(flags, name) \ + do { (flags) &= ~AuRdu_##name; } while (0) + +struct au_rdu_arg { + struct dir_context ctx; + struct aufs_rdu *rdu; + union au_rdu_ent_ul ent; + unsigned long end; + + struct super_block *sb; + int err; +}; + +static int au_rdu_fill(struct dir_context *ctx, const char *name, int nlen, + loff_t offset, u64 h_ino, unsigned int d_type) +{ + int err, len; + struct au_rdu_arg *arg = container_of(ctx, struct au_rdu_arg, ctx); + struct aufs_rdu *rdu = arg->rdu; + struct au_rdu_ent ent; + + err = 0; + arg->err = 0; + au_fset_rdu(rdu->cookie.flags, CALLED); + len = au_rdu_len(nlen); + if (arg->ent.ul + len < arg->end) { + ent.ino = h_ino; + ent.bindex = rdu->cookie.bindex; + ent.type = d_type; + ent.nlen = nlen; + if (unlikely(nlen > AUFS_MAX_NAMELEN)) + ent.type = DT_UNKNOWN; + + /* unnecessary to support mmap_sem since this is a dir */ + err = -EFAULT; + if (copy_to_user(arg->ent.e, &ent, sizeof(ent))) + goto out; + if (copy_to_user(arg->ent.e->name, name, nlen)) + goto out; + /* the terminating NULL */ + if (__put_user(0, arg->ent.e->name + nlen)) + goto out; + err = 0; + /* AuDbg("%p, %.*s\n", arg->ent.p, nlen, name); */ + arg->ent.ul += len; + rdu->rent++; + } else { + err = -EFAULT; + au_fset_rdu(rdu->cookie.flags, FULL); + rdu->full = 1; + rdu->tail = arg->ent; + } + +out: + /* AuTraceErr(err); */ + return err; +} + +static int au_rdu_do(struct file *h_file, struct au_rdu_arg *arg) +{ + int err; + loff_t offset; + struct au_rdu_cookie *cookie = &arg->rdu->cookie; + + /* we don't have to care (FMODE_32BITHASH | FMODE_64BITHASH) for ext4 */ + offset = vfsub_llseek(h_file, cookie->h_pos, SEEK_SET); + err = offset; + if (unlikely(offset != cookie->h_pos)) + goto out; + + err = 0; + do { + arg->err = 0; + au_fclr_rdu(cookie->flags, CALLED); + /* smp_mb(); */ + err = vfsub_iterate_dir(h_file, &arg->ctx); + if (err >= 0) + err = arg->err; + } while (!err + && au_ftest_rdu(cookie->flags, CALLED) + && !au_ftest_rdu(cookie->flags, FULL)); + cookie->h_pos = h_file->f_pos; + +out: + AuTraceErr(err); + return err; +} + +static int au_rdu(struct file *file, struct aufs_rdu *rdu) +{ + int err; + aufs_bindex_t bbot; + struct au_rdu_arg arg = { + .ctx = { + .actor = au_rdu_fill + } + }; + struct dentry *dentry; + struct inode *inode; + struct file *h_file; + struct au_rdu_cookie *cookie = &rdu->cookie; + + /* VERIFY_WRITE */ + err = !access_ok(rdu->ent.e, rdu->sz); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + rdu->rent = 0; + rdu->tail = rdu->ent; + rdu->full = 0; + arg.rdu = rdu; + arg.ent = rdu->ent; + arg.end = arg.ent.ul; + arg.end += rdu->sz; + + err = -ENOTDIR; + if (unlikely(!file->f_op->iterate && !file->f_op->iterate_shared)) + goto out; + + err = security_file_permission(file, MAY_READ); + AuTraceErr(err); + if (unlikely(err)) + goto out; + + dentry = file->f_path.dentry; + inode = d_inode(dentry); + inode_lock_shared(inode); + + arg.sb = inode->i_sb; + err = si_read_lock(arg.sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_mtx; + err = au_alive_dir(dentry); + if (unlikely(err)) + goto out_si; + /* todo: reval? */ + fi_read_lock(file); + + err = -EAGAIN; + if (unlikely(au_ftest_rdu(cookie->flags, CONT) + && cookie->generation != au_figen(file))) + goto out_unlock; + + err = 0; + if (!rdu->blk) { + rdu->blk = au_sbi(arg.sb)->si_rdblk; + if (!rdu->blk) + rdu->blk = au_dir_size(file, /*dentry*/NULL); + } + bbot = au_fbtop(file); + if (cookie->bindex < bbot) + cookie->bindex = bbot; + bbot = au_fbbot_dir(file); + /* AuDbg("b%d, b%d\n", cookie->bindex, bbot); */ + for (; !err && cookie->bindex <= bbot; + cookie->bindex++, cookie->h_pos = 0) { + h_file = au_hf_dir(file, cookie->bindex); + if (!h_file) + continue; + + au_fclr_rdu(cookie->flags, FULL); + err = au_rdu_do(h_file, &arg); + AuTraceErr(err); + if (unlikely(au_ftest_rdu(cookie->flags, FULL) || err)) + break; + } + AuDbg("rent %llu\n", rdu->rent); + + if (!err && !au_ftest_rdu(cookie->flags, CONT)) { + rdu->shwh = !!au_opt_test(au_sbi(arg.sb)->si_mntflags, SHWH); + au_fset_rdu(cookie->flags, CONT); + cookie->generation = au_figen(file); + } + + ii_read_lock_child(inode); + fsstack_copy_attr_atime(inode, au_h_iptr(inode, au_ibtop(inode))); + ii_read_unlock(inode); + +out_unlock: + fi_read_unlock(file); +out_si: + si_read_unlock(arg.sb); +out_mtx: + inode_unlock_shared(inode); +out: + AuTraceErr(err); + return err; +} + +static int au_rdu_ino(struct file *file, struct aufs_rdu *rdu) +{ + int err; + ino_t ino; + unsigned long long nent; + union au_rdu_ent_ul *u; + struct au_rdu_ent ent; + struct super_block *sb; + + err = 0; + nent = rdu->nent; + u = &rdu->ent; + sb = file->f_path.dentry->d_sb; + si_read_lock(sb, AuLock_FLUSH); + while (nent-- > 0) { + /* unnecessary to support mmap_sem since this is a dir */ + err = copy_from_user(&ent, u->e, sizeof(ent)); + if (!err) + /* VERIFY_WRITE */ + err = !access_ok(&u->e->ino, sizeof(ino)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + break; + } + + /* AuDbg("b%d, i%llu\n", ent.bindex, ent.ino); */ + if (!ent.wh) + err = au_ino(sb, ent.bindex, ent.ino, ent.type, &ino); + else + err = au_wh_ino(sb, ent.bindex, ent.ino, ent.type, + &ino); + if (unlikely(err)) { + AuTraceErr(err); + break; + } + + err = __put_user(ino, &u->e->ino); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + break; + } + u->ul += au_rdu_len(ent.nlen); + } + si_read_unlock(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_rdu_verify(struct aufs_rdu *rdu) +{ + AuDbg("rdu{%llu, %p, %u | %u | %llu, %u, %u | " + "%llu, b%d, 0x%x, g%u}\n", + rdu->sz, rdu->ent.e, rdu->verify[AufsCtlRduV_SZ], + rdu->blk, + rdu->rent, rdu->shwh, rdu->full, + rdu->cookie.h_pos, rdu->cookie.bindex, rdu->cookie.flags, + rdu->cookie.generation); + + if (rdu->verify[AufsCtlRduV_SZ] == sizeof(*rdu)) + return 0; + + AuDbg("%u:%u\n", + rdu->verify[AufsCtlRduV_SZ], (unsigned int)sizeof(*rdu)); + return -EINVAL; +} + +long au_rdu_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err, e; + struct aufs_rdu rdu; + void __user *p = (void __user *)arg; + + err = copy_from_user(&rdu, p, sizeof(rdu)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + err = au_rdu_verify(&rdu); + if (unlikely(err)) + goto out; + + switch (cmd) { + case AUFS_CTL_RDU: + err = au_rdu(file, &rdu); + if (unlikely(err)) + break; + + e = copy_to_user(p, &rdu, sizeof(rdu)); + if (unlikely(e)) { + err = -EFAULT; + AuTraceErr(err); + } + break; + case AUFS_CTL_RDU_INO: + err = au_rdu_ino(file, &rdu); + break; + + default: + /* err = -ENOTTY; */ + err = -EINVAL; + } + +out: + AuTraceErr(err); + return err; +} + +#ifdef CONFIG_COMPAT +long au_rdu_compat_ioctl(struct file *file, unsigned int cmd, unsigned long arg) +{ + long err, e; + struct aufs_rdu rdu; + void __user *p = compat_ptr(arg); + + /* todo: get_user()? */ + err = copy_from_user(&rdu, p, sizeof(rdu)); + if (unlikely(err)) { + err = -EFAULT; + AuTraceErr(err); + goto out; + } + rdu.ent.e = compat_ptr(rdu.ent.ul); + err = au_rdu_verify(&rdu); + if (unlikely(err)) + goto out; + + switch (cmd) { + case AUFS_CTL_RDU: + err = au_rdu(file, &rdu); + if (unlikely(err)) + break; + + rdu.ent.ul = ptr_to_compat(rdu.ent.e); + rdu.tail.ul = ptr_to_compat(rdu.tail.e); + e = copy_to_user(p, &rdu, sizeof(rdu)); + if (unlikely(e)) { + err = -EFAULT; + AuTraceErr(err); + } + break; + case AUFS_CTL_RDU_INO: + err = au_rdu_ino(file, &rdu); + break; + + default: + /* err = -ENOTTY; */ + err = -EINVAL; + } + +out: + AuTraceErr(err); + return err; +} +#endif only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/rwsem.h +++ linux-azure-5.13-5.13.0/fs/aufs/rwsem.h @@ -0,0 +1,85 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * simple read-write semaphore wrappers + */ + +#ifndef __AUFS_RWSEM_H__ +#define __AUFS_RWSEM_H__ + +#ifdef __KERNEL__ + +#include "debug.h" + +/* in the future, the name 'au_rwsem' will be totally gone */ +#define au_rwsem rw_semaphore + +/* to debug easier, do not make them inlined functions */ +#define AuRwMustNoWaiters(rw) AuDebugOn(rwsem_is_contended(rw)) + +#ifdef CONFIG_LOCKDEP +/* rwsem_is_locked() is unusable */ +#define AuRwMustReadLock(rw) AuDebugOn(IS_ENABLED(CONFIG_LOCKDEP) \ + && !lockdep_recursing(current) \ + && debug_locks \ + && !lockdep_is_held_type(rw, 1)) +#define AuRwMustWriteLock(rw) AuDebugOn(IS_ENABLED(CONFIG_LOCKDEP) \ + && !lockdep_recursing(current) \ + && debug_locks \ + && !lockdep_is_held_type(rw, 0)) +#define AuRwMustAnyLock(rw) AuDebugOn(IS_ENABLED(CONFIG_LOCKDEP) \ + && !lockdep_recursing(current) \ + && debug_locks \ + && !lockdep_is_held(rw)) +#define AuRwDestroy(rw) AuDebugOn(IS_ENABLED(CONFIG_LOCKDEP) \ + && !lockdep_recursing(current) \ + && debug_locks \ + && lockdep_is_held(rw)) +#else +#define AuRwMustReadLock(rw) do {} while (0) +#define AuRwMustWriteLock(rw) do {} while (0) +#define AuRwMustAnyLock(rw) do {} while (0) +#define AuRwDestroy(rw) do {} while (0) +#endif + +#define au_rw_init(rw) init_rwsem(rw) + +#define au_rw_init_wlock(rw) do { \ + au_rw_init(rw); \ + down_write(rw); \ + } while (0) + +#define au_rw_init_wlock_nested(rw, lsc) do { \ + au_rw_init(rw); \ + down_write_nested(rw, lsc); \ + } while (0) + +#define au_rw_read_lock(rw) down_read(rw) +#define au_rw_read_lock_nested(rw, lsc) down_read_nested(rw, lsc) +#define au_rw_read_unlock(rw) up_read(rw) +#define au_rw_dgrade_lock(rw) downgrade_write(rw) +#define au_rw_write_lock(rw) down_write(rw) +#define au_rw_write_lock_nested(rw, lsc) down_write_nested(rw, lsc) +#define au_rw_write_unlock(rw) up_write(rw) +/* why is not _nested version defined? */ +#define au_rw_read_trylock(rw) down_read_trylock(rw) +#define au_rw_write_trylock(rw) down_write_trylock(rw) + +#endif /* __KERNEL__ */ +#endif /* __AUFS_RWSEM_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/sbinfo.c +++ linux-azure-5.13-5.13.0/fs/aufs/sbinfo.c @@ -0,0 +1,314 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * superblock private data + */ + +#include +#include "aufs.h" + +/* + * they are necessary regardless sysfs is disabled. + */ +void au_si_free(struct kobject *kobj) +{ + int i; + struct au_sbinfo *sbinfo; + char *locked __maybe_unused; /* debug only */ + + sbinfo = container_of(kobj, struct au_sbinfo, si_kobj); + for (i = 0; i < AuPlink_NHASH; i++) + AuDebugOn(!hlist_bl_empty(sbinfo->si_plink + i)); + AuDebugOn(atomic_read(&sbinfo->si_nowait.nw_len)); + + AuLCntZero(au_lcnt_read(&sbinfo->si_ninodes, /*do_rev*/0)); + au_lcnt_fin(&sbinfo->si_ninodes, /*do_sync*/0); + AuLCntZero(au_lcnt_read(&sbinfo->si_nfiles, /*do_rev*/0)); + au_lcnt_fin(&sbinfo->si_nfiles, /*do_sync*/0); + + dbgaufs_si_fin(sbinfo); + au_rw_write_lock(&sbinfo->si_rwsem); + au_br_free(sbinfo); + au_rw_write_unlock(&sbinfo->si_rwsem); + + au_kfree_try_rcu(sbinfo->si_branch); + mutex_destroy(&sbinfo->si_xib_mtx); + AuRwDestroy(&sbinfo->si_rwsem); + + au_lcnt_wait_for_fin(&sbinfo->si_ninodes); + /* si_nfiles is waited too */ + au_kfree_rcu(sbinfo); +} + +int au_si_alloc(struct super_block *sb) +{ + int err, i; + struct au_sbinfo *sbinfo; + + err = -ENOMEM; + sbinfo = kzalloc(sizeof(*sbinfo), GFP_NOFS); + if (unlikely(!sbinfo)) + goto out; + + /* will be reallocated separately */ + sbinfo->si_branch = kzalloc(sizeof(*sbinfo->si_branch), GFP_NOFS); + if (unlikely(!sbinfo->si_branch)) + goto out_sbinfo; + + err = sysaufs_si_init(sbinfo); + if (!err) { + dbgaufs_si_null(sbinfo); + err = dbgaufs_si_init(sbinfo); + if (unlikely(err)) + kobject_put(&sbinfo->si_kobj); + } + if (unlikely(err)) + goto out_br; + + au_nwt_init(&sbinfo->si_nowait); + au_rw_init_wlock(&sbinfo->si_rwsem); + + au_lcnt_init(&sbinfo->si_ninodes, /*release*/NULL); + au_lcnt_init(&sbinfo->si_nfiles, /*release*/NULL); + + sbinfo->si_bbot = -1; + sbinfo->si_last_br_id = AUFS_BRANCH_MAX / 2; + + sbinfo->si_wbr_copyup = AuWbrCopyup_Def; + sbinfo->si_wbr_create = AuWbrCreate_Def; + sbinfo->si_wbr_copyup_ops = au_wbr_copyup_ops + sbinfo->si_wbr_copyup; + sbinfo->si_wbr_create_ops = au_wbr_create_ops + sbinfo->si_wbr_create; + + au_fhsm_init(sbinfo); + + sbinfo->si_mntflags = au_opts_plink(AuOpt_Def); + + sbinfo->si_xino_jiffy = jiffies; + sbinfo->si_xino_expire + = msecs_to_jiffies(AUFS_XINO_DEF_SEC * MSEC_PER_SEC); + mutex_init(&sbinfo->si_xib_mtx); + /* leave si_xib_last_pindex and si_xib_next_bit */ + + INIT_HLIST_BL_HEAD(&sbinfo->si_aopen); + + sbinfo->si_rdcache = msecs_to_jiffies(AUFS_RDCACHE_DEF * MSEC_PER_SEC); + sbinfo->si_rdblk = AUFS_RDBLK_DEF; + sbinfo->si_rdhash = AUFS_RDHASH_DEF; + sbinfo->si_dirwh = AUFS_DIRWH_DEF; + + for (i = 0; i < AuPlink_NHASH; i++) + INIT_HLIST_BL_HEAD(sbinfo->si_plink + i); + init_waitqueue_head(&sbinfo->si_plink_wq); + spin_lock_init(&sbinfo->si_plink_maint_lock); + + INIT_HLIST_BL_HEAD(&sbinfo->si_files); + + /* with getattr by default */ + sbinfo->si_iop_array = aufs_iop; + + /* leave other members for sysaufs and si_mnt. */ + sbinfo->si_sb = sb; + sb->s_fs_info = sbinfo; + si_pid_set(sb); + return 0; /* success */ + +out_br: + au_kfree_try_rcu(sbinfo->si_branch); +out_sbinfo: + au_kfree_rcu(sbinfo); +out: + return err; +} + +int au_sbr_realloc(struct au_sbinfo *sbinfo, int nbr, int may_shrink) +{ + int err, sz; + struct au_branch **brp; + + AuRwMustWriteLock(&sbinfo->si_rwsem); + + err = -ENOMEM; + sz = sizeof(*brp) * (sbinfo->si_bbot + 1); + if (unlikely(!sz)) + sz = sizeof(*brp); + brp = au_kzrealloc(sbinfo->si_branch, sz, sizeof(*brp) * nbr, GFP_NOFS, + may_shrink); + if (brp) { + sbinfo->si_branch = brp; + err = 0; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +unsigned int au_sigen_inc(struct super_block *sb) +{ + unsigned int gen; + struct inode *inode; + + SiMustWriteLock(sb); + + gen = ++au_sbi(sb)->si_generation; + au_update_digen(sb->s_root); + inode = d_inode(sb->s_root); + au_update_iigen(inode, /*half*/0); + inode_inc_iversion(inode); + return gen; +} + +aufs_bindex_t au_new_br_id(struct super_block *sb) +{ + aufs_bindex_t br_id; + int i; + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + for (i = 0; i <= AUFS_BRANCH_MAX; i++) { + br_id = ++sbinfo->si_last_br_id; + AuDebugOn(br_id < 0); + if (br_id && au_br_index(sb, br_id) < 0) + return br_id; + } + + return -1; +} + +/* ---------------------------------------------------------------------- */ + +/* it is ok that new 'nwt' tasks are appended while we are sleeping */ +int si_read_lock(struct super_block *sb, int flags) +{ + int err; + + err = 0; + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + + si_noflush_read_lock(sb); + err = au_plink_maint(sb, flags); + if (unlikely(err)) + si_read_unlock(sb); + + return err; +} + +int si_write_lock(struct super_block *sb, int flags) +{ + int err; + + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + + si_noflush_write_lock(sb); + err = au_plink_maint(sb, flags); + if (unlikely(err)) + si_write_unlock(sb); + + return err; +} + +/* dentry and super_block lock. call at entry point */ +int aufs_read_lock(struct dentry *dentry, int flags) +{ + int err; + struct super_block *sb; + + sb = dentry->d_sb; + err = si_read_lock(sb, flags); + if (unlikely(err)) + goto out; + + if (au_ftest_lock(flags, DW)) + di_write_lock_child(dentry); + else + di_read_lock_child(dentry, flags); + + if (au_ftest_lock(flags, GEN)) { + err = au_digen_test(dentry, au_sigen(sb)); + if (!au_opt_test(au_mntflags(sb), UDBA_NONE)) + AuDebugOn(!err && au_dbrange_test(dentry)); + else if (!err) + err = au_dbrange_test(dentry); + if (unlikely(err)) + aufs_read_unlock(dentry, flags); + } + +out: + return err; +} + +void aufs_read_unlock(struct dentry *dentry, int flags) +{ + if (au_ftest_lock(flags, DW)) + di_write_unlock(dentry); + else + di_read_unlock(dentry, flags); + si_read_unlock(dentry->d_sb); +} + +void aufs_write_lock(struct dentry *dentry) +{ + si_write_lock(dentry->d_sb, AuLock_FLUSH | AuLock_NOPLMW); + di_write_lock_child(dentry); +} + +void aufs_write_unlock(struct dentry *dentry) +{ + di_write_unlock(dentry); + si_write_unlock(dentry->d_sb); +} + +int aufs_read_and_write_lock2(struct dentry *d1, struct dentry *d2, int flags) +{ + int err; + unsigned int sigen; + struct super_block *sb; + + sb = d1->d_sb; + err = si_read_lock(sb, flags); + if (unlikely(err)) + goto out; + + di_write_lock2_child(d1, d2, au_ftest_lock(flags, DIRS)); + + if (au_ftest_lock(flags, GEN)) { + sigen = au_sigen(sb); + err = au_digen_test(d1, sigen); + AuDebugOn(!err && au_dbrange_test(d1)); + if (!err) { + err = au_digen_test(d2, sigen); + AuDebugOn(!err && au_dbrange_test(d2)); + } + if (unlikely(err)) + aufs_read_and_write_unlock2(d1, d2); + } + +out: + return err; +} + +void aufs_read_and_write_unlock2(struct dentry *d1, struct dentry *d2) +{ + di_write_unlock2(d1, d2); + si_read_unlock(d1->d_sb); +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/super.c +++ linux-azure-5.13-5.13.0/fs/aufs/super.c @@ -0,0 +1,1053 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * mount and super_block operations + */ + +#include +#include +#include +#include +#include +#include "aufs.h" + +/* + * super_operations + */ +static struct inode *aufs_alloc_inode(struct super_block *sb __maybe_unused) +{ + struct au_icntnr *c; + + c = au_cache_alloc_icntnr(); + if (c) { + au_icntnr_init(c); + inode_set_iversion(&c->vfs_inode, 1); /* sigen(sb); */ + c->iinfo.ii_hinode = NULL; + return &c->vfs_inode; + } + return NULL; +} + +static void aufs_destroy_inode(struct inode *inode) +{ + if (!au_is_bad_inode(inode)) + au_iinfo_fin(inode); +} + +static void aufs_free_inode(struct inode *inode) +{ + au_cache_free_icntnr(container_of(inode, struct au_icntnr, vfs_inode)); +} + +struct inode *au_iget_locked(struct super_block *sb, ino_t ino) +{ + struct inode *inode; + int err; + + inode = iget_locked(sb, ino); + if (unlikely(!inode)) { + inode = ERR_PTR(-ENOMEM); + goto out; + } + if (!(inode->i_state & I_NEW)) + goto out; + + err = au_xigen_new(inode); + if (!err) + err = au_iinfo_init(inode); + if (!err) + inode_inc_iversion(inode); + else { + iget_failed(inode); + inode = ERR_PTR(err); + } + +out: + /* never return NULL */ + AuDebugOn(!inode); + AuTraceErrPtr(inode); + return inode; +} + +/* lock free root dinfo */ +static int au_show_brs(struct seq_file *seq, struct super_block *sb) +{ + int err; + aufs_bindex_t bindex, bbot; + struct path path; + struct au_hdentry *hdp; + struct au_branch *br; + au_br_perm_str_t perm; + + err = 0; + bbot = au_sbbot(sb); + bindex = 0; + hdp = au_hdentry(au_di(sb->s_root), bindex); + for (; !err && bindex <= bbot; bindex++, hdp++) { + br = au_sbr(sb, bindex); + path.mnt = au_br_mnt(br); + path.dentry = hdp->hd_dentry; + err = au_seq_path(seq, &path); + if (!err) { + au_optstr_br_perm(&perm, br->br_perm); + seq_printf(seq, "=%s", perm.a); + if (bindex != bbot) + seq_putc(seq, ':'); + } + } + if (unlikely(err || seq_has_overflowed(seq))) + err = -E2BIG; + + return err; +} + +static void au_gen_fmt(char *fmt, int len __maybe_unused, const char *pat, + const char *append) +{ + char *p; + + p = fmt; + while (*pat != ':') + *p++ = *pat++; + *p++ = *pat++; + strcpy(p, append); + AuDebugOn(strlen(fmt) >= len); +} + +static void au_show_wbr_create(struct seq_file *m, int v, + struct au_sbinfo *sbinfo) +{ + const char *pat; + char fmt[32]; + struct au_wbr_mfs *mfs; + + AuRwMustAnyLock(&sbinfo->si_rwsem); + + seq_puts(m, ",create="); + pat = au_optstr_wbr_create(v); + mfs = &sbinfo->si_wbr_mfs; + switch (v) { + case AuWbrCreate_TDP: + case AuWbrCreate_RR: + case AuWbrCreate_MFS: + case AuWbrCreate_PMFS: + seq_puts(m, pat); + break; + case AuWbrCreate_MFSRR: + case AuWbrCreate_TDMFS: + case AuWbrCreate_PMFSRR: + au_gen_fmt(fmt, sizeof(fmt), pat, "%llu"); + seq_printf(m, fmt, mfs->mfsrr_watermark); + break; + case AuWbrCreate_MFSV: + case AuWbrCreate_PMFSV: + au_gen_fmt(fmt, sizeof(fmt), pat, "%lu"); + seq_printf(m, fmt, + jiffies_to_msecs(mfs->mfs_expire) + / MSEC_PER_SEC); + break; + case AuWbrCreate_MFSRRV: + case AuWbrCreate_TDMFSV: + case AuWbrCreate_PMFSRRV: + au_gen_fmt(fmt, sizeof(fmt), pat, "%llu:%lu"); + seq_printf(m, fmt, mfs->mfsrr_watermark, + jiffies_to_msecs(mfs->mfs_expire) / MSEC_PER_SEC); + break; + default: + BUG(); + } +} + +static int au_show_xino(struct seq_file *seq, struct super_block *sb) +{ +#ifdef CONFIG_SYSFS + return 0; +#else + int err; + const int len = sizeof(AUFS_XINO_FNAME) - 1; + aufs_bindex_t bindex, brid; + struct qstr *name; + struct file *f; + struct dentry *d, *h_root; + struct au_branch *br; + + AuRwMustAnyLock(&sbinfo->si_rwsem); + + err = 0; + f = au_sbi(sb)->si_xib; + if (!f) + goto out; + + /* stop printing the default xino path on the first writable branch */ + h_root = NULL; + bindex = au_xi_root(sb, f->f_path.dentry); + if (bindex >= 0) { + br = au_sbr_sb(sb, bindex); + h_root = au_br_dentry(br); + } + + d = f->f_path.dentry; + name = &d->d_name; + /* safe ->d_parent because the file is unlinked */ + if (d->d_parent == h_root + && name->len == len + && !memcmp(name->name, AUFS_XINO_FNAME, len)) + goto out; + + seq_puts(seq, ",xino="); + err = au_xino_path(seq, f); + +out: + return err; +#endif +} + +/* seq_file will re-call me in case of too long string */ +static int aufs_show_options(struct seq_file *m, struct dentry *dentry) +{ + int err; + unsigned int mnt_flags, v; + struct super_block *sb; + struct au_sbinfo *sbinfo; + +#define AuBool(name, str) do { \ + v = au_opt_test(mnt_flags, name); \ + if (v != au_opt_test(AuOpt_Def, name)) \ + seq_printf(m, ",%s" #str, v ? "" : "no"); \ +} while (0) + +#define AuStr(name, str) do { \ + v = mnt_flags & AuOptMask_##name; \ + if (v != (AuOpt_Def & AuOptMask_##name)) \ + seq_printf(m, "," #str "=%s", au_optstr_##str(v)); \ +} while (0) + +#define AuUInt(name, str, val) do { \ + if (val != AUFS_##name##_DEF) \ + seq_printf(m, "," #str "=%u", val); \ +} while (0) + + sb = dentry->d_sb; + if (sb->s_flags & SB_POSIXACL) + seq_puts(m, ",acl"); +#if 0 /* reserved for future use */ + if (sb->s_flags & SB_I_VERSION) + seq_puts(m, ",i_version"); +#endif + + /* lock free root dinfo */ + si_noflush_read_lock(sb); + sbinfo = au_sbi(sb); + seq_printf(m, ",si=%lx", sysaufs_si_id(sbinfo)); + + mnt_flags = au_mntflags(sb); + if (au_opt_test(mnt_flags, XINO)) { + err = au_show_xino(m, sb); + if (unlikely(err)) + goto out; + } else + seq_puts(m, ",noxino"); + + AuBool(TRUNC_XINO, trunc_xino); + AuStr(UDBA, udba); + AuBool(SHWH, shwh); + AuBool(PLINK, plink); + AuBool(DIO, dio); + AuBool(DIRPERM1, dirperm1); + + v = sbinfo->si_wbr_create; + if (v != AuWbrCreate_Def) + au_show_wbr_create(m, v, sbinfo); + + v = sbinfo->si_wbr_copyup; + if (v != AuWbrCopyup_Def) + seq_printf(m, ",cpup=%s", au_optstr_wbr_copyup(v)); + + v = au_opt_test(mnt_flags, ALWAYS_DIROPQ); + if (v != au_opt_test(AuOpt_Def, ALWAYS_DIROPQ)) + seq_printf(m, ",diropq=%c", v ? 'a' : 'w'); + + AuUInt(DIRWH, dirwh, sbinfo->si_dirwh); + + v = jiffies_to_msecs(sbinfo->si_rdcache) / MSEC_PER_SEC; + AuUInt(RDCACHE, rdcache, v); + + AuUInt(RDBLK, rdblk, sbinfo->si_rdblk); + AuUInt(RDHASH, rdhash, sbinfo->si_rdhash); + + au_fhsm_show(m, sbinfo); + + AuBool(DIRREN, dirren); + AuBool(SUM, sum); + /* AuBool(SUM_W, wsum); */ + AuBool(WARN_PERM, warn_perm); + AuBool(VERBOSE, verbose); + +out: + /* be sure to print "br:" last */ + if (!sysaufs_brs) { + seq_puts(m, ",br:"); + au_show_brs(m, sb); + } + si_read_unlock(sb); + return 0; + +#undef AuBool +#undef AuStr +#undef AuUInt +} + +/* ---------------------------------------------------------------------- */ + +/* sum mode which returns the summation for statfs(2) */ + +static u64 au_add_till_max(u64 a, u64 b) +{ + u64 old; + + old = a; + a += b; + if (old <= a) + return a; + return ULLONG_MAX; +} + +static u64 au_mul_till_max(u64 a, long mul) +{ + u64 old; + + old = a; + a *= mul; + if (old <= a) + return a; + return ULLONG_MAX; +} + +static int au_statfs_sum(struct super_block *sb, struct kstatfs *buf) +{ + int err; + long bsize, factor; + u64 blocks, bfree, bavail, files, ffree; + aufs_bindex_t bbot, bindex, i; + unsigned char shared; + struct path h_path; + struct super_block *h_sb; + + err = 0; + bsize = LONG_MAX; + files = 0; + ffree = 0; + blocks = 0; + bfree = 0; + bavail = 0; + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + h_path.mnt = au_sbr_mnt(sb, bindex); + h_sb = h_path.mnt->mnt_sb; + shared = 0; + for (i = 0; !shared && i < bindex; i++) + shared = (au_sbr_sb(sb, i) == h_sb); + if (shared) + continue; + + /* sb->s_root for NFS is unreliable */ + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, buf); + if (unlikely(err)) + goto out; + + if (bsize > buf->f_bsize) { + /* + * we will reduce bsize, so we have to expand blocks + * etc. to match them again + */ + factor = (bsize / buf->f_bsize); + blocks = au_mul_till_max(blocks, factor); + bfree = au_mul_till_max(bfree, factor); + bavail = au_mul_till_max(bavail, factor); + bsize = buf->f_bsize; + } + + factor = (buf->f_bsize / bsize); + blocks = au_add_till_max(blocks, + au_mul_till_max(buf->f_blocks, factor)); + bfree = au_add_till_max(bfree, + au_mul_till_max(buf->f_bfree, factor)); + bavail = au_add_till_max(bavail, + au_mul_till_max(buf->f_bavail, factor)); + files = au_add_till_max(files, buf->f_files); + ffree = au_add_till_max(ffree, buf->f_ffree); + } + + buf->f_bsize = bsize; + buf->f_blocks = blocks; + buf->f_bfree = bfree; + buf->f_bavail = bavail; + buf->f_files = files; + buf->f_ffree = ffree; + buf->f_frsize = 0; + +out: + return err; +} + +static int aufs_statfs(struct dentry *dentry, struct kstatfs *buf) +{ + int err; + struct path h_path; + struct super_block *sb; + + /* lock free root dinfo */ + sb = dentry->d_sb; + si_noflush_read_lock(sb); + if (!au_opt_test(au_mntflags(sb), SUM)) { + /* sb->s_root for NFS is unreliable */ + h_path.mnt = au_sbr_mnt(sb, 0); + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, buf); + } else + err = au_statfs_sum(sb, buf); + si_read_unlock(sb); + + if (!err) { + buf->f_type = AUFS_SUPER_MAGIC; + buf->f_namelen = AUFS_MAX_NAMELEN; + memset(&buf->f_fsid, 0, sizeof(buf->f_fsid)); + } + /* buf->f_bsize = buf->f_blocks = buf->f_bfree = buf->f_bavail = -1; */ + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int aufs_sync_fs(struct super_block *sb, int wait) +{ + int err, e; + aufs_bindex_t bbot, bindex; + struct au_branch *br; + struct super_block *h_sb; + + err = 0; + si_noflush_read_lock(sb); + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (!au_br_writable(br->br_perm)) + continue; + + h_sb = au_sbr_sb(sb, bindex); + e = vfsub_sync_filesystem(h_sb, wait); + if (unlikely(e && !err)) + err = e; + /* go on even if an error happens */ + } + si_read_unlock(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* final actions when unmounting a file system */ +static void aufs_put_super(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + sbinfo = au_sbi(sb); + if (sbinfo) + kobject_put(&sbinfo->si_kobj); +} + +/* ---------------------------------------------------------------------- */ + +void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, + struct super_block *sb, void *arg) +{ + void *array; + unsigned long long n, sz; + + array = NULL; + n = 0; + if (!*hint) + goto out; + + if (*hint > ULLONG_MAX / sizeof(array)) { + array = ERR_PTR(-EMFILE); + pr_err("hint %llu\n", *hint); + goto out; + } + + sz = sizeof(array) * *hint; + array = kzalloc(sz, GFP_NOFS); + if (unlikely(!array)) + array = vzalloc(sz); + if (unlikely(!array)) { + array = ERR_PTR(-ENOMEM); + goto out; + } + + n = cb(sb, array, *hint, arg); + AuDebugOn(n > *hint); + +out: + *hint = n; + return array; +} + +static unsigned long long au_iarray_cb(struct super_block *sb, void *a, + unsigned long long max __maybe_unused, + void *arg) +{ + unsigned long long n; + struct inode **p, *inode; + struct list_head *head; + + n = 0; + p = a; + head = arg; + spin_lock(&sb->s_inode_list_lock); + list_for_each_entry(inode, head, i_sb_list) { + if (!au_is_bad_inode(inode) + && au_ii(inode)->ii_btop >= 0) { + spin_lock(&inode->i_lock); + if (atomic_read(&inode->i_count)) { + au_igrab(inode); + *p++ = inode; + n++; + AuDebugOn(n > max); + } + spin_unlock(&inode->i_lock); + } + } + spin_unlock(&sb->s_inode_list_lock); + + return n; +} + +struct inode **au_iarray_alloc(struct super_block *sb, unsigned long long *max) +{ + struct au_sbinfo *sbi; + + sbi = au_sbi(sb); + *max = au_lcnt_read(&sbi->si_ninodes, /*do_rev*/1); + return au_array_alloc(max, au_iarray_cb, sb, &sb->s_inodes); +} + +void au_iarray_free(struct inode **a, unsigned long long max) +{ + unsigned long long ull; + + for (ull = 0; ull < max; ull++) + iput(a[ull]); + kvfree(a); +} + +/* ---------------------------------------------------------------------- */ + +/* + * refresh dentry and inode at remount time. + */ +/* todo: consolidate with simple_reval_dpath() and au_reval_for_attr() */ +static int au_do_refresh(struct dentry *dentry, unsigned int dir_flags, + struct dentry *parent) +{ + int err; + + di_write_lock_child(dentry); + di_read_lock_parent(parent, AuLock_IR); + err = au_refresh_dentry(dentry, parent); + if (!err && dir_flags) + au_hn_reset(d_inode(dentry), dir_flags); + di_read_unlock(parent, AuLock_IR); + di_write_unlock(dentry); + + return err; +} + +static int au_do_refresh_d(struct dentry *dentry, unsigned int sigen, + struct au_sbinfo *sbinfo, + const unsigned int dir_flags, unsigned int do_idop) +{ + int err; + struct dentry *parent; + + err = 0; + parent = dget_parent(dentry); + if (!au_digen_test(parent, sigen) && au_digen_test(dentry, sigen)) { + if (d_really_is_positive(dentry)) { + if (!d_is_dir(dentry)) + err = au_do_refresh(dentry, /*dir_flags*/0, + parent); + else { + err = au_do_refresh(dentry, dir_flags, parent); + if (unlikely(err)) + au_fset_si(sbinfo, FAILED_REFRESH_DIR); + } + } else + err = au_do_refresh(dentry, /*dir_flags*/0, parent); + AuDbgDentry(dentry); + } + dput(parent); + + if (!err) { + if (do_idop) + au_refresh_dop(dentry, /*force_reval*/0); + } else + au_refresh_dop(dentry, /*force_reval*/1); + + AuTraceErr(err); + return err; +} + +static int au_refresh_d(struct super_block *sb, unsigned int do_idop) +{ + int err, i, j, ndentry, e; + unsigned int sigen; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries, *d; + struct au_sbinfo *sbinfo; + struct dentry *root = sb->s_root; + const unsigned int dir_flags = au_hi_flags(d_inode(root), /*isdir*/1); + + if (do_idop) + au_refresh_dop(root, /*force_reval*/0); + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_dcsub_pages(&dpages, root, NULL, NULL); + if (unlikely(err)) + goto out_dpages; + + sigen = au_sigen(sb); + sbinfo = au_sbi(sb); + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + d = dentries[j]; + e = au_do_refresh_d(d, sigen, sbinfo, dir_flags, + do_idop); + if (unlikely(e && !err)) + err = e; + /* go on even err */ + } + } + +out_dpages: + au_dpages_free(&dpages); +out: + return err; +} + +static int au_refresh_i(struct super_block *sb, unsigned int do_idop) +{ + int err, e; + unsigned int sigen; + unsigned long long max, ull; + struct inode *inode, **array; + + array = au_iarray_alloc(sb, &max); + err = PTR_ERR(array); + if (IS_ERR(array)) + goto out; + + err = 0; + sigen = au_sigen(sb); + for (ull = 0; ull < max; ull++) { + inode = array[ull]; + if (unlikely(!inode)) + break; + + e = 0; + ii_write_lock_child(inode); + if (au_iigen(inode, NULL) != sigen) { + e = au_refresh_hinode_self(inode); + if (unlikely(e)) { + au_refresh_iop(inode, /*force_getattr*/1); + pr_err("error %d, i%lu\n", e, inode->i_ino); + if (!err) + err = e; + /* go on even if err */ + } + } + if (!e && do_idop) + au_refresh_iop(inode, /*force_getattr*/0); + ii_write_unlock(inode); + } + + au_iarray_free(array, max); + +out: + return err; +} + +static void au_remount_refresh(struct super_block *sb, unsigned int do_idop) +{ + int err, e; + unsigned int udba; + aufs_bindex_t bindex, bbot; + struct dentry *root; + struct inode *inode; + struct au_branch *br; + struct au_sbinfo *sbi; + + au_sigen_inc(sb); + sbi = au_sbi(sb); + au_fclr_si(sbi, FAILED_REFRESH_DIR); + + root = sb->s_root; + DiMustNoWaiters(root); + inode = d_inode(root); + IiMustNoWaiters(inode); + + udba = au_opt_udba(sb); + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + err = au_hnotify_reset_br(udba, br, br->br_perm); + if (unlikely(err)) + AuIOErr("hnotify failed on br %d, %d, ignored\n", + bindex, err); + /* go on even if err */ + } + au_hn_reset(inode, au_hi_flags(inode, /*isdir*/1)); + + if (do_idop) { + if (au_ftest_si(sbi, NO_DREVAL)) { + AuDebugOn(sb->s_d_op == &aufs_dop_noreval); + sb->s_d_op = &aufs_dop_noreval; + AuDebugOn(sbi->si_iop_array == aufs_iop_nogetattr); + sbi->si_iop_array = aufs_iop_nogetattr; + } else { + AuDebugOn(sb->s_d_op == &aufs_dop); + sb->s_d_op = &aufs_dop; + AuDebugOn(sbi->si_iop_array == aufs_iop); + sbi->si_iop_array = aufs_iop; + } + pr_info("reset to %ps and %ps\n", + sb->s_d_op, sbi->si_iop_array); + } + + di_write_unlock(root); + err = au_refresh_d(sb, do_idop); + e = au_refresh_i(sb, do_idop); + if (unlikely(e && !err)) + err = e; + /* aufs_write_lock() calls ..._child() */ + di_write_lock_child(root); + + au_cpup_attr_all(inode, /*force*/1); + + if (unlikely(err)) + AuIOErr("refresh failed, ignored, %d\n", err); +} + +/* stop extra interpretation of errno in mount(8), and strange error messages */ +static int cvt_err(int err) +{ + AuTraceErr(err); + + switch (err) { + case -ENOENT: + case -ENOTDIR: + case -EEXIST: + case -EIO: + err = -EINVAL; + } + return err; +} + +static int aufs_remount_fs(struct super_block *sb, int *flags, char *data) +{ + int err, do_dx; + unsigned int mntflags; + struct au_opts opts = { + .opt = NULL + }; + struct dentry *root; + struct inode *inode; + struct au_sbinfo *sbinfo; + + err = 0; + root = sb->s_root; + if (!data || !*data) { + err = si_write_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (!err) { + di_write_lock_child(root); + err = au_opts_verify(sb, *flags, /*pending*/0); + aufs_write_unlock(root); + } + goto out; + } + + err = -ENOMEM; + opts.opt = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!opts.opt)) + goto out; + opts.max_opt = PAGE_SIZE / sizeof(*opts.opt); + opts.flags = AuOpts_REMOUNT; + opts.sb_flags = *flags; + + /* parse it before aufs lock */ + err = au_opts_parse(sb, data, &opts); + if (unlikely(err)) + goto out_opts; + + sbinfo = au_sbi(sb); + inode = d_inode(root); + inode_lock(inode); + err = si_write_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out_mtx; + di_write_lock_child(root); + + /* au_opts_remount() may return an error */ + err = au_opts_remount(sb, &opts); + au_opts_free(&opts); + + if (au_ftest_opts(opts.flags, REFRESH)) + au_remount_refresh(sb, au_ftest_opts(opts.flags, REFRESH_IDOP)); + + if (au_ftest_opts(opts.flags, REFRESH_DYAOP)) { + mntflags = au_mntflags(sb); + do_dx = !!au_opt_test(mntflags, DIO); + au_dy_arefresh(do_dx); + } + + au_fhsm_wrote_all(sb, /*force*/1); /* ?? */ + aufs_write_unlock(root); + +out_mtx: + inode_unlock(inode); +out_opts: + free_page((unsigned long)opts.opt); +out: + err = cvt_err(err); + AuTraceErr(err); + return err; +} + +static const struct super_operations aufs_sop = { + .alloc_inode = aufs_alloc_inode, + .destroy_inode = aufs_destroy_inode, + .free_inode = aufs_free_inode, + /* always deleting, no clearing */ + .drop_inode = generic_delete_inode, + .show_options = aufs_show_options, + .statfs = aufs_statfs, + .put_super = aufs_put_super, + .sync_fs = aufs_sync_fs, + .remount_fs = aufs_remount_fs, +#ifdef CONFIG_AUFS_BDEV_LOOP + .real_loop = aufs_real_loop +#endif +}; + +/* ---------------------------------------------------------------------- */ + +static int alloc_root(struct super_block *sb) +{ + int err; + struct inode *inode; + struct dentry *root; + + err = -ENOMEM; + inode = au_iget_locked(sb, AUFS_ROOT_INO); + err = PTR_ERR(inode); + if (IS_ERR(inode)) + goto out; + + inode->i_op = aufs_iop + AuIop_DIR; /* with getattr by default */ + inode->i_fop = &aufs_dir_fop; + inode->i_mode = S_IFDIR; + set_nlink(inode, 2); + unlock_new_inode(inode); + + root = d_make_root(inode); + if (unlikely(!root)) + goto out; + err = PTR_ERR(root); + if (IS_ERR(root)) + goto out; + + err = au_di_init(root); + if (!err) { + sb->s_root = root; + return 0; /* success */ + } + dput(root); + +out: + return err; +} + +static int aufs_fill_super(struct super_block *sb, void *raw_data, + int silent __maybe_unused) +{ + int err; + struct au_opts opts = { + .opt = NULL + }; + struct au_sbinfo *sbinfo; + struct dentry *root; + struct inode *inode; + char *arg = raw_data; + + if (unlikely(!arg || !*arg)) { + err = -EINVAL; + pr_err("no arg\n"); + goto out; + } + + err = -ENOMEM; + opts.opt = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!opts.opt)) + goto out; + opts.max_opt = PAGE_SIZE / sizeof(*opts.opt); + opts.sb_flags = sb->s_flags; + + err = au_si_alloc(sb); + if (unlikely(err)) + goto out_opts; + sbinfo = au_sbi(sb); + + /* all timestamps always follow the ones on the branch */ + sb->s_flags |= SB_NOATIME | SB_NODIRATIME; + sb->s_flags |= SB_I_VERSION; /* do we really need this? */ + sb->s_op = &aufs_sop; + sb->s_d_op = &aufs_dop; + sb->s_magic = AUFS_SUPER_MAGIC; + sb->s_maxbytes = 0; + sb->s_stack_depth = 1; + au_export_init(sb); + au_xattr_init(sb); + + err = alloc_root(sb); + if (unlikely(err)) { + si_write_unlock(sb); + goto out_info; + } + root = sb->s_root; + inode = d_inode(root); + + /* + * actually we can parse options regardless aufs lock here. + * but at remount time, parsing must be done before aufs lock. + * so we follow the same rule. + */ + ii_write_lock_parent(inode); + aufs_write_unlock(root); + err = au_opts_parse(sb, arg, &opts); + if (unlikely(err)) + goto out_root; + + /* lock vfs_inode first, then aufs. */ + inode_lock(inode); + aufs_write_lock(root); + err = au_opts_mount(sb, &opts); + au_opts_free(&opts); + if (!err && au_ftest_si(sbinfo, NO_DREVAL)) { + sb->s_d_op = &aufs_dop_noreval; + pr_info("%ps\n", sb->s_d_op); + au_refresh_dop(root, /*force_reval*/0); + sbinfo->si_iop_array = aufs_iop_nogetattr; + au_refresh_iop(inode, /*force_getattr*/0); + } + aufs_write_unlock(root); + inode_unlock(inode); + if (!err) + goto out_opts; /* success */ + +out_root: + dput(root); + sb->s_root = NULL; +out_info: + kobject_put(&sbinfo->si_kobj); + sb->s_fs_info = NULL; +out_opts: + free_page((unsigned long)opts.opt); +out: + AuTraceErr(err); + err = cvt_err(err); + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct dentry *aufs_mount(struct file_system_type *fs_type, int flags, + const char *dev_name __maybe_unused, + void *raw_data) +{ + struct dentry *root; + + /* all timestamps always follow the ones on the branch */ + /* mnt->mnt_flags |= MNT_NOATIME | MNT_NODIRATIME; */ + root = mount_nodev(fs_type, flags, raw_data, aufs_fill_super); + if (IS_ERR(root)) + goto out; + + au_sbilist_add(root->d_sb); + +out: + return root; +} + +static void aufs_kill_sb(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + sbinfo = au_sbi(sb); + if (sbinfo) { + au_sbilist_del(sb); + aufs_write_lock(sb->s_root); + au_fhsm_fin(sb); + if (sbinfo->si_wbr_create_ops->fin) + sbinfo->si_wbr_create_ops->fin(sb); + if (au_opt_test(sbinfo->si_mntflags, UDBA_HNOTIFY)) { + au_opt_set_udba(sbinfo->si_mntflags, UDBA_NONE); + au_remount_refresh(sb, /*do_idop*/0); + } + if (au_opt_test(sbinfo->si_mntflags, PLINK)) + au_plink_put(sb, /*verbose*/1); + au_xino_clr(sb); + au_dr_opt_flush(sb); + sbinfo->si_sb = NULL; + aufs_write_unlock(sb->s_root); + au_nwt_flush(&sbinfo->si_nowait); + } + kill_anon_super(sb); +} + +struct file_system_type aufs_fs_type = { + .name = AUFS_FSTYPE, + /* a race between rename and others */ + .fs_flags = FS_RENAME_DOES_D_MOVE + /* untested */ + /*| FS_ALLOW_IDMAP*/ + , + .mount = aufs_mount, + .kill_sb = aufs_kill_sb, + /* no need to __module_get() and module_put(). */ + .owner = THIS_MODULE, +}; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/super.h +++ linux-azure-5.13-5.13.0/fs/aufs/super.h @@ -0,0 +1,587 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * super_block operations + */ + +#ifndef __AUFS_SUPER_H__ +#define __AUFS_SUPER_H__ + +#ifdef __KERNEL__ + +#include +#include +#include "hbl.h" +#include "lcnt.h" +#include "rwsem.h" +#include "wkq.h" + +/* policies to select one among multiple writable branches */ +struct au_wbr_copyup_operations { + int (*copyup)(struct dentry *dentry); +}; + +#define AuWbr_DIR 1 /* target is a dir */ +#define AuWbr_PARENT (1 << 1) /* always require a parent */ + +#define au_ftest_wbr(flags, name) ((flags) & AuWbr_##name) +#define au_fset_wbr(flags, name) { (flags) |= AuWbr_##name; } +#define au_fclr_wbr(flags, name) { (flags) &= ~AuWbr_##name; } + +struct au_wbr_create_operations { + int (*create)(struct dentry *dentry, unsigned int flags); + int (*init)(struct super_block *sb); + int (*fin)(struct super_block *sb); +}; + +struct au_wbr_mfs { + struct mutex mfs_lock; /* protect this structure */ + unsigned long mfs_jiffy; + unsigned long mfs_expire; + aufs_bindex_t mfs_bindex; + + unsigned long long mfsrr_bytes; + unsigned long long mfsrr_watermark; +}; + +#define AuPlink_NHASH 100 +static inline int au_plink_hash(ino_t ino) +{ + return ino % AuPlink_NHASH; +} + +/* File-based Hierarchical Storage Management */ +struct au_fhsm { +#ifdef CONFIG_AUFS_FHSM + /* allow only one process who can receive the notification */ + spinlock_t fhsm_spin; + pid_t fhsm_pid; + wait_queue_head_t fhsm_wqh; + atomic_t fhsm_readable; + + /* these are protected by si_rwsem */ + unsigned long fhsm_expire; + aufs_bindex_t fhsm_bottom; +#endif +}; + +struct au_branch; +struct au_sbinfo { + /* nowait tasks in the system-wide workqueue */ + struct au_nowait_tasks si_nowait; + + /* + * tried sb->s_umount, but failed due to the dependency between i_mutex. + * rwsem for au_sbinfo is necessary. + */ + struct au_rwsem si_rwsem; + + /* + * dirty approach to protect sb->sb_inodes and ->s_files (gone) from + * remount. + */ + au_lcnt_t si_ninodes, si_nfiles; + + /* branch management */ + unsigned int si_generation; + + /* see AuSi_ flags */ + unsigned char au_si_status; + + aufs_bindex_t si_bbot; + + /* dirty trick to keep br_id plus */ + unsigned int si_last_br_id : + sizeof(aufs_bindex_t) * BITS_PER_BYTE - 1; + struct au_branch **si_branch; + + /* policy to select a writable branch */ + unsigned char si_wbr_copyup; + unsigned char si_wbr_create; + struct au_wbr_copyup_operations *si_wbr_copyup_ops; + struct au_wbr_create_operations *si_wbr_create_ops; + + /* round robin */ + atomic_t si_wbr_rr_next; + + /* most free space */ + struct au_wbr_mfs si_wbr_mfs; + + /* File-based Hierarchical Storage Management */ + struct au_fhsm si_fhsm; + + /* mount flags */ + /* include/asm-ia64/siginfo.h defines a macro named si_flags */ + unsigned int si_mntflags; + + /* external inode number (bitmap and translation table) */ + loff_t si_ximaxent; /* max entries in a xino */ + + struct file *si_xib; + struct mutex si_xib_mtx; /* protect xib members */ + unsigned long *si_xib_buf; + unsigned long si_xib_last_pindex; + int si_xib_next_bit; + + unsigned long si_xino_jiffy; + unsigned long si_xino_expire; + /* reserved for future use */ + /* unsigned long long si_xib_limit; */ /* Max xib file size */ + +#ifdef CONFIG_AUFS_EXPORT + /* i_generation */ + /* todo: make xigen file an array to support many inode numbers */ + struct file *si_xigen; + atomic_t si_xigen_next; +#endif + + /* dirty trick to support atomic_open */ + struct hlist_bl_head si_aopen; + + /* vdir parameters */ + unsigned long si_rdcache; /* max cache time in jiffies */ + unsigned int si_rdblk; /* deblk size */ + unsigned int si_rdhash; /* hash size */ + + /* + * If the number of whiteouts are larger than si_dirwh, leave all of + * them after au_whtmp_ren to reduce the cost of rmdir(2). + * future fsck.aufs or kernel thread will remove them later. + * Otherwise, remove all whiteouts and the dir in rmdir(2). + */ + unsigned int si_dirwh; + + /* pseudo_link list */ + struct hlist_bl_head si_plink[AuPlink_NHASH]; + wait_queue_head_t si_plink_wq; + spinlock_t si_plink_maint_lock; + pid_t si_plink_maint_pid; + + /* file list */ + struct hlist_bl_head si_files; + + /* with/without getattr, brother of sb->s_d_op */ + const struct inode_operations *si_iop_array; + + /* + * sysfs and lifetime management. + * this is not a small structure and it may be a waste of memory in case + * of sysfs is disabled, particularly when many aufs-es are mounted. + * but using sysfs is majority. + */ + struct kobject si_kobj; +#ifdef CONFIG_DEBUG_FS + struct dentry *si_dbgaufs; + struct dentry *si_dbgaufs_plink; + struct dentry *si_dbgaufs_xib; +#ifdef CONFIG_AUFS_EXPORT + struct dentry *si_dbgaufs_xigen; +#endif +#endif + +#ifdef CONFIG_AUFS_SBILIST + struct hlist_bl_node si_list; +#endif + + /* dirty, necessary for unmounting, sysfs and sysrq */ + struct super_block *si_sb; +}; + +/* sbinfo status flags */ +/* + * set true when refresh_dirs() failed at remount time. + * then try refreshing dirs at access time again. + * if it is false, refreshing dirs at access time is unnecessary + */ +#define AuSi_FAILED_REFRESH_DIR 1 +#define AuSi_FHSM (1 << 1) /* fhsm is active now */ +#define AuSi_NO_DREVAL (1 << 2) /* disable all d_revalidate */ + +#ifndef CONFIG_AUFS_FHSM +#undef AuSi_FHSM +#define AuSi_FHSM 0 +#endif + +static inline unsigned char au_do_ftest_si(struct au_sbinfo *sbi, + unsigned int flag) +{ + AuRwMustAnyLock(&sbi->si_rwsem); + return sbi->au_si_status & flag; +} +#define au_ftest_si(sbinfo, name) au_do_ftest_si(sbinfo, AuSi_##name) +#define au_fset_si(sbinfo, name) do { \ + AuRwMustWriteLock(&(sbinfo)->si_rwsem); \ + (sbinfo)->au_si_status |= AuSi_##name; \ +} while (0) +#define au_fclr_si(sbinfo, name) do { \ + AuRwMustWriteLock(&(sbinfo)->si_rwsem); \ + (sbinfo)->au_si_status &= ~AuSi_##name; \ +} while (0) + +/* ---------------------------------------------------------------------- */ + +/* policy to select one among writable branches */ +#define AuWbrCopyup(sbinfo, ...) \ + ((sbinfo)->si_wbr_copyup_ops->copyup(__VA_ARGS__)) +#define AuWbrCreate(sbinfo, ...) \ + ((sbinfo)->si_wbr_create_ops->create(__VA_ARGS__)) + +/* flags for si_read_lock()/aufs_read_lock()/di_read_lock() */ +#define AuLock_DW 1 /* write-lock dentry */ +#define AuLock_IR (1 << 1) /* read-lock inode */ +#define AuLock_IW (1 << 2) /* write-lock inode */ +#define AuLock_FLUSH (1 << 3) /* wait for 'nowait' tasks */ +#define AuLock_DIRS (1 << 4) /* target is a pair of dirs */ + /* except RENAME_EXCHANGE */ +#define AuLock_NOPLM (1 << 5) /* return err in plm mode */ +#define AuLock_NOPLMW (1 << 6) /* wait for plm mode ends */ +#define AuLock_GEN (1 << 7) /* test digen/iigen */ +#define au_ftest_lock(flags, name) ((flags) & AuLock_##name) +#define au_fset_lock(flags, name) \ + do { (flags) |= AuLock_##name; } while (0) +#define au_fclr_lock(flags, name) \ + do { (flags) &= ~AuLock_##name; } while (0) + +/* ---------------------------------------------------------------------- */ + +/* super.c */ +extern struct file_system_type aufs_fs_type; +struct inode *au_iget_locked(struct super_block *sb, ino_t ino); +typedef unsigned long long (*au_arraycb_t)(struct super_block *sb, void *array, + unsigned long long max, void *arg); +void *au_array_alloc(unsigned long long *hint, au_arraycb_t cb, + struct super_block *sb, void *arg); +struct inode **au_iarray_alloc(struct super_block *sb, unsigned long long *max); +void au_iarray_free(struct inode **a, unsigned long long max); + +/* sbinfo.c */ +void au_si_free(struct kobject *kobj); +int au_si_alloc(struct super_block *sb); +int au_sbr_realloc(struct au_sbinfo *sbinfo, int nbr, int may_shrink); + +unsigned int au_sigen_inc(struct super_block *sb); +aufs_bindex_t au_new_br_id(struct super_block *sb); + +int si_read_lock(struct super_block *sb, int flags); +int si_write_lock(struct super_block *sb, int flags); +int aufs_read_lock(struct dentry *dentry, int flags); +void aufs_read_unlock(struct dentry *dentry, int flags); +void aufs_write_lock(struct dentry *dentry); +void aufs_write_unlock(struct dentry *dentry); +int aufs_read_and_write_lock2(struct dentry *d1, struct dentry *d2, int flags); +void aufs_read_and_write_unlock2(struct dentry *d1, struct dentry *d2); + +/* wbr_policy.c */ +extern struct au_wbr_copyup_operations au_wbr_copyup_ops[]; +extern struct au_wbr_create_operations au_wbr_create_ops[]; +int au_cpdown_dirs(struct dentry *dentry, aufs_bindex_t bdst); +int au_wbr_nonopq(struct dentry *dentry, aufs_bindex_t bindex); +int au_wbr_do_copyup_bu(struct dentry *dentry, aufs_bindex_t btop); + +/* mvdown.c */ +int au_mvdown(struct dentry *dentry, struct aufs_mvdown __user *arg); + +#ifdef CONFIG_AUFS_FHSM +/* fhsm.c */ + +static inline pid_t au_fhsm_pid(struct au_fhsm *fhsm) +{ + pid_t pid; + + spin_lock(&fhsm->fhsm_spin); + pid = fhsm->fhsm_pid; + spin_unlock(&fhsm->fhsm_spin); + + return pid; +} + +void au_fhsm_wrote(struct super_block *sb, aufs_bindex_t bindex, int force); +void au_fhsm_wrote_all(struct super_block *sb, int force); +int au_fhsm_fd(struct super_block *sb, int oflags); +int au_fhsm_br_alloc(struct au_branch *br); +void au_fhsm_set_bottom(struct super_block *sb, aufs_bindex_t bindex); +void au_fhsm_fin(struct super_block *sb); +void au_fhsm_init(struct au_sbinfo *sbinfo); +void au_fhsm_set(struct au_sbinfo *sbinfo, unsigned int sec); +void au_fhsm_show(struct seq_file *seq, struct au_sbinfo *sbinfo); +#else +AuStubVoid(au_fhsm_wrote, struct super_block *sb, aufs_bindex_t bindex, + int force) +AuStubVoid(au_fhsm_wrote_all, struct super_block *sb, int force) +AuStub(int, au_fhsm_fd, return -EOPNOTSUPP, struct super_block *sb, int oflags) +AuStub(pid_t, au_fhsm_pid, return 0, struct au_fhsm *fhsm) +AuStubInt0(au_fhsm_br_alloc, struct au_branch *br) +AuStubVoid(au_fhsm_set_bottom, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(au_fhsm_fin, struct super_block *sb) +AuStubVoid(au_fhsm_init, struct au_sbinfo *sbinfo) +AuStubVoid(au_fhsm_set, struct au_sbinfo *sbinfo, unsigned int sec) +AuStubVoid(au_fhsm_show, struct seq_file *seq, struct au_sbinfo *sbinfo) +#endif + +/* ---------------------------------------------------------------------- */ + +static inline struct au_sbinfo *au_sbi(struct super_block *sb) +{ + return sb->s_fs_info; +} + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_EXPORT +int au_test_nfsd(void); +void au_export_init(struct super_block *sb); +void au_xigen_inc(struct inode *inode); +int au_xigen_new(struct inode *inode); +int au_xigen_set(struct super_block *sb, struct path *path); +void au_xigen_clr(struct super_block *sb); + +static inline int au_busy_or_stale(void) +{ + if (!au_test_nfsd()) + return -EBUSY; + return -ESTALE; +} +#else +AuStubInt0(au_test_nfsd, void) +AuStubVoid(au_export_init, struct super_block *sb) +AuStubVoid(au_xigen_inc, struct inode *inode) +AuStubInt0(au_xigen_new, struct inode *inode) +AuStubInt0(au_xigen_set, struct super_block *sb, struct path *path) +AuStubVoid(au_xigen_clr, struct super_block *sb) +AuStub(int, au_busy_or_stale, return -EBUSY, void) +#endif /* CONFIG_AUFS_EXPORT */ + +/* ---------------------------------------------------------------------- */ + +#ifdef CONFIG_AUFS_SBILIST +/* module.c */ +extern struct hlist_bl_head au_sbilist; + +static inline void au_sbilist_init(void) +{ + INIT_HLIST_BL_HEAD(&au_sbilist); +} + +static inline void au_sbilist_add(struct super_block *sb) +{ + au_hbl_add(&au_sbi(sb)->si_list, &au_sbilist); +} + +static inline void au_sbilist_del(struct super_block *sb) +{ + au_hbl_del(&au_sbi(sb)->si_list, &au_sbilist); +} + +#ifdef CONFIG_AUFS_MAGIC_SYSRQ +static inline void au_sbilist_lock(void) +{ + hlist_bl_lock(&au_sbilist); +} + +static inline void au_sbilist_unlock(void) +{ + hlist_bl_unlock(&au_sbilist); +} +#define AuGFP_SBILIST GFP_ATOMIC +#else +AuStubVoid(au_sbilist_lock, void) +AuStubVoid(au_sbilist_unlock, void) +#define AuGFP_SBILIST GFP_NOFS +#endif /* CONFIG_AUFS_MAGIC_SYSRQ */ +#else +AuStubVoid(au_sbilist_init, void) +AuStubVoid(au_sbilist_add, struct super_block *sb) +AuStubVoid(au_sbilist_del, struct super_block *sb) +AuStubVoid(au_sbilist_lock, void) +AuStubVoid(au_sbilist_unlock, void) +#define AuGFP_SBILIST GFP_NOFS +#endif + +/* ---------------------------------------------------------------------- */ + +static inline void dbgaufs_si_null(struct au_sbinfo *sbinfo) +{ + /* + * This function is a dynamic '__init' function actually, + * so the tiny check for si_rwsem is unnecessary. + */ + /* AuRwMustWriteLock(&sbinfo->si_rwsem); */ +#ifdef CONFIG_DEBUG_FS + sbinfo->si_dbgaufs = NULL; + sbinfo->si_dbgaufs_plink = NULL; + sbinfo->si_dbgaufs_xib = NULL; +#ifdef CONFIG_AUFS_EXPORT + sbinfo->si_dbgaufs_xigen = NULL; +#endif +#endif +} + +/* ---------------------------------------------------------------------- */ + +/* current->atomic_flags */ +/* this value should never corrupt the ones defined in linux/sched.h */ +#define PFA_AUFS 0x10 + +TASK_PFA_TEST(AUFS, test_aufs) /* task_test_aufs */ +TASK_PFA_SET(AUFS, aufs) /* task_set_aufs */ +TASK_PFA_CLEAR(AUFS, aufs) /* task_clear_aufs */ + +static inline int si_pid_test(struct super_block *sb) +{ + return !!task_test_aufs(current); +} + +static inline void si_pid_clr(struct super_block *sb) +{ + AuDebugOn(!task_test_aufs(current)); + task_clear_aufs(current); +} + +static inline void si_pid_set(struct super_block *sb) +{ + AuDebugOn(task_test_aufs(current)); + task_set_aufs(current); +} + +/* ---------------------------------------------------------------------- */ + +/* lock superblock. mainly for entry point functions */ +#define __si_read_lock(sb) au_rw_read_lock(&au_sbi(sb)->si_rwsem) +#define __si_write_lock(sb) au_rw_write_lock(&au_sbi(sb)->si_rwsem) +#define __si_read_trylock(sb) au_rw_read_trylock(&au_sbi(sb)->si_rwsem) +#define __si_write_trylock(sb) au_rw_write_trylock(&au_sbi(sb)->si_rwsem) +/* +#define __si_read_trylock_nested(sb) \ + au_rw_read_trylock_nested(&au_sbi(sb)->si_rwsem) +#define __si_write_trylock_nested(sb) \ + au_rw_write_trylock_nested(&au_sbi(sb)->si_rwsem) +*/ + +#define __si_read_unlock(sb) au_rw_read_unlock(&au_sbi(sb)->si_rwsem) +#define __si_write_unlock(sb) au_rw_write_unlock(&au_sbi(sb)->si_rwsem) +#define __si_downgrade_lock(sb) au_rw_dgrade_lock(&au_sbi(sb)->si_rwsem) + +#define SiMustNoWaiters(sb) AuRwMustNoWaiters(&au_sbi(sb)->si_rwsem) +#define SiMustAnyLock(sb) AuRwMustAnyLock(&au_sbi(sb)->si_rwsem) +#define SiMustWriteLock(sb) AuRwMustWriteLock(&au_sbi(sb)->si_rwsem) + +static inline void si_noflush_read_lock(struct super_block *sb) +{ + __si_read_lock(sb); + si_pid_set(sb); +} + +static inline int si_noflush_read_trylock(struct super_block *sb) +{ + int locked; + + locked = __si_read_trylock(sb); + if (locked) + si_pid_set(sb); + return locked; +} + +static inline void si_noflush_write_lock(struct super_block *sb) +{ + __si_write_lock(sb); + si_pid_set(sb); +} + +static inline int si_noflush_write_trylock(struct super_block *sb) +{ + int locked; + + locked = __si_write_trylock(sb); + if (locked) + si_pid_set(sb); + return locked; +} + +#if 0 /* reserved */ +static inline int si_read_trylock(struct super_block *sb, int flags) +{ + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + return si_noflush_read_trylock(sb); +} +#endif + +static inline void si_read_unlock(struct super_block *sb) +{ + si_pid_clr(sb); + __si_read_unlock(sb); +} + +#if 0 /* reserved */ +static inline int si_write_trylock(struct super_block *sb, int flags) +{ + if (au_ftest_lock(flags, FLUSH)) + au_nwt_flush(&au_sbi(sb)->si_nowait); + return si_noflush_write_trylock(sb); +} +#endif + +static inline void si_write_unlock(struct super_block *sb) +{ + si_pid_clr(sb); + __si_write_unlock(sb); +} + +#if 0 /* reserved */ +static inline void si_downgrade_lock(struct super_block *sb) +{ + __si_downgrade_lock(sb); +} +#endif + +/* ---------------------------------------------------------------------- */ + +static inline aufs_bindex_t au_sbbot(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_bbot; +} + +static inline unsigned int au_mntflags(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_mntflags; +} + +static inline unsigned int au_sigen(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_generation; +} + +static inline struct au_branch *au_sbr(struct super_block *sb, + aufs_bindex_t bindex) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_branch[0 + bindex]; +} + +static inline loff_t au_xi_maxent(struct super_block *sb) +{ + SiMustAnyLock(sb); + return au_sbi(sb)->si_ximaxent; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_SUPER_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/sysaufs.c +++ linux-azure-5.13-5.13.0/fs/aufs/sysaufs.c @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sysfs interface and lifetime management + * they are necessary regardless sysfs is disabled. + */ + +#include +#include "aufs.h" + +unsigned long sysaufs_si_mask; +struct kset *sysaufs_kset; + +#define AuSiAttr(_name) { \ + .attr = { .name = __stringify(_name), .mode = 0444 }, \ + .show = sysaufs_si_##_name, \ +} + +static struct sysaufs_si_attr sysaufs_si_attr_xi_path = AuSiAttr(xi_path); +struct attribute *sysaufs_si_attrs[] = { + &sysaufs_si_attr_xi_path.attr, + NULL, +}; + +static const struct sysfs_ops au_sbi_ops = { + .show = sysaufs_si_show +}; + +static struct kobj_type au_sbi_ktype = { + .release = au_si_free, + .sysfs_ops = &au_sbi_ops, + .default_attrs = sysaufs_si_attrs +}; + +/* ---------------------------------------------------------------------- */ + +int sysaufs_si_init(struct au_sbinfo *sbinfo) +{ + int err; + + sbinfo->si_kobj.kset = sysaufs_kset; + /* cf. sysaufs_name() */ + err = kobject_init_and_add + (&sbinfo->si_kobj, &au_sbi_ktype, /*&sysaufs_kset->kobj*/NULL, + SysaufsSiNamePrefix "%lx", sysaufs_si_id(sbinfo)); + + return err; +} + +void sysaufs_fin(void) +{ + sysfs_remove_group(&sysaufs_kset->kobj, sysaufs_attr_group); + kset_unregister(sysaufs_kset); +} + +int __init sysaufs_init(void) +{ + int err; + + do { + get_random_bytes(&sysaufs_si_mask, sizeof(sysaufs_si_mask)); + } while (!sysaufs_si_mask); + + err = -EINVAL; + sysaufs_kset = kset_create_and_add(AUFS_NAME, NULL, fs_kobj); + if (unlikely(!sysaufs_kset)) + goto out; + err = PTR_ERR(sysaufs_kset); + if (IS_ERR(sysaufs_kset)) + goto out; + err = sysfs_create_group(&sysaufs_kset->kobj, sysaufs_attr_group); + if (unlikely(err)) + kset_unregister(sysaufs_kset); + +out: + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/sysaufs.h +++ linux-azure-5.13-5.13.0/fs/aufs/sysaufs.h @@ -0,0 +1,102 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sysfs interface and mount lifetime management + */ + +#ifndef __SYSAUFS_H__ +#define __SYSAUFS_H__ + +#ifdef __KERNEL__ + +#include +#include "module.h" + +struct super_block; +struct au_sbinfo; + +struct sysaufs_si_attr { + struct attribute attr; + int (*show)(struct seq_file *seq, struct super_block *sb); +}; + +/* ---------------------------------------------------------------------- */ + +/* sysaufs.c */ +extern unsigned long sysaufs_si_mask; +extern struct kset *sysaufs_kset; +extern struct attribute *sysaufs_si_attrs[]; +int sysaufs_si_init(struct au_sbinfo *sbinfo); +int __init sysaufs_init(void); +void sysaufs_fin(void); + +/* ---------------------------------------------------------------------- */ + +/* some people doesn't like to show a pointer in kernel */ +static inline unsigned long sysaufs_si_id(struct au_sbinfo *sbinfo) +{ + return sysaufs_si_mask ^ (unsigned long)sbinfo; +} + +#define SysaufsSiNamePrefix "si_" +#define SysaufsSiNameLen (sizeof(SysaufsSiNamePrefix) + 16) +static inline void sysaufs_name(struct au_sbinfo *sbinfo, char *name) +{ + snprintf(name, SysaufsSiNameLen, SysaufsSiNamePrefix "%lx", + sysaufs_si_id(sbinfo)); +} + +struct au_branch; +#ifdef CONFIG_SYSFS +/* sysfs.c */ +extern struct attribute_group *sysaufs_attr_group; + +int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb); +ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr, + char *buf); +long au_brinfo_ioctl(struct file *file, unsigned long arg); +#ifdef CONFIG_COMPAT +long au_brinfo_compat_ioctl(struct file *file, unsigned long arg); +#endif + +void sysaufs_br_init(struct au_branch *br); +void sysaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex); +void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex); + +#define sysaufs_brs_init() do {} while (0) + +#else +#define sysaufs_attr_group NULL + +AuStubInt0(sysaufs_si_xi_path, struct seq_file *seq, struct super_block *sb) +AuStub(ssize_t, sysaufs_si_show, return 0, struct kobject *kobj, + struct attribute *attr, char *buf) +AuStubVoid(sysaufs_br_init, struct au_branch *br) +AuStubVoid(sysaufs_brs_add, struct super_block *sb, aufs_bindex_t bindex) +AuStubVoid(sysaufs_brs_del, struct super_block *sb, aufs_bindex_t bindex) + +static inline void sysaufs_brs_init(void) +{ + sysaufs_brs = 0; +} + +#endif /* CONFIG_SYSFS */ + +#endif /* __KERNEL__ */ +#endif /* __SYSAUFS_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/sysfs.c +++ linux-azure-5.13-5.13.0/fs/aufs/sysfs.c @@ -0,0 +1,374 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sysfs interface + */ + +#include +#include +#include "aufs.h" + +#ifdef CONFIG_AUFS_FS_MODULE +/* this entry violates the "one line per file" policy of sysfs */ +static ssize_t config_show(struct kobject *kobj, struct kobj_attribute *attr, + char *buf) +{ + ssize_t err; + static char *conf = +/* this file is generated at compiling */ +#include "conf.str" + ; + + err = snprintf(buf, PAGE_SIZE, conf); + if (unlikely(err >= PAGE_SIZE)) + err = -EFBIG; + return err; +} + +static struct kobj_attribute au_config_attr = __ATTR_RO(config); +#endif + +static struct attribute *au_attr[] = { +#ifdef CONFIG_AUFS_FS_MODULE + &au_config_attr.attr, +#endif + NULL, /* need to NULL terminate the list of attributes */ +}; + +static struct attribute_group sysaufs_attr_group_body = { + .attrs = au_attr +}; + +struct attribute_group *sysaufs_attr_group = &sysaufs_attr_group_body; + +/* ---------------------------------------------------------------------- */ + +int sysaufs_si_xi_path(struct seq_file *seq, struct super_block *sb) +{ + int err; + + SiMustAnyLock(sb); + + err = 0; + if (au_opt_test(au_mntflags(sb), XINO)) { + err = au_xino_path(seq, au_sbi(sb)->si_xib); + seq_putc(seq, '\n'); + } + return err; +} + +/* + * the lifetime of branch is independent from the entry under sysfs. + * sysfs handles the lifetime of the entry, and never call ->show() after it is + * unlinked. + */ +static int sysaufs_si_br(struct seq_file *seq, struct super_block *sb, + aufs_bindex_t bindex, int idx) +{ + int err; + struct path path; + struct dentry *root; + struct au_branch *br; + au_br_perm_str_t perm; + + AuDbg("b%d\n", bindex); + + err = 0; + root = sb->s_root; + di_read_lock_parent(root, !AuLock_IR); + br = au_sbr(sb, bindex); + + switch (idx) { + case AuBrSysfs_BR: + path.mnt = au_br_mnt(br); + path.dentry = au_h_dptr(root, bindex); + err = au_seq_path(seq, &path); + if (!err) { + au_optstr_br_perm(&perm, br->br_perm); + seq_printf(seq, "=%s\n", perm.a); + } + break; + case AuBrSysfs_BRID: + seq_printf(seq, "%d\n", br->br_id); + break; + } + di_read_unlock(root, !AuLock_IR); + if (unlikely(err || seq_has_overflowed(seq))) + err = -E2BIG; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +static struct seq_file *au_seq(char *p, ssize_t len) +{ + struct seq_file *seq; + + seq = kzalloc(sizeof(*seq), GFP_NOFS); + if (seq) { + /* mutex_init(&seq.lock); */ + seq->buf = p; + seq->size = len; + return seq; /* success */ + } + + seq = ERR_PTR(-ENOMEM); + return seq; +} + +#define SysaufsBr_PREFIX "br" +#define SysaufsBrid_PREFIX "brid" + +/* todo: file size may exceed PAGE_SIZE */ +ssize_t sysaufs_si_show(struct kobject *kobj, struct attribute *attr, + char *buf) +{ + ssize_t err; + int idx; + long l; + aufs_bindex_t bbot; + struct au_sbinfo *sbinfo; + struct super_block *sb; + struct seq_file *seq; + char *name; + struct attribute **cattr; + + sbinfo = container_of(kobj, struct au_sbinfo, si_kobj); + sb = sbinfo->si_sb; + + /* + * prevent a race condition between sysfs and aufs. + * for instance, sysfs_file_read() calls sysfs_get_active_two() which + * prohibits maintaining the sysfs entries. + * hew we acquire read lock after sysfs_get_active_two(). + * on the other hand, the remount process may maintain the sysfs/aufs + * entries after acquiring write lock. + * it can cause a deadlock. + * simply we gave up processing read here. + */ + err = -EBUSY; + if (unlikely(!si_noflush_read_trylock(sb))) + goto out; + + seq = au_seq(buf, PAGE_SIZE); + err = PTR_ERR(seq); + if (IS_ERR(seq)) + goto out_unlock; + + name = (void *)attr->name; + cattr = sysaufs_si_attrs; + while (*cattr) { + if (!strcmp(name, (*cattr)->name)) { + err = container_of(*cattr, struct sysaufs_si_attr, attr) + ->show(seq, sb); + goto out_seq; + } + cattr++; + } + + if (!strncmp(name, SysaufsBrid_PREFIX, + sizeof(SysaufsBrid_PREFIX) - 1)) { + idx = AuBrSysfs_BRID; + name += sizeof(SysaufsBrid_PREFIX) - 1; + } else if (!strncmp(name, SysaufsBr_PREFIX, + sizeof(SysaufsBr_PREFIX) - 1)) { + idx = AuBrSysfs_BR; + name += sizeof(SysaufsBr_PREFIX) - 1; + } else + BUG(); + + err = kstrtol(name, 10, &l); + if (!err) { + bbot = au_sbbot(sb); + if (l <= bbot) + err = sysaufs_si_br(seq, sb, (aufs_bindex_t)l, idx); + else + err = -ENOENT; + } + +out_seq: + if (!err) { + err = seq->count; + /* sysfs limit */ + if (unlikely(err == PAGE_SIZE)) + err = -EFBIG; + } + au_kfree_rcu(seq); +out_unlock: + si_read_unlock(sb); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_brinfo(struct super_block *sb, union aufs_brinfo __user *arg) +{ + int err; + int16_t brid; + aufs_bindex_t bindex, bbot; + size_t sz; + char *buf; + struct seq_file *seq; + struct au_branch *br; + + si_read_lock(sb, AuLock_FLUSH); + bbot = au_sbbot(sb); + err = bbot + 1; + if (!arg) + goto out; + + err = -ENOMEM; + buf = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!buf)) + goto out; + + seq = au_seq(buf, PAGE_SIZE); + err = PTR_ERR(seq); + if (IS_ERR(seq)) + goto out_buf; + + sz = sizeof(*arg) - offsetof(union aufs_brinfo, path); + for (bindex = 0; bindex <= bbot; bindex++, arg++) { + /* VERIFY_WRITE */ + err = !access_ok(arg, sizeof(*arg)); + if (unlikely(err)) + break; + + br = au_sbr(sb, bindex); + brid = br->br_id; + BUILD_BUG_ON(sizeof(brid) != sizeof(arg->id)); + err = __put_user(brid, &arg->id); + if (unlikely(err)) + break; + + BUILD_BUG_ON(sizeof(br->br_perm) != sizeof(arg->perm)); + err = __put_user(br->br_perm, &arg->perm); + if (unlikely(err)) + break; + + err = au_seq_path(seq, &br->br_path); + if (unlikely(err)) + break; + seq_putc(seq, '\0'); + if (!seq_has_overflowed(seq)) { + err = copy_to_user(arg->path, seq->buf, seq->count); + seq->count = 0; + if (unlikely(err)) + break; + } else { + err = -E2BIG; + goto out_seq; + } + } + if (unlikely(err)) + err = -EFAULT; + +out_seq: + au_kfree_rcu(seq); +out_buf: + free_page((unsigned long)buf); +out: + si_read_unlock(sb); + return err; +} + +long au_brinfo_ioctl(struct file *file, unsigned long arg) +{ + return au_brinfo(file->f_path.dentry->d_sb, (void __user *)arg); +} + +#ifdef CONFIG_COMPAT +long au_brinfo_compat_ioctl(struct file *file, unsigned long arg) +{ + return au_brinfo(file->f_path.dentry->d_sb, compat_ptr(arg)); +} +#endif + +/* ---------------------------------------------------------------------- */ + +void sysaufs_br_init(struct au_branch *br) +{ + int i; + struct au_brsysfs *br_sysfs; + struct attribute *attr; + + br_sysfs = br->br_sysfs; + for (i = 0; i < ARRAY_SIZE(br->br_sysfs); i++) { + attr = &br_sysfs->attr; + sysfs_attr_init(attr); + attr->name = br_sysfs->name; + attr->mode = 0444; + br_sysfs++; + } +} + +void sysaufs_brs_del(struct super_block *sb, aufs_bindex_t bindex) +{ + struct au_branch *br; + struct kobject *kobj; + struct au_brsysfs *br_sysfs; + int i; + aufs_bindex_t bbot; + + if (!sysaufs_brs) + return; + + kobj = &au_sbi(sb)->si_kobj; + bbot = au_sbbot(sb); + for (; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + br_sysfs = br->br_sysfs; + for (i = 0; i < ARRAY_SIZE(br->br_sysfs); i++) { + sysfs_remove_file(kobj, &br_sysfs->attr); + br_sysfs++; + } + } +} + +void sysaufs_brs_add(struct super_block *sb, aufs_bindex_t bindex) +{ + int err, i; + aufs_bindex_t bbot; + struct kobject *kobj; + struct au_branch *br; + struct au_brsysfs *br_sysfs; + + if (!sysaufs_brs) + return; + + kobj = &au_sbi(sb)->si_kobj; + bbot = au_sbbot(sb); + for (; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + br_sysfs = br->br_sysfs; + snprintf(br_sysfs[AuBrSysfs_BR].name, sizeof(br_sysfs->name), + SysaufsBr_PREFIX "%d", bindex); + snprintf(br_sysfs[AuBrSysfs_BRID].name, sizeof(br_sysfs->name), + SysaufsBrid_PREFIX "%d", bindex); + for (i = 0; i < ARRAY_SIZE(br->br_sysfs); i++) { + err = sysfs_create_file(kobj, &br_sysfs->attr); + if (unlikely(err)) + pr_warn("failed %s under sysfs(%d)\n", + br_sysfs->name, err); + br_sysfs++; + } + } +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/sysrq.c +++ linux-azure-5.13-5.13.0/fs/aufs/sysrq.c @@ -0,0 +1,149 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * magic sysrq handler + */ + +/* #include */ +#include +#include "aufs.h" + +/* ---------------------------------------------------------------------- */ + +static void sysrq_sb(struct super_block *sb) +{ + char *plevel; + struct au_sbinfo *sbinfo; + struct file *file; + struct hlist_bl_head *files; + struct hlist_bl_node *pos; + struct au_finfo *finfo; + struct inode *i; + + plevel = au_plevel; + au_plevel = KERN_WARNING; + + /* since we define pr_fmt, call printk directly */ +#define pr(str) printk(KERN_WARNING AUFS_NAME ": " str) + + sbinfo = au_sbi(sb); + printk(KERN_WARNING "si=%lx\n", sysaufs_si_id(sbinfo)); + pr("superblock\n"); + au_dpri_sb(sb); + +#if 0 /* reserved */ + do { + int err, i, j, ndentry; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + + err = au_dpages_init(&dpages, GFP_ATOMIC); + if (unlikely(err)) + break; + err = au_dcsub_pages(&dpages, sb->s_root, NULL, NULL); + if (!err) + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) + au_dpri_dentry(dpage->dentries[j]); + } + au_dpages_free(&dpages); + } while (0); +#endif + + pr("isolated inode\n"); + spin_lock(&sb->s_inode_list_lock); + list_for_each_entry(i, &sb->s_inodes, i_sb_list) { + spin_lock(&i->i_lock); + if (hlist_empty(&i->i_dentry)) + au_dpri_inode(i); + spin_unlock(&i->i_lock); + } + spin_unlock(&sb->s_inode_list_lock); + + pr("files\n"); + files = &au_sbi(sb)->si_files; + hlist_bl_lock(files); + hlist_bl_for_each_entry(finfo, pos, files, fi_hlist) { + umode_t mode; + + file = finfo->fi_file; + mode = file_inode(file)->i_mode; + if (!special_file(mode)) + au_dpri_file(file); + } + hlist_bl_unlock(files); + pr("done\n"); + +#undef pr + au_plevel = plevel; +} + +/* ---------------------------------------------------------------------- */ + +/* module parameter */ +static char *aufs_sysrq_key = "a"; +module_param_named(sysrq, aufs_sysrq_key, charp, 0444); +MODULE_PARM_DESC(sysrq, "MagicSysRq key for " AUFS_NAME); + +static void au_sysrq(int key __maybe_unused) +{ + struct au_sbinfo *sbinfo; + struct hlist_bl_node *pos; + + lockdep_off(); + au_sbilist_lock(); + hlist_bl_for_each_entry(sbinfo, pos, &au_sbilist, si_list) + sysrq_sb(sbinfo->si_sb); + au_sbilist_unlock(); + lockdep_on(); +} + +static struct sysrq_key_op au_sysrq_op = { + .handler = au_sysrq, + .help_msg = "Aufs", + .action_msg = "Aufs", + .enable_mask = SYSRQ_ENABLE_DUMP +}; + +/* ---------------------------------------------------------------------- */ + +int __init au_sysrq_init(void) +{ + int err; + char key; + + err = -1; + key = *aufs_sysrq_key; + if ('a' <= key && key <= 'z') + err = register_sysrq_key(key, &au_sysrq_op); + if (unlikely(err)) + pr_err("err %d, sysrq=%c\n", err, key); + return err; +} + +void au_sysrq_fin(void) +{ + int err; + + err = unregister_sysrq_key(*aufs_sysrq_key, &au_sysrq_op); + if (unlikely(err)) + pr_err("err %d (ignored)\n", err); +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/vdir.c +++ linux-azure-5.13-5.13.0/fs/aufs/vdir.c @@ -0,0 +1,896 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * virtual or vertical directory + */ + +#include +#include "aufs.h" + +static unsigned int calc_size(int nlen) +{ + return ALIGN(sizeof(struct au_vdir_de) + nlen, sizeof(ino_t)); +} + +static int set_deblk_end(union au_vdir_deblk_p *p, + union au_vdir_deblk_p *deblk_end) +{ + if (calc_size(0) <= deblk_end->deblk - p->deblk) { + p->de->de_str.len = 0; + /* smp_mb(); */ + return 0; + } + return -1; /* error */ +} + +/* returns true or false */ +static int is_deblk_end(union au_vdir_deblk_p *p, + union au_vdir_deblk_p *deblk_end) +{ + if (calc_size(0) <= deblk_end->deblk - p->deblk) + return !p->de->de_str.len; + return 1; +} + +static unsigned char *last_deblk(struct au_vdir *vdir) +{ + return vdir->vd_deblk[vdir->vd_nblk - 1]; +} + +/* ---------------------------------------------------------------------- */ + +/* estimate the appropriate size for name hash table */ +unsigned int au_rdhash_est(loff_t sz) +{ + unsigned int n; + + n = UINT_MAX; + sz >>= 10; + if (sz < n) + n = sz; + if (sz < AUFS_RDHASH_DEF) + n = AUFS_RDHASH_DEF; + /* pr_info("n %u\n", n); */ + return n; +} + +/* + * the allocated memory has to be freed by + * au_nhash_wh_free() or au_nhash_de_free(). + */ +int au_nhash_alloc(struct au_nhash *nhash, unsigned int num_hash, gfp_t gfp) +{ + struct hlist_head *head; + unsigned int u; + size_t sz; + + sz = sizeof(*nhash->nh_head) * num_hash; + head = kmalloc(sz, gfp); + if (head) { + nhash->nh_num = num_hash; + nhash->nh_head = head; + for (u = 0; u < num_hash; u++) + INIT_HLIST_HEAD(head++); + return 0; /* success */ + } + + return -ENOMEM; +} + +static void nhash_count(struct hlist_head *head) +{ +#if 0 /* debugging */ + unsigned long n; + struct hlist_node *pos; + + n = 0; + hlist_for_each(pos, head) + n++; + pr_info("%lu\n", n); +#endif +} + +static void au_nhash_wh_do_free(struct hlist_head *head) +{ + struct au_vdir_wh *pos; + struct hlist_node *node; + + hlist_for_each_entry_safe(pos, node, head, wh_hash) + au_kfree_rcu(pos); +} + +static void au_nhash_de_do_free(struct hlist_head *head) +{ + struct au_vdir_dehstr *pos; + struct hlist_node *node; + + hlist_for_each_entry_safe(pos, node, head, hash) + au_cache_free_vdir_dehstr(pos); +} + +static void au_nhash_do_free(struct au_nhash *nhash, + void (*free)(struct hlist_head *head)) +{ + unsigned int n; + struct hlist_head *head; + + n = nhash->nh_num; + if (!n) + return; + + head = nhash->nh_head; + while (n-- > 0) { + nhash_count(head); + free(head++); + } + au_kfree_try_rcu(nhash->nh_head); +} + +void au_nhash_wh_free(struct au_nhash *whlist) +{ + au_nhash_do_free(whlist, au_nhash_wh_do_free); +} + +static void au_nhash_de_free(struct au_nhash *delist) +{ + au_nhash_do_free(delist, au_nhash_de_do_free); +} + +/* ---------------------------------------------------------------------- */ + +int au_nhash_test_longer_wh(struct au_nhash *whlist, aufs_bindex_t btgt, + int limit) +{ + int num; + unsigned int u, n; + struct hlist_head *head; + struct au_vdir_wh *pos; + + num = 0; + n = whlist->nh_num; + head = whlist->nh_head; + for (u = 0; u < n; u++, head++) + hlist_for_each_entry(pos, head, wh_hash) + if (pos->wh_bindex == btgt && ++num > limit) + return 1; + return 0; +} + +static struct hlist_head *au_name_hash(struct au_nhash *nhash, + unsigned char *name, + unsigned int len) +{ + unsigned int v; + /* const unsigned int magic_bit = 12; */ + + AuDebugOn(!nhash->nh_num || !nhash->nh_head); + + v = 0; + if (len > 8) + len = 8; + while (len--) + v += *name++; + /* v = hash_long(v, magic_bit); */ + v %= nhash->nh_num; + return nhash->nh_head + v; +} + +static int au_nhash_test_name(struct au_vdir_destr *str, const char *name, + int nlen) +{ + return str->len == nlen && !memcmp(str->name, name, nlen); +} + +/* returns found or not */ +int au_nhash_test_known_wh(struct au_nhash *whlist, char *name, int nlen) +{ + struct hlist_head *head; + struct au_vdir_wh *pos; + struct au_vdir_destr *str; + + head = au_name_hash(whlist, name, nlen); + hlist_for_each_entry(pos, head, wh_hash) { + str = &pos->wh_str; + AuDbg("%.*s\n", str->len, str->name); + if (au_nhash_test_name(str, name, nlen)) + return 1; + } + return 0; +} + +/* returns found(true) or not */ +static int test_known(struct au_nhash *delist, char *name, int nlen) +{ + struct hlist_head *head; + struct au_vdir_dehstr *pos; + struct au_vdir_destr *str; + + head = au_name_hash(delist, name, nlen); + hlist_for_each_entry(pos, head, hash) { + str = pos->str; + AuDbg("%.*s\n", str->len, str->name); + if (au_nhash_test_name(str, name, nlen)) + return 1; + } + return 0; +} + +static void au_shwh_init_wh(struct au_vdir_wh *wh, ino_t ino, + unsigned char d_type) +{ +#ifdef CONFIG_AUFS_SHWH + wh->wh_ino = ino; + wh->wh_type = d_type; +#endif +} + +/* ---------------------------------------------------------------------- */ + +int au_nhash_append_wh(struct au_nhash *whlist, char *name, int nlen, ino_t ino, + unsigned int d_type, aufs_bindex_t bindex, + unsigned char shwh) +{ + int err; + struct au_vdir_destr *str; + struct au_vdir_wh *wh; + + AuDbg("%.*s\n", nlen, name); + AuDebugOn(!whlist->nh_num || !whlist->nh_head); + + err = -ENOMEM; + wh = kmalloc(sizeof(*wh) + nlen, GFP_NOFS); + if (unlikely(!wh)) + goto out; + + err = 0; + wh->wh_bindex = bindex; + if (shwh) + au_shwh_init_wh(wh, ino, d_type); + str = &wh->wh_str; + str->len = nlen; + memcpy(str->name, name, nlen); + hlist_add_head(&wh->wh_hash, au_name_hash(whlist, name, nlen)); + /* smp_mb(); */ + +out: + return err; +} + +static int append_deblk(struct au_vdir *vdir) +{ + int err; + unsigned long ul; + const unsigned int deblk_sz = vdir->vd_deblk_sz; + union au_vdir_deblk_p p, deblk_end; + unsigned char **o; + + err = -ENOMEM; + o = au_krealloc(vdir->vd_deblk, sizeof(*o) * (vdir->vd_nblk + 1), + GFP_NOFS, /*may_shrink*/0); + if (unlikely(!o)) + goto out; + + vdir->vd_deblk = o; + p.deblk = kmalloc(deblk_sz, GFP_NOFS); + if (p.deblk) { + ul = vdir->vd_nblk++; + vdir->vd_deblk[ul] = p.deblk; + vdir->vd_last.ul = ul; + vdir->vd_last.p.deblk = p.deblk; + deblk_end.deblk = p.deblk + deblk_sz; + err = set_deblk_end(&p, &deblk_end); + } + +out: + return err; +} + +static int append_de(struct au_vdir *vdir, char *name, int nlen, ino_t ino, + unsigned int d_type, struct au_nhash *delist) +{ + int err; + unsigned int sz; + const unsigned int deblk_sz = vdir->vd_deblk_sz; + union au_vdir_deblk_p p, *room, deblk_end; + struct au_vdir_dehstr *dehstr; + + p.deblk = last_deblk(vdir); + deblk_end.deblk = p.deblk + deblk_sz; + room = &vdir->vd_last.p; + AuDebugOn(room->deblk < p.deblk || deblk_end.deblk <= room->deblk + || !is_deblk_end(room, &deblk_end)); + + sz = calc_size(nlen); + if (unlikely(sz > deblk_end.deblk - room->deblk)) { + err = append_deblk(vdir); + if (unlikely(err)) + goto out; + + p.deblk = last_deblk(vdir); + deblk_end.deblk = p.deblk + deblk_sz; + /* smp_mb(); */ + AuDebugOn(room->deblk != p.deblk); + } + + err = -ENOMEM; + dehstr = au_cache_alloc_vdir_dehstr(); + if (unlikely(!dehstr)) + goto out; + + dehstr->str = &room->de->de_str; + hlist_add_head(&dehstr->hash, au_name_hash(delist, name, nlen)); + room->de->de_ino = ino; + room->de->de_type = d_type; + room->de->de_str.len = nlen; + memcpy(room->de->de_str.name, name, nlen); + + err = 0; + room->deblk += sz; + if (unlikely(set_deblk_end(room, &deblk_end))) + err = append_deblk(vdir); + /* smp_mb(); */ + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_vdir_free(struct au_vdir *vdir) +{ + unsigned char **deblk; + + deblk = vdir->vd_deblk; + while (vdir->vd_nblk--) + au_kfree_try_rcu(*deblk++); + au_kfree_try_rcu(vdir->vd_deblk); + au_cache_free_vdir(vdir); +} + +static struct au_vdir *alloc_vdir(struct file *file) +{ + struct au_vdir *vdir; + struct super_block *sb; + int err; + + sb = file->f_path.dentry->d_sb; + SiMustAnyLock(sb); + + err = -ENOMEM; + vdir = au_cache_alloc_vdir(); + if (unlikely(!vdir)) + goto out; + + vdir->vd_deblk = kzalloc(sizeof(*vdir->vd_deblk), GFP_NOFS); + if (unlikely(!vdir->vd_deblk)) + goto out_free; + + vdir->vd_deblk_sz = au_sbi(sb)->si_rdblk; + if (!vdir->vd_deblk_sz) { + /* estimate the appropriate size for deblk */ + vdir->vd_deblk_sz = au_dir_size(file, /*dentry*/NULL); + /* pr_info("vd_deblk_sz %u\n", vdir->vd_deblk_sz); */ + } + vdir->vd_nblk = 0; + vdir->vd_version = 0; + vdir->vd_jiffy = 0; + err = append_deblk(vdir); + if (!err) + return vdir; /* success */ + + au_kfree_try_rcu(vdir->vd_deblk); + +out_free: + au_cache_free_vdir(vdir); +out: + vdir = ERR_PTR(err); + return vdir; +} + +static int reinit_vdir(struct au_vdir *vdir) +{ + int err; + union au_vdir_deblk_p p, deblk_end; + + while (vdir->vd_nblk > 1) { + au_kfree_try_rcu(vdir->vd_deblk[vdir->vd_nblk - 1]); + /* vdir->vd_deblk[vdir->vd_nblk - 1] = NULL; */ + vdir->vd_nblk--; + } + p.deblk = vdir->vd_deblk[0]; + deblk_end.deblk = p.deblk + vdir->vd_deblk_sz; + err = set_deblk_end(&p, &deblk_end); + /* keep vd_dblk_sz */ + vdir->vd_last.ul = 0; + vdir->vd_last.p.deblk = vdir->vd_deblk[0]; + vdir->vd_version = 0; + vdir->vd_jiffy = 0; + /* smp_mb(); */ + return err; +} + +/* ---------------------------------------------------------------------- */ + +#define AuFillVdir_CALLED 1 +#define AuFillVdir_WHABLE (1 << 1) +#define AuFillVdir_SHWH (1 << 2) +#define au_ftest_fillvdir(flags, name) ((flags) & AuFillVdir_##name) +#define au_fset_fillvdir(flags, name) \ + do { (flags) |= AuFillVdir_##name; } while (0) +#define au_fclr_fillvdir(flags, name) \ + do { (flags) &= ~AuFillVdir_##name; } while (0) + +#ifndef CONFIG_AUFS_SHWH +#undef AuFillVdir_SHWH +#define AuFillVdir_SHWH 0 +#endif + +struct fillvdir_arg { + struct dir_context ctx; + struct file *file; + struct au_vdir *vdir; + struct au_nhash delist; + struct au_nhash whlist; + aufs_bindex_t bindex; + unsigned int flags; + int err; +}; + +static int fillvdir(struct dir_context *ctx, const char *__name, int nlen, + loff_t offset __maybe_unused, u64 h_ino, + unsigned int d_type) +{ + struct fillvdir_arg *arg = container_of(ctx, struct fillvdir_arg, ctx); + char *name = (void *)__name; + struct super_block *sb; + ino_t ino; + const unsigned char shwh = !!au_ftest_fillvdir(arg->flags, SHWH); + + arg->err = 0; + sb = arg->file->f_path.dentry->d_sb; + au_fset_fillvdir(arg->flags, CALLED); + /* smp_mb(); */ + if (nlen <= AUFS_WH_PFX_LEN + || memcmp(name, AUFS_WH_PFX, AUFS_WH_PFX_LEN)) { + if (test_known(&arg->delist, name, nlen) + || au_nhash_test_known_wh(&arg->whlist, name, nlen)) + goto out; /* already exists or whiteouted */ + + arg->err = au_ino(sb, arg->bindex, h_ino, d_type, &ino); + if (!arg->err) { + if (unlikely(nlen > AUFS_MAX_NAMELEN)) + d_type = DT_UNKNOWN; + arg->err = append_de(arg->vdir, name, nlen, ino, + d_type, &arg->delist); + } + } else if (au_ftest_fillvdir(arg->flags, WHABLE)) { + name += AUFS_WH_PFX_LEN; + nlen -= AUFS_WH_PFX_LEN; + if (au_nhash_test_known_wh(&arg->whlist, name, nlen)) + goto out; /* already whiteouted */ + + ino = 0; /* just to suppress a warning */ + if (shwh) + arg->err = au_wh_ino(sb, arg->bindex, h_ino, d_type, + &ino); + if (!arg->err) { + if (nlen <= AUFS_MAX_NAMELEN + AUFS_WH_PFX_LEN) + d_type = DT_UNKNOWN; + arg->err = au_nhash_append_wh + (&arg->whlist, name, nlen, ino, d_type, + arg->bindex, shwh); + } + } + +out: + if (!arg->err) + arg->vdir->vd_jiffy = jiffies; + /* smp_mb(); */ + AuTraceErr(arg->err); + return arg->err; +} + +static int au_handle_shwh(struct super_block *sb, struct au_vdir *vdir, + struct au_nhash *whlist, struct au_nhash *delist) +{ +#ifdef CONFIG_AUFS_SHWH + int err; + unsigned int nh, u; + struct hlist_head *head; + struct au_vdir_wh *pos; + struct hlist_node *n; + char *p, *o; + struct au_vdir_destr *destr; + + AuDebugOn(!au_opt_test(au_mntflags(sb), SHWH)); + + err = -ENOMEM; + o = p = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!p)) + goto out; + + err = 0; + nh = whlist->nh_num; + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + p += AUFS_WH_PFX_LEN; + for (u = 0; u < nh; u++) { + head = whlist->nh_head + u; + hlist_for_each_entry_safe(pos, n, head, wh_hash) { + destr = &pos->wh_str; + memcpy(p, destr->name, destr->len); + err = append_de(vdir, o, destr->len + AUFS_WH_PFX_LEN, + pos->wh_ino, pos->wh_type, delist); + if (unlikely(err)) + break; + } + } + + free_page((unsigned long)o); + +out: + AuTraceErr(err); + return err; +#else + return 0; +#endif +} + +static int au_do_read_vdir(struct fillvdir_arg *arg) +{ + int err; + unsigned int rdhash; + loff_t offset; + aufs_bindex_t bbot, bindex, btop; + unsigned char shwh; + struct file *hf, *file; + struct super_block *sb; + + file = arg->file; + sb = file->f_path.dentry->d_sb; + SiMustAnyLock(sb); + + rdhash = au_sbi(sb)->si_rdhash; + if (!rdhash) + rdhash = au_rdhash_est(au_dir_size(file, /*dentry*/NULL)); + err = au_nhash_alloc(&arg->delist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out; + err = au_nhash_alloc(&arg->whlist, rdhash, GFP_NOFS); + if (unlikely(err)) + goto out_delist; + + err = 0; + arg->flags = 0; + shwh = 0; + if (au_opt_test(au_mntflags(sb), SHWH)) { + shwh = 1; + au_fset_fillvdir(arg->flags, SHWH); + } + btop = au_fbtop(file); + bbot = au_fbbot_dir(file); + for (bindex = btop; !err && bindex <= bbot; bindex++) { + hf = au_hf_dir(file, bindex); + if (!hf) + continue; + + offset = vfsub_llseek(hf, 0, SEEK_SET); + err = offset; + if (unlikely(offset)) + break; + + arg->bindex = bindex; + au_fclr_fillvdir(arg->flags, WHABLE); + if (shwh + || (bindex != bbot + && au_br_whable(au_sbr_perm(sb, bindex)))) + au_fset_fillvdir(arg->flags, WHABLE); + do { + arg->err = 0; + au_fclr_fillvdir(arg->flags, CALLED); + /* smp_mb(); */ + err = vfsub_iterate_dir(hf, &arg->ctx); + if (err >= 0) + err = arg->err; + } while (!err && au_ftest_fillvdir(arg->flags, CALLED)); + + /* + * dir_relax() may be good for concurrency, but aufs should not + * use it since it will cause a lockdep problem. + */ + } + + if (!err && shwh) + err = au_handle_shwh(sb, arg->vdir, &arg->whlist, &arg->delist); + + au_nhash_wh_free(&arg->whlist); + +out_delist: + au_nhash_de_free(&arg->delist); +out: + return err; +} + +static int read_vdir(struct file *file, int may_read) +{ + int err; + unsigned long expire; + unsigned char do_read; + struct fillvdir_arg arg = { + .ctx = { + .actor = fillvdir + } + }; + struct inode *inode; + struct au_vdir *vdir, *allocated; + + err = 0; + inode = file_inode(file); + IMustLock(inode); + IiMustWriteLock(inode); + SiMustAnyLock(inode->i_sb); + + allocated = NULL; + do_read = 0; + expire = au_sbi(inode->i_sb)->si_rdcache; + vdir = au_ivdir(inode); + if (!vdir) { + do_read = 1; + vdir = alloc_vdir(file); + err = PTR_ERR(vdir); + if (IS_ERR(vdir)) + goto out; + err = 0; + allocated = vdir; + } else if (may_read + && (!inode_eq_iversion(inode, vdir->vd_version) + || time_after(jiffies, vdir->vd_jiffy + expire))) { + do_read = 1; + err = reinit_vdir(vdir); + if (unlikely(err)) + goto out; + } + + if (!do_read) + return 0; /* success */ + + arg.file = file; + arg.vdir = vdir; + err = au_do_read_vdir(&arg); + if (!err) { + /* file->f_pos = 0; */ /* todo: ctx->pos? */ + vdir->vd_version = inode_query_iversion(inode); + vdir->vd_last.ul = 0; + vdir->vd_last.p.deblk = vdir->vd_deblk[0]; + if (allocated) + au_set_ivdir(inode, allocated); + } else if (allocated) + au_vdir_free(allocated); + +out: + return err; +} + +static int copy_vdir(struct au_vdir *tgt, struct au_vdir *src) +{ + int err, rerr; + unsigned long ul, n; + const unsigned int deblk_sz = src->vd_deblk_sz; + + AuDebugOn(tgt->vd_nblk != 1); + + err = -ENOMEM; + if (tgt->vd_nblk < src->vd_nblk) { + unsigned char **p; + + p = au_krealloc(tgt->vd_deblk, sizeof(*p) * src->vd_nblk, + GFP_NOFS, /*may_shrink*/0); + if (unlikely(!p)) + goto out; + tgt->vd_deblk = p; + } + + if (tgt->vd_deblk_sz != deblk_sz) { + unsigned char *p; + + tgt->vd_deblk_sz = deblk_sz; + p = au_krealloc(tgt->vd_deblk[0], deblk_sz, GFP_NOFS, + /*may_shrink*/1); + if (unlikely(!p)) + goto out; + tgt->vd_deblk[0] = p; + } + memcpy(tgt->vd_deblk[0], src->vd_deblk[0], deblk_sz); + tgt->vd_version = src->vd_version; + tgt->vd_jiffy = src->vd_jiffy; + + n = src->vd_nblk; + for (ul = 1; ul < n; ul++) { + tgt->vd_deblk[ul] = kmemdup(src->vd_deblk[ul], deblk_sz, + GFP_NOFS); + if (unlikely(!tgt->vd_deblk[ul])) + goto out; + tgt->vd_nblk++; + } + tgt->vd_nblk = n; + tgt->vd_last.ul = tgt->vd_last.ul; + tgt->vd_last.p.deblk = tgt->vd_deblk[tgt->vd_last.ul]; + tgt->vd_last.p.deblk += src->vd_last.p.deblk + - src->vd_deblk[src->vd_last.ul]; + /* smp_mb(); */ + return 0; /* success */ + +out: + rerr = reinit_vdir(tgt); + BUG_ON(rerr); + return err; +} + +int au_vdir_init(struct file *file) +{ + int err; + struct inode *inode; + struct au_vdir *vdir_cache, *allocated; + + /* test file->f_pos here instead of ctx->pos */ + err = read_vdir(file, !file->f_pos); + if (unlikely(err)) + goto out; + + allocated = NULL; + vdir_cache = au_fvdir_cache(file); + if (!vdir_cache) { + vdir_cache = alloc_vdir(file); + err = PTR_ERR(vdir_cache); + if (IS_ERR(vdir_cache)) + goto out; + allocated = vdir_cache; + } else if (!file->f_pos && vdir_cache->vd_version != file->f_version) { + /* test file->f_pos here instead of ctx->pos */ + err = reinit_vdir(vdir_cache); + if (unlikely(err)) + goto out; + } else + return 0; /* success */ + + inode = file_inode(file); + err = copy_vdir(vdir_cache, au_ivdir(inode)); + if (!err) { + file->f_version = inode_query_iversion(inode); + if (allocated) + au_set_fvdir_cache(file, allocated); + } else if (allocated) + au_vdir_free(allocated); + +out: + return err; +} + +static loff_t calc_offset(struct au_vdir *vdir) +{ + loff_t offset; + union au_vdir_deblk_p p; + + p.deblk = vdir->vd_deblk[vdir->vd_last.ul]; + offset = vdir->vd_last.p.deblk - p.deblk; + offset += vdir->vd_deblk_sz * vdir->vd_last.ul; + return offset; +} + +/* returns true or false */ +static int seek_vdir(struct file *file, struct dir_context *ctx) +{ + int valid; + unsigned int deblk_sz; + unsigned long ul, n; + loff_t offset; + union au_vdir_deblk_p p, deblk_end; + struct au_vdir *vdir_cache; + + valid = 1; + vdir_cache = au_fvdir_cache(file); + offset = calc_offset(vdir_cache); + AuDbg("offset %lld\n", offset); + if (ctx->pos == offset) + goto out; + + vdir_cache->vd_last.ul = 0; + vdir_cache->vd_last.p.deblk = vdir_cache->vd_deblk[0]; + if (!ctx->pos) + goto out; + + valid = 0; + deblk_sz = vdir_cache->vd_deblk_sz; + ul = div64_u64(ctx->pos, deblk_sz); + AuDbg("ul %lu\n", ul); + if (ul >= vdir_cache->vd_nblk) + goto out; + + n = vdir_cache->vd_nblk; + for (; ul < n; ul++) { + p.deblk = vdir_cache->vd_deblk[ul]; + deblk_end.deblk = p.deblk + deblk_sz; + offset = ul; + offset *= deblk_sz; + while (!is_deblk_end(&p, &deblk_end) && offset < ctx->pos) { + unsigned int l; + + l = calc_size(p.de->de_str.len); + offset += l; + p.deblk += l; + } + if (!is_deblk_end(&p, &deblk_end)) { + valid = 1; + vdir_cache->vd_last.ul = ul; + vdir_cache->vd_last.p = p; + break; + } + } + +out: + /* smp_mb(); */ + if (!valid) + AuDbg("valid %d\n", !valid); + return valid; +} + +int au_vdir_fill_de(struct file *file, struct dir_context *ctx) +{ + unsigned int l, deblk_sz; + union au_vdir_deblk_p deblk_end; + struct au_vdir *vdir_cache; + struct au_vdir_de *de; + + if (!seek_vdir(file, ctx)) + return 0; + + vdir_cache = au_fvdir_cache(file); + deblk_sz = vdir_cache->vd_deblk_sz; + while (1) { + deblk_end.deblk = vdir_cache->vd_deblk[vdir_cache->vd_last.ul]; + deblk_end.deblk += deblk_sz; + while (!is_deblk_end(&vdir_cache->vd_last.p, &deblk_end)) { + de = vdir_cache->vd_last.p.de; + AuDbg("%.*s, off%lld, i%lu, dt%d\n", + de->de_str.len, de->de_str.name, ctx->pos, + (unsigned long)de->de_ino, de->de_type); + if (unlikely(!dir_emit(ctx, de->de_str.name, + de->de_str.len, de->de_ino, + de->de_type))) { + /* todo: ignore the error caused by udba? */ + /* return err; */ + return 0; + } + + l = calc_size(de->de_str.len); + vdir_cache->vd_last.p.deblk += l; + ctx->pos += l; + } + if (vdir_cache->vd_last.ul < vdir_cache->vd_nblk - 1) { + vdir_cache->vd_last.ul++; + vdir_cache->vd_last.p.deblk + = vdir_cache->vd_deblk[vdir_cache->vd_last.ul]; + ctx->pos = deblk_sz * vdir_cache->vd_last.ul; + continue; + } + break; + } + + /* smp_mb(); */ + return 0; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/vfsub.c +++ linux-azure-5.13-5.13.0/fs/aufs/vfsub.c @@ -0,0 +1,916 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sub-routines for VFS + */ + +#include +#include +#include +#include +#include +#include "aufs.h" + +#ifdef CONFIG_AUFS_BR_FUSE +int vfsub_test_mntns(struct vfsmount *mnt, struct super_block *h_sb) +{ + if (!au_test_fuse(h_sb) || !au_userns) + return 0; + + return is_current_mnt_ns(mnt) ? 0 : -EACCES; +} +#endif + +int vfsub_sync_filesystem(struct super_block *h_sb, int wait) +{ + int err; + + lockdep_off(); + down_read(&h_sb->s_umount); + err = __sync_filesystem(h_sb, wait); + up_read(&h_sb->s_umount); + lockdep_on(); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_update_h_iattr(struct path *h_path, int *did) +{ + int err; + struct kstat st; + struct super_block *h_sb; + + /* for remote fs, leave work for its getattr or d_revalidate */ + /* for bad i_attr fs, handle them in aufs_getattr() */ + /* still some fs may acquire i_mutex. we need to skip them */ + err = 0; + if (!did) + did = &err; + h_sb = h_path->dentry->d_sb; + *did = (!au_test_fs_remote(h_sb) && au_test_fs_refresh_iattr(h_sb)); + if (*did) + err = vfsub_getattr(h_path, &st); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct file *vfsub_dentry_open(struct path *path, int flags) +{ + return dentry_open(path, flags /* | __FMODE_NONOTIFY */, + current_cred()); +} + +struct file *vfsub_filp_open(const char *path, int oflags, int mode) +{ + struct file *file; + + lockdep_off(); + file = filp_open(path, + oflags /* | __FMODE_NONOTIFY */, + mode); + lockdep_on(); + if (IS_ERR(file)) + goto out; + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + +out: + return file; +} + +/* + * Ideally this function should call VFS:do_last() in order to keep all its + * checkings. But it is very hard for aufs to regenerate several VFS internal + * structure such as nameidata. This is a second (or third) best approach. + * cf. linux/fs/namei.c:do_last(), lookup_open() and atomic_open(). + */ +int vfsub_atomic_open(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *args) +{ + int err; + struct au_branch *br = args->br; + struct file *file = args->file; + /* copied from linux/fs/namei.c:atomic_open() */ + struct dentry *const DENTRY_NOT_SET = (void *)-1UL; + + IMustLock(dir); + AuDebugOn(!dir->i_op->atomic_open); + + err = au_br_test_oflag(args->open_flag, br); + if (unlikely(err)) + goto out; + + au_lcnt_inc(&br->br_nfiles); + file->f_path.dentry = DENTRY_NOT_SET; + file->f_path.mnt = au_br_mnt(br); + AuDbg("%ps\n", dir->i_op->atomic_open); + err = dir->i_op->atomic_open(dir, dentry, file, args->open_flag, + args->create_mode); + if (unlikely(err < 0)) { + au_lcnt_dec(&br->br_nfiles); + goto out; + } + + /* temporary workaround for nfsv4 branch */ + if (au_test_nfs(dir->i_sb)) + nfs_mark_for_revalidate(dir); + + if (file->f_mode & FMODE_CREATED) + fsnotify_create(dir, dentry); + if (!(file->f_mode & FMODE_OPENED)) { + au_lcnt_dec(&br->br_nfiles); + goto out; + } + + /* todo: call VFS:may_open() here */ + /* todo: ima_file_check() too? */ + if (!err && (args->open_flag & __FMODE_EXEC)) + err = deny_write_access(file); + if (!err) + fsnotify_open(file); + else + au_lcnt_dec(&br->br_nfiles); + /* note that the file is created and still opened */ + +out: + return err; +} + +int vfsub_kern_path(const char *name, unsigned int flags, struct path *path) +{ + int err; + + err = kern_path(name, flags, path); + if (!err && d_is_positive(path->dentry)) + vfsub_update_h_iattr(path, /*did*/NULL); /*ignore*/ + return err; +} + +struct dentry *vfsub_lookup_one_len_unlocked(const char *name, + struct dentry *parent, int len) +{ + struct path path = { + .mnt = NULL + }; + + path.dentry = lookup_one_len_unlocked(name, parent, len); + if (IS_ERR(path.dentry)) + goto out; + if (d_is_positive(path.dentry)) + vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/ + +out: + AuTraceErrPtr(path.dentry); + return path.dentry; +} + +struct dentry *vfsub_lookup_one_len(const char *name, struct dentry *parent, + int len) +{ + struct path path = { + .mnt = NULL + }; + + /* VFS checks it too, but by WARN_ON_ONCE() */ + IMustLock(d_inode(parent)); + + path.dentry = lookup_one_len(name, parent, len); + if (IS_ERR(path.dentry)) + goto out; + if (d_is_positive(path.dentry)) + vfsub_update_h_iattr(&path, /*did*/NULL); /*ignore*/ + +out: + AuTraceErrPtr(path.dentry); + return path.dentry; +} + +void vfsub_call_lkup_one(void *args) +{ + struct vfsub_lkup_one_args *a = args; + *a->errp = vfsub_lkup_one(a->name, a->parent); +} + +/* ---------------------------------------------------------------------- */ + +struct dentry *vfsub_lock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2) +{ + struct dentry *d; + + lockdep_off(); + d = lock_rename(d1, d2); + lockdep_on(); + au_hn_suspend(hdir1); + if (hdir1 != hdir2) + au_hn_suspend(hdir2); + + return d; +} + +void vfsub_unlock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2) +{ + au_hn_resume(hdir1); + if (hdir1 != hdir2) + au_hn_resume(hdir2); + lockdep_off(); + unlock_rename(d1, d2); + lockdep_on(); +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_create(struct inode *dir, struct path *path, int mode, bool want_excl) +{ + int err; + struct dentry *d; + struct user_namespace *userns; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mknod(path, d, mode, 0); + path->dentry = d; + if (unlikely(err)) + goto out; + userns = mnt_user_ns(path->mnt); + + lockdep_off(); + err = vfs_create(userns, dir, path->dentry, mode, want_excl); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_symlink(struct inode *dir, struct path *path, const char *symname) +{ + int err; + struct dentry *d; + struct user_namespace *userns; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_symlink(path, d, symname); + path->dentry = d; + if (unlikely(err)) + goto out; + userns = mnt_user_ns(path->mnt); + + lockdep_off(); + err = vfs_symlink(userns, dir, path->dentry, symname); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_mknod(struct inode *dir, struct path *path, int mode, dev_t dev) +{ + int err; + struct dentry *d; + struct user_namespace *userns; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mknod(path, d, mode, new_encode_dev(dev)); + path->dentry = d; + if (unlikely(err)) + goto out; + userns = mnt_user_ns(path->mnt); + + lockdep_off(); + err = vfs_mknod(userns, dir, path->dentry, mode, dev); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +static int au_test_nlink(struct inode *inode) +{ + const unsigned int link_max = UINT_MAX >> 1; /* rough margin */ + + if (!au_test_fs_no_limit_nlink(inode->i_sb) + || inode->i_nlink < link_max) + return 0; + return -EMLINK; +} + +int vfsub_link(struct dentry *src_dentry, struct inode *dir, struct path *path, + struct inode **delegated_inode) +{ + int err; + struct dentry *d; + struct user_namespace *userns; + + IMustLock(dir); + + err = au_test_nlink(d_inode(src_dentry)); + if (unlikely(err)) + return err; + + /* we don't call may_linkat() */ + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_link(src_dentry, path, d); + path->dentry = d; + if (unlikely(err)) + goto out; + userns = mnt_user_ns(path->mnt); + + lockdep_off(); + err = vfs_link(src_dentry, userns, dir, path->dentry, delegated_inode); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + /* fuse has different memory inode for the same inumber */ + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + tmp.dentry = src_dentry; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_rename(struct inode *src_dir, struct dentry *src_dentry, + struct inode *dir, struct path *path, + struct inode **delegated_inode, unsigned int flags) +{ + int err; + struct renamedata rd; + struct path tmp = { + .mnt = path->mnt + }; + struct dentry *d; + + IMustLock(dir); + IMustLock(src_dir); + + d = path->dentry; + path->dentry = d->d_parent; + tmp.dentry = src_dentry->d_parent; + err = security_path_rename(&tmp, src_dentry, path, d, /*flags*/0); + path->dentry = d; + if (unlikely(err)) + goto out; + + rd.old_mnt_userns = mnt_user_ns(path->mnt); + rd.old_dir = src_dir; + rd.old_dentry = src_dentry; + rd.new_mnt_userns = rd.old_mnt_userns; + rd.new_dir = dir; + rd.new_dentry = path->dentry; + rd.delegated_inode = delegated_inode; + rd.flags = flags; + lockdep_off(); + err = vfs_rename(&rd); + lockdep_on(); + if (!err) { + int did; + + tmp.dentry = d->d_parent; + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = src_dentry; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + tmp.dentry = src_dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_mkdir(struct inode *dir, struct path *path, int mode) +{ + int err; + struct dentry *d; + struct user_namespace *userns; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_mkdir(path, d, mode); + path->dentry = d; + if (unlikely(err)) + goto out; + userns = mnt_user_ns(path->mnt); + + lockdep_off(); + err = vfs_mkdir(userns, dir, path->dentry, mode); + lockdep_on(); + if (!err) { + struct path tmp = *path; + int did; + + vfsub_update_h_iattr(&tmp, &did); + if (did) { + tmp.dentry = path->dentry->d_parent; + vfsub_update_h_iattr(&tmp, /*did*/NULL); + } + /*ignore*/ + } + +out: + return err; +} + +int vfsub_rmdir(struct inode *dir, struct path *path) +{ + int err; + struct dentry *d; + struct user_namespace *userns; + + IMustLock(dir); + + d = path->dentry; + path->dentry = d->d_parent; + err = security_path_rmdir(path, d); + path->dentry = d; + if (unlikely(err)) + goto out; + userns = mnt_user_ns(path->mnt); + + lockdep_off(); + err = vfs_rmdir(userns, dir, path->dentry); + lockdep_on(); + if (!err) { + struct path tmp = { + .dentry = path->dentry->d_parent, + .mnt = path->mnt + }; + + vfsub_update_h_iattr(&tmp, /*did*/NULL); /*ignore*/ + } + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* todo: support mmap_sem? */ +ssize_t vfsub_read_u(struct file *file, char __user *ubuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + + lockdep_off(); + err = vfs_read(file, ubuf, count, ppos); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +ssize_t vfsub_read_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + + lockdep_off(); + err = kernel_read(file, kbuf, count, ppos); + lockdep_on(); + AuTraceErr(err); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +ssize_t vfsub_write_u(struct file *file, const char __user *ubuf, size_t count, + loff_t *ppos) +{ + ssize_t err; + + lockdep_off(); + err = vfs_write(file, ubuf, count, ppos); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +ssize_t vfsub_write_k(struct file *file, void *kbuf, size_t count, loff_t *ppos) +{ + ssize_t err; + + lockdep_off(); + err = kernel_write(file, kbuf, count, ppos); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +int vfsub_flush(struct file *file, fl_owner_t id) +{ + int err; + + err = 0; + if (file->f_op->flush) { + if (!au_test_nfs(file->f_path.dentry->d_sb)) + err = file->f_op->flush(file, id); + else { + lockdep_off(); + err = file->f_op->flush(file, id); + lockdep_on(); + } + if (!err) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); + /*ignore*/ + } + return err; +} + +int vfsub_iterate_dir(struct file *file, struct dir_context *ctx) +{ + int err; + + AuDbg("%pD, ctx{%ps, %llu}\n", file, ctx->actor, ctx->pos); + + lockdep_off(); + err = iterate_dir(file, ctx); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&file->f_path, /*did*/NULL); /*ignore*/ + + return err; +} + +long vfsub_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) +{ + long err; + + lockdep_off(); + err = do_splice_to(in, ppos, pipe, len, flags); + lockdep_on(); + file_accessed(in); + if (err >= 0) + vfsub_update_h_iattr(&in->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +long vfsub_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags) +{ + long err; + + lockdep_off(); + err = do_splice_from(pipe, out, ppos, len, flags); + lockdep_on(); + if (err >= 0) + vfsub_update_h_iattr(&out->f_path, /*did*/NULL); /*ignore*/ + return err; +} + +int vfsub_fsync(struct file *file, struct path *path, int datasync) +{ + int err; + + /* file can be NULL */ + lockdep_off(); + err = vfs_fsync(file, datasync); + lockdep_on(); + if (!err) { + if (!path) { + AuDebugOn(!file); + path = &file->f_path; + } + vfsub_update_h_iattr(path, /*did*/NULL); /*ignore*/ + } + return err; +} + +/* cf. open.c:do_sys_truncate() and do_sys_ftruncate() */ +int vfsub_trunc(struct path *h_path, loff_t length, unsigned int attr, + struct file *h_file) +{ + int err; + struct inode *h_inode; + struct super_block *h_sb; + struct user_namespace *h_userns; + + if (!h_file) { + err = vfsub_truncate(h_path, length); + goto out; + } + + h_inode = d_inode(h_path->dentry); + h_sb = h_inode->i_sb; + lockdep_off(); + sb_start_write(h_sb); + lockdep_on(); + err = locks_verify_truncate(h_inode, h_file, length); + if (!err) + err = security_path_truncate(h_path); + if (!err) { + h_userns = mnt_user_ns(h_path->mnt); + lockdep_off(); + err = do_truncate(h_userns, h_path->dentry, length, attr, + h_file); + lockdep_on(); + } + lockdep_off(); + sb_end_write(h_sb); + lockdep_on(); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_vfsub_mkdir_args { + int *errp; + struct inode *dir; + struct path *path; + int mode; +}; + +static void au_call_vfsub_mkdir(void *args) +{ + struct au_vfsub_mkdir_args *a = args; + *a->errp = vfsub_mkdir(a->dir, a->path, a->mode); +} + +int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode) +{ + int err, do_sio, wkq_err; + struct user_namespace *userns; + + userns = mnt_user_ns(path->mnt); + do_sio = au_test_h_perm_sio(userns, dir, MAY_EXEC | MAY_WRITE); + if (!do_sio) { + lockdep_off(); + err = vfsub_mkdir(dir, path, mode); + lockdep_on(); + } else { + struct au_vfsub_mkdir_args args = { + .errp = &err, + .dir = dir, + .path = path, + .mode = mode + }; + wkq_err = au_wkq_wait(au_call_vfsub_mkdir, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +struct au_vfsub_rmdir_args { + int *errp; + struct inode *dir; + struct path *path; +}; + +static void au_call_vfsub_rmdir(void *args) +{ + struct au_vfsub_rmdir_args *a = args; + *a->errp = vfsub_rmdir(a->dir, a->path); +} + +int vfsub_sio_rmdir(struct inode *dir, struct path *path) +{ + int err, do_sio, wkq_err; + struct user_namespace *userns; + + userns = mnt_user_ns(path->mnt); + do_sio = au_test_h_perm_sio(userns, dir, MAY_EXEC | MAY_WRITE); + if (!do_sio) { + lockdep_off(); + err = vfsub_rmdir(dir, path); + lockdep_on(); + } else { + struct au_vfsub_rmdir_args args = { + .errp = &err, + .dir = dir, + .path = path + }; + wkq_err = au_wkq_wait(au_call_vfsub_rmdir, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct notify_change_args { + int *errp; + struct path *path; + struct iattr *ia; + struct inode **delegated_inode; +}; + +static void call_notify_change(void *args) +{ + struct notify_change_args *a = args; + struct inode *h_inode; + struct user_namespace *userns; + + h_inode = d_inode(a->path->dentry); + IMustLock(h_inode); + + *a->errp = -EPERM; + if (!IS_IMMUTABLE(h_inode) && !IS_APPEND(h_inode)) { + userns = mnt_user_ns(a->path->mnt); + lockdep_off(); + *a->errp = notify_change(userns, a->path->dentry, a->ia, + a->delegated_inode); + lockdep_on(); + if (!*a->errp) + vfsub_update_h_iattr(a->path, /*did*/NULL); /*ignore*/ + } + AuTraceErr(*a->errp); +} + +int vfsub_notify_change(struct path *path, struct iattr *ia, + struct inode **delegated_inode) +{ + int err; + struct notify_change_args args = { + .errp = &err, + .path = path, + .ia = ia, + .delegated_inode = delegated_inode + }; + + call_notify_change(&args); + + return err; +} + +int vfsub_sio_notify_change(struct path *path, struct iattr *ia, + struct inode **delegated_inode) +{ + int err, wkq_err; + struct notify_change_args args = { + .errp = &err, + .path = path, + .ia = ia, + .delegated_inode = delegated_inode + }; + + wkq_err = au_wkq_wait(call_notify_change, &args); + if (unlikely(wkq_err)) + err = wkq_err; + + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct unlink_args { + int *errp; + struct inode *dir; + struct path *path; + struct inode **delegated_inode; +}; + +static void call_unlink(void *args) +{ + struct unlink_args *a = args; + struct dentry *d = a->path->dentry; + struct inode *h_inode; + struct user_namespace *userns; + const int stop_sillyrename = (au_test_nfs(d->d_sb) + && au_dcount(d) == 1); + + IMustLock(a->dir); + + a->path->dentry = d->d_parent; + *a->errp = security_path_unlink(a->path, d); + a->path->dentry = d; + if (unlikely(*a->errp)) + return; + + if (!stop_sillyrename) + dget(d); + h_inode = NULL; + if (d_is_positive(d)) { + h_inode = d_inode(d); + ihold(h_inode); + } + + userns = mnt_user_ns(a->path->mnt); + lockdep_off(); + *a->errp = vfs_unlink(userns, a->dir, d, a->delegated_inode); + lockdep_on(); + if (!*a->errp) { + struct path tmp = { + .dentry = d->d_parent, + .mnt = a->path->mnt + }; + vfsub_update_h_iattr(&tmp, /*did*/NULL); /*ignore*/ + } + + if (!stop_sillyrename) + dput(d); + if (h_inode) + iput(h_inode); + + AuTraceErr(*a->errp); +} + +/* + * @dir: must be locked. + * @dentry: target dentry. + */ +int vfsub_unlink(struct inode *dir, struct path *path, + struct inode **delegated_inode, int force) +{ + int err; + struct unlink_args args = { + .errp = &err, + .dir = dir, + .path = path, + .delegated_inode = delegated_inode + }; + + if (!force) + call_unlink(&args); + else { + int wkq_err; + + wkq_err = au_wkq_wait(call_unlink, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/vfsub.h +++ linux-azure-5.13-5.13.0/fs/aufs/vfsub.h @@ -0,0 +1,358 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * sub-routines for VFS + */ + +#ifndef __AUFS_VFSUB_H__ +#define __AUFS_VFSUB_H__ + +#ifdef __KERNEL__ + +#include +#include +#include +#include +#include "debug.h" + +/* copied from linux/fs/internal.h */ +/* todo: BAD approach!! */ +extern void __mnt_drop_write(struct vfsmount *); +extern struct file *alloc_empty_file(int, const struct cred *); + +/* ---------------------------------------------------------------------- */ + +/* lock subclass for lower inode */ +/* default MAX_LOCKDEP_SUBCLASSES(8) is not enough */ +/* reduce? gave up. */ +enum { + AuLsc_I_Begin = I_MUTEX_PARENT2, /* 5 */ + AuLsc_I_PARENT, /* lower inode, parent first */ + AuLsc_I_PARENT2, /* copyup dirs */ + AuLsc_I_PARENT3, /* copyup wh */ + AuLsc_I_CHILD, + AuLsc_I_CHILD2, + AuLsc_I_End +}; + +/* to debug easier, do not make them inlined functions */ +#define MtxMustLock(mtx) AuDebugOn(!mutex_is_locked(mtx)) +#define IMustLock(i) AuDebugOn(!inode_is_locked(i)) + +/* ---------------------------------------------------------------------- */ + +static inline void vfsub_drop_nlink(struct inode *inode) +{ + AuDebugOn(!inode->i_nlink); + drop_nlink(inode); +} + +static inline void vfsub_dead_dir(struct inode *inode) +{ + AuDebugOn(!S_ISDIR(inode->i_mode)); + inode->i_flags |= S_DEAD; + clear_nlink(inode); +} + +static inline int vfsub_native_ro(struct inode *inode) +{ + return sb_rdonly(inode->i_sb) + || IS_RDONLY(inode) + /* || IS_APPEND(inode) */ + || IS_IMMUTABLE(inode); +} + +#ifdef CONFIG_AUFS_BR_FUSE +int vfsub_test_mntns(struct vfsmount *mnt, struct super_block *h_sb); +#else +AuStubInt0(vfsub_test_mntns, struct vfsmount *mnt, struct super_block *h_sb); +#endif + +int vfsub_sync_filesystem(struct super_block *h_sb, int wait); + +/* ---------------------------------------------------------------------- */ + +int vfsub_update_h_iattr(struct path *h_path, int *did); +struct file *vfsub_dentry_open(struct path *path, int flags); +struct file *vfsub_filp_open(const char *path, int oflags, int mode); +struct au_branch; +struct vfsub_aopen_args { + struct file *file; + unsigned int open_flag; + umode_t create_mode; + struct au_branch *br; +}; +int vfsub_atomic_open(struct inode *dir, struct dentry *dentry, + struct vfsub_aopen_args *args); +int vfsub_kern_path(const char *name, unsigned int flags, struct path *path); + +struct dentry *vfsub_lookup_one_len_unlocked(const char *name, + struct dentry *parent, int len); +struct dentry *vfsub_lookup_one_len(const char *name, struct dentry *parent, + int len); + +struct vfsub_lkup_one_args { + struct dentry **errp; + struct qstr *name; + struct dentry *parent; +}; + +static inline struct dentry *vfsub_lkup_one(struct qstr *name, + struct dentry *parent) +{ + return vfsub_lookup_one_len(name->name, parent, name->len); +} + +void vfsub_call_lkup_one(void *args); + +/* ---------------------------------------------------------------------- */ + +static inline int vfsub_mnt_want_write(struct vfsmount *mnt) +{ + int err; + + lockdep_off(); + err = mnt_want_write(mnt); + lockdep_on(); + return err; +} + +static inline void vfsub_mnt_drop_write(struct vfsmount *mnt) +{ + lockdep_off(); + mnt_drop_write(mnt); + lockdep_on(); +} + +#if 0 /* reserved */ +static inline void vfsub_mnt_drop_write_file(struct file *file) +{ + lockdep_off(); + mnt_drop_write_file(file); + lockdep_on(); +} +#endif + +/* ---------------------------------------------------------------------- */ + +struct au_hinode; +struct dentry *vfsub_lock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2); +void vfsub_unlock_rename(struct dentry *d1, struct au_hinode *hdir1, + struct dentry *d2, struct au_hinode *hdir2); + +int vfsub_create(struct inode *dir, struct path *path, int mode, + bool want_excl); +int vfsub_symlink(struct inode *dir, struct path *path, + const char *symname); +int vfsub_mknod(struct inode *dir, struct path *path, int mode, dev_t dev); +int vfsub_link(struct dentry *src_dentry, struct inode *dir, + struct path *path, struct inode **delegated_inode); +int vfsub_rename(struct inode *src_hdir, struct dentry *src_dentry, + struct inode *hdir, struct path *path, + struct inode **delegated_inode, unsigned int flags); +int vfsub_mkdir(struct inode *dir, struct path *path, int mode); +int vfsub_rmdir(struct inode *dir, struct path *path); + +/* ---------------------------------------------------------------------- */ + +ssize_t vfsub_read_u(struct file *file, char __user *ubuf, size_t count, + loff_t *ppos); +ssize_t vfsub_read_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos); +ssize_t vfsub_write_u(struct file *file, const char __user *ubuf, size_t count, + loff_t *ppos); +ssize_t vfsub_write_k(struct file *file, void *kbuf, size_t count, + loff_t *ppos); +int vfsub_flush(struct file *file, fl_owner_t id); +int vfsub_iterate_dir(struct file *file, struct dir_context *ctx); + +static inline loff_t vfsub_f_size_read(struct file *file) +{ + return i_size_read(file_inode(file)); +} + +static inline unsigned int vfsub_file_flags(struct file *file) +{ + unsigned int flags; + + spin_lock(&file->f_lock); + flags = file->f_flags; + spin_unlock(&file->f_lock); + + return flags; +} + +static inline int vfsub_file_execed(struct file *file) +{ + /* todo: direct access f_flags */ + return !!(vfsub_file_flags(file) & __FMODE_EXEC); +} + +#if 0 /* reserved */ +static inline void vfsub_file_accessed(struct file *h_file) +{ + file_accessed(h_file); + vfsub_update_h_iattr(&h_file->f_path, /*did*/NULL); /*ignore*/ +} +#endif + +#if 0 /* reserved */ +static inline void vfsub_touch_atime(struct vfsmount *h_mnt, + struct dentry *h_dentry) +{ + struct path h_path = { + .dentry = h_dentry, + .mnt = h_mnt + }; + touch_atime(&h_path); + vfsub_update_h_iattr(&h_path, /*did*/NULL); /*ignore*/ +} +#endif + +static inline int vfsub_update_time(struct inode *h_inode, + struct timespec64 *ts, int flags) +{ + return update_time(h_inode, ts, flags); + /* no vfsub_update_h_iattr() since we don't have struct path */ +} + +#ifdef CONFIG_FS_POSIX_ACL +static inline int vfsub_acl_chmod(struct user_namespace *h_userns, + struct inode *h_inode, umode_t h_mode) +{ + int err; + + err = posix_acl_chmod(h_userns, h_inode, h_mode); + if (err == -EOPNOTSUPP) + err = 0; + return err; +} +#else +AuStubInt0(vfsub_acl_chmod, struct user_namespace *h_userns, + struct inode *h_inode, umode_t h_mode); +#endif + +long vfsub_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); +long vfsub_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags); + +static inline long vfsub_truncate(struct path *path, loff_t length) +{ + long err; + + lockdep_off(); + err = vfs_truncate(path, length); + lockdep_on(); + return err; +} + +int vfsub_trunc(struct path *h_path, loff_t length, unsigned int attr, + struct file *h_file); +int vfsub_fsync(struct file *file, struct path *path, int datasync); + +/* + * re-use branch fs's ioctl(FICLONE) while aufs itself doesn't support such + * ioctl. + */ +static inline loff_t vfsub_clone_file_range(struct file *src, struct file *dst, + loff_t len) +{ + loff_t err; + + lockdep_off(); + err = vfs_clone_file_range(src, 0, dst, 0, len, /*remap_flags*/0); + lockdep_on(); + + return err; +} + +/* copy_file_range(2) is a systemcall */ +static inline ssize_t vfsub_copy_file_range(struct file *src, loff_t src_pos, + struct file *dst, loff_t dst_pos, + size_t len, unsigned int flags) +{ + ssize_t ssz; + + lockdep_off(); + ssz = vfs_copy_file_range(src, src_pos, dst, dst_pos, len, flags); + lockdep_on(); + + return ssz; +} + +/* ---------------------------------------------------------------------- */ + +static inline loff_t vfsub_llseek(struct file *file, loff_t offset, int origin) +{ + loff_t err; + + lockdep_off(); + err = vfs_llseek(file, offset, origin); + lockdep_on(); + return err; +} + +/* ---------------------------------------------------------------------- */ + +int vfsub_sio_mkdir(struct inode *dir, struct path *path, int mode); +int vfsub_sio_rmdir(struct inode *dir, struct path *path); +int vfsub_sio_notify_change(struct path *path, struct iattr *ia, + struct inode **delegated_inode); +int vfsub_notify_change(struct path *path, struct iattr *ia, + struct inode **delegated_inode); +int vfsub_unlink(struct inode *dir, struct path *path, + struct inode **delegated_inode, int force); + +static inline int vfsub_getattr(const struct path *path, struct kstat *st) +{ + return vfs_getattr(path, st, STATX_BASIC_STATS, AT_STATX_SYNC_AS_STAT); +} + +/* ---------------------------------------------------------------------- */ + +static inline int vfsub_setxattr(struct user_namespace *userns, + struct dentry *dentry, const char *name, + const void *value, size_t size, int flags) +{ + int err; + + lockdep_off(); + err = vfs_setxattr(userns, dentry, name, value, size, flags); + lockdep_on(); + + return err; +} + +static inline int vfsub_removexattr(struct user_namespace *userns, + struct dentry *dentry, const char *name) +{ + int err; + + lockdep_off(); + err = vfs_removexattr(userns, dentry, name); + lockdep_on(); + + return err; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_VFSUB_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/wbr_policy.c +++ linux-azure-5.13-5.13.0/fs/aufs/wbr_policy.c @@ -0,0 +1,830 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * policies for selecting one among multiple writable branches + */ + +#include +#include "aufs.h" + +/* subset of cpup_attr() */ +static noinline_for_stack +int au_cpdown_attr(struct path *h_path, struct dentry *h_src) +{ + int err, sbits; + struct iattr ia; + struct inode *h_isrc; + + h_isrc = d_inode(h_src); + ia.ia_valid = ATTR_FORCE | ATTR_MODE | ATTR_UID | ATTR_GID; + ia.ia_mode = h_isrc->i_mode; + ia.ia_uid = h_isrc->i_uid; + ia.ia_gid = h_isrc->i_gid; + sbits = !!(ia.ia_mode & (S_ISUID | S_ISGID)); + au_cpup_attr_flags(d_inode(h_path->dentry), h_isrc->i_flags); + /* no delegation since it is just created */ + err = vfsub_sio_notify_change(h_path, &ia, /*delegated*/NULL); + + /* is this nfs only? */ + if (!err && sbits && au_test_nfs(h_path->dentry->d_sb)) { + ia.ia_valid = ATTR_FORCE | ATTR_MODE; + ia.ia_mode = h_isrc->i_mode; + err = vfsub_sio_notify_change(h_path, &ia, /*delegated*/NULL); + } + + return err; +} + +#define AuCpdown_PARENT_OPQ 1 +#define AuCpdown_WHED (1 << 1) +#define AuCpdown_MADE_DIR (1 << 2) +#define AuCpdown_DIROPQ (1 << 3) +#define au_ftest_cpdown(flags, name) ((flags) & AuCpdown_##name) +#define au_fset_cpdown(flags, name) \ + do { (flags) |= AuCpdown_##name; } while (0) +#define au_fclr_cpdown(flags, name) \ + do { (flags) &= ~AuCpdown_##name; } while (0) + +static int au_cpdown_dir_opq(struct dentry *dentry, aufs_bindex_t bdst, + unsigned int *flags) +{ + int err; + struct dentry *opq_dentry; + + opq_dentry = au_diropq_create(dentry, bdst); + err = PTR_ERR(opq_dentry); + if (IS_ERR(opq_dentry)) + goto out; + dput(opq_dentry); + au_fset_cpdown(*flags, DIROPQ); + +out: + return err; +} + +static int au_cpdown_dir_wh(struct dentry *dentry, struct dentry *h_parent, + struct inode *dir, aufs_bindex_t bdst) +{ + int err; + struct path h_path; + struct au_branch *br; + + br = au_sbr(dentry->d_sb, bdst); + h_path.dentry = au_wh_lkup(h_parent, &dentry->d_name, br); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + err = 0; + if (d_is_positive(h_path.dentry)) { + h_path.mnt = au_br_mnt(br); + err = au_wh_unlink_dentry(au_h_iptr(dir, bdst), &h_path, + dentry); + } + dput(h_path.dentry); + +out: + return err; +} + +static int au_cpdown_dir(struct dentry *dentry, aufs_bindex_t bdst, + struct au_pin *pin, + struct dentry *h_parent, void *arg) +{ + int err, rerr; + aufs_bindex_t bopq, btop; + struct path h_path; + struct dentry *parent; + struct inode *h_dir, *h_inode, *inode, *dir; + unsigned int *flags = arg; + + btop = au_dbtop(dentry); + /* dentry is di-locked */ + parent = dget_parent(dentry); + dir = d_inode(parent); + h_dir = d_inode(h_parent); + AuDebugOn(h_dir != au_h_iptr(dir, bdst)); + IMustLock(h_dir); + + err = au_lkup_neg(dentry, bdst, /*wh*/0); + if (unlikely(err < 0)) + goto out; + h_path.dentry = au_h_dptr(dentry, bdst); + h_path.mnt = au_sbr_mnt(dentry->d_sb, bdst); + err = vfsub_sio_mkdir(au_h_iptr(dir, bdst), &h_path, 0755); + if (unlikely(err)) + goto out_put; + au_fset_cpdown(*flags, MADE_DIR); + + bopq = au_dbdiropq(dentry); + au_fclr_cpdown(*flags, WHED); + au_fclr_cpdown(*flags, DIROPQ); + if (au_dbwh(dentry) == bdst) + au_fset_cpdown(*flags, WHED); + if (!au_ftest_cpdown(*flags, PARENT_OPQ) && bopq <= bdst) + au_fset_cpdown(*flags, PARENT_OPQ); + h_inode = d_inode(h_path.dentry); + inode_lock_nested(h_inode, AuLsc_I_CHILD); + if (au_ftest_cpdown(*flags, WHED)) { + err = au_cpdown_dir_opq(dentry, bdst, flags); + if (unlikely(err)) { + inode_unlock(h_inode); + goto out_dir; + } + } + + err = au_cpdown_attr(&h_path, au_h_dptr(dentry, btop)); + inode_unlock(h_inode); + if (unlikely(err)) + goto out_opq; + + if (au_ftest_cpdown(*flags, WHED)) { + err = au_cpdown_dir_wh(dentry, h_parent, dir, bdst); + if (unlikely(err)) + goto out_opq; + } + + inode = d_inode(dentry); + if (au_ibbot(inode) < bdst) + au_set_ibbot(inode, bdst); + au_set_h_iptr(inode, bdst, au_igrab(h_inode), + au_hi_flags(inode, /*isdir*/1)); + au_fhsm_wrote(dentry->d_sb, bdst, /*force*/0); + goto out; /* success */ + + /* revert */ +out_opq: + if (au_ftest_cpdown(*flags, DIROPQ)) { + inode_lock_nested(h_inode, AuLsc_I_CHILD); + rerr = au_diropq_remove(dentry, bdst); + inode_unlock(h_inode); + if (unlikely(rerr)) { + AuIOErr("failed removing diropq for %pd b%d (%d)\n", + dentry, bdst, rerr); + err = -EIO; + goto out; + } + } +out_dir: + if (au_ftest_cpdown(*flags, MADE_DIR)) { + rerr = vfsub_sio_rmdir(au_h_iptr(dir, bdst), &h_path); + if (unlikely(rerr)) { + AuIOErr("failed removing %pd b%d (%d)\n", + dentry, bdst, rerr); + err = -EIO; + } + } +out_put: + au_set_h_dptr(dentry, bdst, NULL); + if (au_dbbot(dentry) == bdst) + au_update_dbbot(dentry); +out: + dput(parent); + return err; +} + +int au_cpdown_dirs(struct dentry *dentry, aufs_bindex_t bdst) +{ + int err; + unsigned int flags; + + flags = 0; + err = au_cp_dirs(dentry, bdst, au_cpdown_dir, &flags); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* policies for create */ + +int au_wbr_nonopq(struct dentry *dentry, aufs_bindex_t bindex) +{ + int err, i, j, ndentry; + aufs_bindex_t bopq; + struct au_dcsub_pages dpages; + struct au_dpage *dpage; + struct dentry **dentries, *parent, *d; + + err = au_dpages_init(&dpages, GFP_NOFS); + if (unlikely(err)) + goto out; + parent = dget_parent(dentry); + err = au_dcsub_pages_rev_aufs(&dpages, parent, /*do_include*/0); + if (unlikely(err)) + goto out_free; + + err = bindex; + for (i = 0; i < dpages.ndpage; i++) { + dpage = dpages.dpages + i; + dentries = dpage->dentries; + ndentry = dpage->ndentry; + for (j = 0; j < ndentry; j++) { + d = dentries[j]; + di_read_lock_parent2(d, !AuLock_IR); + bopq = au_dbdiropq(d); + di_read_unlock(d, !AuLock_IR); + if (bopq >= 0 && bopq < err) + err = bopq; + } + } + +out_free: + dput(parent); + au_dpages_free(&dpages); +out: + return err; +} + +static int au_wbr_bu(struct super_block *sb, aufs_bindex_t bindex) +{ + for (; bindex >= 0; bindex--) + if (!au_br_rdonly(au_sbr(sb, bindex))) + return bindex; + return -EROFS; +} + +/* top down parent */ +static int au_wbr_create_tdp(struct dentry *dentry, + unsigned int flags __maybe_unused) +{ + int err; + aufs_bindex_t btop, bindex; + struct super_block *sb; + struct dentry *parent, *h_parent; + + sb = dentry->d_sb; + btop = au_dbtop(dentry); + err = btop; + if (!au_br_rdonly(au_sbr(sb, btop))) + goto out; + + err = -EROFS; + parent = dget_parent(dentry); + for (bindex = au_dbtop(parent); bindex < btop; bindex++) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || d_is_negative(h_parent)) + continue; + + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = bindex; + break; + } + } + dput(parent); + + /* bottom up here */ + if (unlikely(err < 0)) { + err = au_wbr_bu(sb, btop - 1); + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + } + +out: + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* an exception for the policy other than tdp */ +static int au_wbr_create_exp(struct dentry *dentry) +{ + int err; + aufs_bindex_t bwh, bdiropq; + struct dentry *parent; + + err = -1; + bwh = au_dbwh(dentry); + parent = dget_parent(dentry); + bdiropq = au_dbdiropq(parent); + if (bwh >= 0) { + if (bdiropq >= 0) + err = min(bdiropq, bwh); + else + err = bwh; + AuDbg("%d\n", err); + } else if (bdiropq >= 0) { + err = bdiropq; + AuDbg("%d\n", err); + } + dput(parent); + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + + if (err >= 0 && au_br_rdonly(au_sbr(dentry->d_sb, err))) + err = -1; + + AuDbg("%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* round robin */ +static int au_wbr_create_init_rr(struct super_block *sb) +{ + int err; + + err = au_wbr_bu(sb, au_sbbot(sb)); + atomic_set(&au_sbi(sb)->si_wbr_rr_next, -err); /* less important */ + /* smp_mb(); */ + + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_rr(struct dentry *dentry, unsigned int flags) +{ + int err, nbr; + unsigned int u; + aufs_bindex_t bindex, bbot; + struct super_block *sb; + atomic_t *next; + + err = au_wbr_create_exp(dentry); + if (err >= 0) + goto out; + + sb = dentry->d_sb; + next = &au_sbi(sb)->si_wbr_rr_next; + bbot = au_sbbot(sb); + nbr = bbot + 1; + for (bindex = 0; bindex <= bbot; bindex++) { + if (!au_ftest_wbr(flags, DIR)) { + err = atomic_dec_return(next) + 1; + /* modulo for 0 is meaningless */ + if (unlikely(!err)) + err = atomic_dec_return(next) + 1; + } else + err = atomic_read(next); + AuDbg("%d\n", err); + u = err; + err = u % nbr; + AuDbg("%d\n", err); + if (!au_br_rdonly(au_sbr(sb, err))) + break; + err = -EROFS; + } + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out: + AuDbg("%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* most free space */ +static void au_mfs(struct dentry *dentry, struct dentry *parent) +{ + struct super_block *sb; + struct au_branch *br; + struct au_wbr_mfs *mfs; + struct dentry *h_parent; + aufs_bindex_t bindex, bbot; + int err; + unsigned long long b, bavail; + struct path h_path; + /* reduce the stack usage */ + struct kstatfs *st; + + st = kmalloc(sizeof(*st), GFP_NOFS); + if (unlikely(!st)) { + AuWarn1("failed updating mfs(%d), ignored\n", -ENOMEM); + return; + } + + bavail = 0; + sb = dentry->d_sb; + mfs = &au_sbi(sb)->si_wbr_mfs; + MtxMustLock(&mfs->mfs_lock); + mfs->mfs_bindex = -EROFS; + mfs->mfsrr_bytes = 0; + if (!parent) { + bindex = 0; + bbot = au_sbbot(sb); + } else { + bindex = au_dbtop(parent); + bbot = au_dbtaildir(parent); + } + + for (; bindex <= bbot; bindex++) { + if (parent) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || d_is_negative(h_parent)) + continue; + } + br = au_sbr(sb, bindex); + if (au_br_rdonly(br)) + continue; + + /* sb->s_root for NFS is unreliable */ + h_path.mnt = au_br_mnt(br); + h_path.dentry = h_path.mnt->mnt_root; + err = vfs_statfs(&h_path, st); + if (unlikely(err)) { + AuWarn1("failed statfs, b%d, %d\n", bindex, err); + continue; + } + + /* when the available size is equal, select the lower one */ + BUILD_BUG_ON(sizeof(b) < sizeof(st->f_bavail) + || sizeof(b) < sizeof(st->f_bsize)); + b = st->f_bavail * st->f_bsize; + br->br_wbr->wbr_bytes = b; + if (b >= bavail) { + bavail = b; + mfs->mfs_bindex = bindex; + mfs->mfs_jiffy = jiffies; + } + } + + mfs->mfsrr_bytes = bavail; + AuDbg("b%d\n", mfs->mfs_bindex); + au_kfree_rcu(st); +} + +static int au_wbr_create_mfs(struct dentry *dentry, unsigned int flags) +{ + int err; + struct dentry *parent; + struct super_block *sb; + struct au_wbr_mfs *mfs; + + err = au_wbr_create_exp(dentry); + if (err >= 0) + goto out; + + sb = dentry->d_sb; + parent = NULL; + if (au_ftest_wbr(flags, PARENT)) + parent = dget_parent(dentry); + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + if (time_after(jiffies, mfs->mfs_jiffy + mfs->mfs_expire) + || mfs->mfs_bindex < 0 + || au_br_rdonly(au_sbr(sb, mfs->mfs_bindex))) + au_mfs(dentry, parent); + mutex_unlock(&mfs->mfs_lock); + err = mfs->mfs_bindex; + dput(parent); + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out: + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_init_mfs(struct super_block *sb) +{ + struct au_wbr_mfs *mfs; + + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_init(&mfs->mfs_lock); + mfs->mfs_jiffy = 0; + mfs->mfs_bindex = -EROFS; + + return 0; +} + +static int au_wbr_create_fin_mfs(struct super_block *sb __maybe_unused) +{ + mutex_destroy(&au_sbi(sb)->si_wbr_mfs.mfs_lock); + return 0; +} + +/* ---------------------------------------------------------------------- */ + +/* top down regardless parent, and then mfs */ +static int au_wbr_create_tdmfs(struct dentry *dentry, + unsigned int flags __maybe_unused) +{ + int err; + aufs_bindex_t bwh, btail, bindex, bfound, bmfs; + unsigned long long watermark; + struct super_block *sb; + struct au_wbr_mfs *mfs; + struct au_branch *br; + struct dentry *parent; + + sb = dentry->d_sb; + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + if (time_after(jiffies, mfs->mfs_jiffy + mfs->mfs_expire) + || mfs->mfs_bindex < 0) + au_mfs(dentry, /*parent*/NULL); + watermark = mfs->mfsrr_watermark; + bmfs = mfs->mfs_bindex; + mutex_unlock(&mfs->mfs_lock); + + /* another style of au_wbr_create_exp() */ + bwh = au_dbwh(dentry); + parent = dget_parent(dentry); + btail = au_dbtaildir(parent); + if (bwh >= 0 && bwh < btail) + btail = bwh; + + err = au_wbr_nonopq(dentry, btail); + if (unlikely(err < 0)) + goto out; + btail = err; + bfound = -1; + for (bindex = 0; bindex <= btail; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_rdonly(br)) + continue; + if (br->br_wbr->wbr_bytes > watermark) { + bfound = bindex; + break; + } + } + err = bfound; + if (err < 0) + err = bmfs; + +out: + dput(parent); + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* most free space and then round robin */ +static int au_wbr_create_mfsrr(struct dentry *dentry, unsigned int flags) +{ + int err; + struct au_wbr_mfs *mfs; + + err = au_wbr_create_mfs(dentry, flags); + if (err >= 0) { + mfs = &au_sbi(dentry->d_sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + if (mfs->mfsrr_bytes < mfs->mfsrr_watermark) + err = au_wbr_create_rr(dentry, flags); + mutex_unlock(&mfs->mfs_lock); + } + + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_create_init_mfsrr(struct super_block *sb) +{ + int err; + + au_wbr_create_init_mfs(sb); /* ignore */ + err = au_wbr_create_init_rr(sb); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* top down parent and most free space */ +static int au_wbr_create_pmfs(struct dentry *dentry, unsigned int flags) +{ + int err, e2; + unsigned long long b; + aufs_bindex_t bindex, btop, bbot; + struct super_block *sb; + struct dentry *parent, *h_parent; + struct au_branch *br; + + err = au_wbr_create_tdp(dentry, flags); + if (unlikely(err < 0)) + goto out; + parent = dget_parent(dentry); + btop = au_dbtop(parent); + bbot = au_dbtaildir(parent); + if (btop == bbot) + goto out_parent; /* success */ + + e2 = au_wbr_create_mfs(dentry, flags); + if (e2 < 0) + goto out_parent; /* success */ + + /* when the available size is equal, select upper one */ + sb = dentry->d_sb; + br = au_sbr(sb, err); + b = br->br_wbr->wbr_bytes; + AuDbg("b%d, %llu\n", err, b); + + for (bindex = btop; bindex <= bbot; bindex++) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || d_is_negative(h_parent)) + continue; + + br = au_sbr(sb, bindex); + if (!au_br_rdonly(br) && br->br_wbr->wbr_bytes > b) { + b = br->br_wbr->wbr_bytes; + err = bindex; + AuDbg("b%d, %llu\n", err, b); + } + } + + if (err >= 0) + err = au_wbr_nonopq(dentry, err); + +out_parent: + dput(parent); +out: + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * - top down parent + * - most free space with parent + * - most free space round-robin regardless parent + */ +static int au_wbr_create_pmfsrr(struct dentry *dentry, unsigned int flags) +{ + int err; + unsigned long long watermark; + struct super_block *sb; + struct au_branch *br; + struct au_wbr_mfs *mfs; + + err = au_wbr_create_pmfs(dentry, flags | AuWbr_PARENT); + if (unlikely(err < 0)) + goto out; + + sb = dentry->d_sb; + br = au_sbr(sb, err); + mfs = &au_sbi(sb)->si_wbr_mfs; + mutex_lock(&mfs->mfs_lock); + watermark = mfs->mfsrr_watermark; + mutex_unlock(&mfs->mfs_lock); + if (br->br_wbr->wbr_bytes < watermark) + /* regardless the parent dir */ + err = au_wbr_create_mfsrr(dentry, flags); + +out: + AuDbg("b%d\n", err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* policies for copyup */ + +/* top down parent */ +static int au_wbr_copyup_tdp(struct dentry *dentry) +{ + return au_wbr_create_tdp(dentry, /*flags, anything is ok*/0); +} + +/* bottom up parent */ +static int au_wbr_copyup_bup(struct dentry *dentry) +{ + int err; + aufs_bindex_t bindex, btop; + struct dentry *parent, *h_parent; + struct super_block *sb; + + err = -EROFS; + sb = dentry->d_sb; + parent = dget_parent(dentry); + btop = au_dbtop(parent); + for (bindex = au_dbtop(dentry); bindex >= btop; bindex--) { + h_parent = au_h_dptr(parent, bindex); + if (!h_parent || d_is_negative(h_parent)) + continue; + + if (!au_br_rdonly(au_sbr(sb, bindex))) { + err = bindex; + break; + } + } + dput(parent); + + /* bottom up here */ + if (unlikely(err < 0)) + err = au_wbr_bu(sb, btop - 1); + + AuDbg("b%d\n", err); + return err; +} + +/* bottom up */ +int au_wbr_do_copyup_bu(struct dentry *dentry, aufs_bindex_t btop) +{ + int err; + + err = au_wbr_bu(dentry->d_sb, btop); + AuDbg("b%d\n", err); + if (err > btop) + err = au_wbr_nonopq(dentry, err); + + AuDbg("b%d\n", err); + return err; +} + +static int au_wbr_copyup_bu(struct dentry *dentry) +{ + int err; + aufs_bindex_t btop; + + btop = au_dbtop(dentry); + err = au_wbr_do_copyup_bu(dentry, btop); + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_wbr_copyup_operations au_wbr_copyup_ops[] = { + [AuWbrCopyup_TDP] = { + .copyup = au_wbr_copyup_tdp + }, + [AuWbrCopyup_BUP] = { + .copyup = au_wbr_copyup_bup + }, + [AuWbrCopyup_BU] = { + .copyup = au_wbr_copyup_bu + } +}; + +struct au_wbr_create_operations au_wbr_create_ops[] = { + [AuWbrCreate_TDP] = { + .create = au_wbr_create_tdp + }, + [AuWbrCreate_RR] = { + .create = au_wbr_create_rr, + .init = au_wbr_create_init_rr + }, + [AuWbrCreate_MFS] = { + .create = au_wbr_create_mfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSV] = { + .create = au_wbr_create_mfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSRR] = { + .create = au_wbr_create_mfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_MFSRRV] = { + .create = au_wbr_create_mfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_TDMFS] = { + .create = au_wbr_create_tdmfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_TDMFSV] = { + .create = au_wbr_create_tdmfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFS] = { + .create = au_wbr_create_pmfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFSV] = { + .create = au_wbr_create_pmfs, + .init = au_wbr_create_init_mfs, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFSRR] = { + .create = au_wbr_create_pmfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + }, + [AuWbrCreate_PMFSRRV] = { + .create = au_wbr_create_pmfsrr, + .init = au_wbr_create_init_mfsrr, + .fin = au_wbr_create_fin_mfs + } +}; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/whout.c +++ linux-azure-5.13-5.13.0/fs/aufs/whout.c @@ -0,0 +1,1070 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * whiteout for logical deletion and opaque directory + */ + +#include "aufs.h" + +#define WH_MASK 0444 + +/* + * If a directory contains this file, then it is opaque. We start with the + * .wh. flag so that it is blocked by lookup. + */ +static struct qstr diropq_name = QSTR_INIT(AUFS_WH_DIROPQ, + sizeof(AUFS_WH_DIROPQ) - 1); + +/* + * generate whiteout name, which is NOT terminated by NULL. + * @name: original d_name.name + * @len: original d_name.len + * @wh: whiteout qstr + * returns zero when succeeds, otherwise error. + * succeeded value as wh->name should be freed by kfree(). + */ +int au_wh_name_alloc(struct qstr *wh, const struct qstr *name) +{ + char *p; + + if (unlikely(name->len > PATH_MAX - AUFS_WH_PFX_LEN)) + return -ENAMETOOLONG; + + wh->len = name->len + AUFS_WH_PFX_LEN; + p = kmalloc(wh->len, GFP_NOFS); + wh->name = p; + if (p) { + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + memcpy(p + AUFS_WH_PFX_LEN, name->name, name->len); + /* smp_mb(); */ + return 0; + } + return -ENOMEM; +} + +/* ---------------------------------------------------------------------- */ + +/* + * test if the @wh_name exists under @h_parent. + * @try_sio specifies the necessary of super-io. + */ +int au_wh_test(struct user_namespace *h_userns, struct dentry *h_parent, + struct qstr *wh_name, int try_sio) +{ + int err; + struct dentry *wh_dentry; + + if (!try_sio) + wh_dentry = vfsub_lkup_one(wh_name, h_parent); + else + wh_dentry = au_sio_lkup_one(h_userns, wh_name, h_parent); + err = PTR_ERR(wh_dentry); + if (IS_ERR(wh_dentry)) { + if (err == -ENAMETOOLONG) + err = 0; + goto out; + } + + err = 0; + if (d_is_negative(wh_dentry)) + goto out_wh; /* success */ + + err = 1; + if (d_is_reg(wh_dentry)) + goto out_wh; /* success */ + + err = -EIO; + AuIOErr("%pd Invalid whiteout entry type 0%o.\n", + wh_dentry, d_inode(wh_dentry)->i_mode); + +out_wh: + dput(wh_dentry); +out: + return err; +} + +/* + * test if the @h_dentry sets opaque or not. + */ +int au_diropq_test(struct user_namespace *h_userns, struct dentry *h_dentry) +{ + int err; + struct inode *h_dir; + + h_dir = d_inode(h_dentry); + err = au_wh_test(h_userns, h_dentry, &diropq_name, + au_test_h_perm_sio(h_userns, h_dir, MAY_EXEC)); + return err; +} + +/* + * returns a negative dentry whose name is unique and temporary. + */ +struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br, + struct qstr *prefix) +{ + struct dentry *dentry; + int i; + char defname[NAME_MAX - AUFS_MAX_NAMELEN + DNAME_INLINE_LEN + 1], + *name, *p; + /* strict atomic_t is unnecessary here */ + static unsigned short cnt; + struct qstr qs; + struct user_namespace *h_userns; + + BUILD_BUG_ON(sizeof(cnt) * 2 > AUFS_WH_TMP_LEN); + + name = defname; + qs.len = sizeof(defname) - DNAME_INLINE_LEN + prefix->len - 1; + if (unlikely(prefix->len > DNAME_INLINE_LEN)) { + dentry = ERR_PTR(-ENAMETOOLONG); + if (unlikely(qs.len > NAME_MAX)) + goto out; + dentry = ERR_PTR(-ENOMEM); + name = kmalloc(qs.len + 1, GFP_NOFS); + if (unlikely(!name)) + goto out; + } + + /* doubly whiteout-ed */ + memcpy(name, AUFS_WH_PFX AUFS_WH_PFX, AUFS_WH_PFX_LEN * 2); + p = name + AUFS_WH_PFX_LEN * 2; + memcpy(p, prefix->name, prefix->len); + p += prefix->len; + *p++ = '.'; + AuDebugOn(name + qs.len + 1 - p <= AUFS_WH_TMP_LEN); + + h_userns = au_br_userns(br); + qs.name = name; + for (i = 0; i < 3; i++) { + sprintf(p, "%.*x", AUFS_WH_TMP_LEN, cnt++); + dentry = au_sio_lkup_one(h_userns, &qs, h_parent); + if (IS_ERR(dentry) || d_is_negative(dentry)) + goto out_name; + dput(dentry); + } + /* pr_warn("could not get random name\n"); */ + dentry = ERR_PTR(-EEXIST); + AuDbg("%.*s\n", AuLNPair(&qs)); + BUG(); + +out_name: + if (name != defname) + au_kfree_try_rcu(name); +out: + AuTraceErrPtr(dentry); + return dentry; +} + +/* + * rename the @h_dentry on @br to the whiteouted temporary name. + */ +int au_whtmp_ren(struct dentry *h_dentry, struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = au_br_mnt(br) + }; + struct inode *h_dir, *delegated; + struct dentry *h_parent; + + h_parent = h_dentry->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + + h_path.dentry = au_whtmp_lkup(h_parent, br, &h_dentry->d_name); + err = PTR_ERR(h_path.dentry); + if (IS_ERR(h_path.dentry)) + goto out; + + /* under the same dir, no need to lock_rename() */ + delegated = NULL; + err = vfsub_rename(h_dir, h_dentry, h_dir, &h_path, &delegated, + /*flags*/0); + AuTraceErr(err); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal rename\n"); + iput(delegated); + } + dput(h_path.dentry); + +out: + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * functions for removing a whiteout + */ + +static int do_unlink_wh(struct inode *h_dir, struct path *h_path) +{ + int err, force; + struct inode *delegated; + + /* + * forces superio when the dir has a sticky bit. + * this may be a violation of unix fs semantics. + */ + force = (h_dir->i_mode & S_ISVTX) + && !uid_eq(current_fsuid(), d_inode(h_path->dentry)->i_uid); + delegated = NULL; + err = vfsub_unlink(h_dir, h_path, &delegated, force); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + return err; +} + +int au_wh_unlink_dentry(struct inode *h_dir, struct path *h_path, + struct dentry *dentry) +{ + int err; + + err = do_unlink_wh(h_dir, h_path); + if (!err && dentry) + au_set_dbwh(dentry, -1); + + return err; +} + +static int unlink_wh_name(struct dentry *h_parent, struct qstr *wh, + struct au_branch *br) +{ + int err; + struct path h_path = { + .mnt = au_br_mnt(br) + }; + + err = 0; + h_path.dentry = vfsub_lkup_one(wh, h_parent); + if (IS_ERR(h_path.dentry)) + err = PTR_ERR(h_path.dentry); + else { + if (d_is_reg(h_path.dentry)) + err = do_unlink_wh(d_inode(h_parent), &h_path); + dput(h_path.dentry); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * initialize/clean whiteout for a branch + */ + +static void au_wh_clean(struct inode *h_dir, struct path *whpath, + const int isdir) +{ + int err; + struct inode *delegated; + + if (d_is_negative(whpath->dentry)) + return; + + if (isdir) + err = vfsub_rmdir(h_dir, whpath); + else { + delegated = NULL; + err = vfsub_unlink(h_dir, whpath, &delegated, /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + } + if (unlikely(err)) + pr_warn("failed removing %pd (%d), ignored.\n", + whpath->dentry, err); +} + +static int test_linkable(struct dentry *h_root) +{ + struct inode *h_dir = d_inode(h_root); + + if (h_dir->i_op->link) + return 0; + + pr_err("%pd (%s) doesn't support link(2), use noplink and rw+nolwh\n", + h_root, au_sbtype(h_root->d_sb)); + return -ENOSYS; /* the branch doesn't have its ->link() */ +} + +/* todo: should this mkdir be done in /sbin/mount.aufs helper? */ +static int au_whdir(struct inode *h_dir, struct path *path) +{ + int err; + + err = -EEXIST; + if (d_is_negative(path->dentry)) { + int mode = 0700; + + if (au_test_nfs(path->dentry->d_sb)) + mode |= 0111; + err = vfsub_mkdir(h_dir, path, mode); + } else if (d_is_dir(path->dentry)) + err = 0; + else + pr_err("unknown %pd exists\n", path->dentry); + + return err; +} + +struct au_wh_base { + const struct qstr *name; + struct dentry *dentry; +}; + +static void au_wh_init_ro(struct inode *h_dir, struct au_wh_base base[], + struct path *h_path) +{ + h_path->dentry = base[AuBrWh_BASE].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/0); + h_path->dentry = base[AuBrWh_PLINK].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/1); + h_path->dentry = base[AuBrWh_ORPH].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/1); +} + +/* + * returns tri-state, + * minus: error, caller should print the message + * zero: success + * plus: error, caller should NOT print the message + */ +static int au_wh_init_rw_nolink(struct dentry *h_root, struct au_wbr *wbr, + int do_plink, struct au_wh_base base[], + struct path *h_path) +{ + int err; + struct inode *h_dir; + + h_dir = d_inode(h_root); + h_path->dentry = base[AuBrWh_BASE].dentry; + au_wh_clean(h_dir, h_path, /*isdir*/0); + h_path->dentry = base[AuBrWh_PLINK].dentry; + if (do_plink) { + err = test_linkable(h_root); + if (unlikely(err)) { + err = 1; + goto out; + } + + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_plink = dget(base[AuBrWh_PLINK].dentry); + } else + au_wh_clean(h_dir, h_path, /*isdir*/1); + h_path->dentry = base[AuBrWh_ORPH].dentry; + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_orph = dget(base[AuBrWh_ORPH].dentry); + +out: + return err; +} + +/* + * for the moment, aufs supports the branch filesystem which does not support + * link(2). testing on FAT which does not support i_op->setattr() fully either, + * copyup failed. finally, such filesystem will not be used as the writable + * branch. + * + * returns tri-state, see above. + */ +static int au_wh_init_rw(struct dentry *h_root, struct au_wbr *wbr, + int do_plink, struct au_wh_base base[], + struct path *h_path) +{ + int err; + struct inode *h_dir; + + WbrWhMustWriteLock(wbr); + + err = test_linkable(h_root); + if (unlikely(err)) { + err = 1; + goto out; + } + + /* + * todo: should this create be done in /sbin/mount.aufs helper? + */ + err = -EEXIST; + h_dir = d_inode(h_root); + if (d_is_negative(base[AuBrWh_BASE].dentry)) { + h_path->dentry = base[AuBrWh_BASE].dentry; + err = vfsub_create(h_dir, h_path, WH_MASK, /*want_excl*/true); + } else if (d_is_reg(base[AuBrWh_BASE].dentry)) + err = 0; + else + pr_err("unknown %pd2 exists\n", base[AuBrWh_BASE].dentry); + if (unlikely(err)) + goto out; + + h_path->dentry = base[AuBrWh_PLINK].dentry; + if (do_plink) { + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_plink = dget(base[AuBrWh_PLINK].dentry); + } else + au_wh_clean(h_dir, h_path, /*isdir*/1); + wbr->wbr_whbase = dget(base[AuBrWh_BASE].dentry); + + h_path->dentry = base[AuBrWh_ORPH].dentry; + err = au_whdir(h_dir, h_path); + if (unlikely(err)) + goto out; + wbr->wbr_orph = dget(base[AuBrWh_ORPH].dentry); + +out: + return err; +} + +/* + * initialize the whiteout base file/dir for @br. + */ +int au_wh_init(struct au_branch *br, struct super_block *sb) +{ + int err, i; + const unsigned char do_plink + = !!au_opt_test(au_mntflags(sb), PLINK); + struct inode *h_dir; + struct path path = br->br_path; + struct dentry *h_root = path.dentry; + struct au_wbr *wbr = br->br_wbr; + static const struct qstr base_name[] = { + [AuBrWh_BASE] = QSTR_INIT(AUFS_BASE_NAME, + sizeof(AUFS_BASE_NAME) - 1), + [AuBrWh_PLINK] = QSTR_INIT(AUFS_PLINKDIR_NAME, + sizeof(AUFS_PLINKDIR_NAME) - 1), + [AuBrWh_ORPH] = QSTR_INIT(AUFS_ORPHDIR_NAME, + sizeof(AUFS_ORPHDIR_NAME) - 1) + }; + struct au_wh_base base[] = { + [AuBrWh_BASE] = { + .name = base_name + AuBrWh_BASE, + .dentry = NULL + }, + [AuBrWh_PLINK] = { + .name = base_name + AuBrWh_PLINK, + .dentry = NULL + }, + [AuBrWh_ORPH] = { + .name = base_name + AuBrWh_ORPH, + .dentry = NULL + } + }; + + if (wbr) + WbrWhMustWriteLock(wbr); + + for (i = 0; i < AuBrWh_Last; i++) { + /* doubly whiteouted */ + struct dentry *d; + + d = au_wh_lkup(h_root, (void *)base[i].name, br); + err = PTR_ERR(d); + if (IS_ERR(d)) + goto out; + + base[i].dentry = d; + AuDebugOn(wbr + && wbr->wbr_wh[i] + && wbr->wbr_wh[i] != base[i].dentry); + } + + if (wbr) + for (i = 0; i < AuBrWh_Last; i++) { + dput(wbr->wbr_wh[i]); + wbr->wbr_wh[i] = NULL; + } + + err = 0; + if (!au_br_writable(br->br_perm)) { + h_dir = d_inode(h_root); + au_wh_init_ro(h_dir, base, &path); + } else if (!au_br_wh_linkable(br->br_perm)) { + err = au_wh_init_rw_nolink(h_root, wbr, do_plink, base, &path); + if (err > 0) + goto out; + else if (err) + goto out_err; + } else { + err = au_wh_init_rw(h_root, wbr, do_plink, base, &path); + if (err > 0) + goto out; + else if (err) + goto out_err; + } + goto out; /* success */ + +out_err: + pr_err("an error(%d) on the writable branch %pd(%s)\n", + err, h_root, au_sbtype(h_root->d_sb)); +out: + for (i = 0; i < AuBrWh_Last; i++) + dput(base[i].dentry); + return err; +} + +/* ---------------------------------------------------------------------- */ +/* + * whiteouts are all hard-linked usually. + * when its link count reaches a ceiling, we create a new whiteout base + * asynchronously. + */ + +struct reinit_br_wh { + struct super_block *sb; + struct au_branch *br; +}; + +static void reinit_br_wh(void *arg) +{ + int err; + aufs_bindex_t bindex; + struct path h_path; + struct reinit_br_wh *a = arg; + struct au_wbr *wbr; + struct inode *dir, *delegated; + struct dentry *h_root; + struct au_hinode *hdir; + + err = 0; + wbr = a->br->br_wbr; + /* big aufs lock */ + si_noflush_write_lock(a->sb); + if (!au_br_writable(a->br->br_perm)) + goto out; + bindex = au_br_index(a->sb, a->br->br_id); + if (unlikely(bindex < 0)) + goto out; + + di_read_lock_parent(a->sb->s_root, AuLock_IR); + dir = d_inode(a->sb->s_root); + hdir = au_hi(dir, bindex); + h_root = au_h_dptr(a->sb->s_root, bindex); + AuDebugOn(h_root != au_br_dentry(a->br)); + + au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); + wbr_wh_write_lock(wbr); + err = au_h_verify(wbr->wbr_whbase, au_opt_udba(a->sb), hdir->hi_inode, + h_root, a->br); + if (!err) { + h_path.dentry = wbr->wbr_whbase; + h_path.mnt = au_br_mnt(a->br); + delegated = NULL; + err = vfsub_unlink(hdir->hi_inode, &h_path, &delegated, + /*force*/0); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + } else { + pr_warn("%pd is moved, ignored\n", wbr->wbr_whbase); + err = 0; + } + dput(wbr->wbr_whbase); + wbr->wbr_whbase = NULL; + if (!err) + err = au_wh_init(a->br, a->sb); + wbr_wh_write_unlock(wbr); + au_hn_inode_unlock(hdir); + di_read_unlock(a->sb->s_root, AuLock_IR); + if (!err) + au_fhsm_wrote(a->sb, bindex, /*force*/0); + +out: + if (wbr) + atomic_dec(&wbr->wbr_wh_running); + au_lcnt_dec(&a->br->br_count); + si_write_unlock(a->sb); + au_nwt_done(&au_sbi(a->sb)->si_nowait); + au_kfree_rcu(a); + if (unlikely(err)) + AuIOErr("err %d\n", err); +} + +static void kick_reinit_br_wh(struct super_block *sb, struct au_branch *br) +{ + int do_dec, wkq_err; + struct reinit_br_wh *arg; + + do_dec = 1; + if (atomic_inc_return(&br->br_wbr->wbr_wh_running) != 1) + goto out; + + /* ignore ENOMEM */ + arg = kmalloc(sizeof(*arg), GFP_NOFS); + if (arg) { + /* + * dec(wh_running), kfree(arg) and dec(br_count) + * in reinit function + */ + arg->sb = sb; + arg->br = br; + au_lcnt_inc(&br->br_count); + wkq_err = au_wkq_nowait(reinit_br_wh, arg, sb, /*flags*/0); + if (unlikely(wkq_err)) { + atomic_dec(&br->br_wbr->wbr_wh_running); + au_lcnt_dec(&br->br_count); + au_kfree_rcu(arg); + } + do_dec = 0; + } + +out: + if (do_dec) + atomic_dec(&br->br_wbr->wbr_wh_running); +} + +/* ---------------------------------------------------------------------- */ + +/* + * create the whiteout @wh. + */ +static int link_or_create_wh(struct super_block *sb, aufs_bindex_t bindex, + struct dentry *wh) +{ + int err; + struct path h_path = { + .dentry = wh + }; + struct au_branch *br; + struct au_wbr *wbr; + struct dentry *h_parent; + struct inode *h_dir, *delegated; + + h_parent = wh->d_parent; /* dir inode is locked */ + h_dir = d_inode(h_parent); + IMustLock(h_dir); + + br = au_sbr(sb, bindex); + h_path.mnt = au_br_mnt(br); + wbr = br->br_wbr; + wbr_wh_read_lock(wbr); + if (wbr->wbr_whbase) { + delegated = NULL; + err = vfsub_link(wbr->wbr_whbase, h_dir, &h_path, &delegated); + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal link\n"); + iput(delegated); + } + if (!err || err != -EMLINK) + goto out; + + /* link count full. re-initialize br_whbase. */ + kick_reinit_br_wh(sb, br); + } + + /* return this error in this context */ + err = vfsub_create(h_dir, &h_path, WH_MASK, /*want_excl*/true); + if (!err) + au_fhsm_wrote(sb, bindex, /*force*/0); + +out: + wbr_wh_read_unlock(wbr); + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * create or remove the diropq. + */ +static struct dentry *do_diropq(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags) +{ + struct dentry *opq_dentry, *h_dentry; + struct super_block *sb; + struct au_branch *br; + int err; + + sb = dentry->d_sb; + br = au_sbr(sb, bindex); + h_dentry = au_h_dptr(dentry, bindex); + opq_dentry = vfsub_lkup_one(&diropq_name, h_dentry); + if (IS_ERR(opq_dentry)) + goto out; + + if (au_ftest_diropq(flags, CREATE)) { + err = link_or_create_wh(sb, bindex, opq_dentry); + if (!err) { + au_set_dbdiropq(dentry, bindex); + goto out; /* success */ + } + } else { + struct path tmp = { + .dentry = opq_dentry, + .mnt = au_br_mnt(br) + }; + err = do_unlink_wh(au_h_iptr(d_inode(dentry), bindex), &tmp); + if (!err) + au_set_dbdiropq(dentry, -1); + } + dput(opq_dentry); + opq_dentry = ERR_PTR(err); + +out: + return opq_dentry; +} + +struct do_diropq_args { + struct dentry **errp; + struct dentry *dentry; + aufs_bindex_t bindex; + unsigned int flags; +}; + +static void call_do_diropq(void *args) +{ + struct do_diropq_args *a = args; + *a->errp = do_diropq(a->dentry, a->bindex, a->flags); +} + +struct dentry *au_diropq_sio(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags) +{ + struct dentry *diropq, *h_dentry; + struct user_namespace *h_userns; + + h_userns = au_sbr_userns(dentry->d_sb, bindex); + h_dentry = au_h_dptr(dentry, bindex); + if (!au_test_h_perm_sio(h_userns, d_inode(h_dentry), + MAY_EXEC | MAY_WRITE)) + diropq = do_diropq(dentry, bindex, flags); + else { + int wkq_err; + struct do_diropq_args args = { + .errp = &diropq, + .dentry = dentry, + .bindex = bindex, + .flags = flags + }; + + wkq_err = au_wkq_wait(call_do_diropq, &args); + if (unlikely(wkq_err)) + diropq = ERR_PTR(wkq_err); + } + + return diropq; +} + +/* ---------------------------------------------------------------------- */ + +/* + * lookup whiteout dentry. + * @h_parent: lower parent dentry which must exist and be locked + * @base_name: name of dentry which will be whiteouted + * returns dentry for whiteout. + */ +struct dentry *au_wh_lkup(struct dentry *h_parent, struct qstr *base_name, + struct au_branch *br) +{ + int err; + struct qstr wh_name; + struct dentry *wh_dentry; + + err = au_wh_name_alloc(&wh_name, base_name); + wh_dentry = ERR_PTR(err); + if (!err) { + wh_dentry = vfsub_lkup_one(&wh_name, h_parent); + au_kfree_try_rcu(wh_name.name); + } + return wh_dentry; +} + +/* + * link/create a whiteout for @dentry on @bindex. + */ +struct dentry *au_wh_create(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent) +{ + struct dentry *wh_dentry; + struct super_block *sb; + int err; + + sb = dentry->d_sb; + wh_dentry = au_wh_lkup(h_parent, &dentry->d_name, au_sbr(sb, bindex)); + if (!IS_ERR(wh_dentry) && d_is_negative(wh_dentry)) { + err = link_or_create_wh(sb, bindex, wh_dentry); + if (!err) { + au_set_dbwh(dentry, bindex); + au_fhsm_wrote(sb, bindex, /*force*/0); + } else { + dput(wh_dentry); + wh_dentry = ERR_PTR(err); + } + } + + return wh_dentry; +} + +/* ---------------------------------------------------------------------- */ + +/* Delete all whiteouts in this directory on branch bindex. */ +static int del_wh_children(struct dentry *h_dentry, struct au_nhash *whlist, + aufs_bindex_t bindex, struct au_branch *br) +{ + int err; + unsigned long ul, n; + struct qstr wh_name; + char *p; + struct hlist_head *head; + struct au_vdir_wh *pos; + struct au_vdir_destr *str; + + err = -ENOMEM; + p = (void *)__get_free_page(GFP_NOFS); + wh_name.name = p; + if (unlikely(!wh_name.name)) + goto out; + + err = 0; + memcpy(p, AUFS_WH_PFX, AUFS_WH_PFX_LEN); + p += AUFS_WH_PFX_LEN; + n = whlist->nh_num; + head = whlist->nh_head; + for (ul = 0; !err && ul < n; ul++, head++) { + hlist_for_each_entry(pos, head, wh_hash) { + if (pos->wh_bindex != bindex) + continue; + + str = &pos->wh_str; + if (str->len + AUFS_WH_PFX_LEN <= PATH_MAX) { + memcpy(p, str->name, str->len); + wh_name.len = AUFS_WH_PFX_LEN + str->len; + err = unlink_wh_name(h_dentry, &wh_name, br); + if (!err) + continue; + break; + } + AuIOErr("whiteout name too long %.*s\n", + str->len, str->name); + err = -EIO; + break; + } + } + free_page((unsigned long)wh_name.name); + +out: + return err; +} + +struct del_wh_children_args { + int *errp; + struct dentry *h_dentry; + struct au_nhash *whlist; + aufs_bindex_t bindex; + struct au_branch *br; +}; + +static void call_del_wh_children(void *args) +{ + struct del_wh_children_args *a = args; + *a->errp = del_wh_children(a->h_dentry, a->whlist, a->bindex, a->br); +} + +/* ---------------------------------------------------------------------- */ + +struct au_whtmp_rmdir *au_whtmp_rmdir_alloc(struct super_block *sb, gfp_t gfp) +{ + struct au_whtmp_rmdir *whtmp; + int err; + unsigned int rdhash; + + SiMustAnyLock(sb); + + whtmp = kzalloc(sizeof(*whtmp), gfp); + if (unlikely(!whtmp)) { + whtmp = ERR_PTR(-ENOMEM); + goto out; + } + + /* no estimation for dir size */ + rdhash = au_sbi(sb)->si_rdhash; + if (!rdhash) + rdhash = AUFS_RDHASH_DEF; + err = au_nhash_alloc(&whtmp->whlist, rdhash, gfp); + if (unlikely(err)) { + au_kfree_rcu(whtmp); + whtmp = ERR_PTR(err); + } + +out: + return whtmp; +} + +void au_whtmp_rmdir_free(struct au_whtmp_rmdir *whtmp) +{ + if (whtmp->br) + au_lcnt_dec(&whtmp->br->br_count); + dput(whtmp->wh_dentry); + iput(whtmp->dir); + au_nhash_wh_free(&whtmp->whlist); + au_kfree_rcu(whtmp); +} + +/* + * rmdir the whiteouted temporary named dir @h_dentry. + * @whlist: whiteouted children. + */ +int au_whtmp_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_nhash *whlist) +{ + int err; + unsigned int h_nlink; + struct path h_tmp; + struct inode *wh_inode, *h_dir; + struct au_branch *br; + struct user_namespace *h_userns; + + h_dir = d_inode(wh_dentry->d_parent); /* dir inode is locked */ + IMustLock(h_dir); + + br = au_sbr(dir->i_sb, bindex); + h_userns = au_br_userns(br); + wh_inode = d_inode(wh_dentry); + inode_lock_nested(wh_inode, AuLsc_I_CHILD); + + /* + * someone else might change some whiteouts while we were sleeping. + * it means this whlist may have an obsoleted entry. + */ + if (!au_test_h_perm_sio(h_userns, wh_inode, MAY_EXEC | MAY_WRITE)) + err = del_wh_children(wh_dentry, whlist, bindex, br); + else { + int wkq_err; + struct del_wh_children_args args = { + .errp = &err, + .h_dentry = wh_dentry, + .whlist = whlist, + .bindex = bindex, + .br = br + }; + + wkq_err = au_wkq_wait(call_del_wh_children, &args); + if (unlikely(wkq_err)) + err = wkq_err; + } + inode_unlock(wh_inode); + + if (!err) { + h_tmp.dentry = wh_dentry; + h_tmp.mnt = au_br_mnt(br); + h_nlink = h_dir->i_nlink; + err = vfsub_rmdir(h_dir, &h_tmp); + /* some fs doesn't change the parent nlink in some cases */ + h_nlink -= h_dir->i_nlink; + } + + if (!err) { + if (au_ibtop(dir) == bindex) { + /* todo: dir->i_mutex is necessary */ + au_cpup_attr_timesizes(dir); + if (h_nlink) + vfsub_drop_nlink(dir); + } + return 0; /* success */ + } + + pr_warn("failed removing %pd(%d), ignored\n", wh_dentry, err); + return err; +} + +static void call_rmdir_whtmp(void *args) +{ + int err; + aufs_bindex_t bindex; + struct au_whtmp_rmdir *a = args; + struct super_block *sb; + struct dentry *h_parent; + struct inode *h_dir; + struct au_hinode *hdir; + + /* rmdir by nfsd may cause deadlock with this i_mutex */ + /* inode_lock(a->dir); */ + err = -EROFS; + sb = a->dir->i_sb; + si_read_lock(sb, !AuLock_FLUSH); + if (!au_br_writable(a->br->br_perm)) + goto out; + bindex = au_br_index(sb, a->br->br_id); + if (unlikely(bindex < 0)) + goto out; + + err = -EIO; + ii_write_lock_parent(a->dir); + h_parent = dget_parent(a->wh_dentry); + h_dir = d_inode(h_parent); + hdir = au_hi(a->dir, bindex); + err = vfsub_mnt_want_write(au_br_mnt(a->br)); + if (unlikely(err)) + goto out_mnt; + au_hn_inode_lock_nested(hdir, AuLsc_I_PARENT); + err = au_h_verify(a->wh_dentry, au_opt_udba(sb), h_dir, h_parent, + a->br); + if (!err) + err = au_whtmp_rmdir(a->dir, bindex, a->wh_dentry, &a->whlist); + au_hn_inode_unlock(hdir); + vfsub_mnt_drop_write(au_br_mnt(a->br)); + +out_mnt: + dput(h_parent); + ii_write_unlock(a->dir); +out: + /* inode_unlock(a->dir); */ + au_whtmp_rmdir_free(a); + si_read_unlock(sb); + au_nwt_done(&au_sbi(sb)->si_nowait); + if (unlikely(err)) + AuIOErr("err %d\n", err); +} + +void au_whtmp_kick_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_whtmp_rmdir *args) +{ + int wkq_err; + struct super_block *sb; + + IMustLock(dir); + + /* all post-process will be done in do_rmdir_whtmp(). */ + sb = dir->i_sb; + args->dir = au_igrab(dir); + args->br = au_sbr(sb, bindex); + au_lcnt_inc(&args->br->br_count); + args->wh_dentry = dget(wh_dentry); + wkq_err = au_wkq_nowait(call_rmdir_whtmp, args, sb, /*flags*/0); + if (unlikely(wkq_err)) { + pr_warn("rmdir error %pd (%d), ignored\n", wh_dentry, wkq_err); + au_whtmp_rmdir_free(args); + } +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/whout.h +++ linux-azure-5.13-5.13.0/fs/aufs/whout.h @@ -0,0 +1,87 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * whiteout for logical deletion and opaque directory + */ + +#ifndef __AUFS_WHOUT_H__ +#define __AUFS_WHOUT_H__ + +#ifdef __KERNEL__ + +#include "dir.h" + +/* whout.c */ +int au_wh_name_alloc(struct qstr *wh, const struct qstr *name); +int au_wh_test(struct user_namespace *h_userns, struct dentry *h_parent, + struct qstr *wh_name, int try_sio); +int au_diropq_test(struct user_namespace *h_userns, struct dentry *h_dentry); +struct au_branch; +struct dentry *au_whtmp_lkup(struct dentry *h_parent, struct au_branch *br, + struct qstr *prefix); +int au_whtmp_ren(struct dentry *h_dentry, struct au_branch *br); +int au_wh_unlink_dentry(struct inode *h_dir, struct path *h_path, + struct dentry *dentry); +int au_wh_init(struct au_branch *br, struct super_block *sb); + +/* diropq flags */ +#define AuDiropq_CREATE 1 +#define au_ftest_diropq(flags, name) ((flags) & AuDiropq_##name) +#define au_fset_diropq(flags, name) \ + do { (flags) |= AuDiropq_##name; } while (0) +#define au_fclr_diropq(flags, name) \ + do { (flags) &= ~AuDiropq_##name; } while (0) + +struct dentry *au_diropq_sio(struct dentry *dentry, aufs_bindex_t bindex, + unsigned int flags); +struct dentry *au_wh_lkup(struct dentry *h_parent, struct qstr *base_name, + struct au_branch *br); +struct dentry *au_wh_create(struct dentry *dentry, aufs_bindex_t bindex, + struct dentry *h_parent); + +/* real rmdir for the whiteout-ed dir */ +struct au_whtmp_rmdir { + struct inode *dir; + struct au_branch *br; + struct dentry *wh_dentry; + struct au_nhash whlist; +}; + +struct au_whtmp_rmdir *au_whtmp_rmdir_alloc(struct super_block *sb, gfp_t gfp); +void au_whtmp_rmdir_free(struct au_whtmp_rmdir *whtmp); +int au_whtmp_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_nhash *whlist); +void au_whtmp_kick_rmdir(struct inode *dir, aufs_bindex_t bindex, + struct dentry *wh_dentry, struct au_whtmp_rmdir *args); + +/* ---------------------------------------------------------------------- */ + +static inline struct dentry *au_diropq_create(struct dentry *dentry, + aufs_bindex_t bindex) +{ + return au_diropq_sio(dentry, bindex, AuDiropq_CREATE); +} + +static inline int au_diropq_remove(struct dentry *dentry, aufs_bindex_t bindex) +{ + return PTR_ERR(au_diropq_sio(dentry, bindex, !AuDiropq_CREATE)); +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WHOUT_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/wkq.c +++ linux-azure-5.13-5.13.0/fs/aufs/wkq.c @@ -0,0 +1,372 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * workqueue for asynchronous/super-io operations + * todo: try new credential scheme + */ + +#include +#include "aufs.h" + +/* internal workqueue named AUFS_WKQ_NAME */ + +static struct workqueue_struct *au_wkq; + +struct au_wkinfo { + struct work_struct wk; + struct kobject *kobj; + + unsigned int flags; /* see wkq.h */ + + au_wkq_func_t func; + void *args; + +#ifdef CONFIG_LOCKDEP + int dont_check; + struct held_lock **hlock; +#endif + + struct completion *comp; +}; + +/* ---------------------------------------------------------------------- */ +/* + * Aufs passes some operations to the workqueue such as the internal copyup. + * This scheme looks rather unnatural for LOCKDEP debugging feature, since the + * job run by workqueue depends upon the locks acquired in the other task. + * Delegating a small operation to the workqueue, aufs passes its lockdep + * information too. And the job in the workqueue restores the info in order to + * pretend as if it acquired those locks. This is just to make LOCKDEP work + * correctly and expectedly. + */ + +#ifndef CONFIG_LOCKDEP +AuStubInt0(au_wkq_lockdep_alloc, struct au_wkinfo *wkinfo); +AuStubVoid(au_wkq_lockdep_free, struct au_wkinfo *wkinfo); +AuStubVoid(au_wkq_lockdep_pre, struct au_wkinfo *wkinfo); +AuStubVoid(au_wkq_lockdep_post, struct au_wkinfo *wkinfo); +AuStubVoid(au_wkq_lockdep_init, struct au_wkinfo *wkinfo); +#else +static void au_wkq_lockdep_init(struct au_wkinfo *wkinfo) +{ + wkinfo->hlock = NULL; + wkinfo->dont_check = 0; +} + +/* + * 1: matched + * 0: unmatched + */ +static int au_wkq_lockdep_test(struct lock_class_key *key, const char *name) +{ + static DEFINE_SPINLOCK(spin); + static struct { + char *name; + struct lock_class_key *key; + } a[] = { + { .name = "&sbinfo->si_rwsem" }, + { .name = "&finfo->fi_rwsem" }, + { .name = "&dinfo->di_rwsem" }, + { .name = "&iinfo->ii_rwsem" } + }; + static int set; + int i; + + /* lockless read from 'set.' see below */ + if (set == ARRAY_SIZE(a)) { + for (i = 0; i < ARRAY_SIZE(a); i++) + if (a[i].key == key) + goto match; + goto unmatch; + } + + spin_lock(&spin); + if (set) + for (i = 0; i < ARRAY_SIZE(a); i++) + if (a[i].key == key) { + spin_unlock(&spin); + goto match; + } + for (i = 0; i < ARRAY_SIZE(a); i++) { + if (a[i].key) { + if (unlikely(a[i].key == key)) { /* rare but possible */ + spin_unlock(&spin); + goto match; + } else + continue; + } + if (strstr(a[i].name, name)) { + /* + * the order of these three lines is important for the + * lockless read above. + */ + a[i].key = key; + spin_unlock(&spin); + set++; + /* AuDbg("%d, %s\n", set, name); */ + goto match; + } + } + spin_unlock(&spin); + goto unmatch; + +match: + return 1; +unmatch: + return 0; +} + +static int au_wkq_lockdep_alloc(struct au_wkinfo *wkinfo) +{ + int err, n; + struct task_struct *curr; + struct held_lock **hl, *held_locks, *p; + + err = 0; + curr = current; + wkinfo->dont_check = lockdep_recursing(curr); + if (wkinfo->dont_check) + goto out; + n = curr->lockdep_depth; + if (!n) + goto out; + + err = -ENOMEM; + wkinfo->hlock = kmalloc_array(n + 1, sizeof(*wkinfo->hlock), GFP_NOFS); + if (unlikely(!wkinfo->hlock)) + goto out; + + err = 0; +#if 0 /* left for debugging */ + if (0 && au_debug_test()) + lockdep_print_held_locks(curr); +#endif + held_locks = curr->held_locks; + hl = wkinfo->hlock; + while (n--) { + p = held_locks++; + if (au_wkq_lockdep_test(p->instance->key, p->instance->name)) + *hl++ = p; + } + *hl = NULL; + +out: + return err; +} + +static void au_wkq_lockdep_free(struct au_wkinfo *wkinfo) +{ + au_kfree_try_rcu(wkinfo->hlock); +} + +static void au_wkq_lockdep_pre(struct au_wkinfo *wkinfo) +{ + struct held_lock *p, **hl = wkinfo->hlock; + int subclass; + + if (wkinfo->dont_check) + lockdep_off(); + if (!hl) + return; + while ((p = *hl++)) { /* assignment */ + subclass = lockdep_hlock_class(p)->subclass; + /* AuDbg("%s, %d\n", p->instance->name, subclass); */ + if (p->read) + rwsem_acquire_read(p->instance, subclass, 0, + /*p->acquire_ip*/_RET_IP_); + else + rwsem_acquire(p->instance, subclass, 0, + /*p->acquire_ip*/_RET_IP_); + } +} + +static void au_wkq_lockdep_post(struct au_wkinfo *wkinfo) +{ + struct held_lock *p, **hl = wkinfo->hlock; + + if (wkinfo->dont_check) + lockdep_on(); + if (!hl) + return; + while ((p = *hl++)) /* assignment */ + rwsem_release(p->instance, /*p->acquire_ip*/_RET_IP_); +} +#endif + +static void wkq_func(struct work_struct *wk) +{ + struct au_wkinfo *wkinfo = container_of(wk, struct au_wkinfo, wk); + + AuDebugOn(!uid_eq(current_fsuid(), GLOBAL_ROOT_UID)); + AuDebugOn(rlimit(RLIMIT_FSIZE) != RLIM_INFINITY); + + au_wkq_lockdep_pre(wkinfo); + wkinfo->func(wkinfo->args); + au_wkq_lockdep_post(wkinfo); + if (au_ftest_wkq(wkinfo->flags, WAIT)) + complete(wkinfo->comp); + else { + kobject_put(wkinfo->kobj); + module_put(THIS_MODULE); /* todo: ?? */ + au_kfree_rcu(wkinfo); + } +} + +/* + * Since struct completion is large, try allocating it dynamically. + */ +#define AuWkqCompDeclare(name) struct completion *comp = NULL + +static int au_wkq_comp_alloc(struct au_wkinfo *wkinfo, struct completion **comp) +{ + *comp = kmalloc(sizeof(**comp), GFP_NOFS); + if (*comp) { + init_completion(*comp); + wkinfo->comp = *comp; + return 0; + } + return -ENOMEM; +} + +static void au_wkq_comp_free(struct completion *comp) +{ + au_kfree_rcu(comp); +} + +static void au_wkq_run(struct au_wkinfo *wkinfo) +{ + if (au_ftest_wkq(wkinfo->flags, NEST)) { + if (au_wkq_test()) { + AuWarn1("wkq from wkq, unless silly-rename on NFS," + " due to a dead dir by UDBA," + " or async xino write?\n"); + AuDebugOn(au_ftest_wkq(wkinfo->flags, WAIT)); + } + } else + au_dbg_verify_kthread(); + + if (au_ftest_wkq(wkinfo->flags, WAIT)) { + INIT_WORK_ONSTACK(&wkinfo->wk, wkq_func); + queue_work(au_wkq, &wkinfo->wk); + } else { + INIT_WORK(&wkinfo->wk, wkq_func); + schedule_work(&wkinfo->wk); + } +} + +/* + * Be careful. It is easy to make deadlock happen. + * processA: lock, wkq and wait + * processB: wkq and wait, lock in wkq + * --> deadlock + */ +int au_wkq_do_wait(unsigned int flags, au_wkq_func_t func, void *args) +{ + int err; + AuWkqCompDeclare(comp); + struct au_wkinfo wkinfo = { + .flags = flags, + .func = func, + .args = args + }; + + err = au_wkq_comp_alloc(&wkinfo, &comp); + if (unlikely(err)) + goto out; + err = au_wkq_lockdep_alloc(&wkinfo); + if (unlikely(err)) + goto out_comp; + if (!err) { + au_wkq_run(&wkinfo); + /* no timeout, no interrupt */ + wait_for_completion(wkinfo.comp); + } + au_wkq_lockdep_free(&wkinfo); + +out_comp: + au_wkq_comp_free(comp); +out: + destroy_work_on_stack(&wkinfo.wk); + return err; +} + +/* + * Note: dget/dput() in func for aufs dentries are not supported. It will be a + * problem in a concurrent umounting. + */ +int au_wkq_nowait(au_wkq_func_t func, void *args, struct super_block *sb, + unsigned int flags) +{ + int err; + struct au_wkinfo *wkinfo; + + atomic_inc(&au_sbi(sb)->si_nowait.nw_len); + + /* + * wkq_func() must free this wkinfo. + * it highly depends upon the implementation of workqueue. + */ + err = 0; + wkinfo = kmalloc(sizeof(*wkinfo), GFP_NOFS); + if (wkinfo) { + wkinfo->kobj = &au_sbi(sb)->si_kobj; + wkinfo->flags = flags & ~AuWkq_WAIT; + wkinfo->func = func; + wkinfo->args = args; + wkinfo->comp = NULL; + au_wkq_lockdep_init(wkinfo); + kobject_get(wkinfo->kobj); + __module_get(THIS_MODULE); /* todo: ?? */ + + au_wkq_run(wkinfo); + } else { + err = -ENOMEM; + au_nwt_done(&au_sbi(sb)->si_nowait); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +void au_nwt_init(struct au_nowait_tasks *nwt) +{ + atomic_set(&nwt->nw_len, 0); + /* smp_mb(); */ /* atomic_set */ + init_waitqueue_head(&nwt->nw_wq); +} + +void au_wkq_fin(void) +{ + destroy_workqueue(au_wkq); +} + +int __init au_wkq_init(void) +{ + int err; + + err = 0; + au_wkq = alloc_workqueue(AUFS_WKQ_NAME, 0, WQ_DFL_ACTIVE); + if (IS_ERR(au_wkq)) + err = PTR_ERR(au_wkq); + else if (!au_wkq) + err = -ENOMEM; + + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/wkq.h +++ linux-azure-5.13-5.13.0/fs/aufs/wkq.h @@ -0,0 +1,89 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * workqueue for asynchronous/super-io operations + * todo: try new credentials management scheme + */ + +#ifndef __AUFS_WKQ_H__ +#define __AUFS_WKQ_H__ + +#ifdef __KERNEL__ + +#include + +struct super_block; + +/* ---------------------------------------------------------------------- */ + +/* + * in the next operation, wait for the 'nowait' tasks in system-wide workqueue + */ +struct au_nowait_tasks { + atomic_t nw_len; + wait_queue_head_t nw_wq; +}; + +/* ---------------------------------------------------------------------- */ + +typedef void (*au_wkq_func_t)(void *args); + +/* wkq flags */ +#define AuWkq_WAIT 1 +#define AuWkq_NEST (1 << 1) +#define au_ftest_wkq(flags, name) ((flags) & AuWkq_##name) +#define au_fset_wkq(flags, name) \ + do { (flags) |= AuWkq_##name; } while (0) +#define au_fclr_wkq(flags, name) \ + do { (flags) &= ~AuWkq_##name; } while (0) + +/* wkq.c */ +int au_wkq_do_wait(unsigned int flags, au_wkq_func_t func, void *args); +int au_wkq_nowait(au_wkq_func_t func, void *args, struct super_block *sb, + unsigned int flags); +void au_nwt_init(struct au_nowait_tasks *nwt); +int __init au_wkq_init(void); +void au_wkq_fin(void); + +/* ---------------------------------------------------------------------- */ + +static inline int au_wkq_test(void) +{ + return current->flags & PF_WQ_WORKER; +} + +static inline int au_wkq_wait(au_wkq_func_t func, void *args) +{ + return au_wkq_do_wait(AuWkq_WAIT, func, args); +} + +static inline void au_nwt_done(struct au_nowait_tasks *nwt) +{ + if (atomic_dec_and_test(&nwt->nw_len)) + wake_up_all(&nwt->nw_wq); +} + +static inline int au_nwt_flush(struct au_nowait_tasks *nwt) +{ + wait_event(nwt->nw_wq, !atomic_read(&nwt->nw_len)); + return 0; +} + +#endif /* __KERNEL__ */ +#endif /* __AUFS_WKQ_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/xattr.c +++ linux-azure-5.13-5.13.0/fs/aufs/xattr.c @@ -0,0 +1,368 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2014-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * handling xattr functions + */ + +#include +#include +#include +#include "aufs.h" + +static int au_xattr_ignore(int err, char *name, unsigned int ignore_flags) +{ + if (!ignore_flags) + goto out; + switch (err) { + case -ENOMEM: + case -EDQUOT: + goto out; + } + + if ((ignore_flags & AuBrAttr_ICEX) == AuBrAttr_ICEX) { + err = 0; + goto out; + } + +#define cmp(brattr, prefix) do { \ + if (!strncmp(name, XATTR_##prefix##_PREFIX, \ + XATTR_##prefix##_PREFIX_LEN)) { \ + if (ignore_flags & AuBrAttr_ICEX_##brattr) \ + err = 0; \ + goto out; \ + } \ + } while (0) + + cmp(SEC, SECURITY); + cmp(SYS, SYSTEM); + cmp(TR, TRUSTED); + cmp(USR, USER); +#undef cmp + + if (ignore_flags & AuBrAttr_ICEX_OTH) + err = 0; + +out: + return err; +} + +static const int au_xattr_out_of_list = AuBrAttr_ICEX_OTH << 1; + +static int au_do_cpup_xattr(struct path *h_dst, struct path *h_src, + char *name, char **buf, unsigned int ignore_flags, + unsigned int verbose) +{ + int err; + ssize_t ssz; + struct inode *h_idst; + struct dentry *h_dst_dentry, *h_src_dentry; + struct user_namespace *h_dst_userns, *h_src_userns; + + h_src_userns = mnt_user_ns(h_src->mnt); + h_src_dentry = h_src->dentry; + ssz = vfs_getxattr_alloc(h_src_userns, h_src_dentry, name, buf, 0, + GFP_NOFS); + err = ssz; + if (unlikely(err <= 0)) { + if (err == -ENODATA + || (err == -EOPNOTSUPP + && ((ignore_flags & au_xattr_out_of_list) + || (au_test_nfs_noacl(d_inode(h_src_dentry)) + && (!strcmp(name, XATTR_NAME_POSIX_ACL_ACCESS) + || !strcmp(name, + XATTR_NAME_POSIX_ACL_DEFAULT)))) + )) + err = 0; + if (err && (verbose || au_debug_test())) + pr_err("%s, err %d\n", name, err); + goto out; + } + + /* unlock it temporary */ + h_dst_userns = mnt_user_ns(h_dst->mnt); + h_dst_dentry = h_dst->dentry; + h_idst = d_inode(h_dst_dentry); + inode_unlock(h_idst); + err = vfsub_setxattr(h_dst_userns, h_dst_dentry, name, *buf, ssz, + /*flags*/0); + inode_lock_nested(h_idst, AuLsc_I_CHILD2); + if (unlikely(err)) { + if (verbose || au_debug_test()) + pr_err("%s, err %d\n", name, err); + err = au_xattr_ignore(err, name, ignore_flags); + } + +out: + return err; +} + +int au_cpup_xattr(struct path *h_dst, struct path *h_src, int ignore_flags, + unsigned int verbose) +{ + int err, unlocked, acl_access, acl_default; + ssize_t ssz; + struct dentry *h_dst_dentry, *h_src_dentry; + struct inode *h_isrc, *h_idst; + char *value, *p, *o, *e; + + /* try stopping to update the source inode while we are referencing */ + /* there should not be the parent-child relationship between them */ + h_dst_dentry = h_dst->dentry; + h_idst = d_inode(h_dst_dentry); + h_src_dentry = h_src->dentry; + h_isrc = d_inode(h_src_dentry); + inode_unlock(h_idst); + inode_lock_shared_nested(h_isrc, AuLsc_I_CHILD); + inode_lock_nested(h_idst, AuLsc_I_CHILD2); + unlocked = 0; + + /* some filesystems don't list POSIX ACL, for example tmpfs */ + ssz = vfs_listxattr(h_src_dentry, NULL, 0); + err = ssz; + if (unlikely(err < 0)) { + AuTraceErr(err); + if (err == -ENODATA + || err == -EOPNOTSUPP) + err = 0; /* ignore */ + goto out; + } + + err = 0; + p = NULL; + o = NULL; + if (ssz) { + err = -ENOMEM; + p = kmalloc(ssz, GFP_NOFS); + o = p; + if (unlikely(!p)) + goto out; + err = vfs_listxattr(h_src_dentry, p, ssz); + } + inode_unlock_shared(h_isrc); + unlocked = 1; + AuDbg("err %d, ssz %zd\n", err, ssz); + if (unlikely(err < 0)) + goto out_free; + + err = 0; + e = p + ssz; + value = NULL; + acl_access = 0; + acl_default = 0; + while (!err && p < e) { + acl_access |= !strncmp(p, XATTR_NAME_POSIX_ACL_ACCESS, + sizeof(XATTR_NAME_POSIX_ACL_ACCESS) - 1); + acl_default |= !strncmp(p, XATTR_NAME_POSIX_ACL_DEFAULT, + sizeof(XATTR_NAME_POSIX_ACL_DEFAULT) + - 1); + err = au_do_cpup_xattr(h_dst, h_src, p, &value, ignore_flags, + verbose); + p += strlen(p) + 1; + } + AuTraceErr(err); + ignore_flags |= au_xattr_out_of_list; + if (!err && !acl_access) { + err = au_do_cpup_xattr(h_dst, h_src, + XATTR_NAME_POSIX_ACL_ACCESS, &value, + ignore_flags, verbose); + AuTraceErr(err); + } + if (!err && !acl_default) { + err = au_do_cpup_xattr(h_dst, h_src, + XATTR_NAME_POSIX_ACL_DEFAULT, &value, + ignore_flags, verbose); + AuTraceErr(err); + } + + au_kfree_try_rcu(value); + +out_free: + au_kfree_try_rcu(o); +out: + if (!unlocked) + inode_unlock_shared(h_isrc); + AuTraceErr(err); + return err; +} + +/* ---------------------------------------------------------------------- */ + +static int au_smack_reentering(struct super_block *sb) +{ +#if IS_ENABLED(CONFIG_SECURITY_SMACK) || IS_ENABLED(CONFIG_SECURITY_SELINUX) + /* + * as a part of lookup, smack_d_instantiate() is called, and it calls + * i_op->getxattr(). ouch. + */ + return si_pid_test(sb); +#else + return 0; +#endif +} + +enum { + AU_XATTR_LIST, + AU_XATTR_GET +}; + +struct au_lgxattr { + int type; + union { + struct { + char *list; + size_t size; + } list; + struct { + const char *name; + void *value; + size_t size; + } get; + } u; +}; + +static ssize_t au_lgxattr(struct dentry *dentry, struct inode *inode, + struct au_lgxattr *arg) +{ + ssize_t err; + int reenter; + struct path h_path; + struct super_block *sb; + + sb = dentry->d_sb; + reenter = au_smack_reentering(sb); + if (!reenter) { + err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM); + if (unlikely(err)) + goto out; + } + err = au_h_path_getattr(dentry, inode, /*force*/1, &h_path, reenter); + if (unlikely(err)) + goto out_si; + if (unlikely(!h_path.dentry)) + /* illegally overlapped or something */ + goto out_di; /* pretending success */ + + /* always topmost entry only */ + switch (arg->type) { + case AU_XATTR_LIST: + err = vfs_listxattr(h_path.dentry, + arg->u.list.list, arg->u.list.size); + break; + case AU_XATTR_GET: + AuDebugOn(d_is_negative(h_path.dentry)); + err = vfs_getxattr(mnt_user_ns(h_path.mnt), h_path.dentry, + arg->u.get.name, arg->u.get.value, + arg->u.get.size); + break; + } + +out_di: + if (!reenter) + di_read_unlock(dentry, AuLock_IR); +out_si: + if (!reenter) + si_read_unlock(sb); +out: + AuTraceErr(err); + return err; +} + +ssize_t aufs_listxattr(struct dentry *dentry, char *list, size_t size) +{ + struct au_lgxattr arg = { + .type = AU_XATTR_LIST, + .u.list = { + .list = list, + .size = size + }, + }; + + return au_lgxattr(dentry, /*inode*/NULL, &arg); +} + +static ssize_t au_getxattr(struct dentry *dentry, struct inode *inode, + const char *name, void *value, size_t size) +{ + struct au_lgxattr arg = { + .type = AU_XATTR_GET, + .u.get = { + .name = name, + .value = value, + .size = size + }, + }; + + return au_lgxattr(dentry, inode, &arg); +} + +static int au_setxattr(struct dentry *dentry, struct inode *inode, + const char *name, const void *value, size_t size, + int flags) +{ + struct au_sxattr arg = { + .type = AU_XATTR_SET, + .u.set = { + .name = name, + .value = value, + .size = size, + .flags = flags + }, + }; + + return au_sxattr(dentry, inode, &arg); +} + +/* ---------------------------------------------------------------------- */ + +static int au_xattr_get(const struct xattr_handler *handler, + struct dentry *dentry, struct inode *inode, + const char *name, void *buffer, size_t size) +{ + return au_getxattr(dentry, inode, name, buffer, size); +} + +static int au_xattr_set(const struct xattr_handler *handler, + struct user_namespace *userns, + struct dentry *dentry, struct inode *inode, + const char *name, const void *value, size_t size, + int flags) +{ + return au_setxattr(dentry, inode, name, value, size, flags); +} + +static const struct xattr_handler au_xattr_handler = { + .name = "", + .prefix = "", + .get = au_xattr_get, + .set = au_xattr_set +}; + +static const struct xattr_handler *au_xattr_handlers[] = { +#ifdef CONFIG_FS_POSIX_ACL + &posix_acl_access_xattr_handler, + &posix_acl_default_xattr_handler, +#endif + &au_xattr_handler, /* must be last */ + NULL +}; + +void au_xattr_init(struct super_block *sb) +{ + sb->s_xattr = au_xattr_handlers; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/aufs/xino.c +++ linux-azure-5.13-5.13.0/fs/aufs/xino.c @@ -0,0 +1,1925 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/* + * external inode number translation table and bitmap + * + * things to consider + * - the lifetime + * + au_xino object + * + XINO files (xino, xib, xigen) + * + dynamic debugfs entries (xiN) + * + static debugfs entries (xib, xigen) + * + static sysfs entry (xi_path) + * - several entry points to handle them. + * + mount(2) without xino option (default) + * + mount(2) with xino option + * + mount(2) with noxino option + * + umount(2) + * + remount with add/del branches + * + remount with xino/noxino options + */ + +#include +#include +#include "aufs.h" + +static aufs_bindex_t sbr_find_shared(struct super_block *sb, aufs_bindex_t btop, + aufs_bindex_t bbot, + struct super_block *h_sb) +{ + /* todo: try binary-search if the branches are many */ + for (; btop <= bbot; btop++) + if (h_sb == au_sbr_sb(sb, btop)) + return btop; + return -1; +} + +/* + * find another branch who is on the same filesystem of the specified + * branch{@btgt}. search until @bbot. + */ +static aufs_bindex_t is_sb_shared(struct super_block *sb, aufs_bindex_t btgt, + aufs_bindex_t bbot) +{ + aufs_bindex_t bindex; + struct super_block *tgt_sb; + + tgt_sb = au_sbr_sb(sb, btgt); + bindex = sbr_find_shared(sb, /*btop*/0, btgt - 1, tgt_sb); + if (bindex < 0) + bindex = sbr_find_shared(sb, btgt + 1, bbot, tgt_sb); + + return bindex; +} + +/* ---------------------------------------------------------------------- */ + +/* + * stop unnecessary notify events at creating xino files + */ + +aufs_bindex_t au_xi_root(struct super_block *sb, struct dentry *dentry) +{ + aufs_bindex_t bfound, bindex, bbot; + struct dentry *parent; + struct au_branch *br; + + bfound = -1; + parent = dentry->d_parent; /* safe d_parent access */ + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_dentry(br) == parent) { + bfound = bindex; + break; + } + } + + AuDbg("bfound b%d\n", bfound); + return bfound; +} + +struct au_xino_lock_dir { + struct au_hinode *hdir; + struct dentry *parent; + struct inode *dir; +}; + +static struct dentry *au_dget_parent_lock(struct dentry *dentry, + unsigned int lsc) +{ + struct dentry *parent; + struct inode *dir; + + parent = dget_parent(dentry); + dir = d_inode(parent); + inode_lock_nested(dir, lsc); +#if 0 /* it should not happen */ + spin_lock(&dentry->d_lock); + if (unlikely(dentry->d_parent != parent)) { + spin_unlock(&dentry->d_lock); + inode_unlock(dir); + dput(parent); + parent = NULL; + goto out; + } + spin_unlock(&dentry->d_lock); + +out: +#endif + return parent; +} + +static void au_xino_lock_dir(struct super_block *sb, struct path *xipath, + struct au_xino_lock_dir *ldir) +{ + aufs_bindex_t bindex; + + ldir->hdir = NULL; + bindex = au_xi_root(sb, xipath->dentry); + if (bindex >= 0) { + /* rw branch root */ + ldir->hdir = au_hi(d_inode(sb->s_root), bindex); + au_hn_inode_lock_nested(ldir->hdir, AuLsc_I_PARENT); + } else { + /* other */ + ldir->parent = au_dget_parent_lock(xipath->dentry, + AuLsc_I_PARENT); + ldir->dir = d_inode(ldir->parent); + } +} + +static void au_xino_unlock_dir(struct au_xino_lock_dir *ldir) +{ + if (ldir->hdir) + au_hn_inode_unlock(ldir->hdir); + else { + inode_unlock(ldir->dir); + dput(ldir->parent); + } +} + +/* ---------------------------------------------------------------------- */ + +/* + * create and set a new xino file + */ +struct file *au_xino_create(struct super_block *sb, char *fpath, int silent, + int wbrtop) +{ + struct file *file; + struct dentry *h_parent, *d; + struct inode *h_dir, *inode; + int err; + static DEFINE_MUTEX(mtx); + + /* + * at mount-time, and the xino file is the default path, + * hnotify is disabled so we have no notify events to ignore. + * when a user specified the xino, we cannot get au_hdir to be ignored. + */ + if (!wbrtop) + mutex_lock(&mtx); + file = vfsub_filp_open(fpath, O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE + /* | __FMODE_NONOTIFY */, + 0666); + if (IS_ERR(file)) { + if (!wbrtop) + mutex_unlock(&mtx); + if (!silent) + pr_err("open %s(%ld)\n", fpath, PTR_ERR(file)); + return file; + } + + /* keep file count */ + err = 0; + d = file->f_path.dentry; + h_parent = au_dget_parent_lock(d, AuLsc_I_PARENT); + if (!wbrtop) + mutex_unlock(&mtx); + /* mnt_want_write() is unnecessary here */ + h_dir = d_inode(h_parent); + inode = file_inode(file); + /* no delegation since it is just created */ + if (inode->i_nlink) + err = vfsub_unlink(h_dir, &file->f_path, /*delegated*/NULL, + /*force*/0); + inode_unlock(h_dir); + dput(h_parent); + if (unlikely(err)) { + if (!silent) + pr_err("unlink %s(%d)\n", fpath, err); + goto out; + } + + err = -EINVAL; + if (unlikely(sb == d->d_sb)) { + if (!silent) + pr_err("%s must be outside\n", fpath); + goto out; + } + if (unlikely(au_test_fs_bad_xino(d->d_sb))) { + if (!silent) + pr_err("xino doesn't support %s(%s)\n", + fpath, au_sbtype(d->d_sb)); + goto out; + } + return file; /* success */ + +out: + fput(file); + file = ERR_PTR(err); + return file; +} + +/* + * create a new xinofile at the same place/path as @base. + */ +struct file *au_xino_create2(struct super_block *sb, struct path *base, + struct file *copy_src) +{ + struct file *file; + struct dentry *dentry, *parent; + struct inode *dir, *delegated; + struct qstr *name; + struct path path; + int err, do_unlock; + struct au_xino_lock_dir ldir; + + do_unlock = 1; + au_xino_lock_dir(sb, base, &ldir); + dentry = base->dentry; + parent = dentry->d_parent; /* dir inode is locked */ + dir = d_inode(parent); + IMustLock(dir); + + name = &dentry->d_name; + path.dentry = vfsub_lookup_one_len(name->name, parent, name->len); + if (IS_ERR(path.dentry)) { + file = (void *)path.dentry; + pr_err("%pd lookup err %ld\n", dentry, PTR_ERR(path.dentry)); + goto out; + } + + /* no need to mnt_want_write() since we call dentry_open() later */ + err = vfs_create(mnt_user_ns(base->mnt), dir, path.dentry, 0666, NULL); + if (unlikely(err)) { + file = ERR_PTR(err); + pr_err("%pd create err %d\n", dentry, err); + goto out_dput; + } + + path.mnt = base->mnt; + file = vfsub_dentry_open(&path, + O_RDWR | O_CREAT | O_EXCL | O_LARGEFILE + /* | __FMODE_NONOTIFY */); + if (IS_ERR(file)) { + pr_err("%pd open err %ld\n", dentry, PTR_ERR(file)); + goto out_dput; + } + + delegated = NULL; + err = vfsub_unlink(dir, &file->f_path, &delegated, /*force*/0); + au_xino_unlock_dir(&ldir); + do_unlock = 0; + if (unlikely(err == -EWOULDBLOCK)) { + pr_warn("cannot retry for NFSv4 delegation" + " for an internal unlink\n"); + iput(delegated); + } + if (unlikely(err)) { + pr_err("%pd unlink err %d\n", dentry, err); + goto out_fput; + } + + if (copy_src) { + /* no one can touch copy_src xino */ + err = au_copy_file(file, copy_src, vfsub_f_size_read(copy_src)); + if (unlikely(err)) { + pr_err("%pd copy err %d\n", dentry, err); + goto out_fput; + } + } + goto out_dput; /* success */ + +out_fput: + fput(file); + file = ERR_PTR(err); +out_dput: + dput(path.dentry); +out: + if (do_unlock) + au_xino_unlock_dir(&ldir); + return file; +} + +struct file *au_xino_file1(struct au_xino *xi) +{ + struct file *file; + unsigned int u, nfile; + + file = NULL; + nfile = xi->xi_nfile; + for (u = 0; u < nfile; u++) { + file = xi->xi_file[u]; + if (file) + break; + } + + return file; +} + +static int au_xino_file_set(struct au_xino *xi, int idx, struct file *file) +{ + int err; + struct file *f; + void *p; + + if (file) + get_file(file); + + err = 0; + f = NULL; + if (idx < xi->xi_nfile) { + f = xi->xi_file[idx]; + if (f) + fput(f); + } else { + p = au_kzrealloc(xi->xi_file, + sizeof(*xi->xi_file) * xi->xi_nfile, + sizeof(*xi->xi_file) * (idx + 1), + GFP_NOFS, /*may_shrink*/0); + if (p) { + MtxMustLock(&xi->xi_mtx); + xi->xi_file = p; + xi->xi_nfile = idx + 1; + } else { + err = -ENOMEM; + if (file) + fput(file); + goto out; + } + } + xi->xi_file[idx] = file; + +out: + return err; +} + +/* + * if @xinew->xi is not set, then create new xigen file. + */ +struct file *au_xi_new(struct super_block *sb, struct au_xi_new *xinew) +{ + struct file *file; + int err; + + SiMustAnyLock(sb); + + file = au_xino_create2(sb, xinew->base, xinew->copy_src); + if (IS_ERR(file)) { + err = PTR_ERR(file); + pr_err("%s[%d], err %d\n", + xinew->xi ? "xino" : "xigen", + xinew->idx, err); + goto out; + } + + if (xinew->xi) + err = au_xino_file_set(xinew->xi, xinew->idx, file); + else { + BUG(); + /* todo: make xigen file an array */ + /* err = au_xigen_file_set(sb, xinew->idx, file); */ + } + fput(file); + if (unlikely(err)) + file = ERR_PTR(err); + +out: + return file; +} + +/* ---------------------------------------------------------------------- */ + +/* + * truncate xino files + */ +static int au_xino_do_trunc(struct super_block *sb, aufs_bindex_t bindex, + int idx, struct kstatfs *st) +{ + int err; + blkcnt_t blocks; + struct file *file, *new_xino; + struct au_xi_new xinew = { + .idx = idx + }; + + err = 0; + xinew.xi = au_sbr(sb, bindex)->br_xino; + file = au_xino_file(xinew.xi, idx); + if (!file) + goto out; + + xinew.base = &file->f_path; + err = vfs_statfs(xinew.base, st); + if (unlikely(err)) { + AuErr1("statfs err %d, ignored\n", err); + err = 0; + goto out; + } + + blocks = file_inode(file)->i_blocks; + pr_info("begin truncating xino(b%d-%d), ib%llu, %llu/%llu free blks\n", + bindex, idx, (u64)blocks, st->f_bfree, st->f_blocks); + + xinew.copy_src = file; + new_xino = au_xi_new(sb, &xinew); + if (IS_ERR(new_xino)) { + err = PTR_ERR(new_xino); + pr_err("xino(b%d-%d), err %d, ignored\n", bindex, idx, err); + goto out; + } + + err = vfs_statfs(&new_xino->f_path, st); + if (!err) + pr_info("end truncating xino(b%d-%d), ib%llu, %llu/%llu free blks\n", + bindex, idx, (u64)file_inode(new_xino)->i_blocks, + st->f_bfree, st->f_blocks); + else { + AuErr1("statfs err %d, ignored\n", err); + err = 0; + } + +out: + return err; +} + +int au_xino_trunc(struct super_block *sb, aufs_bindex_t bindex, int idx_begin) +{ + int err, i; + unsigned long jiffy; + aufs_bindex_t bbot; + struct kstatfs *st; + struct au_branch *br; + struct au_xino *xi; + + err = -ENOMEM; + st = kmalloc(sizeof(*st), GFP_NOFS); + if (unlikely(!st)) + goto out; + + err = -EINVAL; + bbot = au_sbbot(sb); + if (unlikely(bindex < 0 || bbot < bindex)) + goto out_st; + + err = 0; + jiffy = jiffies; + br = au_sbr(sb, bindex); + xi = br->br_xino; + for (i = idx_begin; !err && i < xi->xi_nfile; i++) + err = au_xino_do_trunc(sb, bindex, i, st); + if (!err) + au_sbi(sb)->si_xino_jiffy = jiffy; + +out_st: + au_kfree_rcu(st); +out: + return err; +} + +struct xino_do_trunc_args { + struct super_block *sb; + struct au_branch *br; + int idx; +}; + +static void xino_do_trunc(void *_args) +{ + struct xino_do_trunc_args *args = _args; + struct super_block *sb; + struct au_branch *br; + struct inode *dir; + int err, idx; + aufs_bindex_t bindex; + + err = 0; + sb = args->sb; + dir = d_inode(sb->s_root); + br = args->br; + idx = args->idx; + + si_noflush_write_lock(sb); + ii_read_lock_parent(dir); + bindex = au_br_index(sb, br->br_id); + err = au_xino_trunc(sb, bindex, idx); + ii_read_unlock(dir); + if (unlikely(err)) + pr_warn("err b%d, (%d)\n", bindex, err); + atomic_dec(&br->br_xino->xi_truncating); + au_lcnt_dec(&br->br_count); + si_write_unlock(sb); + au_nwt_done(&au_sbi(sb)->si_nowait); + au_kfree_rcu(args); +} + +/* + * returns the index in the xi_file array whose corresponding file is necessary + * to truncate, or -1 which means no need to truncate. + */ +static int xino_trunc_test(struct super_block *sb, struct au_branch *br) +{ + int err; + unsigned int u; + struct kstatfs st; + struct au_sbinfo *sbinfo; + struct au_xino *xi; + struct file *file; + + /* todo: si_xino_expire and the ratio should be customizable */ + sbinfo = au_sbi(sb); + if (time_before(jiffies, + sbinfo->si_xino_jiffy + sbinfo->si_xino_expire)) + return -1; + + /* truncation border */ + xi = br->br_xino; + for (u = 0; u < xi->xi_nfile; u++) { + file = au_xino_file(xi, u); + if (!file) + continue; + + err = vfs_statfs(&file->f_path, &st); + if (unlikely(err)) { + AuErr1("statfs err %d, ignored\n", err); + return -1; + } + if (div64_u64(st.f_bfree * 100, st.f_blocks) + >= AUFS_XINO_DEF_TRUNC) + return u; + } + + return -1; +} + +static void xino_try_trunc(struct super_block *sb, struct au_branch *br) +{ + int idx; + struct xino_do_trunc_args *args; + int wkq_err; + + idx = xino_trunc_test(sb, br); + if (idx < 0) + return; + + if (atomic_inc_return(&br->br_xino->xi_truncating) > 1) + goto out; + + /* lock and kfree() will be called in trunc_xino() */ + args = kmalloc(sizeof(*args), GFP_NOFS); + if (unlikely(!args)) { + AuErr1("no memory\n"); + goto out; + } + + au_lcnt_inc(&br->br_count); + args->sb = sb; + args->br = br; + args->idx = idx; + wkq_err = au_wkq_nowait(xino_do_trunc, args, sb, /*flags*/0); + if (!wkq_err) + return; /* success */ + + pr_err("wkq %d\n", wkq_err); + au_lcnt_dec(&br->br_count); + au_kfree_rcu(args); + +out: + atomic_dec(&br->br_xino->xi_truncating); +} + +/* ---------------------------------------------------------------------- */ + +struct au_xi_calc { + int idx; + loff_t pos; +}; + +static void au_xi_calc(struct super_block *sb, ino_t h_ino, + struct au_xi_calc *calc) +{ + loff_t maxent; + + maxent = au_xi_maxent(sb); + calc->idx = div64_u64_rem(h_ino, maxent, &calc->pos); + calc->pos *= sizeof(ino_t); +} + +static int au_xino_do_new_async(struct super_block *sb, struct au_branch *br, + struct au_xi_calc *calc) +{ + int err; + struct file *file; + struct au_xino *xi = br->br_xino; + struct au_xi_new xinew = { + .xi = xi + }; + + SiMustAnyLock(sb); + + err = 0; + if (!xi) + goto out; + + mutex_lock(&xi->xi_mtx); + file = au_xino_file(xi, calc->idx); + if (file) + goto out_mtx; + + file = au_xino_file(xi, /*idx*/-1); + AuDebugOn(!file); + xinew.idx = calc->idx; + xinew.base = &file->f_path; + /* xinew.copy_src = NULL; */ + file = au_xi_new(sb, &xinew); + if (IS_ERR(file)) + err = PTR_ERR(file); + +out_mtx: + mutex_unlock(&xi->xi_mtx); +out: + return err; +} + +struct au_xino_do_new_async_args { + struct super_block *sb; + struct au_branch *br; + struct au_xi_calc calc; + ino_t ino; +}; + +struct au_xi_writing { + struct hlist_bl_node node; + ino_t h_ino, ino; +}; + +static int au_xino_do_write(struct file *file, struct au_xi_calc *calc, + ino_t ino); + +static void au_xino_call_do_new_async(void *args) +{ + struct au_xino_do_new_async_args *a = args; + struct au_branch *br; + struct super_block *sb; + struct au_sbinfo *sbi; + struct inode *root; + struct file *file; + struct au_xi_writing *del, *p; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + int err; + + br = a->br; + sb = a->sb; + sbi = au_sbi(sb); + si_noflush_read_lock(sb); + root = d_inode(sb->s_root); + ii_read_lock_child(root); + err = au_xino_do_new_async(sb, br, &a->calc); + if (unlikely(err)) { + AuIOErr("err %d\n", err); + goto out; + } + + file = au_xino_file(br->br_xino, a->calc.idx); + AuDebugOn(!file); + err = au_xino_do_write(file, &a->calc, a->ino); + if (unlikely(err)) { + AuIOErr("err %d\n", err); + goto out; + } + + del = NULL; + hbl = &br->br_xino->xi_writing; + hlist_bl_lock(hbl); + au_hbl_for_each(pos, hbl) { + p = container_of(pos, struct au_xi_writing, node); + if (p->ino == a->ino) { + del = p; + hlist_bl_del(&p->node); + break; + } + } + hlist_bl_unlock(hbl); + au_kfree_rcu(del); + +out: + au_lcnt_dec(&br->br_count); + ii_read_unlock(root); + si_read_unlock(sb); + au_nwt_done(&sbi->si_nowait); + au_kfree_rcu(a); +} + +/* + * create a new xino file asynchronously + */ +static int au_xino_new_async(struct super_block *sb, struct au_branch *br, + struct au_xi_calc *calc, ino_t ino) +{ + int err; + struct au_xino_do_new_async_args *arg; + + err = -ENOMEM; + arg = kmalloc(sizeof(*arg), GFP_NOFS); + if (unlikely(!arg)) + goto out; + + arg->sb = sb; + arg->br = br; + arg->calc = *calc; + arg->ino = ino; + au_lcnt_inc(&br->br_count); + err = au_wkq_nowait(au_xino_call_do_new_async, arg, sb, AuWkq_NEST); + if (unlikely(err)) { + pr_err("wkq %d\n", err); + au_lcnt_dec(&br->br_count); + au_kfree_rcu(arg); + } + +out: + return err; +} + +/* + * read @ino from xinofile for the specified branch{@sb, @bindex} + * at the position of @h_ino. + */ +int au_xino_read(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t *ino) +{ + int err; + ssize_t sz; + struct au_xi_calc calc; + struct au_sbinfo *sbinfo; + struct file *file; + struct au_xino *xi; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos; + struct au_xi_writing *p; + + *ino = 0; + if (!au_opt_test(au_mntflags(sb), XINO)) + return 0; /* no xino */ + + err = 0; + au_xi_calc(sb, h_ino, &calc); + xi = au_sbr(sb, bindex)->br_xino; + file = au_xino_file(xi, calc.idx); + if (!file) { + hbl = &xi->xi_writing; + hlist_bl_lock(hbl); + au_hbl_for_each(pos, hbl) { + p = container_of(pos, struct au_xi_writing, node); + if (p->h_ino == h_ino) { + AuDbg("hi%llu, i%llu, found\n", + (u64)p->h_ino, (u64)p->ino); + *ino = p->ino; + break; + } + } + hlist_bl_unlock(hbl); + return 0; + } else if (vfsub_f_size_read(file) < calc.pos + sizeof(*ino)) + return 0; /* no xino */ + + sbinfo = au_sbi(sb); + sz = xino_fread(file, ino, sizeof(*ino), &calc.pos); + if (sz == sizeof(*ino)) + return 0; /* success */ + + err = sz; + if (unlikely(sz >= 0)) { + err = -EIO; + AuIOErr("xino read error (%zd)\n", sz); + } + return err; +} + +static int au_xino_do_write(struct file *file, struct au_xi_calc *calc, + ino_t ino) +{ + ssize_t sz; + + sz = xino_fwrite(file, &ino, sizeof(ino), &calc->pos); + if (sz == sizeof(ino)) + return 0; /* success */ + + AuIOErr("write failed (%zd)\n", sz); + return -EIO; +} + +/* + * write @ino to the xinofile for the specified branch{@sb, @bindex} + * at the position of @h_ino. + * even if @ino is zero, it is written to the xinofile and means no entry. + * if the size of the xino file on a specific filesystem exceeds the watermark, + * try truncating it. + */ +int au_xino_write(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + ino_t ino) +{ + int err; + unsigned int mnt_flags; + struct au_xi_calc calc; + struct file *file; + struct au_branch *br; + struct au_xino *xi; + struct au_xi_writing *p; + + SiMustAnyLock(sb); + + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, XINO)) + return 0; + + au_xi_calc(sb, h_ino, &calc); + br = au_sbr(sb, bindex); + xi = br->br_xino; + file = au_xino_file(xi, calc.idx); + if (!file) { + /* store the inum pair into the list */ + p = kmalloc(sizeof(*p), GFP_NOFS | __GFP_NOFAIL); + p->h_ino = h_ino; + p->ino = ino; + au_hbl_add(&p->node, &xi->xi_writing); + + /* create and write a new xino file asynchronously */ + err = au_xino_new_async(sb, br, &calc, ino); + if (!err) + return 0; /* success */ + goto out; + } + + err = au_xino_do_write(file, &calc, ino); + if (!err) { + br = au_sbr(sb, bindex); + if (au_opt_test(mnt_flags, TRUNC_XINO) + && au_test_fs_trunc_xino(au_br_sb(br))) + xino_try_trunc(sb, br); + return 0; /* success */ + } + +out: + AuIOErr("write failed (%d)\n", err); + return -EIO; +} + +static ssize_t xino_fread_wkq(struct file *file, void *buf, size_t size, + loff_t *pos); + +/* todo: unnecessary to support mmap_sem since kernel-space? */ +ssize_t xino_fread(struct file *file, void *kbuf, size_t size, loff_t *pos) +{ + ssize_t err; + int i; + const int prevent_endless = 10; + + i = 0; + do { + err = vfsub_read_k(file, kbuf, size, pos); + if (err == -EINTR + && !au_wkq_test() + && fatal_signal_pending(current)) { + err = xino_fread_wkq(file, kbuf, size, pos); + BUG_ON(err == -EINTR); + } + } while (i++ < prevent_endless + && (err == -EAGAIN || err == -EINTR)); + +#if 0 /* reserved for future use */ + if (err > 0) + fsnotify_access(file->f_path.dentry); +#endif + + return err; +} + +struct xino_fread_args { + ssize_t *errp; + struct file *file; + void *buf; + size_t size; + loff_t *pos; +}; + +static void call_xino_fread(void *args) +{ + struct xino_fread_args *a = args; + *a->errp = xino_fread(a->file, a->buf, a->size, a->pos); +} + +static ssize_t xino_fread_wkq(struct file *file, void *buf, size_t size, + loff_t *pos) +{ + ssize_t err; + int wkq_err; + struct xino_fread_args args = { + .errp = &err, + .file = file, + .buf = buf, + .size = size, + .pos = pos + }; + + wkq_err = au_wkq_wait(call_xino_fread, &args); + if (unlikely(wkq_err)) + err = wkq_err; + + return err; +} + +static ssize_t xino_fwrite_wkq(struct file *file, void *buf, size_t size, + loff_t *pos); + +static ssize_t do_xino_fwrite(struct file *file, void *kbuf, size_t size, + loff_t *pos) +{ + ssize_t err; + int i; + const int prevent_endless = 10; + + i = 0; + do { + err = vfsub_write_k(file, kbuf, size, pos); + if (err == -EINTR + && !au_wkq_test() + && fatal_signal_pending(current)) { + err = xino_fwrite_wkq(file, kbuf, size, pos); + BUG_ON(err == -EINTR); + } + } while (i++ < prevent_endless + && (err == -EAGAIN || err == -EINTR)); + +#if 0 /* reserved for future use */ + if (err > 0) + fsnotify_modify(file->f_path.dentry); +#endif + + return err; +} + +struct do_xino_fwrite_args { + ssize_t *errp; + struct file *file; + void *buf; + size_t size; + loff_t *pos; +}; + +static void call_do_xino_fwrite(void *args) +{ + struct do_xino_fwrite_args *a = args; + *a->errp = do_xino_fwrite(a->file, a->buf, a->size, a->pos); +} + +static ssize_t xino_fwrite_wkq(struct file *file, void *buf, size_t size, + loff_t *pos) +{ + ssize_t err; + int wkq_err; + struct do_xino_fwrite_args args = { + .errp = &err, + .file = file, + .buf = buf, + .size = size, + .pos = pos + }; + + /* + * it breaks RLIMIT_FSIZE and normal user's limit, + * users should care about quota and real 'filesystem full.' + */ + wkq_err = au_wkq_wait(call_do_xino_fwrite, &args); + if (unlikely(wkq_err)) + err = wkq_err; + + return err; +} + +ssize_t xino_fwrite(struct file *file, void *buf, size_t size, loff_t *pos) +{ + ssize_t err; + + if (rlimit(RLIMIT_FSIZE) == RLIM_INFINITY) { + lockdep_off(); + err = do_xino_fwrite(file, buf, size, pos); + lockdep_on(); + } else { + lockdep_off(); + err = xino_fwrite_wkq(file, buf, size, pos); + lockdep_on(); + } + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * inode number bitmap + */ +static const int page_bits = (int)PAGE_SIZE * BITS_PER_BYTE; +static ino_t xib_calc_ino(unsigned long pindex, int bit) +{ + ino_t ino; + + AuDebugOn(bit < 0 || page_bits <= bit); + ino = AUFS_FIRST_INO + pindex * page_bits + bit; + return ino; +} + +static void xib_calc_bit(ino_t ino, unsigned long *pindex, int *bit) +{ + AuDebugOn(ino < AUFS_FIRST_INO); + ino -= AUFS_FIRST_INO; + *pindex = ino / page_bits; + *bit = ino % page_bits; +} + +static int xib_pindex(struct super_block *sb, unsigned long pindex) +{ + int err; + loff_t pos; + ssize_t sz; + struct au_sbinfo *sbinfo; + struct file *xib; + unsigned long *p; + + sbinfo = au_sbi(sb); + MtxMustLock(&sbinfo->si_xib_mtx); + AuDebugOn(pindex > ULONG_MAX / PAGE_SIZE + || !au_opt_test(sbinfo->si_mntflags, XINO)); + + if (pindex == sbinfo->si_xib_last_pindex) + return 0; + + xib = sbinfo->si_xib; + p = sbinfo->si_xib_buf; + pos = sbinfo->si_xib_last_pindex; + pos *= PAGE_SIZE; + sz = xino_fwrite(xib, p, PAGE_SIZE, &pos); + if (unlikely(sz != PAGE_SIZE)) + goto out; + + pos = pindex; + pos *= PAGE_SIZE; + if (vfsub_f_size_read(xib) >= pos + PAGE_SIZE) + sz = xino_fread(xib, p, PAGE_SIZE, &pos); + else { + memset(p, 0, PAGE_SIZE); + sz = xino_fwrite(xib, p, PAGE_SIZE, &pos); + } + if (sz == PAGE_SIZE) { + sbinfo->si_xib_last_pindex = pindex; + return 0; /* success */ + } + +out: + AuIOErr1("write failed (%zd)\n", sz); + err = sz; + if (sz >= 0) + err = -EIO; + return err; +} + +static void au_xib_clear_bit(struct inode *inode) +{ + int err, bit; + unsigned long pindex; + struct super_block *sb; + struct au_sbinfo *sbinfo; + + AuDebugOn(inode->i_nlink); + + sb = inode->i_sb; + xib_calc_bit(inode->i_ino, &pindex, &bit); + AuDebugOn(page_bits <= bit); + sbinfo = au_sbi(sb); + mutex_lock(&sbinfo->si_xib_mtx); + err = xib_pindex(sb, pindex); + if (!err) { + clear_bit(bit, sbinfo->si_xib_buf); + sbinfo->si_xib_next_bit = bit; + } + mutex_unlock(&sbinfo->si_xib_mtx); +} + +/* ---------------------------------------------------------------------- */ + +/* + * truncate a xino bitmap file + */ + +/* todo: slow */ +static int do_xib_restore(struct super_block *sb, struct file *file, void *page) +{ + int err, bit; + ssize_t sz; + unsigned long pindex; + loff_t pos, pend; + struct au_sbinfo *sbinfo; + ino_t *ino; + unsigned long *p; + + err = 0; + sbinfo = au_sbi(sb); + MtxMustLock(&sbinfo->si_xib_mtx); + p = sbinfo->si_xib_buf; + pend = vfsub_f_size_read(file); + pos = 0; + while (pos < pend) { + sz = xino_fread(file, page, PAGE_SIZE, &pos); + err = sz; + if (unlikely(sz <= 0)) + goto out; + + err = 0; + for (ino = page; sz > 0; ino++, sz -= sizeof(ino)) { + if (unlikely(*ino < AUFS_FIRST_INO)) + continue; + + xib_calc_bit(*ino, &pindex, &bit); + AuDebugOn(page_bits <= bit); + err = xib_pindex(sb, pindex); + if (!err) + set_bit(bit, p); + else + goto out; + } + } + +out: + return err; +} + +static int xib_restore(struct super_block *sb) +{ + int err, i; + unsigned int nfile; + aufs_bindex_t bindex, bbot; + void *page; + struct au_branch *br; + struct au_xino *xi; + struct file *file; + + err = -ENOMEM; + page = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!page)) + goto out; + + err = 0; + bbot = au_sbbot(sb); + for (bindex = 0; !err && bindex <= bbot; bindex++) + if (!bindex || is_sb_shared(sb, bindex, bindex - 1) < 0) { + br = au_sbr(sb, bindex); + xi = br->br_xino; + nfile = xi->xi_nfile; + for (i = 0; i < nfile; i++) { + file = au_xino_file(xi, i); + if (file) + err = do_xib_restore(sb, file, page); + } + } else + AuDbg("skip shared b%d\n", bindex); + free_page((unsigned long)page); + +out: + return err; +} + +int au_xib_trunc(struct super_block *sb) +{ + int err; + ssize_t sz; + loff_t pos; + struct au_sbinfo *sbinfo; + unsigned long *p; + struct file *file; + + SiMustWriteLock(sb); + + err = 0; + sbinfo = au_sbi(sb); + if (!au_opt_test(sbinfo->si_mntflags, XINO)) + goto out; + + file = sbinfo->si_xib; + if (vfsub_f_size_read(file) <= PAGE_SIZE) + goto out; + + file = au_xino_create2(sb, &sbinfo->si_xib->f_path, NULL); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + fput(sbinfo->si_xib); + sbinfo->si_xib = file; + + p = sbinfo->si_xib_buf; + memset(p, 0, PAGE_SIZE); + pos = 0; + sz = xino_fwrite(sbinfo->si_xib, p, PAGE_SIZE, &pos); + if (unlikely(sz != PAGE_SIZE)) { + err = sz; + AuIOErr("err %d\n", err); + if (sz >= 0) + err = -EIO; + goto out; + } + + mutex_lock(&sbinfo->si_xib_mtx); + /* mnt_want_write() is unnecessary here */ + err = xib_restore(sb); + mutex_unlock(&sbinfo->si_xib_mtx); + +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +struct au_xino *au_xino_alloc(unsigned int nfile) +{ + struct au_xino *xi; + + xi = kzalloc(sizeof(*xi), GFP_NOFS); + if (unlikely(!xi)) + goto out; + xi->xi_nfile = nfile; + xi->xi_file = kcalloc(nfile, sizeof(*xi->xi_file), GFP_NOFS); + if (unlikely(!xi->xi_file)) + goto out_free; + + xi->xi_nondir.total = 8; /* initial size */ + xi->xi_nondir.array = kcalloc(xi->xi_nondir.total, sizeof(ino_t), + GFP_NOFS); + if (unlikely(!xi->xi_nondir.array)) + goto out_file; + + spin_lock_init(&xi->xi_nondir.spin); + init_waitqueue_head(&xi->xi_nondir.wqh); + mutex_init(&xi->xi_mtx); + INIT_HLIST_BL_HEAD(&xi->xi_writing); + atomic_set(&xi->xi_truncating, 0); + kref_init(&xi->xi_kref); + goto out; /* success */ + +out_file: + au_kfree_try_rcu(xi->xi_file); +out_free: + au_kfree_rcu(xi); + xi = NULL; +out: + return xi; +} + +static int au_xino_init(struct au_branch *br, int idx, struct file *file) +{ + int err; + struct au_xino *xi; + + err = 0; + xi = au_xino_alloc(idx + 1); + if (unlikely(!xi)) { + err = -ENOMEM; + goto out; + } + + if (file) + get_file(file); + xi->xi_file[idx] = file; + AuDebugOn(br->br_xino); + br->br_xino = xi; + +out: + return err; +} + +static void au_xino_release(struct kref *kref) +{ + struct au_xino *xi; + int i; + unsigned long ul; + struct hlist_bl_head *hbl; + struct hlist_bl_node *pos, *n; + struct au_xi_writing *p; + + xi = container_of(kref, struct au_xino, xi_kref); + for (i = 0; i < xi->xi_nfile; i++) + if (xi->xi_file[i]) + fput(xi->xi_file[i]); + for (i = xi->xi_nondir.total - 1; i >= 0; i--) + AuDebugOn(xi->xi_nondir.array[i]); + mutex_destroy(&xi->xi_mtx); + hbl = &xi->xi_writing; + ul = au_hbl_count(hbl); + if (unlikely(ul)) { + pr_warn("xi_writing %lu\n", ul); + hlist_bl_lock(hbl); + hlist_bl_for_each_entry_safe(p, pos, n, hbl, node) { + hlist_bl_del(&p->node); + /* kmemleak reported au_kfree_rcu() doesn't free it */ + kfree(p); + } + hlist_bl_unlock(hbl); + } + au_kfree_try_rcu(xi->xi_file); + au_kfree_try_rcu(xi->xi_nondir.array); + au_kfree_rcu(xi); +} + +int au_xino_put(struct au_branch *br) +{ + int ret; + struct au_xino *xi; + + ret = 0; + xi = br->br_xino; + if (xi) { + br->br_xino = NULL; + ret = kref_put(&xi->xi_kref, au_xino_release); + } + + return ret; +} + +/* ---------------------------------------------------------------------- */ + +/* + * xino mount option handlers + */ + +/* xino bitmap */ +static void xino_clear_xib(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + if (sbinfo->si_xib) + fput(sbinfo->si_xib); + sbinfo->si_xib = NULL; + if (sbinfo->si_xib_buf) + free_page((unsigned long)sbinfo->si_xib_buf); + sbinfo->si_xib_buf = NULL; +} + +static int au_xino_set_xib(struct super_block *sb, struct path *path) +{ + int err; + loff_t pos; + struct au_sbinfo *sbinfo; + struct file *file; + struct super_block *xi_sb; + + SiMustWriteLock(sb); + + sbinfo = au_sbi(sb); + file = au_xino_create2(sb, path, sbinfo->si_xib); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + if (sbinfo->si_xib) + fput(sbinfo->si_xib); + sbinfo->si_xib = file; + xi_sb = file_inode(file)->i_sb; + sbinfo->si_ximaxent = xi_sb->s_maxbytes; + if (unlikely(sbinfo->si_ximaxent < PAGE_SIZE)) { + err = -EIO; + pr_err("s_maxbytes(%llu) on %s is too small\n", + (u64)sbinfo->si_ximaxent, au_sbtype(xi_sb)); + goto out_unset; + } + sbinfo->si_ximaxent /= sizeof(ino_t); + + err = -ENOMEM; + if (!sbinfo->si_xib_buf) + sbinfo->si_xib_buf = (void *)get_zeroed_page(GFP_NOFS); + if (unlikely(!sbinfo->si_xib_buf)) + goto out_unset; + + sbinfo->si_xib_last_pindex = 0; + sbinfo->si_xib_next_bit = 0; + if (vfsub_f_size_read(file) < PAGE_SIZE) { + pos = 0; + err = xino_fwrite(file, sbinfo->si_xib_buf, PAGE_SIZE, &pos); + if (unlikely(err != PAGE_SIZE)) + goto out_free; + } + err = 0; + goto out; /* success */ + +out_free: + if (sbinfo->si_xib_buf) + free_page((unsigned long)sbinfo->si_xib_buf); + sbinfo->si_xib_buf = NULL; + if (err >= 0) + err = -EIO; +out_unset: + fput(sbinfo->si_xib); + sbinfo->si_xib = NULL; +out: + AuTraceErr(err); + return err; +} + +/* xino for each branch */ +static void xino_clear_br(struct super_block *sb) +{ + aufs_bindex_t bindex, bbot; + struct au_branch *br; + + bbot = au_sbbot(sb); + for (bindex = 0; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + AuDebugOn(!br); + au_xino_put(br); + } +} + +static void au_xino_set_br_shared(struct super_block *sb, struct au_branch *br, + aufs_bindex_t bshared) +{ + struct au_branch *brshared; + + brshared = au_sbr(sb, bshared); + AuDebugOn(!brshared->br_xino); + AuDebugOn(!brshared->br_xino->xi_file); + if (br->br_xino != brshared->br_xino) { + au_xino_get(brshared); + au_xino_put(br); + br->br_xino = brshared->br_xino; + } +} + +struct au_xino_do_set_br { + struct au_branch *br; + ino_t h_ino; + aufs_bindex_t bshared; +}; + +static int au_xino_do_set_br(struct super_block *sb, struct path *path, + struct au_xino_do_set_br *args) +{ + int err; + struct au_xi_calc calc; + struct file *file; + struct au_branch *br; + struct au_xi_new xinew = { + .base = path + }; + + br = args->br; + xinew.xi = br->br_xino; + au_xi_calc(sb, args->h_ino, &calc); + xinew.copy_src = au_xino_file(xinew.xi, calc.idx); + if (args->bshared >= 0) + /* shared xino */ + au_xino_set_br_shared(sb, br, args->bshared); + else if (!xinew.xi) { + /* new xino */ + err = au_xino_init(br, calc.idx, xinew.copy_src); + if (unlikely(err)) + goto out; + } + + /* force re-creating */ + xinew.xi = br->br_xino; + xinew.idx = calc.idx; + mutex_lock(&xinew.xi->xi_mtx); + file = au_xi_new(sb, &xinew); + mutex_unlock(&xinew.xi->xi_mtx); + err = PTR_ERR(file); + if (IS_ERR(file)) + goto out; + AuDebugOn(!file); + + err = au_xino_do_write(file, &calc, AUFS_ROOT_INO); + if (unlikely(err)) + au_xino_put(br); + +out: + AuTraceErr(err); + return err; +} + +static int au_xino_set_br(struct super_block *sb, struct path *path) +{ + int err; + aufs_bindex_t bindex, bbot; + struct au_xino_do_set_br args; + struct inode *inode; + + SiMustWriteLock(sb); + + bbot = au_sbbot(sb); + inode = d_inode(sb->s_root); + for (bindex = 0; bindex <= bbot; bindex++) { + args.h_ino = au_h_iptr(inode, bindex)->i_ino; + args.br = au_sbr(sb, bindex); + args.bshared = is_sb_shared(sb, bindex, bindex - 1); + err = au_xino_do_set_br(sb, path, &args); + if (unlikely(err)) + break; + } + + AuTraceErr(err); + return err; +} + +void au_xino_clr(struct super_block *sb) +{ + struct au_sbinfo *sbinfo; + + au_xigen_clr(sb); + xino_clear_xib(sb); + xino_clear_br(sb); + dbgaufs_brs_del(sb, 0); + sbinfo = au_sbi(sb); + /* lvalue, do not call au_mntflags() */ + au_opt_clr(sbinfo->si_mntflags, XINO); +} + +int au_xino_set(struct super_block *sb, struct au_opt_xino *xiopt, int remount) +{ + int err, skip; + struct dentry *dentry, *parent, *cur_dentry, *cur_parent; + struct qstr *dname, *cur_name; + struct file *cur_xino; + struct au_sbinfo *sbinfo; + struct path *path, *cur_path; + + SiMustWriteLock(sb); + + err = 0; + sbinfo = au_sbi(sb); + path = &xiopt->file->f_path; + dentry = path->dentry; + parent = dget_parent(dentry); + if (remount) { + skip = 0; + cur_xino = sbinfo->si_xib; + if (cur_xino) { + cur_path = &cur_xino->f_path; + cur_dentry = cur_path->dentry; + cur_parent = dget_parent(cur_dentry); + cur_name = &cur_dentry->d_name; + dname = &dentry->d_name; + skip = (cur_parent == parent + && au_qstreq(dname, cur_name)); + dput(cur_parent); + } + if (skip) + goto out; + } + + au_opt_set(sbinfo->si_mntflags, XINO); + err = au_xino_set_xib(sb, path); + /* si_x{read,write} are set */ + if (!err) + err = au_xigen_set(sb, path); + if (!err) + err = au_xino_set_br(sb, path); + if (!err) { + dbgaufs_brs_add(sb, 0, /*topdown*/1); + goto out; /* success */ + } + + /* reset all */ + AuIOErr("failed setting xino(%d).\n", err); + au_xino_clr(sb); + +out: + dput(parent); + return err; +} + +/* + * create a xinofile at the default place/path. + */ +struct file *au_xino_def(struct super_block *sb) +{ + struct file *file; + char *page, *p; + struct au_branch *br; + struct super_block *h_sb; + struct path path; + aufs_bindex_t bbot, bindex, bwr; + + br = NULL; + bbot = au_sbbot(sb); + bwr = -1; + for (bindex = 0; bindex <= bbot; bindex++) { + br = au_sbr(sb, bindex); + if (au_br_writable(br->br_perm) + && !au_test_fs_bad_xino(au_br_sb(br))) { + bwr = bindex; + break; + } + } + + if (bwr >= 0) { + file = ERR_PTR(-ENOMEM); + page = (void *)__get_free_page(GFP_NOFS); + if (unlikely(!page)) + goto out; + path.mnt = au_br_mnt(br); + path.dentry = au_h_dptr(sb->s_root, bwr); + p = d_path(&path, page, PATH_MAX - sizeof(AUFS_XINO_FNAME)); + file = (void *)p; + if (!IS_ERR(p)) { + strcat(p, "/" AUFS_XINO_FNAME); + AuDbg("%s\n", p); + file = au_xino_create(sb, p, /*silent*/0, /*wbrtop*/1); + } + free_page((unsigned long)page); + } else { + file = au_xino_create(sb, AUFS_XINO_DEFPATH, /*silent*/0, + /*wbrtop*/0); + if (IS_ERR(file)) + goto out; + h_sb = file->f_path.dentry->d_sb; + if (unlikely(au_test_fs_bad_xino(h_sb))) { + pr_err("xino doesn't support %s(%s)\n", + AUFS_XINO_DEFPATH, au_sbtype(h_sb)); + fput(file); + file = ERR_PTR(-EINVAL); + } + } + +out: + return file; +} + +/* ---------------------------------------------------------------------- */ + +/* + * initialize the xinofile for the specified branch @br + * at the place/path where @base_file indicates. + * test whether another branch is on the same filesystem or not, + * if found then share the xinofile with another branch. + */ +int au_xino_init_br(struct super_block *sb, struct au_branch *br, ino_t h_ino, + struct path *base) +{ + int err; + struct au_xino_do_set_br args = { + .h_ino = h_ino, + .br = br + }; + + args.bshared = sbr_find_shared(sb, /*btop*/0, au_sbbot(sb), + au_br_sb(br)); + err = au_xino_do_set_br(sb, base, &args); + if (unlikely(err)) + au_xino_put(br); + + return err; +} + +/* ---------------------------------------------------------------------- */ + +/* + * get an unused inode number from bitmap + */ +ino_t au_xino_new_ino(struct super_block *sb) +{ + ino_t ino; + unsigned long *p, pindex, ul, pend; + struct au_sbinfo *sbinfo; + struct file *file; + int free_bit, err; + + if (!au_opt_test(au_mntflags(sb), XINO)) + return iunique(sb, AUFS_FIRST_INO); + + sbinfo = au_sbi(sb); + mutex_lock(&sbinfo->si_xib_mtx); + p = sbinfo->si_xib_buf; + free_bit = sbinfo->si_xib_next_bit; + if (free_bit < page_bits && !test_bit(free_bit, p)) + goto out; /* success */ + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + + pindex = sbinfo->si_xib_last_pindex; + for (ul = pindex - 1; ul < ULONG_MAX; ul--) { + err = xib_pindex(sb, ul); + if (unlikely(err)) + goto out_err; + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + } + + file = sbinfo->si_xib; + pend = vfsub_f_size_read(file) / PAGE_SIZE; + for (ul = pindex + 1; ul <= pend; ul++) { + err = xib_pindex(sb, ul); + if (unlikely(err)) + goto out_err; + free_bit = find_first_zero_bit(p, page_bits); + if (free_bit < page_bits) + goto out; /* success */ + } + BUG(); + +out: + set_bit(free_bit, p); + sbinfo->si_xib_next_bit = free_bit + 1; + pindex = sbinfo->si_xib_last_pindex; + mutex_unlock(&sbinfo->si_xib_mtx); + ino = xib_calc_ino(pindex, free_bit); + AuDbg("i%lu\n", (unsigned long)ino); + return ino; +out_err: + mutex_unlock(&sbinfo->si_xib_mtx); + AuDbg("i0\n"); + return 0; +} + +/* for s_op->delete_inode() */ +void au_xino_delete_inode(struct inode *inode, const int unlinked) +{ + int err; + unsigned int mnt_flags; + aufs_bindex_t bindex, bbot, bi; + unsigned char try_trunc; + struct au_iinfo *iinfo; + struct super_block *sb; + struct au_hinode *hi; + struct inode *h_inode; + struct au_branch *br; + struct au_xi_calc calc; + struct file *file; + + AuDebugOn(au_is_bad_inode(inode)); + + sb = inode->i_sb; + mnt_flags = au_mntflags(sb); + if (!au_opt_test(mnt_flags, XINO) + || inode->i_ino == AUFS_ROOT_INO) + return; + + if (unlinked) { + au_xigen_inc(inode); + au_xib_clear_bit(inode); + } + + iinfo = au_ii(inode); + bindex = iinfo->ii_btop; + if (bindex < 0) + return; + + try_trunc = !!au_opt_test(mnt_flags, TRUNC_XINO); + hi = au_hinode(iinfo, bindex); + bbot = iinfo->ii_bbot; + for (; bindex <= bbot; bindex++, hi++) { + h_inode = hi->hi_inode; + if (!h_inode + || (!unlinked && h_inode->i_nlink)) + continue; + + /* inode may not be revalidated */ + bi = au_br_index(sb, hi->hi_id); + if (bi < 0) + continue; + + br = au_sbr(sb, bi); + au_xi_calc(sb, h_inode->i_ino, &calc); + file = au_xino_file(br->br_xino, calc.idx); + if (IS_ERR_OR_NULL(file)) + continue; + + err = au_xino_do_write(file, &calc, /*ino*/0); + if (!err && try_trunc + && au_test_fs_trunc_xino(au_br_sb(br))) + xino_try_trunc(sb, br); + } +} + +/* ---------------------------------------------------------------------- */ + +static int au_xinondir_find(struct au_xino *xi, ino_t h_ino) +{ + int found, total, i; + + found = -1; + total = xi->xi_nondir.total; + for (i = 0; i < total; i++) { + if (xi->xi_nondir.array[i] != h_ino) + continue; + found = i; + break; + } + + return found; +} + +static int au_xinondir_expand(struct au_xino *xi) +{ + int err, sz; + ino_t *p; + + BUILD_BUG_ON(KMALLOC_MAX_SIZE > INT_MAX); + + err = -ENOMEM; + sz = xi->xi_nondir.total * sizeof(ino_t); + if (unlikely(sz > KMALLOC_MAX_SIZE / 2)) + goto out; + p = au_kzrealloc(xi->xi_nondir.array, sz, sz << 1, GFP_ATOMIC, + /*may_shrink*/0); + if (p) { + xi->xi_nondir.array = p; + xi->xi_nondir.total <<= 1; + AuDbg("xi_nondir.total %d\n", xi->xi_nondir.total); + err = 0; + } + +out: + return err; +} + +void au_xinondir_leave(struct super_block *sb, aufs_bindex_t bindex, + ino_t h_ino, int idx) +{ + struct au_xino *xi; + + AuDebugOn(!au_opt_test(au_mntflags(sb), XINO)); + xi = au_sbr(sb, bindex)->br_xino; + AuDebugOn(idx < 0 || xi->xi_nondir.total <= idx); + + spin_lock(&xi->xi_nondir.spin); + AuDebugOn(xi->xi_nondir.array[idx] != h_ino); + xi->xi_nondir.array[idx] = 0; + spin_unlock(&xi->xi_nondir.spin); + wake_up_all(&xi->xi_nondir.wqh); +} + +int au_xinondir_enter(struct super_block *sb, aufs_bindex_t bindex, ino_t h_ino, + int *idx) +{ + int err, found, empty; + struct au_xino *xi; + + err = 0; + *idx = -1; + if (!au_opt_test(au_mntflags(sb), XINO)) + goto out; /* no xino */ + + xi = au_sbr(sb, bindex)->br_xino; + +again: + spin_lock(&xi->xi_nondir.spin); + found = au_xinondir_find(xi, h_ino); + if (found == -1) { + empty = au_xinondir_find(xi, /*h_ino*/0); + if (empty == -1) { + empty = xi->xi_nondir.total; + err = au_xinondir_expand(xi); + if (unlikely(err)) + goto out_unlock; + } + xi->xi_nondir.array[empty] = h_ino; + *idx = empty; + } else { + spin_unlock(&xi->xi_nondir.spin); + wait_event(xi->xi_nondir.wqh, + xi->xi_nondir.array[found] != h_ino); + goto again; + } + +out_unlock: + spin_unlock(&xi->xi_nondir.spin); +out: + return err; +} + +/* ---------------------------------------------------------------------- */ + +int au_xino_path(struct seq_file *seq, struct file *file) +{ + int err; + + err = au_seq_path(seq, &file->f_path); + if (unlikely(err)) + goto out; + +#define Deleted "\\040(deleted)" + seq->count -= sizeof(Deleted) - 1; + AuDebugOn(memcmp(seq->buf + seq->count, Deleted, + sizeof(Deleted) - 1)); +#undef Deleted + +out: + return err; +} only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/dcache.c +++ linux-azure-5.13-5.13.0/fs/dcache.c @@ -1320,7 +1320,7 @@ * * The @enter() callbacks are called with d_lock held. */ -static void d_walk(struct dentry *parent, void *data, +void d_walk(struct dentry *parent, void *data, enum d_walk_ret (*enter)(void *, struct dentry *)) { struct dentry *this_parent; @@ -1425,6 +1425,7 @@ seq = 1; goto again; } +EXPORT_SYMBOL_GPL(d_walk); struct check_mount { struct vfsmount *mnt; @@ -2970,6 +2971,7 @@ write_sequnlock(&rename_lock); } +EXPORT_SYMBOL_GPL(d_exchange); /** * d_ancestor - search for an ancestor only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/file_table.c +++ linux-azure-5.13-5.13.0/fs/file_table.c @@ -161,6 +161,7 @@ } return ERR_PTR(-ENFILE); } +EXPORT_SYMBOL_GPL(alloc_empty_file); /* * Variant of alloc_empty_file() that doesn't check and modify nr_files. @@ -375,6 +376,7 @@ } EXPORT_SYMBOL(fput); +EXPORT_SYMBOL_GPL(__fput_sync); void __init files_init(void) { only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/inode.c +++ linux-azure-5.13-5.13.0/fs/inode.c @@ -1778,12 +1778,13 @@ * This does the actual work of updating an inodes time or version. Must have * had called mnt_want_write() before calling this. */ -static int update_time(struct inode *inode, struct timespec64 *time, int flags) +int update_time(struct inode *inode, struct timespec64 *time, int flags) { if (inode->i_op->update_time) return inode->i_op->update_time(inode, time, flags); return generic_update_time(inode, time, flags); } +EXPORT_SYMBOL_GPL(update_time); /** * atime_needs_update - update the access time only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/notify/group.c +++ linux-azure-5.13-5.13.0/fs/notify/group.c @@ -100,6 +100,7 @@ { refcount_inc(&group->refcnt); } +EXPORT_SYMBOL_GPL(fsnotify_get_group); /* * Drop a reference to a group. Free it if it's through. only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/proc/nommu.c +++ linux-azure-5.13-5.13.0/fs/proc/nommu.c @@ -40,7 +40,10 @@ file = region->vm_file; if (file) { - struct inode *inode = file_inode(region->vm_file); + struct inode *inode; + + file = vmr_pr_or_file(region); + inode = file_inode(file); dev = inode->i_sb->s_dev; ino = inode->i_ino; } only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/proc/task_nommu.c +++ linux-azure-5.13-5.13.0/fs/proc/task_nommu.c @@ -155,7 +155,10 @@ file = vma->vm_file; if (file) { - struct inode *inode = file_inode(vma->vm_file); + struct inode *inode; + + file = vma_pr_or_file(vma); + inode = file_inode(file); dev = inode->i_sb->s_dev; ino = inode->i_ino; pgoff = (loff_t)vma->vm_pgoff << PAGE_SHIFT; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/read_write.c +++ linux-azure-5.13-5.13.0/fs/read_write.c @@ -503,6 +503,7 @@ inc_syscr(current); return ret; } +EXPORT_SYMBOL_GPL(vfs_read); static ssize_t new_sync_write(struct file *filp, const char __user *buf, size_t len, loff_t *ppos) { @@ -613,6 +614,7 @@ file_end_write(file); return ret; } +EXPORT_SYMBOL_GPL(vfs_write); /* file_ppos returns &file->f_pos or NULL if file is stream */ static inline loff_t *file_ppos(struct file *file) only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/splice.c +++ linux-azure-5.13-5.13.0/fs/splice.c @@ -759,20 +759,21 @@ /* * Attempt to initiate a splice from pipe to file. */ -static long do_splice_from(struct pipe_inode_info *pipe, struct file *out, - loff_t *ppos, size_t len, unsigned int flags) +long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags) { if (unlikely(!out->f_op->splice_write)) return warn_unsupported(out, "write"); return out->f_op->splice_write(pipe, out, ppos, len, flags); } +EXPORT_SYMBOL_GPL(do_splice_from); /* * Attempt to initiate a splice from a file to a pipe. */ -static long do_splice_to(struct file *in, loff_t *ppos, - struct pipe_inode_info *pipe, size_t len, - unsigned int flags) +long do_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags) { unsigned int p_space; int ret; @@ -795,6 +796,7 @@ return warn_unsupported(in, "read"); return in->f_op->splice_read(in, ppos, pipe, len, flags); } +EXPORT_SYMBOL_GPL(do_splice_to); /** * splice_direct_to_actor - splices data directly between two non-pipes only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/fs/sync.c +++ linux-azure-5.13-5.13.0/fs/sync.c @@ -28,7 +28,7 @@ * wait == 1 case since in that case write_inode() functions do * sync_dirty_buffer() and thus effectively write one block at a time. */ -static int __sync_filesystem(struct super_block *sb, int wait) +int __sync_filesystem(struct super_block *sb, int wait) { if (wait) sync_inodes_sb(sb); @@ -39,6 +39,7 @@ sb->s_op->sync_fs(sb, wait); return __sync_blockdev(sb->s_bdev, wait); } +EXPORT_SYMBOL_GPL(__sync_filesystem); /* * Write out and wait upon all dirty data associated with this only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/include/linux/fs.h +++ linux-azure-5.13-5.13.0/include/linux/fs.h @@ -1335,6 +1335,7 @@ /* can be called from interrupts */ extern void kill_fasync(struct fasync_struct **, int, int); +extern int setfl(int fd, struct file *filp, unsigned long arg); extern void __f_setown(struct file *filp, struct pid *, enum pid_type, int force); extern int f_setown(struct file *filp, unsigned long arg, int force); extern void f_delown(struct file *filp); @@ -2043,6 +2044,7 @@ ssize_t (*sendpage) (struct file *, struct page *, int, size_t, loff_t *, int); unsigned long (*get_unmapped_area)(struct file *, unsigned long, unsigned long, unsigned long, unsigned long); int (*check_flags)(int); + int (*setfl)(struct file *, unsigned long); int (*flock) (struct file *, int, struct file_lock *); ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, unsigned int); ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, unsigned int); @@ -2176,6 +2178,10 @@ struct shrink_control *); long (*free_cached_objects)(struct super_block *, struct shrink_control *); +#if IS_ENABLED(CONFIG_BLK_DEV_LOOP) || IS_ENABLED(CONFIG_BLK_DEV_LOOP_MODULE) + /* and aufs */ + struct file *(*real_loop)(struct file *); +#endif }; /* @@ -2565,6 +2571,7 @@ extern void ihold(struct inode * inode); extern void iput(struct inode *); extern int generic_update_time(struct inode *, struct timespec64 *, int); +extern int update_time(struct inode *, struct timespec64 *, int); /* /sys/fs */ extern struct kobject *fs_kobj; @@ -2805,6 +2812,7 @@ } void emergency_thaw_all(void); +extern int __sync_filesystem(struct super_block *, int); extern int sync_filesystem(struct super_block *); extern const struct file_operations def_blk_fops; extern const struct file_operations def_chr_fops; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/include/linux/lockdep.h +++ linux-azure-5.13-5.13.0/include/linux/lockdep.h @@ -248,6 +248,8 @@ return lock->key == key; } +struct lock_class *lockdep_hlock_class(struct held_lock *hlock); + /* * Acquire a lock. * only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/include/linux/mm_types.h +++ linux-azure-5.13-5.13.0/include/linux/mm_types.h @@ -279,6 +279,7 @@ unsigned long vm_top; /* region allocated to here */ unsigned long vm_pgoff; /* the offset in vm_file corresponding to vm_start */ struct file *vm_file; /* the backing file or NULL */ + struct file *vm_prfile; /* the virtual backing file or NULL */ int vm_usage; /* region usage count (access under nommu_region_sem) */ bool vm_icache_flushed : 1; /* true if the icache has been flushed for @@ -358,6 +359,7 @@ unsigned long vm_pgoff; /* Offset (within vm_file) in PAGE_SIZE units */ struct file * vm_file; /* File we map to (can be NULL). */ + struct file *vm_prfile; /* shadow of vm_file */ void * vm_private_data; /* was vm_pte (shared mem) */ #ifdef CONFIG_SWAP only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/include/linux/mnt_namespace.h +++ linux-azure-5.13-5.13.0/include/linux/mnt_namespace.h @@ -7,12 +7,15 @@ struct fs_struct; struct user_namespace; struct ns_common; +struct vfsmount; extern struct mnt_namespace *copy_mnt_ns(unsigned long, struct mnt_namespace *, struct user_namespace *, struct fs_struct *); extern void put_mnt_ns(struct mnt_namespace *ns); extern struct ns_common *from_mnt_ns(struct mnt_namespace *); +extern int is_current_mnt_ns(struct vfsmount *mnt); + extern const struct file_operations proc_mounts_operations; extern const struct file_operations proc_mountinfo_operations; extern const struct file_operations proc_mountstats_operations; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/include/linux/slab.h +++ linux-azure-5.13-5.13.0/include/linux/slab.h @@ -346,8 +346,14 @@ * 1 = 65 .. 96 bytes * 2 = 129 .. 192 bytes * n = 2^(n-1)+1 .. 2^n + * + * Note: __kmalloc_index() is compile-time optimized, and not runtime optimized; + * typical usage is via kmalloc_index() and therefore evaluated at compile-time. + * Callers where !size_is_constant should only be test modules, where runtime + * overheads of __kmalloc_index() can be tolerated. Also see kmalloc_slab(). */ -static __always_inline unsigned int kmalloc_index(size_t size) +static __always_inline unsigned int __kmalloc_index(size_t size, + bool size_is_constant) { if (!size) return 0; @@ -382,12 +388,17 @@ if (size <= 8 * 1024 * 1024) return 23; if (size <= 16 * 1024 * 1024) return 24; if (size <= 32 * 1024 * 1024) return 25; - if (size <= 64 * 1024 * 1024) return 26; - BUG(); + + if ((IS_ENABLED(CONFIG_CC_IS_GCC) || CONFIG_CLANG_VERSION >= 110000) + && !IS_ENABLED(CONFIG_PROFILE_ALL_BRANCHES) && size_is_constant) + BUILD_BUG_ON_MSG(1, "unexpected size in kmalloc_index()"); + else + BUG(); /* Will never be reached. Needed because the compiler may complain */ return -1; } +#define kmalloc_index(s) __kmalloc_index(s, true) #endif /* !CONFIG_SLOB */ void *__kmalloc(size_t size, gfp_t flags) __assume_kmalloc_alignment __malloc; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/include/linux/splice.h +++ linux-azure-5.13-5.13.0/include/linux/splice.h @@ -93,4 +93,10 @@ extern const struct pipe_buf_operations page_cache_pipe_buf_ops; extern const struct pipe_buf_operations default_pipe_buf_ops; + +extern long do_splice_from(struct pipe_inode_info *pipe, struct file *out, + loff_t *ppos, size_t len, unsigned int flags); +extern long do_splice_to(struct file *in, loff_t *ppos, + struct pipe_inode_info *pipe, size_t len, + unsigned int flags); #endif only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/include/uapi/linux/aufs_type.h +++ linux-azure-5.13-5.13.0/include/uapi/linux/aufs_type.h @@ -0,0 +1,452 @@ +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ +/* + * Copyright (C) 2005-2020 Junjiro R. Okajima + * + * This program, aufs is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef __AUFS_TYPE_H__ +#define __AUFS_TYPE_H__ + +#define AUFS_NAME "aufs" + +#ifdef __KERNEL__ +/* + * define it before including all other headers. + * sched.h may use pr_* macros before defining "current", so define the + * no-current version first, and re-define later. + */ +#define pr_fmt(fmt) AUFS_NAME " %s:%d: " fmt, __func__, __LINE__ +#include +#undef pr_fmt +#define pr_fmt(fmt) \ + AUFS_NAME " %s:%d:%.*s[%d]: " fmt, __func__, __LINE__, \ + (int)sizeof(current->comm), current->comm, current->pid +#include +#else +#include +#include +#include +#endif /* __KERNEL__ */ + +#define AUFS_VERSION "5.x-rcN-20210809" + +/* todo? move this to linux-2.6.19/include/magic.h */ +#define AUFS_SUPER_MAGIC ('a' << 24 | 'u' << 16 | 'f' << 8 | 's') + +/* ---------------------------------------------------------------------- */ + +#ifdef __KERNEL__ +#ifdef CONFIG_AUFS_BRANCH_MAX_127 +typedef int8_t aufs_bindex_t; +#define AUFS_BRANCH_MAX 127 +#else +typedef int16_t aufs_bindex_t; +#ifdef CONFIG_AUFS_BRANCH_MAX_511 +#define AUFS_BRANCH_MAX 511 +#elif defined(CONFIG_AUFS_BRANCH_MAX_1023) +#define AUFS_BRANCH_MAX 1023 +#elif defined(CONFIG_AUFS_BRANCH_MAX_32767) +#define AUFS_BRANCH_MAX 32767 +#endif +#endif + +#ifndef AUFS_BRANCH_MAX +#error unknown CONFIG_AUFS_BRANCH_MAX value +#endif +#endif /* __KERNEL__ */ + +/* ---------------------------------------------------------------------- */ + +#define AUFS_FSTYPE AUFS_NAME + +#define AUFS_ROOT_INO 2 +#define AUFS_FIRST_INO 11 + +#define AUFS_WH_PFX ".wh." +#define AUFS_WH_PFX_LEN ((int)sizeof(AUFS_WH_PFX) - 1) +#define AUFS_WH_TMP_LEN 4 +/* a limit for rmdir/rename a dir and copyup */ +#define AUFS_MAX_NAMELEN (NAME_MAX \ + - AUFS_WH_PFX_LEN * 2 /* doubly whiteouted */\ + - 1 /* dot */\ + - AUFS_WH_TMP_LEN) /* hex */ +#define AUFS_XINO_FNAME "." AUFS_NAME ".xino" +#define AUFS_XINO_DEFPATH "/tmp/" AUFS_XINO_FNAME +#define AUFS_XINO_DEF_SEC 30 /* seconds */ +#define AUFS_XINO_DEF_TRUNC 45 /* percentage */ +#define AUFS_DIRWH_DEF 3 +#define AUFS_RDCACHE_DEF 10 /* seconds */ +#define AUFS_RDCACHE_MAX 3600 /* seconds */ +#define AUFS_RDBLK_DEF 512 /* bytes */ +#define AUFS_RDHASH_DEF 32 +#define AUFS_WKQ_NAME AUFS_NAME "d" +#define AUFS_MFS_DEF_SEC 30 /* seconds */ +#define AUFS_MFS_MAX_SEC 3600 /* seconds */ +#define AUFS_FHSM_CACHE_DEF_SEC 30 /* seconds */ +#define AUFS_PLINK_WARN 50 /* number of plinks in a single bucket */ + +/* pseudo-link maintenace under /proc */ +#define AUFS_PLINK_MAINT_NAME "plink_maint" +#define AUFS_PLINK_MAINT_DIR "fs/" AUFS_NAME +#define AUFS_PLINK_MAINT_PATH AUFS_PLINK_MAINT_DIR "/" AUFS_PLINK_MAINT_NAME + +/* dirren, renamed dir */ +#define AUFS_DR_INFO_PFX AUFS_WH_PFX ".dr." +#define AUFS_DR_BRHINO_NAME AUFS_WH_PFX "hino" +/* whiteouted doubly */ +#define AUFS_WH_DR_INFO_PFX AUFS_WH_PFX AUFS_DR_INFO_PFX +#define AUFS_WH_DR_BRHINO AUFS_WH_PFX AUFS_DR_BRHINO_NAME + +#define AUFS_DIROPQ_NAME AUFS_WH_PFX ".opq" /* whiteouted doubly */ +#define AUFS_WH_DIROPQ AUFS_WH_PFX AUFS_DIROPQ_NAME + +#define AUFS_BASE_NAME AUFS_WH_PFX AUFS_NAME +#define AUFS_PLINKDIR_NAME AUFS_WH_PFX "plnk" +#define AUFS_ORPHDIR_NAME AUFS_WH_PFX "orph" + +/* doubly whiteouted */ +#define AUFS_WH_BASE AUFS_WH_PFX AUFS_BASE_NAME +#define AUFS_WH_PLINKDIR AUFS_WH_PFX AUFS_PLINKDIR_NAME +#define AUFS_WH_ORPHDIR AUFS_WH_PFX AUFS_ORPHDIR_NAME + +/* branch permissions and attributes */ +#define AUFS_BRPERM_RW "rw" +#define AUFS_BRPERM_RO "ro" +#define AUFS_BRPERM_RR "rr" +#define AUFS_BRATTR_COO_REG "coo_reg" +#define AUFS_BRATTR_COO_ALL "coo_all" +#define AUFS_BRATTR_FHSM "fhsm" +#define AUFS_BRATTR_UNPIN "unpin" +#define AUFS_BRATTR_ICEX "icex" +#define AUFS_BRATTR_ICEX_SEC "icexsec" +#define AUFS_BRATTR_ICEX_SYS "icexsys" +#define AUFS_BRATTR_ICEX_TR "icextr" +#define AUFS_BRATTR_ICEX_USR "icexusr" +#define AUFS_BRATTR_ICEX_OTH "icexoth" +#define AUFS_BRRATTR_WH "wh" +#define AUFS_BRWATTR_NLWH "nolwh" +#define AUFS_BRWATTR_MOO "moo" + +#define AuBrPerm_RW 1 /* writable, hardlinkable wh */ +#define AuBrPerm_RO (1 << 1) /* readonly */ +#define AuBrPerm_RR (1 << 2) /* natively readonly */ +#define AuBrPerm_Mask (AuBrPerm_RW | AuBrPerm_RO | AuBrPerm_RR) + +#define AuBrAttr_COO_REG (1 << 3) /* copy-up on open */ +#define AuBrAttr_COO_ALL (1 << 4) +#define AuBrAttr_COO_Mask (AuBrAttr_COO_REG | AuBrAttr_COO_ALL) + +#define AuBrAttr_FHSM (1 << 5) /* file-based hsm */ +#define AuBrAttr_UNPIN (1 << 6) /* rename-able top dir of + branch. meaningless since + linux-3.18-rc1 */ + +/* ignore error in copying XATTR */ +#define AuBrAttr_ICEX_SEC (1 << 7) +#define AuBrAttr_ICEX_SYS (1 << 8) +#define AuBrAttr_ICEX_TR (1 << 9) +#define AuBrAttr_ICEX_USR (1 << 10) +#define AuBrAttr_ICEX_OTH (1 << 11) +#define AuBrAttr_ICEX (AuBrAttr_ICEX_SEC \ + | AuBrAttr_ICEX_SYS \ + | AuBrAttr_ICEX_TR \ + | AuBrAttr_ICEX_USR \ + | AuBrAttr_ICEX_OTH) + +#define AuBrRAttr_WH (1 << 12) /* whiteout-able */ +#define AuBrRAttr_Mask AuBrRAttr_WH + +#define AuBrWAttr_NoLinkWH (1 << 13) /* un-hardlinkable whiteouts */ +#define AuBrWAttr_MOO (1 << 14) /* move-up on open */ +#define AuBrWAttr_Mask (AuBrWAttr_NoLinkWH | AuBrWAttr_MOO) + +#define AuBrAttr_CMOO_Mask (AuBrAttr_COO_Mask | AuBrWAttr_MOO) + +/* #warning test userspace */ +#ifdef __KERNEL__ +#ifndef CONFIG_AUFS_FHSM +#undef AuBrAttr_FHSM +#define AuBrAttr_FHSM 0 +#endif +#ifndef CONFIG_AUFS_XATTR +#undef AuBrAttr_ICEX +#define AuBrAttr_ICEX 0 +#undef AuBrAttr_ICEX_SEC +#define AuBrAttr_ICEX_SEC 0 +#undef AuBrAttr_ICEX_SYS +#define AuBrAttr_ICEX_SYS 0 +#undef AuBrAttr_ICEX_TR +#define AuBrAttr_ICEX_TR 0 +#undef AuBrAttr_ICEX_USR +#define AuBrAttr_ICEX_USR 0 +#undef AuBrAttr_ICEX_OTH +#define AuBrAttr_ICEX_OTH 0 +#endif +#endif + +/* the longest combination */ +/* AUFS_BRATTR_ICEX and AUFS_BRATTR_ICEX_TR don't affect here */ +#define AuBrPermStrSz sizeof(AUFS_BRPERM_RW \ + "+" AUFS_BRATTR_COO_REG \ + "+" AUFS_BRATTR_FHSM \ + "+" AUFS_BRATTR_UNPIN \ + "+" AUFS_BRATTR_ICEX_SEC \ + "+" AUFS_BRATTR_ICEX_SYS \ + "+" AUFS_BRATTR_ICEX_USR \ + "+" AUFS_BRATTR_ICEX_OTH \ + "+" AUFS_BRWATTR_NLWH) + +typedef struct { + char a[AuBrPermStrSz]; +} au_br_perm_str_t; + +static inline int au_br_writable(int brperm) +{ + return brperm & AuBrPerm_RW; +} + +static inline int au_br_whable(int brperm) +{ + return brperm & (AuBrPerm_RW | AuBrRAttr_WH); +} + +static inline int au_br_wh_linkable(int brperm) +{ + return !(brperm & AuBrWAttr_NoLinkWH); +} + +static inline int au_br_cmoo(int brperm) +{ + return brperm & AuBrAttr_CMOO_Mask; +} + +static inline int au_br_fhsm(int brperm) +{ + return brperm & AuBrAttr_FHSM; +} + +/* ---------------------------------------------------------------------- */ + +/* ioctl */ +enum { + /* readdir in userspace */ + AuCtl_RDU, + AuCtl_RDU_INO, + + AuCtl_WBR_FD, /* pathconf wrapper */ + AuCtl_IBUSY, /* busy inode */ + AuCtl_MVDOWN, /* move-down */ + AuCtl_BR, /* info about branches */ + AuCtl_FHSM_FD /* connection for fhsm */ +}; + +/* borrowed from linux/include/linux/kernel.h */ +#ifndef ALIGN +#ifdef _GNU_SOURCE +#define ALIGN(x, a) __ALIGN_MASK(x, (typeof(x))(a)-1) +#else +#define ALIGN(x, a) (((x) + (a) - 1) & ~((a) - 1)) +#endif +#define __ALIGN_MASK(x, mask) (((x)+(mask))&~(mask)) +#endif + +/* borrowed from linux/include/linux/compiler-gcc3.h */ +#ifndef __aligned +#define __aligned(x) __attribute__((aligned(x))) +#endif + +#ifdef __KERNEL__ +#ifndef __packed +#define __packed __attribute__((packed)) +#endif +#endif + +struct au_rdu_cookie { + uint64_t h_pos; + int16_t bindex; + uint8_t flags; + uint8_t pad; + uint32_t generation; +} __aligned(8); + +struct au_rdu_ent { + uint64_t ino; + int16_t bindex; + uint8_t type; + uint8_t nlen; + uint8_t wh; + char name[]; +} __aligned(8); + +static inline int au_rdu_len(int nlen) +{ + /* include the terminating NULL */ + return ALIGN(sizeof(struct au_rdu_ent) + nlen + 1, + sizeof(uint64_t)); +} + +union au_rdu_ent_ul { + struct au_rdu_ent __user *e; + uint64_t ul; +}; + +enum { + AufsCtlRduV_SZ, + AufsCtlRduV_End +}; + +struct aufs_rdu { + /* input */ + union { + uint64_t sz; /* AuCtl_RDU */ + uint64_t nent; /* AuCtl_RDU_INO */ + }; + union au_rdu_ent_ul ent; + uint16_t verify[AufsCtlRduV_End]; + + /* input/output */ + uint32_t blk; + + /* output */ + union au_rdu_ent_ul tail; + /* number of entries which were added in a single call */ + uint64_t rent; + uint8_t full; + uint8_t shwh; + + struct au_rdu_cookie cookie; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +/* dirren. the branch is identified by the filename who contains this */ +struct au_drinfo { + uint64_t ino; + union { + uint8_t oldnamelen; + uint64_t _padding; + }; + uint8_t oldname[]; +} __aligned(8); + +struct au_drinfo_fdata { + uint32_t magic; + struct au_drinfo drinfo; +} __aligned(8); + +#define AUFS_DRINFO_MAGIC_V1 ('a' << 24 | 'd' << 16 | 'r' << 8 | 0x01) +/* future */ +#define AUFS_DRINFO_MAGIC_V2 ('a' << 24 | 'd' << 16 | 'r' << 8 | 0x02) + +/* ---------------------------------------------------------------------- */ + +struct aufs_wbr_fd { + uint32_t oflags; + int16_t brid; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +struct aufs_ibusy { + uint64_t ino, h_ino; + int16_t bindex; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +/* error code for move-down */ +/* the actual message strings are implemented in aufs-util.git */ +enum { + EAU_MVDOWN_OPAQUE = 1, + EAU_MVDOWN_WHITEOUT, + EAU_MVDOWN_UPPER, + EAU_MVDOWN_BOTTOM, + EAU_MVDOWN_NOUPPER, + EAU_MVDOWN_NOLOWERBR, + EAU_Last +}; + +/* flags for move-down */ +#define AUFS_MVDOWN_DMSG 1 +#define AUFS_MVDOWN_OWLOWER (1 << 1) /* overwrite lower */ +#define AUFS_MVDOWN_KUPPER (1 << 2) /* keep upper */ +#define AUFS_MVDOWN_ROLOWER (1 << 3) /* do even if lower is RO */ +#define AUFS_MVDOWN_ROLOWER_R (1 << 4) /* did on lower RO */ +#define AUFS_MVDOWN_ROUPPER (1 << 5) /* do even if upper is RO */ +#define AUFS_MVDOWN_ROUPPER_R (1 << 6) /* did on upper RO */ +#define AUFS_MVDOWN_BRID_UPPER (1 << 7) /* upper brid */ +#define AUFS_MVDOWN_BRID_LOWER (1 << 8) /* lower brid */ +#define AUFS_MVDOWN_FHSM_LOWER (1 << 9) /* find fhsm attr for lower */ +#define AUFS_MVDOWN_STFS (1 << 10) /* req. stfs */ +#define AUFS_MVDOWN_STFS_FAILED (1 << 11) /* output: stfs is unusable */ +#define AUFS_MVDOWN_BOTTOM (1 << 12) /* output: no more lowers */ + +/* index for move-down */ +enum { + AUFS_MVDOWN_UPPER, + AUFS_MVDOWN_LOWER, + AUFS_MVDOWN_NARRAY +}; + +/* + * additional info of move-down + * number of free blocks and inodes. + * subset of struct kstatfs, but smaller and always 64bit. + */ +struct aufs_stfs { + uint64_t f_blocks; + uint64_t f_bavail; + uint64_t f_files; + uint64_t f_ffree; +}; + +struct aufs_stbr { + int16_t brid; /* optional input */ + int16_t bindex; /* output */ + struct aufs_stfs stfs; /* output when AUFS_MVDOWN_STFS set */ +} __aligned(8); + +struct aufs_mvdown { + uint32_t flags; /* input/output */ + struct aufs_stbr stbr[AUFS_MVDOWN_NARRAY]; /* input/output */ + int8_t au_errno; /* output */ +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +union aufs_brinfo { + /* PATH_MAX may differ between kernel-space and user-space */ + char _spacer[4096]; + struct { + int16_t id; + int perm; + char path[]; + }; +} __aligned(8); + +/* ---------------------------------------------------------------------- */ + +#define AuCtlType 'A' +#define AUFS_CTL_RDU _IOWR(AuCtlType, AuCtl_RDU, struct aufs_rdu) +#define AUFS_CTL_RDU_INO _IOWR(AuCtlType, AuCtl_RDU_INO, struct aufs_rdu) +#define AUFS_CTL_WBR_FD _IOW(AuCtlType, AuCtl_WBR_FD, \ + struct aufs_wbr_fd) +#define AUFS_CTL_IBUSY _IOWR(AuCtlType, AuCtl_IBUSY, struct aufs_ibusy) +#define AUFS_CTL_MVDOWN _IOWR(AuCtlType, AuCtl_MVDOWN, \ + struct aufs_mvdown) +#define AUFS_CTL_BRINFO _IOW(AuCtlType, AuCtl_BR, union aufs_brinfo) +#define AUFS_CTL_FHSM_FD _IOW(AuCtlType, AuCtl_FHSM_FD, int) + +#endif /* __AUFS_TYPE_H__ */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/mm/Makefile +++ linux-azure-5.13-5.13.0/mm/Makefile @@ -52,7 +52,7 @@ mm_init.o percpu.o slab_common.o \ compaction.o vmacache.o \ interval_tree.o list_lru.o workingset.o \ - debug.o gup.o mmap_lock.o $(mmu-y) + prfile.o debug.o gup.o mmap_lock.o $(mmu-y) # Give 'page_alloc' its own module-parameter namespace page-alloc-y := page_alloc.o only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/mm/filemap.c +++ linux-azure-5.13-5.13.0/mm/filemap.c @@ -3240,7 +3240,7 @@ vm_fault_t ret = VM_FAULT_LOCKED; sb_start_pagefault(mapping->host->i_sb); - file_update_time(vmf->vma->vm_file); + vma_file_update_time(vmf->vma); lock_page(page); if (page->mapping != mapping) { unlock_page(page); only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/mm/kfence/kfence_test.c +++ linux-azure-5.13-5.13.0/mm/kfence/kfence_test.c @@ -197,7 +197,7 @@ static inline size_t kmalloc_cache_alignment(size_t size) { - return kmalloc_caches[kmalloc_type(GFP_KERNEL)][kmalloc_index(size)]->align; + return kmalloc_caches[kmalloc_type(GFP_KERNEL)][__kmalloc_index(size, false)]->align; } /* Must always inline to match stack trace against caller. */ @@ -267,7 +267,8 @@ if (is_kfence_address(alloc)) { struct page *page = virt_to_head_page(alloc); - struct kmem_cache *s = test_cache ?: kmalloc_caches[kmalloc_type(GFP_KERNEL)][kmalloc_index(size)]; + struct kmem_cache *s = test_cache ?: + kmalloc_caches[kmalloc_type(GFP_KERNEL)][__kmalloc_index(size, false)]; /* * Verify that various helpers return the right values only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/mm/mmap.c +++ linux-azure-5.13-5.13.0/mm/mmap.c @@ -185,7 +185,7 @@ if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) - fput(vma->vm_file); + vma_fput(vma); mpol_put(vma_policy(vma)); vm_area_free(vma); return next; @@ -955,7 +955,7 @@ if (remove_next) { if (file) { uprobe_munmap(next, next->vm_start, next->vm_end); - fput(file); + vma_fput(vma); } if (next->anon_vma) anon_vma_merge(vma, next); @@ -1901,7 +1901,7 @@ return addr; unmap_and_free_vma: - fput(vma->vm_file); + vma_fput(vma); vma->vm_file = NULL; /* Undo any partial mapping done by a device driver. */ @@ -2761,7 +2761,7 @@ goto out_free_mpol; if (new->vm_file) - get_file(new->vm_file); + vma_get_file(new); if (new->vm_ops && new->vm_ops->open) new->vm_ops->open(new); @@ -2780,7 +2780,7 @@ if (new->vm_ops && new->vm_ops->close) new->vm_ops->close(new); if (new->vm_file) - fput(new->vm_file); + vma_fput(new); unlink_anon_vmas(new); out_free_mpol: mpol_put(vma_policy(new)); @@ -2973,7 +2973,7 @@ struct vm_area_struct *vma; unsigned long populate = 0; unsigned long ret = -EINVAL; - struct file *file; + struct file *file, *prfile; pr_warn_once("%s (%d) uses deprecated remap_file_pages() syscall. See Documentation/vm/remap_file_pages.rst.\n", current->comm, current->pid); @@ -3032,10 +3032,27 @@ if (vma->vm_flags & VM_LOCKED) flags |= MAP_LOCKED; - file = get_file(vma->vm_file); + vma_get_file(vma); + file = vma->vm_file; + prfile = vma->vm_prfile; ret = do_mmap(vma->vm_file, start, size, prot, flags, pgoff, &populate, NULL); + if (!IS_ERR_VALUE(ret) && file && prfile) { + struct vm_area_struct *new_vma; + + new_vma = find_vma(mm, ret); + if (!new_vma->vm_prfile) + new_vma->vm_prfile = prfile; + if (new_vma != vma) + get_file(prfile); + } + /* + * two fput()s instead of vma_fput(vma), + * coz vma may not be available anymore. + */ fput(file); + if (prfile) + fput(prfile); out: mmap_write_unlock(mm); if (populate) @@ -3322,7 +3339,7 @@ if (anon_vma_clone(new_vma, vma)) goto out_free_mempol; if (new_vma->vm_file) - get_file(new_vma->vm_file); + vma_get_file(new_vma); if (new_vma->vm_ops && new_vma->vm_ops->open) new_vma->vm_ops->open(new_vma); vma_link(mm, new_vma, prev, rb_link, rb_parent); only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/mm/nommu.c +++ linux-azure-5.13-5.13.0/mm/nommu.c @@ -523,7 +523,7 @@ up_write(&nommu_region_sem); if (region->vm_file) - fput(region->vm_file); + vmr_fput(region); /* IO memory and memory shared directly out of the pagecache * from ramfs/tmpfs mustn't be released here */ @@ -655,7 +655,7 @@ if (vma->vm_ops && vma->vm_ops->close) vma->vm_ops->close(vma); if (vma->vm_file) - fput(vma->vm_file); + vma_fput(vma); put_nommu_region(vma->vm_region); vm_area_free(vma); } @@ -1178,7 +1178,7 @@ goto error_just_free; } } - fput(region->vm_file); + vmr_fput(region); kmem_cache_free(vm_region_jar, region); region = pregion; result = start; @@ -1255,10 +1255,10 @@ up_write(&nommu_region_sem); error: if (region->vm_file) - fput(region->vm_file); + vmr_fput(region); kmem_cache_free(vm_region_jar, region); if (vma->vm_file) - fput(vma->vm_file); + vma_fput(vma); vm_area_free(vma); return ret; only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/mm/prfile.c +++ linux-azure-5.13-5.13.0/mm/prfile.c @@ -0,0 +1,86 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * Mainly for aufs which mmap(2) different file and wants to print different + * path in /proc/PID/maps. + * Call these functions via macros defined in linux/mm.h. + * + * See Documentation/filesystems/aufs/design/06mmap.txt + * + * Copyright (c) 2014-2020 Junjro R. Okajima + * Copyright (c) 2014 Ian Campbell + */ + +#include +#include +#include + +/* #define PRFILE_TRACE */ +static inline void prfile_trace(struct file *f, struct file *pr, + const char func[], int line, const char func2[]) +{ +#ifdef PRFILE_TRACE + if (pr) + pr_info("%s:%d: %s, %pD2\n", func, line, func2, f); +#endif +} + +void vma_do_file_update_time(struct vm_area_struct *vma, const char func[], + int line) +{ + struct file *f = vma->vm_file, *pr = vma->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + file_update_time(f); + if (f && pr) + file_update_time(pr); +} + +struct file *vma_do_pr_or_file(struct vm_area_struct *vma, const char func[], + int line) +{ + struct file *f = vma->vm_file, *pr = vma->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + return (f && pr) ? pr : f; +} + +void vma_do_get_file(struct vm_area_struct *vma, const char func[], int line) +{ + struct file *f = vma->vm_file, *pr = vma->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + get_file(f); + if (f && pr) + get_file(pr); +} + +void vma_do_fput(struct vm_area_struct *vma, const char func[], int line) +{ + struct file *f = vma->vm_file, *pr = vma->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + fput(f); + if (f && pr) + fput(pr); +} + +#ifndef CONFIG_MMU +struct file *vmr_do_pr_or_file(struct vm_region *region, const char func[], + int line) +{ + struct file *f = region->vm_file, *pr = region->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + return (f && pr) ? pr : f; +} + +void vmr_do_fput(struct vm_region *region, const char func[], int line) +{ + struct file *f = region->vm_file, *pr = region->vm_prfile; + + prfile_trace(f, pr, func, line, __func__); + fput(f); + if (f && pr) + fput(pr); +} +#endif /* !CONFIG_MMU */ only in patch2: unchanged: --- linux-azure-5.13-5.13.0.orig/mm/slab_common.c +++ linux-azure-5.13-5.13.0/mm/slab_common.c @@ -754,8 +754,8 @@ /* * kmalloc_info[] is to make slub_debug=,kmalloc-xx option work at boot time. - * kmalloc_index() supports up to 2^26=64MB, so the final entry of the table is - * kmalloc-67108864. + * kmalloc_index() supports up to 2^25=32MB, so the final entry of the table is + * kmalloc-32M. */ const struct kmalloc_info_struct kmalloc_info[] __initconst = { INIT_KMALLOC_INFO(0, 0), @@ -783,8 +783,7 @@ INIT_KMALLOC_INFO(4194304, 4M), INIT_KMALLOC_INFO(8388608, 8M), INIT_KMALLOC_INFO(16777216, 16M), - INIT_KMALLOC_INFO(33554432, 32M), - INIT_KMALLOC_INFO(67108864, 64M) + INIT_KMALLOC_INFO(33554432, 32M) }; /*