mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 05:39:54 -04:00
878,652 commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
e2bb35c426 |
FROMGIT: scsi: ufs: Enable block layer runtime PM for well-known logical units
Block layer RPM is enabled for the genernal UFS SCSI devices when they are probed by their driver. However block layer RPM is not enabled for UFS well-known SCSI devices. As UFS SCSI devices have their corresponding BSG char devices, accessing a BSG char device via IOCTL may send requests to its corresponding SCSI device through its request queue. If BSG IOCTL sends a request to a well-known SCSI device when HBA is not runtime active, due to block layer RPM not being enabled for the well-known SCSI devices, the HBA, which is at the top of a SCSI device's parent chain, will not be resumed. This change enables block layer RPM for the well-known SCSI devices so that block layer can handle RPM for the well-known SCSI devices just like for the general SCSI devices. Reviewed-by: Avri Altman <avri.altman@wdc.com> Reviewed-by: Stanley Chu <stanley.chu@mediatek.com> Signed-off-by: Can Guo <cang@codeaurora.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Bug: 152930830 Change-Id: Id5cc396a1d072eff5d55080f097c2f8d3c60b58f (cherry picked from commit fb276f770118ac1464316231868e711e04218d53 https://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git 5.7/scsi-queue) Signed-off-by: Can Guo <cang@codeaurora.org> |
||
|
|
79aec256f3 |
UPSTREAM: scsi: ufs: Fix possible unclocked access to auto hibern8 timer register
Before access auto hibner8 timer register, make sure power and clock are properly configured to avoid unclocked register access. Link: https://lore.kernel.org/r/1583398391-14273-1-git-send-email-cang@codeaurora.org Fixes: ba7af5ec5126 ("scsi: ufs: export ufshcd_auto_hibern8_update for vendor usage") Reviewed-by: Stanley Chu <stanley.chu@mediatek.com> Signed-off-by: Can Guo <cang@codeaurora.org> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Bug: 152930830 Change-Id: Ief402e50849b54807a02b3d06be6f310bc06b845 (cherry picked from commit be7594a424b4de7473b3d726635c3bf6aa19a86e) Signed-off-by: Can Guo <cang@codeaurora.org> |
||
|
|
9bb4e91b94 |
ANDROID: db845c build: Use merge_configs
Previously the db845c build was cat'ng the db845c_gki.fragment with the gki_defconfig. The correct way to merge fragments is to use the merge_configs script. Bug: 152231482 Test: Treehugger Signed-off-by: Todd Kjos <tkjos@google.com> Change-Id: I32d5d6576bb4bdc115b32e7e7ef3ef1e9daa2323 |
||
|
|
8e8c63d051 |
ANDROID: ABI/Whitelist: update whitelist of unisoc
Update whitelist for the symbols used by the unisoc device and updates the ABI representation accordingly. Leaf changes summary: 10 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 10 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 10 Added functions: [A] 'function pwm_device* devm_pwm_get(device*, const char*)' [A] 'function void drm_atomic_helper_commit_tail_rpm(drm_atomic_state*)' [A] 'function bool gpiochip_line_is_irq(gpio_chip*, unsigned int)' [A] 'function int gpiod_get_direction(gpio_desc*)' [A] 'function gpio_chip* gpiod_to_chip(const gpio_desc*)' [A] 'function void pwm_free(pwm_device*)' [A] 'function pwm_device* pwm_request(int, const char*)' [A] 'function void usb_phy_get_charger_current(usb_phy*, unsigned int*, unsigned int*)' [A] 'function void usb_phy_set_charger_current(usb_phy*, unsigned int)' [A] 'function void usb_phy_set_charger_state(usb_phy*, usb_charger_state)' Bug: 147075469 Change-Id: I04b243e226f62a621746cd09b8f7cd37b2ab85f5 Signed-off-by: Liangcai Fan <liangcai.fan@unisoc.com> |
||
|
|
78915e920b |
ANDROID: GKI: defconfig: enable CONFIG_THERMAL_GOV_POWER_ALLOCATOR
Enable "power_allocator" thermal governor. Bug: 152588496 Signed-off-by: Todd Kjos <tkjos@google.com> Change-Id: I463528236bdfd640cdaefbac7dee932dc28d7005 |
||
|
|
e8bbff4ed1 |
UPSTREAM: usb: raw_gadget: fix compilation warnings in uapi headers
(Upstream commit 956ae8df7fed0a2acc7ae934f24493eaeb031f62.) Mark usb_raw_io_flags_valid() and usb_raw_io_flags_zero() as inline to fix the following warnings: ./usr/include/linux/usb/raw_gadget.h:69:12: warning: unused function 'usb_raw_io_flags_valid' [-Wunused-function] ./usr/include/linux/usb/raw_gadget.h:74:12: warning: unused function 'usb_raw_io_flags_zero' [-Wunused-function] Reported-by: kernelci.org bot <bot@kernelci.org> Reported-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Link: https://lore.kernel.org/r/6206b80b3810f95bfe1d452de45596609a07b6ea.1584456779.git.andreyknvl@google.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Bug: 147413187 Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Change-Id: Ief46cc5076f202fe058508ee11839708395842dd |
||
|
|
638d17b3fa |
BACKPORT: usb: gadget: add raw-gadget interface
(Upstream commit f2c2e717642c66f7fe7e5dd69b2e8ff5849f4d10.) USB Raw Gadget is a kernel module that provides a userspace interface for the USB Gadget subsystem. Essentially it allows to emulate USB devices from userspace. Enabled with CONFIG_USB_RAW_GADGET. Raw Gadget is currently a strictly debugging feature and shouldn't be used in production. Raw Gadget is similar to GadgetFS, but provides a more low-level and direct access to the USB Gadget layer for the userspace. The key differences are: 1. Every USB request is passed to the userspace to get a response, while GadgetFS responds to some USB requests internally based on the provided descriptors. However note, that the UDC driver might respond to some requests on its own and never forward them to the Gadget layer. 2. GadgetFS performs some sanity checks on the provided USB descriptors, while Raw Gadget allows you to provide arbitrary data as responses to USB requests. 3. Raw Gadget provides a way to select a UDC device/driver to bind to, while GadgetFS currently binds to the first available UDC. 4. Raw Gadget uses predictable endpoint names (handles) across different UDCs (as long as UDCs have enough endpoints of each required transfer type). 5. Raw Gadget has ioctl-based interface instead of a filesystem-based one. Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Signed-off-by: Felipe Balbi <balbi@kernel.org> Bug: 147413187 Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Change-Id: Ib48759bda0651e685160c532bed55b7335a39034 |
||
|
|
93a99b66ed |
UPSTREAM: usb: gadget: move choice ... endchoice to legacy/Kconfig
(Upstream commit 10e5e6c2496354f0afec82dba459339c421badbf. drivers/usb/gadget/Kconfig includes drivers/usb/gadget/legacy/Kconfig inside the 'choice' block. The current Kconfig allows this, but I'd like to discourage this usage. People tend to mess up the structure without noticing that entire drivers/usb/gadget/legacy/Kconfig is placed in the choice context. In fact, legacy/Kconfig mixes up bool and tristate in the choice, and creates nested choice, etc. This commit does not change the behavior, but it will help people notice how badly this Kconfig file is written. Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Link: https://lore.kernel.org/r/20191211073857.16780-1-masahiroy@kernel.org Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Bug: 147413187 Signed-off-by: Andrey Konovalov <andreyknvl@google.com> Change-Id: Ib2b96fd9c2acb681b2186eb89ec1f0f2b18d0e89 |
||
|
|
2379085a07 |
ANDROID: GKI: Added goldfish whitelist to aarch64 abi
Bug: 151893768 Test: Treehugger Signed-off-by: Ram Muthiah <rammuthiah@google.com> Change-Id: Ifb50d7a02c8beb3ed6d7fddd2287154969cb2282 |
||
|
|
0e36cb2865 |
ANDROID: GKI: update cf whitelist + gki whitelist
Bug: 147894960 Test: Treehugger Signed-off-by: Ram Muthiah <rammuthiah@google.com> Change-Id: I1d06a4d72bcef9a335d9120f936d475aa6a377c0 |
||
|
|
6db48906aa |
UPSTREAM: ipv6: ndisc: add support for 'PREF64' dns64 prefix identifier
This is trivial since we already have support for the entirely identical (from the kernel's point of view) RDNSS, DNSSL, etc. that also contain opaque data that needs to be passed down to userspace for further processing. As specified in draft-ietf-6man-ra-pref64-09 (while it is still a draft, it is purely waiting on the RFC Editor for cleanups and publishing): PREF64 option contains lifetime and a (up to) 96-bit IPv6 prefix. The 8-bit identifier of the option type as assigned by the IANA is 38. Since we lack DNS64/NAT64/CLAT support in kernel at the moment, thus this option should also be passed on to userland. See: https://tools.ietf.org/html/draft-ietf-6man-ra-pref64-09 https://www.iana.org/assignments/icmpv6-parameters/icmpv6-parameters.xhtml#icmpv6-parameters-5 Cc: Erik Kline <ek@google.com> Cc: Jen Linkova <furry@google.com> Cc: Lorenzo Colitti <lorenzo@google.com> Cc: Michael Haro <mharo@google.com> Signed-off-by: Maciej Żenczykowski <maze@google.com> Acked-By: Lorenzo Colitti <lorenzo@google.com> Signed-off-by: David S. Miller <davem@davemloft.net> (cherry picked from commit c24a77edc9a7ac9b5fea75407f197fe1469262f4) Bug: 150648313 Change-Id: I02bff2103194a8171f907e82f811d7ab66962138 |
||
|
|
9c1fc2d22c |
ANDROID: ABI: Add initial ABI whitelist for QCOM
Add initial ABI whitelist file for Qualcomm's family of SoCs. Update the ABI snapshot (that added 569 functions) as well as build.config.gki.aarch64 accordingly. 569 Added functions: [A] 'function int ___pskb_trim(sk_buff*, unsigned int)' [A] 'function void __bitmap_clear(unsigned long int*, unsigned int, int)' [A] 'function void __bitmap_set(unsigned long int*, unsigned int, int)' [A] 'function int __bitmap_subset(const unsigned long int*, const unsigned long int*, unsigned int)' [A] 'function clk_hw* __clk_get_hw(clk*)' [A] 'function void __drm_atomic_helper_connector_destroy_state(drm_connector_state*)' [A] 'function void __drm_atomic_helper_connector_duplicate_state(drm_connector*, drm_connector_state*)' [A] 'function void __drm_atomic_helper_connector_reset(drm_connector*, drm_connector_state*)' [A] 'function void __hvc_resize(hvc_struct*, winsize)' [A] 'function void __iowrite32_copy(void*, void*, size_t)' [A] 'function int __ipv6_addr_type(const in6_addr*)' [A] 'function int __media_device_register(media_device*, module*)' [A] 'function void __scsi_print_sense(const scsi_device*, const char*, const unsigned char*, int)' [A] 'function bool __sg_page_iter_next(sg_page_iter*)' [A] 'function void __sg_page_iter_start(sg_page_iter*, scatterlist*, unsigned int, unsigned long int)' [A] 'function void __skb_get_hash(sk_buff*)' [A] 'function sk_buff* __skb_gso_segment(sk_buff*, netdev_features_t, bool)' [A] 'function void __sock_recv_ts_and_drops(msghdr*, sock*, sk_buff*)' [A] 'function void __sock_tx_timestamp(__u16, __u8*)' [A] 'function ssize_t __splice_from_pipe(pipe_inode_info*, splice_desc*, splice_actor*)' [A] 'function unsigned int __sw_hweight8(unsigned int)' [A] 'function pid_t __task_pid_nr_ns(task_struct*, pid_type, pid_namespace*)' [A] 'function void __tasklet_hi_schedule(tasklet_struct*)' [A] 'function int __uio_register_device(module*, device*, uio_info*)' [A] 'function int __v4l2_ctrl_modify_range(v4l2_ctrl*, s64, s64, u64, s64)' [A] 'function int __v4l2_ctrl_s_ctrl(v4l2_ctrl*, s32)' [A] 'function int __video_register_device(video_device*, vfl_devnode_type, int, int, module*)' [A] 'function void __wake_up_locked(wait_queue_head*, unsigned int, int)' [A] 'function void _raw_read_lock_irq(rwlock_t*)' [A] 'function unsigned long int _raw_read_lock_irqsave(rwlock_t*)' [A] 'function void _raw_read_unlock_irq(rwlock_t*)' [A] 'function void _raw_read_unlock_irqrestore(rwlock_t*, unsigned long int)' [A] 'function int _raw_spin_trylock_bh(raw_spinlock_t*)' [A] 'function void _raw_write_lock_irq(__anonymous_struct__9*)' [A] 'function unsigned long int _raw_write_lock_irqsave(rwlock_t*)' [A] 'function void _raw_write_unlock_irq(__anonymous_struct__9*)' [A] 'function void _raw_write_unlock_irqrestore(rwlock_t*, unsigned long int)' [A] 'function void add_device_randomness(void*, unsigned int)' [A] 'function void add_timer_on(timer_list*, int)' [A] 'function void adjust_managed_page_count(page*, long int)' [A] 'function void alarm_start_relative(alarm*, ktime_t)' [A] 'function io_pgtable_ops* alloc_io_pgtable_ops(io_pgtable_fmt, io_pgtable_cfg*, void*)' [A] 'function sk_buff* alloc_skb_with_frags(unsigned long int, unsigned long int, int, int*, unsigned int)' [A] 'function backlight_device* backlight_device_get_by_type(backlight_type)' [A] 'function backlight_device* backlight_device_register(const char*, device*, void*, const backlight_ops*, const backlight_properties*)' [A] 'function int backlight_device_set_brightness(backlight_device*, unsigned long int)' [A] 'function void backlight_device_unregister(backlight_device*)' [A] 'function unsigned long int bitmap_find_next_zero_area_off(unsigned long int*, unsigned long int, unsigned long int, unsigned int, unsigned long int, unsigned long int)' [A] 'function void bitmap_free(const unsigned long int*)' [A] 'function int bitmap_parselist(const char*, unsigned long int*, int)' [A] 'function int bitmap_print_to_pagebuf(bool, char*, const unsigned long int*, int)' [A] 'function unsigned long int* bitmap_zalloc(unsigned int, unsigned int)' [A] 'function int blk_mq_virtio_map_queues(blk_mq_queue_map*, virtio_device*, int)' [A] 'function int blk_rq_map_user_iov(request_queue*, request*, rq_map_data*, const iov_iter*, gfp_t)' [A] 'function int blk_verify_command(unsigned char*, fmode_t)' [A] 'function void bpf_trace_run11(bpf_prog*, u64, u64, u64, u64, u64, u64, u64, u64, u64, u64, u64)' [A] 'function void bpf_trace_run12(bpf_prog*, u64, u64, u64, u64, u64, u64, u64, u64, u64, u64, u64, u64)' [A] 'function int bus_for_each_dev(bus_type*, device*, void*, void ()*)' [A] 'function int bus_set_iommu(bus_type*, const iommu_ops*)' [A] 'function u32 cfg80211_calculate_bitrate(rate_info*)' [A] 'function void cfg80211_ch_switch_notify(net_device*, cfg80211_chan_def*)' [A] 'function void cfg80211_chandef_create(cfg80211_chan_def*, ieee80211_channel*, nl80211_channel_type)' [A] 'function void cfg80211_ft_event(net_device*, cfg80211_ft_event_params*)' [A] 'function void cfg80211_gtk_rekey_notify(net_device*, const u8*, const u8*, gfp_t)' [A] 'function cfg80211_bss* cfg80211_inform_bss_frame_data(wiphy*, cfg80211_inform_bss*, ieee80211_mgmt*, size_t, gfp_t)' [A] 'function void cfg80211_pmksa_candidate_notify(net_device*, int, const u8*, bool, gfp_t)' [A] 'function void class_interface_unregister(class_interface*)' [A] 'function clk* clk_get_sys(const char*, const char*)' [A] 'function clk* clk_register(device*, clk_hw*)' [A] 'function cmd_db_hw_type cmd_db_read_slave_id(const char*)' [A] 'function int cmd_db_ready()' [A] 'function void* compat_alloc_user_space(unsigned long int)' [A] 'function void complete_and_exit(completion*, long int)' [A] 'function void config_item_put(config_item*)' [A] 'function int cpu_pm_unregister_notifier(notifier_block*)' [A] 'function unsigned int cpufreq_quick_get_max(unsigned int)' [A] 'function int cpufreq_register_notifier(notifier_block*, unsigned int)' [A] 'function int cpufreq_unregister_notifier(notifier_block*, unsigned int)' [A] 'function void cpufreq_update_policy(unsigned int)' [A] 'function u8 crc8(const u8*, u8*, size_t, u8)' [A] 'function void crc8_populate_msb(u8*, u8)' [A] 'function int crypto_aead_encrypt(aead_request*)' [A] 'function int crypto_aead_setauthsize(crypto_aead*, unsigned int)' [A] 'function int crypto_aead_setkey(crypto_aead*, const unsigned char*, unsigned int)' [A] 'function crypto_aead* crypto_alloc_aead(const char*, unsigned int, unsigned int)' [A] 'function crypto_tfm* crypto_alloc_base(const char*, unsigned int, unsigned int)' [A] 'function crypto_shash* crypto_alloc_shash(const char*, unsigned int, unsigned int)' [A] 'function crypto_skcipher* crypto_alloc_skcipher(const char*, unsigned int, unsigned int)' [A] 'function crypto_async_request* crypto_dequeue_request(crypto_queue*)' [A] 'function void crypto_destroy_tfm(void*, crypto_tfm*)' [A] 'function int crypto_enqueue_request(crypto_queue*, crypto_async_request*)' [A] 'function void crypto_init_queue(crypto_queue*, unsigned int)' [A] 'function int crypto_shash_final(shash_desc*, unsigned char*)' [A] 'function int crypto_shash_setkey(crypto_shash*, const unsigned char*, unsigned int)' [A] 'function int crypto_shash_update(shash_desc*, const unsigned char*, unsigned int)' [A] 'function int crypto_skcipher_decrypt(skcipher_request*)' [A] 'function int crypto_skcipher_encrypt(skcipher_request*)' [A] 'function int dequeue_signal(task_struct*, sigset_t*, kernel_siginfo_t*)' [A] 'function void dev_add_pack(packet_type*)' [A] 'function int dev_alloc_name(net_device*, const char*)' [A] 'function int dev_pm_domain_attach(device*, bool)' [A] 'function int dev_pm_opp_register_notifier(device*, notifier_block*)' [A] 'function int dev_pm_opp_unregister_notifier(device*, notifier_block*)' [A] 'function void dev_remove_pack(packet_type*)' [A] 'function int dev_set_mac_address(net_device*, sockaddr*, netlink_ext_ack*)' [A] 'function device* device_create_with_groups(class*, device*, unsigned int, void*, const attribute_group**, const char*, ...)' [A] 'function unsigned int device_get_child_node_count(device*)' [A] 'function device_link* device_link_add(device*, device*, unsigned int)' [A] 'function void device_link_del(device_link*)' [A] 'function ssize_t device_show_int(device*, device_attribute*, char*)' [A] 'function ssize_t device_store_int(device*, device_attribute*, const char*, size_t)' [A] 'function int devm_clk_bulk_get_optional(device*, int, clk_bulk_data*)' [A] 'function void devm_clk_put(device*, clk*)' [A] 'function gpio_desc* devm_fwnode_get_index_gpiod_from_child(device*, const char*, int, fwnode_handle*, gpiod_flags, const char*)' [A] 'function nvmem_device* devm_nvmem_device_get(device*, const char*)' [A] 'function int devm_of_pci_get_host_bridge_resources(device*, unsigned char, unsigned char, list_head*, resource_size_t*)' [A] 'function pwm_device* devm_of_pwm_get(device*, device_node*, const char*)' [A] 'function pci_host_bridge* devm_pci_alloc_host_bridge(device*, size_t)' [A] 'function void devm_pinctrl_put(pinctrl*)' [A] 'function power_supply* devm_power_supply_get_by_phandle(device*, const char*)' [A] 'function void devm_pwm_put(device*, pwm_device*)' [A] 'function void devm_regmap_del_irq_chip(device*, int, regmap_irq_chip_data*)' [A] 'function int devm_regulator_register_notifier(regulator*, notifier_block*)' [A] 'function int devm_request_pci_bus_resources(device*, list_head*)' [A] 'function int dma_buf_begin_cpu_access_partial(dma_buf*, dma_data_direction, unsigned int, unsigned int)' [A] 'function int dma_buf_end_cpu_access_partial(dma_buf*, dma_data_direction, unsigned int, unsigned int)' [A] 'function int dma_buf_get_flags(dma_buf*, unsigned long int*)' [A] 'function dma_addr_t dma_direct_map_resource(device*, phys_addr_t, size_t, dma_data_direction, unsigned long int)' [A] 'function dma_fence_array* dma_fence_array_create(int, dma_fence**, u64, unsigned int, bool)' [A] 'function void do_exit(long int)' [A] 'function int do_wait_intr(wait_queue_head_t*, wait_queue_entry_t*)' [A] 'function void drain_workqueue(workqueue_struct*)' [A] 'function device* driver_find_device(device_driver*, device*, void*, void ()*)' [A] 'function int drm_atomic_commit(drm_atomic_state*)' [A] 'function drm_connector_state* drm_atomic_get_connector_state(drm_atomic_state*, drm_connector*)' [A] 'function drm_plane_state* drm_atomic_get_plane_state(drm_atomic_state*, drm_plane*)' [A] 'function int drm_atomic_helper_commit_duplicated_state(drm_atomic_state*, drm_modeset_acquire_ctx*)' [A] 'function drm_atomic_state* drm_atomic_helper_duplicate_state(drm_device*, drm_modeset_acquire_ctx*)' [A] 'function void drm_atomic_helper_update_legacy_modeset_state(drm_device*, drm_atomic_state*)' [A] 'function int drm_atomic_helper_wait_for_fences(drm_device*, drm_atomic_state*, bool)' [A] 'function int drm_atomic_set_crtc_for_connector(drm_connector_state*, drm_crtc*)' [A] 'function void drm_atomic_set_fence_for_plane(drm_plane_state*, dma_fence*)' [A] 'function int drm_atomic_set_mode_for_crtc(drm_crtc_state*, const drm_display_mode*)' [A] 'function drm_atomic_state* drm_atomic_state_alloc(drm_device*)' [A] 'function void drm_atomic_state_clear(drm_atomic_state*)' [A] 'function void drm_atomic_state_default_clear(drm_atomic_state*)' [A] 'function void drm_atomic_state_default_release(drm_atomic_state*)' [A] 'function int drm_atomic_state_init(drm_device*, drm_atomic_state*)' [A] 'function void drm_bridge_disable(drm_bridge*)' [A] 'function void drm_bridge_enable(drm_bridge*)' [A] 'function void drm_bridge_mode_set(drm_bridge*, const drm_display_mode*, const drm_display_mode*)' [A] 'function void drm_bridge_post_disable(drm_bridge*)' [A] 'function void drm_bridge_pre_enable(drm_bridge*)' [A] 'function int drm_client_init(drm_device*, drm_client_dev*, const char*, const drm_client_funcs*)' [A] 'function int drm_client_modeset_commit_force(drm_client_dev*)' [A] 'function void drm_client_register(drm_client_dev*)' [A] 'function void drm_crtc_wait_one_vblank(drm_crtc*)' [A] 'function bool drm_detect_monitor_audio(edid*)' [A] 'function int drm_event_reserve_init_locked(drm_device*, drm_file*, drm_pending_event*, drm_event*)' [A] 'function drm_framebuffer* drm_framebuffer_lookup(drm_device*, drm_file*, unsigned int)' [A] 'function void drm_framebuffer_remove(drm_framebuffer*)' [A] 'function void drm_framebuffer_unregister_private(drm_framebuffer*)' [A] 'function const char* drm_get_connector_status_name(drm_connector_status)' [A] 'function void drm_kms_helper_poll_disable(drm_device*)' [A] 'function void drm_kms_helper_poll_enable(drm_device*)' [A] 'function unsigned char drm_match_cea_mode(const drm_display_mode*)' [A] 'function int drm_mode_convert_umode(drm_device*, drm_display_mode*, const drm_mode_modeinfo*)' [A] 'function int drm_mode_create_dp_colorspace_property(drm_connector*)' [A] 'function bool drm_mode_equal(const drm_display_mode*, const drm_display_mode*)' [A] 'function void drm_mode_object_get(drm_mode_object*)' [A] 'function void drm_mode_set_crtcinfo(drm_display_mode*, int)' [A] 'function void drm_mode_set_name(drm_display_mode*)' [A] 'function void drm_modeset_acquire_fini(drm_modeset_acquire_ctx*)' [A] 'function void drm_modeset_acquire_init(drm_modeset_acquire_ctx*, unsigned int)' [A] 'function int drm_modeset_backoff(drm_modeset_acquire_ctx*)' [A] 'function void drm_modeset_drop_locks(drm_modeset_acquire_ctx*)' [A] 'function int drm_modeset_lock_all_ctx(drm_device*, drm_modeset_acquire_ctx*)' [A] 'function int drm_object_property_set_value(drm_mode_object*, drm_property*, long long unsigned int)' [A] 'function int drm_panel_notifier_call_chain(drm_panel*, unsigned long int, void*)' [A] 'function drm_property_blob* drm_property_blob_get(drm_property_blob*)' [A] 'function void drm_property_blob_put(drm_property_blob*)' [A] 'function drm_property* drm_property_create_bitmask(drm_device*, unsigned int, const char*, const drm_prop_enum_list*, int, long long unsigned int)' [A] 'function drm_property* drm_property_create_enum(drm_device*, unsigned int, const char*, const drm_prop_enum_list*, int)' [A] 'function drm_property_blob* drm_property_lookup_blob(drm_device*, uint32_t)' [A] 'function void drm_send_event_locked(drm_device*, drm_pending_event*)' [A] 'function int extcon_get_property(extcon_dev*, unsigned int, unsigned int, extcon_property_value*)' [A] 'function char* file_path(file*, char*, int)' [A] 'function unsigned long int find_last_bit(const unsigned long int*, unsigned long int)' [A] 'function snd_usb_substream* find_snd_usb_substream(unsigned int, unsigned int, unsigned int, snd_usb_audio**, void ()*)' [A] 'function int firmware_request_nowarn(const firmware**, const char*, device*)' [A] 'function void flush_dcache_page(page*)' [A] 'function void free_io_pgtable_ops(io_pgtable_ops*)' [A] 'function int fsl8250_handle_irq(uart_port*)' [A] 'function size_t gen_pool_avail(gen_pool*)' [A] 'function size_t gen_pool_size(gen_pool*)' [A] 'function iommu_group* generic_device_group(device*)' [A] 'function int get_option(char**, int*)' [A] 'function unsigned long int get_unmapped_area(file*, unsigned long int, unsigned long int, unsigned long int, unsigned long int)' [A] 'function void getboottime64(timespec64*)' [A] 'function void gpio_free_array(const gpio*, size_t)' [A] 'function int gpiod_cansleep(const gpio_desc*)' [A] 'function gpio_desc* gpiod_get_optional(device*, const char*, gpiod_flags)' [A] 'function int gpiod_get_raw_value_cansleep(const gpio_desc*)' [A] 'function int gpiod_is_active_low(const gpio_desc*)' [A] 'function void gpiod_set_raw_value_cansleep(gpio_desc*, int)' [A] 'function void gro_cells_destroy(gro_cells*)' [A] 'function int gro_cells_init(gro_cells*, net_device*)' [A] 'function int gro_cells_receive(gro_cells*, sk_buff*)' [A] 'function void handle_simple_irq(irq_desc*)' [A] 'function int hex2bin(unsigned char*, const char*, unsigned long int)' [A] 'function int hex_dump_to_buffer(void*, unsigned long int, int, int, char*, unsigned long int, bool)' [A] 'function hvc_struct* hvc_alloc(uint32_t, int, const hv_ops*, int)' [A] 'function int hvc_instantiate(uint32_t, int, const hv_ops*)' [A] 'function void hvc_kick()' [A] 'function int hvc_poll(hvc_struct*)' [A] 'function int hvc_remove(hvc_struct*)' [A] 'function icc_path* icc_get(device*, const int, const int)' [A] 'function void icc_set_tag(icc_path*, u32)' [A] 'function int idr_alloc_cyclic(idr*, void*, int, int, unsigned int)' [A] 'function long int import_iovec(int, const iovec*, unsigned int, unsigned int, iovec**, iov_iter*)' [A] 'function int in_egroup_p(kgid_t)' [A] 'function int init_dummy_netdev(net_device*)' [A] 'function void input_close_device(input_handle*)' [A] 'function int input_ff_create(input_dev*, unsigned int)' [A] 'function void input_ff_destroy(input_dev*)' [A] 'function int input_open_device(input_handle*)' [A] 'function int input_register_handle(input_handle*)' [A] 'function int input_register_handler(input_handler*)' [A] 'function void input_unregister_handle(input_handle*)' [A] 'function void input_unregister_handler(input_handler*)' [A] 'function iommu_resv_region* iommu_alloc_resv_region(long long unsigned int, unsigned long int, int, iommu_resv_type)' [A] 'function int iommu_device_register(iommu_device*)' [A] 'function void iommu_device_unregister(iommu_device*)' [A] 'function void iommu_dma_get_resv_regions(device*, list_head*)' [A] 'function int iommu_domain_get_attr(iommu_domain*, iommu_attr, void*)' [A] 'function int iommu_domain_set_attr(iommu_domain*, iommu_attr, void*)' [A] 'function int iommu_fwspec_add_ids(device*, unsigned int*, int)' [A] 'function void iommu_fwspec_free(device*)' [A] 'function int iommu_get_dma_cookie(iommu_domain*)' [A] 'function iommu_domain* iommu_get_domain_for_dev(device*)' [A] 'function iommu_group* iommu_group_get(device*)' [A] 'function iommu_group* iommu_group_get_for_dev(device*)' [A] 'function void* iommu_group_get_iommudata(iommu_group*)' [A] 'function void iommu_group_put(iommu_group*)' [A] 'function iommu_group* iommu_group_ref_get(iommu_group*)' [A] 'function void iommu_group_remove_device(device*)' [A] 'function void iommu_group_set_iommudata(iommu_group*, void*, void ()*)' [A] 'function int iommu_map(iommu_domain*, unsigned long int, phys_addr_t, size_t, int)' [A] 'function void iommu_put_dma_cookie(iommu_domain*)' [A] 'function dma_buf* ion_alloc(size_t, unsigned int, unsigned int)' [A] 'function int ion_buffer_zero(ion_buffer*)' [A] 'function int ion_free(ion_buffer*)' [A] 'function void* ion_heap_map_kernel(ion_heap*, ion_buffer*)' [A] 'function int ion_heap_map_user(ion_heap*, ion_buffer*, vm_area_struct*)' [A] 'function void ion_heap_unmap_kernel(ion_heap*, ion_buffer*)' [A] 'function __sum16 ip_compute_csum(void*, int)' [A] 'function int ipv6_skip_exthdr(const sk_buff*, int, unsigned char*, unsigned short int*)' [A] 'function unsigned int irq_create_fwspec_mapping(irq_fwspec*)' [A] 'function unsigned int irq_create_mapping(irq_domain*, irq_hw_number_t)' [A] 'function void irq_dispose_mapping(unsigned int)' [A] 'function void irq_domain_free_irqs_parent(irq_domain*, unsigned int, unsigned int)' [A] 'function irq_data* irq_domain_get_irq_data(irq_domain*, unsigned int)' [A] 'function int irq_set_irqchip_state(unsigned int, irqchip_irq_state, bool)' [A] 'function int irq_set_parent(int, int)' [A] 'function int iterate_fd(files_struct*, unsigned int, void ()*, void*)' [A] 'function int kernel_getsockname(socket*, sockaddr*)' [A] 'function int kernel_recvmsg(socket*, msghdr*, kvec*, size_t, size_t, int)' [A] 'function void kernel_sigaction(int, __sighandler_t)' [A] 'function kernfs_node* kernfs_find_and_get_ns(kernfs_node*, const char*, void*)' [A] 'function void kernfs_notify(kernfs_node*)' [A] 'function void kernfs_put(kernfs_node*)' [A] 'function void kfree_skb_list(sk_buff*)' [A] 'function kset* kset_create_and_add(const char*, const kset_uevent_ops*, kobject*)' [A] 'function void kset_unregister(kset*)' [A] 'function int kstrtoint_from_user(const char*, unsigned long int, unsigned int, int*)' [A] 'function int kstrtos8(const char*, unsigned int, s8*)' [A] 'function int kstrtos8_from_user(const char*, size_t, unsigned int, s8*)' [A] 'function int kstrtou16_from_user(const char*, size_t, unsigned int, u16*)' [A] 'function int kstrtou8_from_user(const char*, size_t, unsigned int, u8*)' [A] 'function void kthread_bind(task_struct*, unsigned int)' [A] 'function bool kthread_cancel_delayed_work_sync(kthread_delayed_work*)' [A] 'function bool kthread_cancel_work_sync(kthread_work*)' [A] 'function kthread_worker* kthread_create_worker(unsigned int, const char*, ...)' [A] 'function void kthread_delayed_work_timer_fn(timer_list*)' [A] 'function void kthread_flush_work(kthread_work*)' [A] 'function void kthread_flush_worker(kthread_worker*)' [A] 'function bool kthread_mod_delayed_work(kthread_worker*, kthread_delayed_work*, unsigned long int)' [A] 'function int kthread_park(task_struct*)' [A] 'function void kthread_parkme()' [A] 'function bool kthread_queue_delayed_work(kthread_worker*, kthread_delayed_work*, unsigned long int)' [A] 'function bool kthread_should_park()' [A] 'function void kthread_unpark(task_struct*)' [A] 'function int led_classdev_register_ext(device*, led_classdev*, led_init_data*)' [A] 'function void led_classdev_unregister(led_classdev*)' [A] 'function void led_trigger_event(led_trigger*, led_brightness)' [A] 'function void led_trigger_register_simple(const char*, led_trigger**)' [A] 'function void led_trigger_unregister_simple(led_trigger*)' [A] 'function bool mac_pton(const char*, u8*)' [A] 'function void mbox_chan_received_data(mbox_chan*, void*)' [A] 'function void mbox_chan_txdone(mbox_chan*, int)' [A] 'function void mbox_client_txdone(mbox_chan*, int)' [A] 'function int mbox_controller_register(mbox_controller*)' [A] 'function void mbox_controller_unregister(mbox_controller*)' [A] 'function void mbox_free_channel(mbox_chan*)' [A] 'function mbox_chan* mbox_request_channel(mbox_client*, int)' [A] 'function int mbox_send_message(mbox_chan*, void*)' [A] 'function void media_device_cleanup(media_device*)' [A] 'function void media_device_init(media_device*)' [A] 'function void media_device_unregister(media_device*)' [A] 'function int media_entity_pads_init(media_entity*, u16, media_pad*)' [A] 'function void* memchr(void*, int, unsigned long int)' [A] 'function int mipi_dsi_dcs_set_display_brightness(mipi_dsi_device*, u16)' [A] 'function int mipi_dsi_dcs_set_tear_off(mipi_dsi_device*)' [A] 'function void mod_node_page_state(pglist_data*, node_stat_item, long int)' [A] 'function void napi_gro_flush(napi_struct*, bool)' [A] 'function int netif_rx(sk_buff*)' [A] 'function bool ns_capable(user_namespace*, int)' [A] 'function timespec64 ns_to_timespec64(long long int)' [A] 'function int nvmem_cell_read_u32(device*, const char*, u32*)' [A] 'function int nvmem_cell_write(nvmem_cell*, void*, size_t)' [A] 'function int nvmem_device_read(nvmem_device*, unsigned int, unsigned long int, void*)' [A] 'function int nvmem_device_write(nvmem_device*, unsigned int, unsigned long int, void*)' [A] 'function int of_clk_add_provider(device_node*, void ()*, void*)' [A] 'function clk* of_clk_get_from_provider(of_phandle_args*)' [A] 'function clk* of_clk_src_onecell_get(of_phandle_args*, void*)' [A] 'function clk* of_clk_src_simple_get(of_phandle_args*, void*)' [A] 'function int of_count_phandle_with_args(const device_node*, const char*, const char*)' [A] 'function thermal_cooling_device* of_devfreq_cooling_register(device_node*, devfreq*)' [A] 'function bool of_dma_is_coherent(device_node*)' [A] 'function device_node* of_find_node_with_property(device_node*, const char*)' [A] 'function const __be32* of_get_address(device_node*, int, u64*, unsigned int*)' [A] 'function device_node* of_get_cpu_node(int, unsigned int*)' [A] 'function int of_irq_get(device_node*, int)' [A] 'function int of_irq_get_byname(device_node*, const char*)' [A] 'function int of_irq_parse_and_map_pci(const pci_dev*, u8, u8)' [A] 'function int of_irq_parse_one(device_node*, int, of_phandle_args*)' [A] 'function int of_modalias_node(device_node*, char*, int)' [A] 'function int of_phandle_iterator_init(of_phandle_iterator*, const device_node*, const char*, const char*, int)' [A] 'function int of_phandle_iterator_next(of_phandle_iterator*)' [A] 'function platform_device* of_platform_device_create(device_node*, const char*, device*)' [A] 'function int of_property_read_variable_u16_array(const device_node*, const char*, u16*, size_t, size_t)' [A] 'function void of_reserved_mem_device_release(device*)' [A] 'function bool of_thermal_is_trip_valid(thermal_zone_device*, int)' [A] 'function int param_get_string(char*, const kernel_param*)' [A] 'function int param_set_bool(const char*, const kernel_param*)' [A] 'function int param_set_copystring(const char*, const kernel_param*)' [A] 'function int pci_assign_resource(pci_dev*, int)' [A] 'function void pci_clear_master(pci_dev*)' [A] 'function u8 pci_common_swizzle(pci_dev*, u8*)' [A] 'function iommu_group* pci_device_group(device*)' [A] 'function void pci_disable_msi(pci_dev*)' [A] 'function pci_dev* pci_find_pcie_root_port(pci_dev*)' [A] 'function pci_dev* pci_get_device(unsigned int, unsigned int, pci_dev*)' [A] 'function int pci_load_and_free_saved_state(pci_dev*, pci_saved_state**)' [A] 'function irq_domain* pci_msi_create_irq_domain(fwnode_handle*, msi_domain_info*, irq_domain*)' [A] 'function void pci_msi_mask_irq(irq_data*)' [A] 'function void pci_msi_unmask_irq(irq_data*)' [A] 'function int pci_scan_root_bus_bridge(pci_host_bridge*)' [A] 'function pci_saved_state* pci_store_saved_state(pci_dev*)' [A] 'function void pci_walk_bus(pci_bus*, void ()*, void*)' [A] 'function int pci_write_config_word(const pci_dev*, int, unsigned short int)' [A] 'function int pcie_capability_read_word(pci_dev*, int, u16*)' [A] 'function int phy_calibrate(phy*)' [A] 'function void pipe_lock(pipe_inode_info*)' [A] 'function void pipe_unlock(pipe_inode_info*)' [A] 'function int pm_generic_resume(device*)' [A] 'function int pm_generic_runtime_resume(device*)' [A] 'function int pm_generic_runtime_suspend(device*)' [A] 'function int pm_generic_suspend(device*)' [A] 'function int pm_qos_add_notifier(int, notifier_block*)' [A] 'function void pm_qos_add_request(pm_qos_request*, int, s32)' [A] 'function int pm_qos_remove_notifier(int, notifier_block*)' [A] 'function void pm_qos_remove_request(pm_qos_request*)' [A] 'function int pm_qos_request_active(pm_qos_request*)' [A] 'function void pm_qos_update_request(pm_qos_request*, s32)' [A] 'function int pm_runtime_barrier(device*)' [A] 'function void pm_runtime_no_callbacks(device*)' [A] 'function void pm_system_wakeup()' [A] 'function int power_supply_set_property(power_supply*, power_supply_property, const power_supply_propval*)' [A] 'function proc_dir_entry* proc_create_net_single(const char*, umode_t, proc_dir_entry*, void ()*, void*)' [A] 'function proc_dir_entry* proc_mkdir_data(const char*, umode_t, proc_dir_entry*, void*)' [A] 'function int qcom_scm_io_readl(long long unsigned int, unsigned int*)' [A] 'function int qcom_scm_io_writel(long long unsigned int, unsigned int)' [A] 'function int qcom_scm_pas_shutdown(u32)' [A] 'function int qcom_scm_qsmmu500_wait_safe_toggle(bool)' [A] 'function qcom_smem_state* qcom_smem_state_get(device*, const char*, unsigned int*)' [A] 'function int qcom_smem_state_update_bits(qcom_smem_state*, u32, u32)' [A] 'function void qdisc_reset(Qdisc*)' [A] 'function unsigned int radix_tree_gang_lookup(const xarray*, void**, unsigned long int, unsigned int)' [A] 'function void radix_tree_iter_delete(xarray*, radix_tree_iter*, void**)' [A] 'function void rational_best_approximation(unsigned long int, unsigned long int, unsigned long int, unsigned long int, unsigned long int*, unsigned long int*)' [A] 'function int raw_notifier_call_chain(raw_notifier_head*, unsigned long int, void*)' [A] 'function int raw_notifier_chain_register(raw_notifier_head*, notifier_block*)' [A] 'function int raw_notifier_chain_unregister(raw_notifier_head*, notifier_block*)' [A] 'function rb_node* rb_last(const rb_root*)' [A] 'function bool refcount_dec_and_lock(refcount_struct*, spinlock*)' [A] 'function bool refcount_dec_not_one(refcount_struct*)' [A] 'function void regcache_cache_only(regmap*, bool)' [A] 'function int regcache_sync_region(regmap*, unsigned int, unsigned int)' [A] 'function int register_netevent_notifier(notifier_block*)' [A] 'function ctl_table_header* register_sysctl_table(ctl_table*)' [A] 'function int regmap_irq_get_virq(regmap_irq_chip_data*, int)' [A] 'function int regulator_count_voltages(regulator*)' [A] 'function int regulator_disable_deferred(regulator*, int)' [A] 'function int regulator_get_current_limit(regulator*)' [A] 'function int regulator_get_voltage(regulator*)' [A] 'function int regulator_list_voltage(regulator*, unsigned int)' [A] 'function void regulator_lock(regulator_dev*)' [A] 'function int regulator_register_notifier(regulator*, notifier_block*)' [A] 'function void regulator_unlock(regulator_dev*)' [A] 'function int regulator_unregister_notifier(regulator*, notifier_block*)' [A] 'function int regulatory_set_wiphy_regd(wiphy*, ieee80211_regdomain*)' [A] 'function int report_iommu_fault(iommu_domain*, device*, unsigned long int, int)' [A] 'function unsigned long int round_jiffies(unsigned long int)' [A] 'function int rtnl_trylock()' [A] 'function void rtnl_unregister_all(int)' [A] 'function void save_stack_trace(stack_trace*)' [A] 'function void save_stack_trace_tsk(task_struct*, stack_trace*)' [A] 'function int sched_setattr(task_struct*, const sched_attr*)' [A] 'function int scsi_autopm_get_device(scsi_device*)' [A] 'function void scsi_autopm_put_device(scsi_device*)' [A] 'function int scsi_block_when_processing_errors(scsi_device*)' [A] 'function int scsi_device_get(scsi_device*)' [A] 'function void scsi_device_put(scsi_device*)' [A] 'function int scsi_ioctl(scsi_device*, int, void*)' [A] 'function int scsi_ioctl_block_when_processing_errors(scsi_device*, int, bool)' [A] 'function int scsi_register_interface(class_interface*)' [A] 'function void sdev_prefix_printk(const char*, const scsi_device*, const char*, const char*, ...)' [A] 'function int send_sig_info(int, kernel_siginfo*, task_struct*)' [A] 'function void seq_hex_dump(seq_file*, const char*, int, int, int, void*, size_t, bool)' [A] 'function uart_8250_port* serial8250_get_port(int)' [A] 'function int set_cpus_allowed_ptr(task_struct*, const cpumask*)' [A] 'function void set_normalized_timespec64(timespec64*, long long int, long long int)' [A] 'function int sg_alloc_table_from_pages(sg_table*, page**, unsigned int, unsigned int, unsigned long int, gfp_t)' [A] 'function unsigned long int sg_copy_from_buffer(scatterlist*, unsigned int, void*, unsigned long int)' [A] 'function unsigned long int sg_copy_to_buffer(scatterlist*, unsigned int, void*, unsigned long int)' [A] 'function int sg_scsi_ioctl(request_queue*, gendisk*, fmode_t, scsi_ioctl_command*)' [A] 'function int sigprocmask(int, sigset_t*, sigset_t*)' [A] 'function ssize_t simple_write_to_buffer(void*, size_t, loff_t*, void*, size_t)' [A] 'function int skb_append_pagefrags(sk_buff*, page*, int, size_t)' [A] 'function unsigned int skb_checksum(const sk_buff*, int, int, unsigned int)' [A] 'function sk_buff* skb_copy(const sk_buff*, unsigned int)' [A] 'function int skb_store_bits(sk_buff*, int, void*, int)' [A] 'function char* skip_spaces(const char*)' [A] 'function void smp_call_function(smp_call_func_t, void*, int)' [A] 'function void snd_ctl_notify(snd_card*, unsigned int, snd_ctl_elem_id*)' [A] 'function int snd_ctl_remove(snd_card*, snd_kcontrol*)' [A] 'function snd_info_entry* snd_info_create_module_entry(module*, const char*, snd_info_entry*)' [A] 'function int snd_pcm_stop(snd_pcm_substream*, int)' [A] 'function int snd_soc_add_component_controls(snd_soc_component*, const snd_kcontrol_new*, unsigned int)' [A] 'function int snd_soc_bytes_tlv_callback(snd_kcontrol*, int, unsigned int, unsigned int*)' [A] 'function snd_kcontrol* snd_soc_card_get_kcontrol(snd_soc_card*, const char*)' [A] 'function void snd_soc_component_exit_regmap(snd_soc_component*)' [A] 'function void snd_soc_component_init_regmap(snd_soc_component*, regmap*)' [A] 'function int snd_soc_dai_get_channel_map(snd_soc_dai*, unsigned int*, unsigned int*, unsigned int*, unsigned int*)' [A] 'function int snd_soc_dai_set_channel_map(snd_soc_dai*, unsigned int, unsigned int*, unsigned int, unsigned int*)' [A] 'function int snd_soc_dai_set_fmt(snd_soc_dai*, unsigned int)' [A] 'function snd_soc_dapm_widget* snd_soc_dapm_kcontrol_widget(snd_kcontrol*)' [A] 'function int snd_soc_dapm_mixer_update_power(snd_soc_dapm_context*, snd_kcontrol*, int, snd_soc_dapm_update*)' [A] 'function int snd_soc_dapm_mux_update_power(snd_soc_dapm_context*, snd_kcontrol*, int, soc_enum*, snd_soc_dapm_update*)' [A] 'function int snd_soc_dapm_new_controls(snd_soc_dapm_context*, const snd_soc_dapm_widget*, int)' [A] 'function int snd_soc_dapm_new_widgets(snd_soc_card*)' [A] 'function int snd_soc_get_volsw(snd_kcontrol*, snd_ctl_elem_value*)' [A] 'function int snd_soc_get_volsw_sx(snd_kcontrol*, snd_ctl_elem_value*)' [A] 'function int snd_soc_info_multi_ext(snd_kcontrol*, snd_ctl_elem_info*)' [A] 'function int snd_soc_info_volsw_sx(snd_kcontrol*, snd_ctl_elem_info*)' [A] 'function snd_soc_component* snd_soc_lookup_component(device*, const char*)' [A] 'function int snd_soc_new_compress(snd_soc_pcm_runtime*, int)' [A] 'function int snd_soc_put_volsw(snd_kcontrol*, snd_ctl_elem_value*)' [A] 'function int snd_soc_put_volsw_sx(snd_kcontrol*, snd_ctl_elem_value*)' [A] 'function int snd_soc_unregister_card(snd_soc_card*)' [A] 'function void snd_timer_interrupt(snd_timer*, unsigned long int)' [A] 'function int snd_usb_enable_audio_stream(snd_usb_substream*, int, bool)' [A] 'function soc_device* soc_device_register(soc_device_attribute*)' [A] 'function void soc_device_unregister(soc_device*)' [A] 'function void sock_efree(sk_buff*)' [A] 'function int spi_register_controller(spi_controller*)' [A] 'function void spi_unregister_controller(spi_controller*)' [A] 'function int sprint_symbol(char*, unsigned long int)' [A] 'function void srcu_init_notifier_head(srcu_notifier_head*)' [A] 'function int srcu_notifier_call_chain(srcu_notifier_head*, unsigned long int, void*)' [A] 'function int srcu_notifier_chain_register(srcu_notifier_head*, notifier_block*)' [A] 'function int srcu_notifier_chain_unregister(srcu_notifier_head*, notifier_block*)' [A] 'function void stack_trace_print(const unsigned long int*, unsigned int, int)' [A] 'function char* strchrnul(const char*, int)' [A] 'function unsigned long int strlcat(char*, const char*, size_t)' [A] 'function char* strnchr(const char*, unsigned long int, int)' [A] 'function char* strnstr(const char*, const char*, unsigned long int)' [A] 'function char* strreplace(char*, char, char)' [A] 'function unsigned int swiotlb_max_segment()' [A] 'function bool synchronize_hardirq(unsigned int)' [A] 'function int sysfs_create_bin_file(kobject*, const bin_attribute*)' [A] 'function int sysfs_create_files(kobject*, const attribute* const*)' [A] 'function void sysfs_remove_bin_file(kobject*, const bin_attribute*)' [A] 'function void sysfs_remove_file_ns(kobject*, const attribute*, void*)' [A] 'function void sysfs_remove_files(kobject*, const attribute* const*)' [A] 'function void time64_to_tm(time64_t, int, tm*)' [A] 'function const char* trace_print_array_seq(trace_seq*, void*, int, size_t)' [A] 'function const char* trace_print_flags_seq(trace_seq*, const char*, unsigned long int, const trace_print_flags*)' [A] 'function const char* trace_print_hex_seq(trace_seq*, const unsigned char*, int, bool)' [A] 'function void tracing_off()' [A] 'function int ufshcd_query_attr(ufs_hba*, query_opcode, attr_idn, u8, u8, u32*)' [A] 'function int ufshcd_query_descriptor_retry(ufs_hba*, query_opcode, desc_idn, u8, u8, u8*, int*)' [A] 'function int ufshcd_query_flag(ufs_hba*, query_opcode, flag_idn, bool*)' [A] 'function void uio_unregister_device(uio_info*)' [A] 'function void unlock_page(page*)' [A] 'function void unregister_gadget_item(config_item*)' [A] 'function int unregister_netevent_notifier(notifier_block*)' [A] 'function void unregister_sysctl_table(ctl_table_header*)' [A] 'function int usb_add_phy_dev(usb_phy*)' [A] 'function usb_device* usb_alloc_dev(usb_device*, usb_bus*, unsigned int)' [A] 'function int usb_assign_descriptors(usb_function*, usb_descriptor_header**, usb_descriptor_header**, usb_descriptor_header**, usb_descriptor_header**)' [A] 'function void usb_composite_setup_continue(usb_composite_dev*)' [A] 'function int usb_ep_set_wedge(usb_ep*)' [A] 'function void usb_free_all_descriptors(usb_function*)' [A] 'function int usb_gadget_vbus_connect(usb_gadget*)' [A] 'function int usb_gadget_vbus_disconnect(usb_gadget*)' [A] 'function int usb_gadget_wakeup(usb_gadget*)' [A] 'function urb* usb_get_urb(urb*)' [A] 'function usb_string* usb_gstrings_attach(usb_composite_dev*, usb_gadget_strings**, unsigned int)' [A] 'function usb_device* usb_hub_find_child(usb_device*, int)' [A] 'function void usb_register_notify(notifier_block*)' [A] 'function void usb_remove_phy(usb_phy*)' [A] 'function void usb_set_device_state(usb_device*, usb_device_state)' [A] 'function void usb_unregister_notify(notifier_block*)' [A] 'function v4l2_ctrl* v4l2_ctrl_find(v4l2_ctrl_handler*, u32)' [A] 'function const char* v4l2_ctrl_get_name(u32)' [A] 'function void v4l2_ctrl_handler_free(v4l2_ctrl_handler*)' [A] 'function int v4l2_ctrl_handler_init_class(v4l2_ctrl_handler*, unsigned int, lock_class_key*, const char*)' [A] 'function v4l2_ctrl* v4l2_ctrl_new_custom(v4l2_ctrl_handler*, const v4l2_ctrl_config*, void*)' [A] 'function v4l2_ctrl* v4l2_ctrl_new_std(v4l2_ctrl_handler*, const v4l2_ctrl_ops*, u32, s64, s64, u64, s64)' [A] 'function v4l2_ctrl* v4l2_ctrl_new_std_menu(v4l2_ctrl_handler*, const v4l2_ctrl_ops*, u32, u8, u64, u8)' [A] 'function int v4l2_device_register(device*, v4l2_device*)' [A] 'function int v4l2_device_register_subdev(v4l2_device*, v4l2_subdev*)' [A] 'function int v4l2_device_register_subdev_nodes(v4l2_device*)' [A] 'function void v4l2_device_unregister(v4l2_device*)' [A] 'function void v4l2_device_unregister_subdev(v4l2_subdev*)' [A] 'function int v4l2_event_dequeue(v4l2_fh*, v4l2_event*, int)' [A] 'function int v4l2_event_pending(v4l2_fh*)' [A] 'function void v4l2_event_queue(video_device*, const v4l2_event*)' [A] 'function void v4l2_event_queue_fh(v4l2_fh*, const v4l2_event*)' [A] 'function int v4l2_event_subscribe(v4l2_fh*, const v4l2_event_subscription*, unsigned int, const v4l2_subscribed_event_ops*)' [A] 'function int v4l2_event_unsubscribe(v4l2_fh*, const v4l2_event_subscription*)' [A] 'function void v4l2_fh_add(v4l2_fh*)' [A] 'function void v4l2_fh_del(v4l2_fh*)' [A] 'function void v4l2_fh_exit(v4l2_fh*)' [A] 'function void v4l2_fh_init(v4l2_fh*, video_device*)' [A] 'function int v4l2_fh_open(file*)' [A] 'function int v4l2_fh_release(file*)' [A] 'function int v4l2_s_ctrl(v4l2_fh*, v4l2_ctrl_handler*, v4l2_control*)' [A] 'function void v4l2_subdev_init(v4l2_subdev*, const v4l2_subdev_ops*)' [A] 'function void vb2_buffer_done(vb2_buffer*, vb2_buffer_state)' [A] 'function int vb2_dqbuf(vb2_queue*, v4l2_buffer*, bool)' [A] 'function int vb2_qbuf(vb2_queue*, media_device*, v4l2_buffer*)' [A] 'function int vb2_queue_init(vb2_queue*)' [A] 'function void vb2_queue_release(vb2_queue*)' [A] 'function int vb2_reqbufs(vb2_queue*, v4l2_requestbuffers*)' [A] 'function int vb2_streamoff(vb2_queue*, v4l2_buf_type)' [A] 'function int vb2_streamon(vb2_queue*, v4l2_buf_type)' [A] 'function video_device* video_devdata(file*)' [A] 'function video_device* video_device_alloc()' [A] 'function void video_device_release(video_device*)' [A] 'function void video_device_release_empty(video_device*)' [A] 'function long int video_ioctl2(file*, unsigned int, unsigned long int)' [A] 'function void video_unregister_device(video_device*)' [A] 'function int vm_iomap_memory(vm_area_struct*, phys_addr_t, unsigned long int)' [A] 'function int vprintk(const char*, __va_list)' [A] 'function void wireless_send_event(net_device*, unsigned int, iwreq_data*, const char*)' [A] 'function unsigned int work_busy(work_struct*)' Bug: 151133259 Change-Id: I029aaa288d1b0697291bdd2b0531626ec28a4cd0 Signed-off-by: Raghavendra Rao Ananta <rananta@codeaurora.org> Signed-off-by: Matthias Maennich <maennich@google.com> |
||
|
|
4fe54315ee |
ANDROID: GKI: Removed cuttlefish configs
Configs were moved to repo cuttlefish-modules. Bug: 151981046 Test: Treehugger Signed-off-by: Ram Muthiah <rammuthiah@google.com> Change-Id: I217422c401c6ea183ce974c1d156abd4d9e209a6 |
||
|
|
f08ddd2d45 |
ANDROID: ABI/Whitelist: update for db845c
Yet again, adds a whitelist for the symbols used by the db845c device and updates the ABI representation accordingly. abi report: Comparing ABI against expected definition (abi_gki_aarch64.xml) ======================================================== ABI report has been created at /home/docker/repo/out_abi/android-5.4/dist/abi.report ABI DIFFERENCES HAVE BEEN DETECTED! (RC=8) ======================================================== Leaf changes summary: 2 artifacts changed Changed leaf types summary: 0 leaf type changed Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 2 Added functions Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable 2 Added functions: [A] 'function bool __list_add_valid(list_head*, list_head*, list_head*)' [A] 'function bool __list_del_entry_valid(list_head*)' Bug: 146449535 Signed-off-by: John Stultz <john.stultz@linaro.org> Change-Id: Ic755e50b21aba2ae173724b27a23a520e756e6b2 |
||
|
|
1069b51326 |
ANDROID: clang: update to 10.0.5
Bug: 151950245 Signed-off-by: Alistair Delva <adelva@google.com> Change-Id: Ida4d7312c6dda528b4c54338dcb7ed4d41787720 |
||
|
|
a61cf116bc |
FROMLIST: arm64: define __alloc_zeroed_user_highpage
When running the kernel with init_on_alloc=1, calling the default implementation of __alloc_zeroed_user_highpage() from include/linux/highmem.h leads to double-initialization of the allocated page (first by the page allocator, then by clear_user_page(). Calling alloc_page_vma() with __GFP_ZERO, similarly to e.g. x86, seems to be enough to ensure the user page is zeroed only once. Signed-off-by: Alexander Potapenko <glider@google.com> Signed-off-by: Catalin Marinas <catalin.marinas@arm.com> Bug: 149975351 Link: https://lore.kernel.org/linux-arm-kernel/20200312155920.50067-1-glider@google.com/ Change-Id: I3ff7c3fb082b420491313e0fdd841ce340989d72 Signed-off-by: Alexander Potapenko <glider@google.com> |
||
|
|
041b82322f |
BACKPORT: extcon: Mark extcon_get_edev_name() function as exported symbol
extcon_get_edev_name() function provides client driver to request extcon dev's name. If extcon driver and client driver are compiled as loadable modules, extcon_get_edev_name() function symbol is not visible to client driver. Hence mark extcon_find_edev_name() function as exported symbol. (cherry picked from commit 995bb1092326b8ba8fa29456c334ac6a49765ccd git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git) Bug: 152643506 Change-Id: Idbeed2cf45cc201d707ccbccdd043d71e3a0c23a Signed-off-by: Mayank Rana <mrana@codeaurora.org> Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> |
||
|
|
37c7bda887 |
ANDROID: Incremental fs: Fix two typos
Test: incfs_test passes Bug: 151240628 Signed-off-by: Paul Lawrence <paullawrence@google.com> Change-Id: I627e683b562329fd57aedc8393e22449ff09ee1f (cherry picked from commit 06c715e275dc65e720759cfeacb4120289e2a306) |
||
|
|
1a12f7e69c |
ANDROID: gki_defconfig: Enable CONFIG_REMOTEPROC
This patch adds required CONFIG_REMOTEPROC to the gki_defconfig in order for functionality like wifi to work on the db845c. Bug: 146449535 Change-Id: I21a233b193b22b84ebb1462daf324bcc6b5c6594 Signed-off-by: John Stultz <john.stultz@linaro.org> |
||
|
|
47ea291ae5 |
ANDROID: GKI: Add CONFIG_RPMSG to gki_defconfig
RPMSG is used on various SoC platforms downstream. Enable the subsystem in the gki_defconfig. This also enables RPMSG_CHAR. Bug: 146449535 Change-Id: Ib4a6e5a438681a9835398cdb8917045191e1fbe6 Signed-off-by: Alistair Delva <adelva@google.com> |
||
|
|
669d93f855 |
Revert "sched/core: Prevent race condition between cpuset and __sched_setscheduler()"
This reverts commit
|
||
|
|
553f33f495 |
Revert "ANDROID: binder: fix sleeping from invalid function caused by RT inheritance"
This reverts commit
|
||
|
|
4061772e28 |
ANDROID: Incremental fs: Add INCFS_IOC_GET_FILLED_BLOCKS
Test: incfs_test passes Bug: 151240628 Signed-off-by: Paul Lawrence <paullawrence@google.com> Change-Id: I66d0ba1911adc5d68ed404585222e6a81a7eb94f (cherry picked from commit 8d963bb24076b60cb2de0f2d49deaff1d52e8270) |
||
|
|
8398205ce4 |
ANDROID: GKI: defconfig: Enable CONFIG_SHUFFLE_PAGE_ALLOCATOR
This enables page allocator randomization in both x86 and ar64 gki defconfig Bug: 151881089 Test: builds Signed-off-by: Sandeep Patil <sspatil@google.com> Change-Id: I1d28368f2df6aad47d9e90cc991b7f5dc21d2cfa |
||
|
|
fc2c4ee73f |
ANDROID: gki_defconfig: disable CONFIG_HARDENED_USERCOPY_FALLBACK
This should be unset so that usercopy whitelists are not actually being enforced. Bug: 152470236 Cc: Kees Cook <keescook@google.com> Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I11069fa6d66cf23d38d33ccc52492aaa0915b776 |
||
|
|
15cdabbf6e |
ANDROID: gki_defconfig: enable CONFIG_DEBUG_LIST
For lots of good security reasons, this config option needs to be enabled Bug: 152470236 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I96a88bbee9c4d17be97ed63262dbab2ef31fee79 |
||
|
|
44c2c8729b |
ANDROID: Follow aosp/1233812 to update ABI whitelists post-TPM addition.
Bug: 152440615 Test: build only Change-Id: I99be6f6077340074dbfffa4a65c7d368e4601b03 Signed-off-by: A. Cody Schuffelen <schuffelen@google.com> |
||
|
|
9503d046c9 |
ANDROID: dm-bow: Fix free_show value is incorrect
Fix free_show value is incorrect Change-Id: If7f36a64afa600c980ee8a25393f8716a6ffd474 Signed-off-by: Dylan Chang <dylan.chang@oneplus.com> Bug: 152116739 (cherry picked from commit feff0b2236497c0651baa7f59ea50c2377fff053) Signed-off-by: Paul Lawrence <paullawrence@google.com> |
||
|
|
383156c695 |
ANDROID: GKI: workqueue.h: add Android ABI padding to some structures
Try to mitigate potential future driver core api changes by adding a
padding to struct work_struct and struct delayed_work
Based on a change made to the RHEL/CENTOS 8 kernel.
Leaf changes summary: 129 artifacts changed
Changed leaf types summary: 129 leaf types changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
type 'struct work_struct' changed:
type size changed from 256 to 384 (in bits)
2 data member insertions:
'u64 work_struct::android_kabi_reserved1', at offset 256 (in bits) at workqueue.h:110:1
'u64 work_struct::android_kabi_reserved2', at offset 320 (in bits) at workqueue.h:111:1
type 'struct delayed_work' changed:
type size changed from 704 to 960 (in bits)
2 data member insertions:
'u64 delayed_work::android_kabi_reserved1', at offset 832 (in bits) at workqueue.h:126:1
'u64 delayed_work::android_kabi_reserved2', at offset 896 (in bits) at workqueue.h:127:1
Bug: 151154716
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I5492a13e2430c1a5775aec52518144b7aa4f3268
|
||
|
|
8e901b0149 |
ANDROID: gki_defconfig: enabled UAPI header compile testing
To ensure UAPI headers will compile standalone and can (later) be monitored for API/ABI stability, enable the feature accordingly. That seams like an additional overhead at compile time, but runs smoothly while we are waiting for the LTO link to finish :-) Bug: 73298553 Signed-off-by: Matthias Maennich <maennich@google.com> Change-Id: Iae4f67f430ee2a3000f9f035aa0cd4392e72460f (cherry picked from commit 9465730798f95fc5a0f0916ef6bcdfc7a1e839e9) |
||
|
|
5b6494b7be |
ANDROID: GKI: fs.h: add Android ABI padding to some structures
Try to mitigate potential future driver core api changes by adding a
padding to a bunch of filesystem structures.
Based on a change made to the RHEL/CENTOS 8 kernel.
Leaf changes summary: 12 artifacts changed
Changed leaf types summary: 12 leaf types changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
'struct address_space at fs.h:445:1' changed:
type size changed from 1280 to 1536 (in bits)
4 data member insertions:
'u64 address_space::android_kabi_reserved1', at offset 1280 (in bits) at fs.h:472:1
'u64 address_space::android_kabi_reserved2', at offset 1344 (in bits) at fs.h:473:1
'u64 address_space::android_kabi_reserved3', at offset 1408 (in bits) at fs.h:474:1
'u64 address_space::android_kabi_reserved4', at offset 1472 (in bits) at fs.h:475:1
'struct address_space_operations at fs.h:362:1' changed:
type size changed from 1344 to 1600 (in bits)
4 data member insertions:
'u64 address_space_operations::android_kabi_reserved1', at offset 1344 (in bits) at fs.h:412:1
'u64 address_space_operations::android_kabi_reserved2', at offset 1408 (in bits) at fs.h:413:1
'u64 address_space_operations::android_kabi_reserved3', at offset 1472 (in bits) at fs.h:414:1
'u64 address_space_operations::android_kabi_reserved4', at offset 1536 (in bits) at fs.h:415:1
'struct block_device at fs.h:473:1' changed:
type size changed from 1728 to 1984 (in bits)
4 data member insertions:
'u64 block_device::android_kabi_reserved1', at offset 1728 (in bits) at fs.h:521:1
'u64 block_device::android_kabi_reserved2', at offset 1792 (in bits) at fs.h:522:1
'u64 block_device::android_kabi_reserved3', at offset 1856 (in bits) at fs.h:523:1
'u64 block_device::android_kabi_reserved4', at offset 1920 (in bits) at fs.h:524:1
'struct file_lock at fs.h:1080:1' changed:
type size changed from 1728 to 1984 (in bits)
3 data member insertions:
'list_head file_lock::android_reserved1', at offset 1728 (in bits) at fs.h:1142:1
'u64 file_lock::android_kabi_reserved1', at offset 1856 (in bits) at fs.h:1143:1
'u64 file_lock::android_kabi_reserved2', at offset 1920 (in bits) at fs.h:1144:1
'struct file_lock_operations at fs.h:1030:1' changed:
type size changed from 128 to 256 (in bits)
2 data member insertions:
'u64 file_lock_operations::android_kabi_reserved1', at offset 128 (in bits) at fs.h:1053:1
'u64 file_lock_operations::android_kabi_reserved2', at offset 192 (in bits) at fs.h:1054:1
'struct file_operations at fs.h:1843:1' changed:
type size changed from 2048 to 2304 (in bits)
4 data member insertions:
'u64 file_operations::android_kabi_reserved1', at offset 2048 (in bits) at fs.h:1918:1
'u64 file_operations::android_kabi_reserved2', at offset 2112 (in bits) at fs.h:1919:1
'u64 file_operations::android_kabi_reserved3', at offset 2176 (in bits) at fs.h:1920:1
'u64 file_operations::android_kabi_reserved4', at offset 2240 (in bits) at fs.h:1921:1
'struct file_system_type at fs.h:2245:1' changed:
type size changed from 640 to 896 (in bits)
4 data member insertions:
'u64 file_system_type::android_kabi_reserved1', at offset 640 (in bits) at fs.h:2322:1
'u64 file_system_type::android_kabi_reserved2', at offset 704 (in bits) at fs.h:2323:1
'u64 file_system_type::android_kabi_reserved3', at offset 768 (in bits) at fs.h:2324:1
'u64 file_system_type::android_kabi_reserved4', at offset 832 (in bits) at fs.h:2325:1
'struct inode at fs.h:628:1' changed:
type size changed from 4800 to 5184 (in bits)
2 data member insertions:
'u64 inode::android_kabi_reserved1', at offset 5056 (in bits) at fs.h:756:1
'u64 inode::android_kabi_reserved2', at offset 5120 (in bits) at fs.h:757:1
'struct inode_operations at fs.h:1885:1' changed:
type size changed from 1536 to 2048 (in bits)
4 data member insertions:
'u64 inode_operations::android_kabi_reserved1', at offset 1472 (in bits) at fs.h:1955:1
'u64 inode_operations::android_kabi_reserved2', at offset 1536 (in bits) at fs.h:1956:1
'u64 inode_operations::android_kabi_reserved3', at offset 1600 (in bits) at fs.h:1957:1
'u64 inode_operations::android_kabi_reserved4', at offset 1664 (in bits) at fs.h:1958:1
'struct lock_manager_operations at fs.h:1035:1' changed:
type size changed from 448 to 576 (in bits)
2 data member insertions:
'u64 lock_manager_operations::android_kabi_reserved1', at offset 448 (in bits) at fs.h:1066:1
'u64 lock_manager_operations::android_kabi_reserved2', at offset 512 (in bits) at fs.h:1067:1
'struct super_block at fs.h:1431:1' changed:
type size changed from 11776 to 12288 (in bits)
4 data member insertions:
'u64 super_block::android_kabi_reserved1', at offset 11648 (in bits) at fs.h:1592:1
'u64 super_block::android_kabi_reserved2', at offset 11712 (in bits) at fs.h:1593:1
'u64 super_block::android_kabi_reserved3', at offset 11776 (in bits) at fs.h:1594:1
'u64 super_block::android_kabi_reserved4', at offset 11840 (in bits) at fs.h:1595:1
'struct super_operations at fs.h:1966:1' changed:
type size changed from 1920 to 2176 (in bits)
4 data member insertions:
'u64 super_operations::android_kabi_reserved1', at offset 1920 (in bits) at fs.h:2048:1
'u64 super_operations::android_kabi_reserved2', at offset 1984 (in bits) at fs.h:2049:1
'u64 super_operations::android_kabi_reserved3', at offset 2048 (in bits) at fs.h:2050:1
'u64 super_operations::android_kabi_reserved4', at offset 2112 (in bits) at fs.h:2051:1
Bug: 151154716
Change-Id: Ida6d98d30f292c980ab07e0250fec5268c4c87ed
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
|
||
|
|
d568dedb8b |
FROMLIST: media: v4l2-fh: define v4l2_fh struct regardless of condition
v4l2_fh struct define differently by CONFIG_V4L2_MEM2MEM_DEV. If some vendors use CONFIG_V4L2_MEM2MEM_DEV by module, it can make the mismatch of v4l2_fh sturct. By the mismatch, the following error occurs. =============================== [ 7.533506] v4l2_mem2mem: disagrees about version of symbol video_devdata [ 7.533594] v4l2_mem2mem: Unknown symbol video_devdata (err -22) [ 7.535319] v4l2_mem2mem: disagrees about version of symbol v4l2_event_pending [ 7.542532] v4l2_mem2mem: Unknown symbol v4l2_event_pending (err -22) =============================== So v4l2_fh struct is modified to does not have dependency for CONFIG_V4L2_MEM2MEM_DEV. Bug: 151399858 Link: https://lore.kernel.org/linux-media/000601d600bb$0e2d4320$2a87c960$@samsung.com/T/#u Change-Id: I6481516d5197988e800853a491474b374ed61d36 Signed-off-by: Seungchul Kim <sc377.kim@samsung.com> |
||
|
|
6d164dd847 |
ANDROID: update ABI for 5.4.28
Leaf changes summary: 1 artifact changed
Changed leaf types summary: 1 leaf type changed
Removed/Changed/Added functions summary: 0 Removed, 0 Changed, 0 Added function
Removed/Changed/Added variables summary: 0 Removed, 0 Changed, 0 Added variable
'struct inode at fs.h:628:1' changed:
type size changed from 4736 to 4800 (in bits)
1 data member insertion:
'atomic64_t inode::i_sequence', at offset 2688 (in bits) at fs.h:701:1
there are data member changes:
861 impacted interfaces:
Change-Id: I58496998ce4fa926345882aa0ec89a7c029575b9
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
|
||
|
|
2341be6d9d |
This is the 5.4.28 stable release
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEZH8oZUiU471FcZm+ONu9yGCSaT4FAl57B4gACgkQONu9yGCS aT6KWQ//ToF4D+fDl1Muf4xuT83HnXe1yA1XFlyC54ZmEaxGFnFMSAgAvitBR7HC GEczXlvYbbVJl646ynTmX/LFz2d+V0i2zGv2QKN3xfd8GtDrAq/s+Ffhneaskk1k gKkIUzOyBq0nEAq5vXbCT4LbQDYGLw8BxxvurLim/YywSy5sfnw+hKkYE7cVVSOa rTIdt5qnuL4pxD8VeCAakoU6SajoxfFqS8pX79LC1UPY+++OaVcJjyJvM4APw0Kr e2E1BaeZxxCyY57pQY2oqhjG3cCfIcmfln19JRzMCVNo9+J3MEjZI5EUqP/Zcjwz 1V5FHqDmqMGfA9cn+CexDk79bTKW5+YOyYMEG2RJjV5alWJtvv3Wj6dRPVPpBhnJ O627IuIVGMsHuiEbjziKczaTtYYU5GTpJF+7COH0Jnud0q1w3/RjaJXspnb2Yozh L9BFqc4aonD+AyW2NXTxuuvc3hnD2YSVgLectm7LF/TbM2YFJVu4tounelFsGG6I CPH2VF0Tn+yNR2iWf8igvopvYPCjv+QFGXU6kFGxQxLQFTnXHqoO2sPF4awXx7Hv XF8LrJzPwissX5BbPyhUSIl0FEcmQi6UzSN1/6fpxVq+092OGVacMWpZvwqjUOV/ 3k/OrmcYsu7i2UUbms47YHAK0PRkL2ogKgxgcSO4aNZ7MfkXkm8= =kp1m -----END PGP SIGNATURE----- Merge 5.4.28 into android-5.4 Changes in 5.4.28 locks: fix a potential use-after-free problem when wakeup a waiter locks: reinstate locks_delete_block optimization spi: spi-omap2-mcspi: Support probe deferral for DMA channels drm/mediatek: Find the cursor plane instead of hard coding it phy: ti: gmii-sel: fix set of copy-paste errors phy: ti: gmii-sel: do not fail in case of gmii ARM: dts: dra7-l4: mark timer13-16 as pwm capable spi: qup: call spi_qup_pm_resume_runtime before suspending powerpc: Include .BTF section cifs: fix potential mismatch of UNC paths cifs: add missing mount option to /proc/mounts ARM: dts: dra7: Add "dma-ranges" property to PCIe RC DT nodes spi: pxa2xx: Add CS control clock quirk spi/zynqmp: remove entry that causes a cs glitch drm/exynos: dsi: propagate error value and silence meaningless warning drm/exynos: dsi: fix workaround for the legacy clock name drm/exynos: hdmi: don't leak enable HDMI_EN regulator if probe fails drivers/perf: fsl_imx8_ddr: Correct the CLEAR bit definition drivers/perf: arm_pmu_acpi: Fix incorrect checking of gicc pointer altera-stapl: altera_get_note: prevent write beyond end of 'key' dm bio record: save/restore bi_end_io and bi_integrity dm integrity: use dm_bio_record and dm_bio_restore riscv: avoid the PIC offset of static percpu data in module beyond 2G limits ASoC: stm32: sai: manage rebind issue spi: spi_register_controller(): free bus id on error paths riscv: Force flat memory model with no-mmu riscv: Fix range looking for kernel image memblock drm/amdgpu: clean wptr on wb when gpu recovery drm/amd/display: Clear link settings on MST disable connector drm/amd/display: fix dcc swath size calculations on dcn1 xenbus: req->body should be updated before req->state xenbus: req->err should be updated before req->state block, bfq: fix overwrite of bfq_group pointer in bfq_find_set_group() parse-maintainers: Mark as executable binderfs: use refcount for binder control devices too Revert "drm/fbdev: Fallback to non tiled mode if all tiles not present" USB: Disable LPM on WD19's Realtek Hub usb: quirks: add NO_LPM quirk for RTL8153 based ethernet adapters USB: serial: option: add ME910G1 ECM composition 0x110b usb: host: xhci-plat: add a shutdown USB: serial: pl2303: add device-id for HP LD381 usb: xhci: apply XHCI_SUSPEND_DELAY to AMD XHCI controller 1022:145c usb: typec: ucsi: displayport: Fix NULL pointer dereference usb: typec: ucsi: displayport: Fix a potential race during registration USB: cdc-acm: fix close_delay and closing_wait units in TIOCSSERIAL USB: cdc-acm: fix rounding error in TIOCSSERIAL ALSA: line6: Fix endless MIDI read loop ALSA: hda/realtek - Enable headset mic of Acer X2660G with ALC662 ALSA: hda/realtek - Enable the headset of Acer N50-600 with ALC662 ALSA: seq: virmidi: Fix running status after receiving sysex ALSA: seq: oss: Fix running status after receiving sysex ALSA: pcm: oss: Avoid plugin buffer overflow ALSA: pcm: oss: Remove WARNING from snd_pcm_plug_alloc() checks tty: fix compat TIOCGSERIAL leaking uninitialized memory tty: fix compat TIOCGSERIAL checking wrong function ptr iio: chemical: sps30: fix missing triggered buffer dependency iio: st_sensors: remap SMO8840 to LIS2DH12 iio: trigger: stm32-timer: disable master mode when stopping iio: accel: adxl372: Set iio_chan BE iio: magnetometer: ak8974: Fix negative raw values in sysfs iio: adc: stm32-dfsdm: fix sleep in atomic context iio: adc: at91-sama5d2_adc: fix differential channels in triggered mode iio: light: vcnl4000: update sampling periods for vcnl4200 iio: light: vcnl4000: update sampling periods for vcnl4040 mmc: rtsx_pci: Fix support for speed-modes that relies on tuning mmc: sdhci-of-at91: fix cd-gpios for SAMA5D2 mmc: sdhci-cadence: set SDHCI_QUIRK2_PRESET_VALUE_BROKEN for UniPhier CIFS: fiemap: do not return EINVAL if get nothing kbuild: Disable -Wpointer-to-enum-cast staging: rtl8188eu: Add device id for MERCUSYS MW150US v2 staging: greybus: loopback_test: fix poll-mask build breakage staging/speakup: fix get_word non-space look-ahead intel_th: msu: Fix the unexpected state warning intel_th: Fix user-visible error codes intel_th: pci: Add Elkhart Lake CPU support modpost: move the namespace field in Module.symvers last rtc: max8907: add missing select REGMAP_IRQ arm64: compat: Fix syscall number of compat_clock_getres xhci: Do not open code __print_symbolic() in xhci trace events btrfs: fix log context list corruption after rename whiteout error drm/amd/amdgpu: Fix GPR read from debugfs (v2) drm/lease: fix WARNING in idr_destroy stm class: sys-t: Fix the use of time_after() memcg: fix NULL pointer dereference in __mem_cgroup_usage_unregister_event mm, memcg: fix corruption on 64-bit divisor in memory.high throttling mm, memcg: throttle allocators based on ancestral memory.high mm/hotplug: fix hot remove failure in SPARSEMEM|!VMEMMAP case mm: do not allow MADV_PAGEOUT for CoW pages epoll: fix possible lost wakeup on epoll_ctl() path mm: slub: be more careful about the double cmpxchg of freelist mm, slub: prevent kmalloc_node crashes and memory leaks page-flags: fix a crash at SetPageError(THP_SWAP) x86/mm: split vmalloc_sync_all() futex: Fix inode life-time issue futex: Unbreak futex hashing ALSA: hda/realtek: Fix pop noise on ALC225 arm64: smp: fix smp_send_stop() behaviour arm64: smp: fix crash_smp_send_stop() behaviour nvmet-tcp: set MSG_MORE only if we actually have more to send drm/bridge: dw-hdmi: fix AVI frame colorimetry staging: greybus: loopback_test: fix potential path truncation staging: greybus: loopback_test: fix potential path truncations Linux 5.4.28 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com> Change-Id: I5d9d15d6236d8ab7374205c6ceda7efa7a9abb70 |
||
|
|
032407e4d6 |
ANDROID: kbuild: do not merge .section..* into .section in modules
Sections with double dots, e.g. .data..percpu are named intentionally to avoid matching rules that apply to .section.*. Change module section merging rules to skip these. Bug: 151981957 Change-Id: I23787aa40d69da1c6ca622a5f111704d2459e163 Signed-off-by: Sami Tolvanen <samitolvanen@google.com> |
||
|
|
462afcd6e7 | Linux 5.4.28 | ||
|
|
7b2cdbd67f |
staging: greybus: loopback_test: fix potential path truncations
commit ae62cf5eb2792d9a818c2d93728ed92119357017 upstream.
Newer GCC warns about possible truncations of two generated path names as
we're concatenating the configurable sysfs and debugfs path prefixes
with a filename and placing the results in buffers of the same size as
the maximum length of the prefixes.
snprintf(d->name, MAX_STR_LEN, "gb_loopback%u", dev_id);
snprintf(d->sysfs_entry, MAX_SYSFS_PATH, "%s%s/",
t->sysfs_prefix, d->name);
snprintf(d->debugfs_entry, MAX_SYSFS_PATH, "%sraw_latency_%s",
t->debugfs_prefix, d->name);
Fix this by separating the maximum path length from the maximum prefix
length and reducing the latter enough to fit the generated strings.
Note that we also need to reduce the device-name buffer size as GCC
isn't smart enough to figure out that we ever only used MAX_STR_LEN
bytes of it.
Fixes:
|
||
|
|
8e79f440ed |
staging: greybus: loopback_test: fix potential path truncation
commit f16023834863932f95dfad13fac3fc47f77d2f29 upstream.
Newer GCC warns about a possible truncation of a generated sysfs path
name as we're concatenating a directory path with a file name and
placing the result in a buffer that is half the size of the maximum
length of the directory path (which is user controlled).
loopback_test.c: In function 'open_poll_files':
loopback_test.c:651:31: warning: '%s' directive output may be truncated writing up to 511 bytes into a region of size 255 [-Wformat-truncation=]
651 | snprintf(buf, sizeof(buf), "%s%s", dev->sysfs_entry, "iteration_count");
| ^~
loopback_test.c:651:3: note: 'snprintf' output between 16 and 527 bytes into a destination of size 255
651 | snprintf(buf, sizeof(buf), "%s%s", dev->sysfs_entry, "iteration_count");
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Fix this by making sure the buffer is large enough the concatenated
strings.
Fixes:
|
||
|
|
58ffe6b024 |
drm/bridge: dw-hdmi: fix AVI frame colorimetry
commit e8dca30f7118461d47e1c3510d0e31b277439151 upstream.
CTA-861-F explicitly states that for RGB colorspace colorimetry should
be set to "none". Fix that.
Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Fixes:
|
||
|
|
c965a0299c |
nvmet-tcp: set MSG_MORE only if we actually have more to send
commit 98fd5c723730f560e5bea919a64ac5b83d45eb72 upstream.
When we send PDU data, we want to optimize the tcp stack
operation if we have more data to send. So when we set MSG_MORE
when:
- We have more fragments coming in the batch, or
- We have a more data to send in this PDU
- We don't have a data digest trailer
- We optimize with the SUCCESS flag and omit the NVMe completion
(used if sq_head pointer update is disabled)
This addresses a regression in QD=1 with SUCCESS flag optimization
as we unconditionally set MSG_MORE when we didn't actually have
more data to send.
Fixes:
|
||
|
|
d3eb4daa33 |
arm64: smp: fix crash_smp_send_stop() behaviour
commit f50b7dacccbab2b9e3ef18f52a6dcc18ed2050b9 upstream.
On a system configured to trigger a crash_kexec() reboot, when only one CPU
is online and another CPU panics while starting-up, crash_smp_send_stop()
will fail to send any STOP message to the other already online core,
resulting in fail to freeze and registers not properly saved.
Moreover even if the proper messages are sent (case CPUs > 2)
it will similarly fail to account for the booting CPU when executing
the final stop wait-loop, so potentially resulting in some CPU not
been waited for shutdown before rebooting.
A tangible effect of this behaviour can be observed when, after a panic
with kexec enabled and loaded, on the following reboot triggered by kexec,
the cpu that could not be successfully stopped fails to come back online:
[ 362.291022] ------------[ cut here ]------------
[ 362.291525] kernel BUG at arch/arm64/kernel/cpufeature.c:886!
[ 362.292023] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
[ 362.292400] Modules linked in:
[ 362.292970] CPU: 3 PID: 0 Comm: swapper/3 Kdump: loaded Not tainted 5.6.0-rc4-00003-gc780b890948a #105
[ 362.293136] Hardware name: Foundation-v8A (DT)
[ 362.293382] pstate: 200001c5 (nzCv dAIF -PAN -UAO)
[ 362.294063] pc : has_cpuid_feature+0xf0/0x348
[ 362.294177] lr : verify_local_elf_hwcaps+0x84/0xe8
[ 362.294280] sp : ffff800011b1bf60
[ 362.294362] x29: ffff800011b1bf60 x28: 0000000000000000
[ 362.294534] x27: 0000000000000000 x26: 0000000000000000
[ 362.294631] x25: 0000000000000000 x24: ffff80001189a25c
[ 362.294718] x23: 0000000000000000 x22: 0000000000000000
[ 362.294803] x21: ffff8000114aa018 x20: ffff800011156a00
[ 362.294897] x19: ffff800010c944a0 x18: 0000000000000004
[ 362.294987] x17: 0000000000000000 x16: 0000000000000000
[ 362.295073] x15: 00004e53b831ae3c x14: 00004e53b831ae3c
[ 362.295165] x13: 0000000000000384 x12: 0000000000000000
[ 362.295251] x11: 0000000000000000 x10: 00400032b5503510
[ 362.295334] x9 : 0000000000000000 x8 : ffff800010c7e204
[ 362.295426] x7 : 00000000410fd0f0 x6 : 0000000000000001
[ 362.295508] x5 : 00000000410fd0f0 x4 : 0000000000000000
[ 362.295592] x3 : 0000000000000000 x2 : ffff8000100939d8
[ 362.295683] x1 : 0000000000180420 x0 : 0000000000180480
[ 362.296011] Call trace:
[ 362.296257] has_cpuid_feature+0xf0/0x348
[ 362.296350] verify_local_elf_hwcaps+0x84/0xe8
[ 362.296424] check_local_cpu_capabilities+0x44/0x128
[ 362.296497] secondary_start_kernel+0xf4/0x188
[ 362.296998] Code: 52805001 72a00301 6b01001f 54000ec0 (d4210000)
[ 362.298652] SMP: stopping secondary CPUs
[ 362.300615] Starting crashdump kernel...
[ 362.301168] Bye!
[ 0.000000] Booting Linux on physical CPU 0x0000000003 [0x410fd0f0]
[ 0.000000] Linux version 5.6.0-rc4-00003-gc780b890948a (crimar01@e120937-lin) (gcc version 8.3.0 (GNU Toolchain for the A-profile Architecture 8.3-2019.03 (arm-rel-8.36))) #105 SMP PREEMPT Fri Mar 6 17:00:42 GMT 2020
[ 0.000000] Machine model: Foundation-v8A
[ 0.000000] earlycon: pl11 at MMIO 0x000000001c090000 (options '')
[ 0.000000] printk: bootconsole [pl11] enabled
.....
[ 0.138024] rcu: Hierarchical SRCU implementation.
[ 0.153472] its@2f020000: unable to locate ITS domain
[ 0.154078] its@2f020000: Unable to locate ITS domain
[ 0.157541] EFI services will not be available.
[ 0.175395] smp: Bringing up secondary CPUs ...
[ 0.209182] psci: failed to boot CPU1 (-22)
[ 0.209377] CPU1: failed to boot: -22
[ 0.274598] Detected PIPT I-cache on CPU2
[ 0.278707] GICv3: CPU2: found redistributor 1 region 0:0x000000002f120000
[ 0.285212] CPU2: Booted secondary processor 0x0000000001 [0x410fd0f0]
[ 0.369053] Detected PIPT I-cache on CPU3
[ 0.372947] GICv3: CPU3: found redistributor 2 region 0:0x000000002f140000
[ 0.378664] CPU3: Booted secondary processor 0x0000000002 [0x410fd0f0]
[ 0.401707] smp: Brought up 1 node, 3 CPUs
[ 0.404057] SMP: Total of 3 processors activated.
Make crash_smp_send_stop() account also for the online status of the
calling CPU while evaluating how many CPUs are effectively online: this way
the right number of STOPs is sent and all other stopped-cores's registers
are properly saved.
Fixes:
|
||
|
|
6080e0a9d1 |
arm64: smp: fix smp_send_stop() behaviour
commit d0bab0c39e32d39a8c5cddca72e5b4a3059fe050 upstream.
On a system with only one CPU online, when another one CPU panics while
starting-up, smp_send_stop() will fail to send any STOP message to the
other already online core, resulting in a system still responsive and
alive at the end of the panic procedure.
[ 186.700083] CPU3: shutdown
[ 187.075462] CPU2: shutdown
[ 187.162869] CPU1: shutdown
[ 188.689998] ------------[ cut here ]------------
[ 188.691645] kernel BUG at arch/arm64/kernel/cpufeature.c:886!
[ 188.692079] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
[ 188.692444] Modules linked in:
[ 188.693031] CPU: 3 PID: 0 Comm: swapper/3 Not tainted 5.6.0-rc4-00001-g338d25c35a98 #104
[ 188.693175] Hardware name: Foundation-v8A (DT)
[ 188.693492] pstate: 200001c5 (nzCv dAIF -PAN -UAO)
[ 188.694183] pc : has_cpuid_feature+0xf0/0x348
[ 188.694311] lr : verify_local_elf_hwcaps+0x84/0xe8
[ 188.694410] sp : ffff800011b1bf60
[ 188.694536] x29: ffff800011b1bf60 x28: 0000000000000000
[ 188.694707] x27: 0000000000000000 x26: 0000000000000000
[ 188.694801] x25: 0000000000000000 x24: ffff80001189a25c
[ 188.694905] x23: 0000000000000000 x22: 0000000000000000
[ 188.694996] x21: ffff8000114aa018 x20: ffff800011156a38
[ 188.695089] x19: ffff800010c944a0 x18: 0000000000000004
[ 188.695187] x17: 0000000000000000 x16: 0000000000000000
[ 188.695280] x15: 0000249dbde5431e x14: 0262cbe497efa1fa
[ 188.695371] x13: 0000000000000002 x12: 0000000000002592
[ 188.695472] x11: 0000000000000080 x10: 00400032b5503510
[ 188.695572] x9 : 0000000000000000 x8 : ffff800010c80204
[ 188.695659] x7 : 00000000410fd0f0 x6 : 0000000000000001
[ 188.695750] x5 : 00000000410fd0f0 x4 : 0000000000000000
[ 188.695836] x3 : 0000000000000000 x2 : ffff8000100939d8
[ 188.695919] x1 : 0000000000180420 x0 : 0000000000180480
[ 188.696253] Call trace:
[ 188.696410] has_cpuid_feature+0xf0/0x348
[ 188.696504] verify_local_elf_hwcaps+0x84/0xe8
[ 188.696591] check_local_cpu_capabilities+0x44/0x128
[ 188.696666] secondary_start_kernel+0xf4/0x188
[ 188.697150] Code: 52805001 72a00301 6b01001f 54000ec0 (d4210000)
[ 188.698639] ---[ end trace 3f12ca47652f7b72 ]---
[ 188.699160] Kernel panic - not syncing: Attempted to kill the idle task!
[ 188.699546] Kernel Offset: disabled
[ 188.699828] CPU features: 0x00004,20c02008
[ 188.700012] Memory Limit: none
[ 188.700538] ---[ end Kernel panic - not syncing: Attempted to kill the idle task! ]---
[root@arch ~]# echo Helo
Helo
[root@arch ~]# cat /proc/cpuinfo | grep proce
processor : 0
Make smp_send_stop() account also for the online status of the calling CPU
while evaluating how many CPUs are effectively online: this way, the right
number of STOPs is sent, so enforcing a proper freeze of the system at the
end of panic even under the above conditions.
Fixes:
|
||
|
|
c61417fef9 |
ALSA: hda/realtek: Fix pop noise on ALC225
commit 3b36b13d5e69d6f51ff1c55d1b404a74646c9757 upstream. Commit |
||
|
|
163489b643 |
futex: Unbreak futex hashing
commit 8d67743653dce5a0e7aa500fcccb237cde7ad88e upstream.
The recent futex inode life time fix changed the ordering of the futex key
union struct members, but forgot to adjust the hash function accordingly,
As a result the hashing omits the leading 64bit and even hashes beyond the
futex key causing a bad hash distribution which led to a ~100% performance
regression.
Hand in the futex key pointer instead of a random struct member and make
the size calculation based of the struct offset.
Fixes: 8019ad13ef7f ("futex: Fix inode life-time issue")
Reported-by: Rong Chen <rong.a.chen@intel.com>
Decoded-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Rong Chen <rong.a.chen@intel.com>
Link: https://lkml.kernel.org/r/87h7yy90ve.fsf@nanos.tec.linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||
|
|
553d46b07d |
futex: Fix inode life-time issue
commit 8019ad13ef7f64be44d4f892af9c840179009254 upstream. As reported by Jann, ihold() does not in fact guarantee inode persistence. And instead of making it so, replace the usage of inode pointers with a per boot, machine wide, unique inode identifier. This sequence number is global, but shared (file backed) futexes are rare enough that this should not become a performance issue. Reported-by: Jann Horn <jannh@google.com> Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
||
|
|
66f28e1105 |
x86/mm: split vmalloc_sync_all()
commit 763802b53a427ed3cbd419dbba255c414fdd9e7c upstream. Commit |
||
|
|
9dfed456e1 |
page-flags: fix a crash at SetPageError(THP_SWAP)
commit d72520ad004a8ce18a6ba6cde317f0081b27365a upstream. Commit |
||
|
|
32991c960d |
mm, slub: prevent kmalloc_node crashes and memory leaks
commit 0715e6c516f106ed553828a671d30ad9a3431536 upstream. Sachin reports [1] a crash in SLUB __slab_alloc(): BUG: Kernel NULL pointer dereference on read at 0x000073b0 Faulting instruction address: 0xc0000000003d55f4 Oops: Kernel access of bad area, sig: 11 [#1] LE PAGE_SIZE=64K MMU=Hash SMP NR_CPUS=2048 NUMA pSeries Modules linked in: CPU: 19 PID: 1 Comm: systemd Not tainted 5.6.0-rc2-next-20200218-autotest #1 NIP: c0000000003d55f4 LR: c0000000003d5b94 CTR: 0000000000000000 REGS: c0000008b37836d0 TRAP: 0300 Not tainted (5.6.0-rc2-next-20200218-autotest) MSR: 8000000000009033 <SF,EE,ME,IR,DR,RI,LE> CR: 24004844 XER: 00000000 CFAR: c00000000000dec4 DAR: 00000000000073b0 DSISR: 40000000 IRQMASK: 1 GPR00: c0000000003d5b94 c0000008b3783960 c00000000155d400 c0000008b301f500 GPR04: 0000000000000dc0 0000000000000002 c0000000003443d8 c0000008bb398620 GPR08: 00000008ba2f0000 0000000000000001 0000000000000000 0000000000000000 GPR12: 0000000024004844 c00000001ec52a00 0000000000000000 0000000000000000 GPR16: c0000008a1b20048 c000000001595898 c000000001750c18 0000000000000002 GPR20: c000000001750c28 c000000001624470 0000000fffffffe0 5deadbeef0000122 GPR24: 0000000000000001 0000000000000dc0 0000000000000002 c0000000003443d8 GPR28: c0000008b301f500 c0000008bb398620 0000000000000000 c00c000002287180 NIP ___slab_alloc+0x1f4/0x760 LR __slab_alloc+0x34/0x60 Call Trace: ___slab_alloc+0x334/0x760 (unreliable) __slab_alloc+0x34/0x60 __kmalloc_node+0x110/0x490 kvmalloc_node+0x58/0x110 mem_cgroup_css_online+0x108/0x270 online_css+0x48/0xd0 cgroup_apply_control_enable+0x2ec/0x4d0 cgroup_mkdir+0x228/0x5f0 kernfs_iop_mkdir+0x90/0xf0 vfs_mkdir+0x110/0x230 do_mkdirat+0xb0/0x1a0 system_call+0x5c/0x68 This is a PowerPC platform with following NUMA topology: available: 2 nodes (0-1) node 0 cpus: node 0 size: 0 MB node 0 free: 0 MB node 1 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 node 1 size: 35247 MB node 1 free: 30907 MB node distances: node 0 1 0: 10 40 1: 40 10 possible numa nodes: 0-31 This only happens with a mmotm patch "mm/memcontrol.c: allocate shrinker_map on appropriate NUMA node" [2] which effectively calls kmalloc_node for each possible node. SLUB however only allocates kmem_cache_node on online N_NORMAL_MEMORY nodes, and relies on node_to_mem_node to return such valid node for other nodes since commit |
||
|
|
6235157392 |
mm: slub: be more careful about the double cmpxchg of freelist
commit 5076190daded2197f62fe92cf69674488be44175 upstream.
This is just a cleanup addition to Jann's fix to properly update the
transaction ID for the slub slowpath in commit fd4d9c7d0c71 ("mm: slub:
add missing TID bump..").
The transaction ID is what protects us against any concurrent accesses,
but we should really also make sure to make the 'freelist' comparison
itself always use the same freelist value that we then used as the new
next free pointer.
Jann points out that if we do all of this carefully, we could skip the
transaction ID update for all the paths that only remove entries from
the lists, and only update the TID when adding entries (to avoid the ABA
issue with cmpxchg and list handling re-adding a previously seen value).
But this patch just does the "make sure to cmpxchg the same value we
used" rather than then try to be clever.
Acked-by: Jann Horn <jannh@google.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||
|
|
8e709bbe41 |
epoll: fix possible lost wakeup on epoll_ctl() path
commit 1b53734bd0b2feed8e7761771b2e76fc9126ea0c upstream. This fixes possible lost wakeup introduced by commit |