msm needs 5.5-rc4, go to the latest.
Showing the changes to include/linux (36 of 1204 files). Show all
Unified · Split
| @@ -19,6 +19,8 @@ struct ahci_host_priv; · 18 unmodified lines | |||
| 19 | struct platform_device; | 19 | struct platform_device; |
| 20 | struct scsi_host_template; | 20 | struct scsi_host_template; |
| 21 | 21 | ||
| 22 | int ahci_platform_enable_phys(struct ahci_host_priv *hpriv); | ||
| 23 | void ahci_platform_disable_phys(struct ahci_host_priv *hpriv); | ||
| 22 | int ahci_platform_enable_clks(struct ahci_host_priv *hpriv); | 24 | int ahci_platform_enable_clks(struct ahci_host_priv *hpriv); |
| 23 | void ahci_platform_disable_clks(struct ahci_host_priv *hpriv); | 25 | void ahci_platform_disable_clks(struct ahci_host_priv *hpriv); |
| 24 | int ahci_platform_enable_regulators(struct ahci_host_priv *hpriv); | 26 | int ahci_platform_enable_regulators(struct ahci_host_priv *hpriv); |
| @@ -470,6 +470,7 @@ extern struct bio *bio_copy_user_iov(struct request_queue *, · 469 unmodified lines | |||
| 470 | gfp_t); | 470 | gfp_t); |
| 471 | extern int bio_uncopy_user(struct bio *); | 471 | extern int bio_uncopy_user(struct bio *); |
| 472 | void zero_fill_bio_iter(struct bio *bio, struct bvec_iter iter); | 472 | void zero_fill_bio_iter(struct bio *bio, struct bvec_iter iter); |
| 473 | void bio_truncate(struct bio *bio, unsigned new_size); | ||
| 473 | 474 | ||
| 474 | static inline void zero_fill_bio(struct bio *bio) | 475 | static inline void zero_fill_bio(struct bio *bio) |
| 475 | { | 476 | { |
| @@ -328,6 +328,7 @@ struct queue_limits { · 327 unmodified lines | |||
| 328 | unsigned int max_sectors; | 328 | unsigned int max_sectors; |
| 329 | unsigned int max_segment_size; | 329 | unsigned int max_segment_size; |
| 330 | unsigned int physical_block_size; | 330 | unsigned int physical_block_size; |
| 331 | unsigned int logical_block_size; | ||
| 331 | unsigned int alignment_offset; | 332 | unsigned int alignment_offset; |
| 332 | unsigned int io_min; | 333 | unsigned int io_min; |
| 333 | unsigned int io_opt; | 334 | unsigned int io_opt; |
| @@ -338,7 +339,6 @@ struct queue_limits { · 4 unmodified lines | |||
| 338 | unsigned int discard_granularity; | 339 | unsigned int discard_granularity; |
| 339 | unsigned int discard_alignment; | 340 | unsigned int discard_alignment; |
| 340 | 341 | ||
| 341 | unsigned short logical_block_size; | ||
| 342 | unsigned short max_segments; | 342 | unsigned short max_segments; |
| 343 | unsigned short max_integrity_segments; | 343 | unsigned short max_integrity_segments; |
| 344 | unsigned short max_discard_segments; | 344 | unsigned short max_discard_segments; |
| @@ -1077,7 +1077,7 @@ extern void blk_queue_max_write_same_sectors(struct request_queue *q, · 732 unmodified lines | |||
| 1077 | unsigned int max_write_same_sectors); | 1077 | unsigned int max_write_same_sectors); |
| 1078 | extern void blk_queue_max_write_zeroes_sectors(struct request_queue *q, | 1078 | extern void blk_queue_max_write_zeroes_sectors(struct request_queue *q, |
| 1079 | unsigned int max_write_same_sectors); | 1079 | unsigned int max_write_same_sectors); |
| 1080 | extern void blk_queue_logical_block_size(struct request_queue *, unsigned short); | 1080 | extern void blk_queue_logical_block_size(struct request_queue *, unsigned int); |
| 1081 | extern void blk_queue_physical_block_size(struct request_queue *, unsigned int); | 1081 | extern void blk_queue_physical_block_size(struct request_queue *, unsigned int); |
| 1082 | extern void blk_queue_alignment_offset(struct request_queue *q, | 1082 | extern void blk_queue_alignment_offset(struct request_queue *q, |
| 1083 | unsigned int alignment); | 1083 | unsigned int alignment); |
| @@ -1291,7 +1291,7 @@ static inline unsigned int queue_max_segment_size(const struct request_queue *q) · 207 unmodified lines | |||
| 1291 | return q->limits.max_segment_size; | 1291 | return q->limits.max_segment_size; |
| 1292 | } | 1292 | } |
| 1293 | 1293 | ||
| 1294 | static inline unsigned short queue_logical_block_size(const struct request_queue *q) | 1294 | static inline unsigned queue_logical_block_size(const struct request_queue *q) |
| 1295 | { | 1295 | { |
| 1296 | int retval = 512; | 1296 | int retval = 512; |
| 1297 | 1297 | ||
| @@ -1301,7 +1301,7 @@ static inline unsigned short queue_logical_block_size(const struct request_queue · 3 unmodified lines | |||
| 1301 | return retval; | 1301 | return retval; |
| 1302 | } | 1302 | } |
| 1303 | 1303 | ||
| 1304 | static inline unsigned short bdev_logical_block_size(struct block_device *bdev) | 1304 | static inline unsigned int bdev_logical_block_size(struct block_device *bdev) |
| 1305 | { | 1305 | { |
| 1306 | return queue_logical_block_size(bdev_get_queue(bdev)); | 1306 | return queue_logical_block_size(bdev_get_queue(bdev)); |
| 1307 | } | 1307 | } |
| @@ -157,8 +157,8 @@ void bpf_cgroup_storage_link(struct bpf_cgroup_storage *storage, · 156 unmodified lines | |||
| 157 | struct cgroup *cgroup, | 157 | struct cgroup *cgroup, |
| 158 | enum bpf_attach_type type); | 158 | enum bpf_attach_type type); |
| 159 | void bpf_cgroup_storage_unlink(struct bpf_cgroup_storage *storage); | 159 | void bpf_cgroup_storage_unlink(struct bpf_cgroup_storage *storage); |
| 160 | int bpf_cgroup_storage_assign(struct bpf_prog *prog, struct bpf_map *map); | 160 | int bpf_cgroup_storage_assign(struct bpf_prog_aux *aux, struct bpf_map *map); |
| 161 | void bpf_cgroup_storage_release(struct bpf_prog *prog, struct bpf_map *map); | 161 | void bpf_cgroup_storage_release(struct bpf_prog_aux *aux, struct bpf_map *map); |
| 162 | 162 | ||
| 163 | int bpf_percpu_cgroup_storage_copy(struct bpf_map *map, void *key, void *value); | 163 | int bpf_percpu_cgroup_storage_copy(struct bpf_map *map, void *key, void *value); |
| 164 | int bpf_percpu_cgroup_storage_update(struct bpf_map *map, void *key, | 164 | int bpf_percpu_cgroup_storage_update(struct bpf_map *map, void *key, |
| @@ -360,9 +360,9 @@ static inline int cgroup_bpf_prog_query(const union bpf_attr *attr, · 195 unmodified lines | |||
| 360 | 360 | ||
| 361 | static inline void bpf_cgroup_storage_set( | 361 | static inline void bpf_cgroup_storage_set( |
| 362 | struct bpf_cgroup_storage *storage[MAX_BPF_CGROUP_STORAGE_TYPE]) {} | 362 | struct bpf_cgroup_storage *storage[MAX_BPF_CGROUP_STORAGE_TYPE]) {} |
| 363 | static inline int bpf_cgroup_storage_assign(struct bpf_prog *prog, | 363 | static inline int bpf_cgroup_storage_assign(struct bpf_prog_aux *aux, |
| 364 | struct bpf_map *map) { return 0; } | 364 | struct bpf_map *map) { return 0; } |
| 365 | static inline void bpf_cgroup_storage_release(struct bpf_prog *prog, | 365 | static inline void bpf_cgroup_storage_release(struct bpf_prog_aux *aux, |
| 366 | struct bpf_map *map) {} | 366 | struct bpf_map *map) {} |
| 367 | static inline struct bpf_cgroup_storage *bpf_cgroup_storage_alloc( | 367 | static inline struct bpf_cgroup_storage *bpf_cgroup_storage_alloc( |
| 368 | struct bpf_prog *prog, enum bpf_cgroup_storage_type stype) { return NULL; } | 368 | struct bpf_prog *prog, enum bpf_cgroup_storage_type stype) { return NULL; } |
| @@ -461,6 +461,7 @@ struct bpf_trampoline { · 460 unmodified lines | |||
| 461 | struct { | 461 | struct { |
| 462 | struct btf_func_model model; | 462 | struct btf_func_model model; |
| 463 | void *addr; | 463 | void *addr; |
| 464 | bool ftrace_managed; | ||
| 464 | } func; | 465 | } func; |
| 465 | /* list of BPF programs using this trampoline */ | 466 | /* list of BPF programs using this trampoline */ |
| 466 | struct hlist_head progs_hlist[BPF_TRAMP_MAX]; | 467 | struct hlist_head progs_hlist[BPF_TRAMP_MAX]; |
| @@ -817,6 +818,8 @@ struct bpf_prog * __must_check bpf_prog_inc_not_zero(struct bpf_prog *prog); · 350 unmodified lines | |||
| 817 | void bpf_prog_put(struct bpf_prog *prog); | 818 | void bpf_prog_put(struct bpf_prog *prog); |
| 818 | int __bpf_prog_charge(struct user_struct *user, u32 pages); | 819 | int __bpf_prog_charge(struct user_struct *user, u32 pages); |
| 819 | void __bpf_prog_uncharge(struct user_struct *user, u32 pages); | 820 | void __bpf_prog_uncharge(struct user_struct *user, u32 pages); |
| 821 | void __bpf_free_used_maps(struct bpf_prog_aux *aux, | ||
| 822 | struct bpf_map **used_maps, u32 len); | ||
| 820 | 823 | ||
| 821 | void bpf_prog_free_id(struct bpf_prog *prog, bool do_idr_lock); | 824 | void bpf_prog_free_id(struct bpf_prog *prog, bool do_idr_lock); |
| 822 | void bpf_map_free_id(struct bpf_map *map, bool do_idr_lock); | 825 | void bpf_map_free_id(struct bpf_map *map, bool do_idr_lock); |
| @@ -153,26 +153,4 @@ static inline void bvec_advance(const struct bio_vec *bvec, · 152 unmodified lines | |||
| 153 | } | 153 | } |
| 154 | } | 154 | } |
| 155 | 155 | ||
| 156 | /* | ||
| 157 | * Get the last single-page segment from the multi-page bvec and store it | ||
| 158 | * in @seg | ||
| 159 | */ | ||
| 160 | static inline void mp_bvec_last_segment(const struct bio_vec *bvec, | ||
| 161 | struct bio_vec *seg) | ||
| 162 | { | ||
| 163 | unsigned total = bvec->bv_offset + bvec->bv_len; | ||
| 164 | unsigned last_page = (total - 1) / PAGE_SIZE; | ||
| 165 | |||
| 166 | seg->bv_page = bvec->bv_page + last_page; | ||
| 167 | |||
| 168 | /* the whole segment is inside the last page */ | ||
| 169 | if (bvec->bv_offset >= last_page * PAGE_SIZE) { | ||
| 170 | seg->bv_offset = bvec->bv_offset % PAGE_SIZE; | ||
| 171 | seg->bv_len = bvec->bv_len; | ||
| 172 | } else { | ||
| 173 | seg->bv_offset = 0; | ||
| 174 | seg->bv_len = total - last_page * PAGE_SIZE; | ||
| 175 | } | ||
| 176 | } | ||
| 177 | |||
| 178 | #endif /* __LINUX_BVEC_ITER_H */ | 156 | #endif /* __LINUX_BVEC_ITER_H */ |
| @@ -18,6 +18,7 @@ · 17 unmodified lines | |||
| 18 | #include <linux/can/error.h> | 18 | #include <linux/can/error.h> |
| 19 | #include <linux/can/led.h> | 19 | #include <linux/can/led.h> |
| 20 | #include <linux/can/netlink.h> | 20 | #include <linux/can/netlink.h> |
| 21 | #include <linux/can/skb.h> | ||
| 21 | #include <linux/netdevice.h> | 22 | #include <linux/netdevice.h> |
| 22 | 23 | ||
| 23 | /* | 24 | /* |
| @@ -91,6 +92,36 @@ struct can_priv { · 67 unmodified lines | |||
| 91 | #define get_can_dlc(i) (min_t(__u8, (i), CAN_MAX_DLC)) | 92 | #define get_can_dlc(i) (min_t(__u8, (i), CAN_MAX_DLC)) |
| 92 | #define get_canfd_dlc(i) (min_t(__u8, (i), CANFD_MAX_DLC)) | 93 | #define get_canfd_dlc(i) (min_t(__u8, (i), CANFD_MAX_DLC)) |
| 93 | 94 | ||
| 95 | /* Check for outgoing skbs that have not been created by the CAN subsystem */ | ||
| 96 | static inline bool can_skb_headroom_valid(struct net_device *dev, | ||
| 97 | struct sk_buff *skb) | ||
| 98 | { | ||
| 99 | /* af_packet creates a headroom of HH_DATA_MOD bytes which is fine */ | ||
| 100 | if (WARN_ON_ONCE(skb_headroom(skb) < sizeof(struct can_skb_priv))) | ||
| 101 | return false; | ||
| 102 | |||
| 103 | /* af_packet does not apply CAN skb specific settings */ | ||
| 104 | if (skb->ip_summed == CHECKSUM_NONE) { | ||
| 105 | /* init headroom */ | ||
| 106 | can_skb_prv(skb)->ifindex = dev->ifindex; | ||
| 107 | can_skb_prv(skb)->skbcnt = 0; | ||
| 108 | |||
| 109 | skb->ip_summed = CHECKSUM_UNNECESSARY; | ||
| 110 | |||
| 111 | /* preform proper loopback on capable devices */ | ||
| 112 | if (dev->flags & IFF_ECHO) | ||
| 113 | skb->pkt_type = PACKET_LOOPBACK; | ||
| 114 | else | ||
| 115 | skb->pkt_type = PACKET_HOST; | ||
| 116 | |||
| 117 | skb_reset_mac_header(skb); | ||
| 118 | skb_reset_network_header(skb); | ||
| 119 | skb_reset_transport_header(skb); | ||
| 120 | } | ||
| 121 | |||
| 122 | return true; | ||
| 123 | } | ||
| 124 | |||
| 94 | /* Drop a given socketbuffer if it does not contain a valid CAN frame. */ | 125 | /* Drop a given socketbuffer if it does not contain a valid CAN frame. */ |
| 95 | static inline bool can_dropped_invalid_skb(struct net_device *dev, | 126 | static inline bool can_dropped_invalid_skb(struct net_device *dev, |
| 96 | struct sk_buff *skb) | 127 | struct sk_buff *skb) |
| @@ -108,6 +139,9 @@ static inline bool can_dropped_invalid_skb(struct net_device *dev, · 11 unmodified lines | |||
| 108 | } else | 139 | } else |
| 109 | goto inval_skb; | 140 | goto inval_skb; |
| 110 | 141 | ||
| 142 | if (!can_skb_headroom_valid(dev, skb)) | ||
| 143 | goto inval_skb; | ||
| 144 | |||
| 111 | return false; | 145 | return false; |
| 112 | 146 | ||
| 113 | inval_skb: | 147 | inval_skb: |
| @@ -595,17 +595,6 @@ struct governor_attr { · 594 unmodified lines | |||
| 595 | size_t count); | 595 | size_t count); |
| 596 | }; | 596 | }; |
| 597 | 597 | ||
| 598 | static inline bool cpufreq_this_cpu_can_update(struct cpufreq_policy *policy) | ||
| 599 | { | ||
| 600 | /* | ||
| 601 | * Allow remote callbacks if: | ||
| 602 | * - dvfs_possible_from_any_cpu flag is set | ||
| 603 | * - the local and remote CPUs share cpufreq policy | ||
| 604 | */ | ||
| 605 | return policy->dvfs_possible_from_any_cpu || | ||
| 606 | cpumask_test_cpu(smp_processor_id(), policy->cpus); | ||
| 607 | } | ||
| 608 | |||
| 609 | /********************************************************************* | 598 | /********************************************************************* |
| 610 | * FREQUENCY TABLE HELPERS * | 599 | * FREQUENCY TABLE HELPERS * |
| 611 | *********************************************************************/ | 600 | *********************************************************************/ |
| @@ -1364,8 +1364,11 @@ static inline int dma_get_slave_caps(struct dma_chan *chan, · 1363 unmodified lines | |||
| 1364 | static inline int dmaengine_desc_set_reuse(struct dma_async_tx_descriptor *tx) | 1364 | static inline int dmaengine_desc_set_reuse(struct dma_async_tx_descriptor *tx) |
| 1365 | { | 1365 | { |
| 1366 | struct dma_slave_caps caps; | 1366 | struct dma_slave_caps caps; |
| 1367 | int ret; | ||
| 1367 | 1368 | ||
| 1368 | dma_get_slave_caps(tx->chan, &caps); | 1369 | ret = dma_get_slave_caps(tx->chan, &caps); |
| 1370 | if (ret) | ||
| 1371 | return ret; | ||
| 1369 | 1372 | ||
| 1370 | if (caps.descriptor_reuse) { | 1373 | if (caps.descriptor_reuse) { |
| 1371 | tx->flags |= DMA_CTRL_REUSE; | 1374 | tx->flags |= DMA_CTRL_REUSE; |
| @@ -824,7 +824,7 @@ typedef struct { · 823 unmodified lines | |||
| 824 | __aligned_u64 image_size; | 824 | __aligned_u64 image_size; |
| 825 | unsigned int image_code_type; | 825 | unsigned int image_code_type; |
| 826 | unsigned int image_data_type; | 826 | unsigned int image_data_type; |
| 827 | unsigned long unload; | 827 | u32 unload; |
| 828 | } efi_loaded_image_32_t; | 828 | } efi_loaded_image_32_t; |
| 829 | 829 | ||
| 830 | typedef struct { | 830 | typedef struct { |
| @@ -840,14 +840,14 @@ typedef struct { · 9 unmodified lines | |||
| 840 | __aligned_u64 image_size; | 840 | __aligned_u64 image_size; |
| 841 | unsigned int image_code_type; | 841 | unsigned int image_code_type; |
| 842 | unsigned int image_data_type; | 842 | unsigned int image_data_type; |
| 843 | unsigned long unload; | 843 | u64 unload; |
| 844 | } efi_loaded_image_64_t; | 844 | } efi_loaded_image_64_t; |
| 845 | 845 | ||
| 846 | typedef struct { | 846 | typedef struct { |
| 847 | u32 revision; | 847 | u32 revision; |
| 848 | void *parent_handle; | 848 | efi_handle_t parent_handle; |
| 849 | efi_system_table_t *system_table; | 849 | efi_system_table_t *system_table; |
| 850 | void *device_handle; | 850 | efi_handle_t device_handle; |
| 851 | void *file_path; | 851 | void *file_path; |
| 852 | void *reserved; | 852 | void *reserved; |
| 853 | u32 load_options_size; | 853 | u32 load_options_size; |
| @@ -856,7 +856,7 @@ typedef struct { · 2 unmodified lines | |||
| 856 | __aligned_u64 image_size; | 856 | __aligned_u64 image_size; |
| 857 | unsigned int image_code_type; | 857 | unsigned int image_code_type; |
| 858 | unsigned int image_data_type; | 858 | unsigned int image_data_type; |
| 859 | unsigned long unload; | 859 | efi_status_t (*unload)(efi_handle_t image_handle); |
| 860 | } efi_loaded_image_t; | 860 | } efi_loaded_image_t; |
| 861 | 861 | ||
| 862 | 862 | ||
| @@ -24,6 +24,14 @@ static inline struct ethhdr *eth_hdr(const struct sk_buff *skb) · 23 unmodified lines | |||
| 24 | return (struct ethhdr *)skb_mac_header(skb); | 24 | return (struct ethhdr *)skb_mac_header(skb); |
| 25 | } | 25 | } |
| 26 | 26 | ||
| 27 | /* Prefer this version in TX path, instead of | ||
| 28 | * skb_reset_mac_header() + eth_hdr() | ||
| 29 | */ | ||
| 30 | static inline struct ethhdr *skb_eth_hdr(const struct sk_buff *skb) | ||
| 31 | { | ||
| 32 | return (struct ethhdr *)skb->data; | ||
| 33 | } | ||
| 34 | |||
| 27 | static inline struct ethhdr *inner_eth_hdr(const struct sk_buff *skb) | 35 | static inline struct ethhdr *inner_eth_hdr(const struct sk_buff *skb) |
| 28 | { | 36 | { |
| 29 | return (struct ethhdr *)skb_inner_mac_header(skb); | 37 | return (struct ethhdr *)skb_inner_mac_header(skb); |
| @@ -457,7 +457,7 @@ struct jbd2_revoke_table_s; · 456 unmodified lines | |||
| 457 | * @h_journal: Which journal handle belongs to - used iff h_reserved set. | 457 | * @h_journal: Which journal handle belongs to - used iff h_reserved set. |
| 458 | * @h_rsv_handle: Handle reserved for finishing the logical operation. | 458 | * @h_rsv_handle: Handle reserved for finishing the logical operation. |
| 459 | * @h_total_credits: Number of remaining buffers we are allowed to add to | 459 | * @h_total_credits: Number of remaining buffers we are allowed to add to |
| 460 | journal. These are dirty buffers and revoke descriptor blocks. | 460 | * journal. These are dirty buffers and revoke descriptor blocks. |
| 461 | * @h_revoke_credits: Number of remaining revoke records available for handle | 461 | * @h_revoke_credits: Number of remaining revoke records available for handle |
| 462 | * @h_ref: Reference count on this handle. | 462 | * @h_ref: Reference count on this handle. |
| 463 | * @h_err: Field for caller's use to track errors through large fs operations. | 463 | * @h_err: Field for caller's use to track errors through large fs operations. |
| @@ -205,20 +205,23 @@ static inline void *kasan_reset_tag(const void *addr) · 204 unmodified lines | |||
| 205 | #endif /* CONFIG_KASAN_SW_TAGS */ | 205 | #endif /* CONFIG_KASAN_SW_TAGS */ |
| 206 | 206 | ||
| 207 | #ifdef CONFIG_KASAN_VMALLOC | 207 | #ifdef CONFIG_KASAN_VMALLOC |
| 208 | int kasan_populate_vmalloc(unsigned long requested_size, | 208 | int kasan_populate_vmalloc(unsigned long addr, unsigned long size); |
| 209 | struct vm_struct *area); | 209 | void kasan_poison_vmalloc(const void *start, unsigned long size); |
| 210 | void kasan_poison_vmalloc(void *start, unsigned long size); | 210 | void kasan_unpoison_vmalloc(const void *start, unsigned long size); |
| 211 | void kasan_release_vmalloc(unsigned long start, unsigned long end, | 211 | void kasan_release_vmalloc(unsigned long start, unsigned long end, |
| 212 | unsigned long free_region_start, | 212 | unsigned long free_region_start, |
| 213 | unsigned long free_region_end); | 213 | unsigned long free_region_end); |
| 214 | #else | 214 | #else |
| 215 | static inline int kasan_populate_vmalloc(unsigned long requested_size, | 215 | static inline int kasan_populate_vmalloc(unsigned long start, |
| 216 | struct vm_struct *area) | 216 | unsigned long size) |
| 217 | { | 217 | { |
| 218 | return 0; | 218 | return 0; |
| 219 | } | 219 | } |
| 220 | 220 | ||
| 221 | static inline void kasan_poison_vmalloc(void *start, unsigned long size) {} | 221 | static inline void kasan_poison_vmalloc(const void *start, unsigned long size) |
| 222 | { } | ||
| 223 | static inline void kasan_unpoison_vmalloc(const void *start, unsigned long size) | ||
| 224 | { } | ||
| 222 | static inline void kasan_release_vmalloc(unsigned long start, | 225 | static inline void kasan_release_vmalloc(unsigned long start, |
| 223 | unsigned long end, | 226 | unsigned long end, |
| 224 | unsigned long free_region_start, | 227 | unsigned long free_region_start, |
| @@ -79,15 +79,6 @@ · 78 unmodified lines | |||
| 79 | */ | 79 | */ |
| 80 | #define round_down(x, y) ((x) & ~__round_mask(x, y)) | 80 | #define round_down(x, y) ((x) & ~__round_mask(x, y)) |
| 81 | 81 | ||
| 82 | /** | ||
| 83 | * FIELD_SIZEOF - get the size of a struct's field | ||
| 84 | * @t: the target struct | ||
| 85 | * @f: the target struct's field | ||
| 86 | * Return: the size of @f in the struct definition without having a | ||
| 87 | * declared instance of @t. | ||
| 88 | */ | ||
| 89 | #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f)) | ||
| 90 | |||
| 91 | #define typeof_member(T, m) typeof(((T*)0)->m) | 82 | #define typeof_member(T, m) typeof(((T*)0)->m) |
| 92 | 83 | ||
| 93 | #define DIV_ROUND_UP __KERNEL_DIV_ROUND_UP | 84 | #define DIV_ROUND_UP __KERNEL_DIV_ROUND_UP |
| @@ -1175,6 +1175,7 @@ extern unsigned int ata_do_dev_read_id(struct ata_device *dev, · 1174 unmodified lines | |||
| 1175 | struct ata_taskfile *tf, u16 *id); | 1175 | struct ata_taskfile *tf, u16 *id); |
| 1176 | extern void ata_qc_complete(struct ata_queued_cmd *qc); | 1176 | extern void ata_qc_complete(struct ata_queued_cmd *qc); |
| 1177 | extern int ata_qc_complete_multiple(struct ata_port *ap, u64 qc_active); | 1177 | extern int ata_qc_complete_multiple(struct ata_port *ap, u64 qc_active); |
| 1178 | extern u64 ata_qc_get_active(struct ata_port *ap); | ||
| 1178 | extern void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd); | 1179 | extern void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd); |
| 1179 | extern int ata_std_bios_param(struct scsi_device *sdev, | 1180 | extern int ata_std_bios_param(struct scsi_device *sdev, |
| 1180 | struct block_device *bdev, | 1181 | struct block_device *bdev, |
| @@ -122,8 +122,8 @@ static inline bool movable_node_is_enabled(void) · 121 unmodified lines | |||
| 122 | 122 | ||
| 123 | extern void arch_remove_memory(int nid, u64 start, u64 size, | 123 | extern void arch_remove_memory(int nid, u64 start, u64 size, |
| 124 | struct vmem_altmap *altmap); | 124 | struct vmem_altmap *altmap); |
| 125 | extern void __remove_pages(struct zone *zone, unsigned long start_pfn, | 125 | extern void __remove_pages(unsigned long start_pfn, unsigned long nr_pages, |
| 126 | unsigned long nr_pages, struct vmem_altmap *altmap); | 126 | struct vmem_altmap *altmap); |
| 127 | 127 | ||
| 128 | /* reasonably generic interface to expand the physical pages */ | 128 | /* reasonably generic interface to expand the physical pages */ |
| 129 | extern int __add_pages(int nid, unsigned long start_pfn, unsigned long nr_pages, | 129 | extern int __add_pages(int nid, unsigned long start_pfn, unsigned long nr_pages, |
| @@ -342,6 +342,9 @@ extern int add_memory(int nid, u64 start, u64 size); · 212 unmodified lines | |||
| 342 | extern int add_memory_resource(int nid, struct resource *resource); | 342 | extern int add_memory_resource(int nid, struct resource *resource); |
| 343 | extern void move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn, | 343 | extern void move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn, |
| 344 | unsigned long nr_pages, struct vmem_altmap *altmap); | 344 | unsigned long nr_pages, struct vmem_altmap *altmap); |
| 345 | extern void remove_pfn_range_from_zone(struct zone *zone, | ||
| 346 | unsigned long start_pfn, | ||
| 347 | unsigned long nr_pages); | ||
| 345 | extern bool is_memblock_offlined(struct memory_block *mem); | 348 | extern bool is_memblock_offlined(struct memory_block *mem); |
| 346 | extern int sparse_add_section(int nid, unsigned long pfn, | 349 | extern int sparse_add_section(int nid, unsigned long pfn, |
| 347 | unsigned long nr_pages, struct vmem_altmap *altmap); | 350 | unsigned long nr_pages, struct vmem_altmap *altmap); |
| @@ -46,6 +46,14 @@ · 45 unmodified lines | |||
| 46 | 46 | ||
| 47 | #define RTC_AL_SEC 0x0018 | 47 | #define RTC_AL_SEC 0x0018 |
| 48 | 48 | ||
| 49 | #define RTC_AL_SEC_MASK 0x003f | ||
| 50 | #define RTC_AL_MIN_MASK 0x003f | ||
| 51 | #define RTC_AL_HOU_MASK 0x001f | ||
| 52 | #define RTC_AL_DOM_MASK 0x001f | ||
| 53 | #define RTC_AL_DOW_MASK 0x0007 | ||
| 54 | #define RTC_AL_MTH_MASK 0x000f | ||
| 55 | #define RTC_AL_YEA_MASK 0x007f | ||
| 56 | |||
| 49 | #define RTC_PDN2 0x002e | 57 | #define RTC_PDN2 0x002e |
| 50 | #define RTC_PDN2_PWRON_ALARM BIT(4) | 58 | #define RTC_PDN2_PWRON_ALARM BIT(4) |
| 51 | 59 | ||
| @@ -2621,6 +2621,9 @@ static inline int vm_fault_to_errno(vm_fault_t vm_fault, int foll_flags) · 2620 unmodified lines | |||
| 2621 | typedef int (*pte_fn_t)(pte_t *pte, unsigned long addr, void *data); | 2621 | typedef int (*pte_fn_t)(pte_t *pte, unsigned long addr, void *data); |
| 2622 | extern int apply_to_page_range(struct mm_struct *mm, unsigned long address, | 2622 | extern int apply_to_page_range(struct mm_struct *mm, unsigned long address, |
| 2623 | unsigned long size, pte_fn_t fn, void *data); | 2623 | unsigned long size, pte_fn_t fn, void *data); |
| 2624 | extern int apply_to_existing_page_range(struct mm_struct *mm, | ||
| 2625 | unsigned long address, unsigned long size, | ||
| 2626 | pte_fn_t fn, void *data); | ||
| 2624 | 2627 | ||
| 2625 | #ifdef CONFIG_PAGE_POISONING | 2628 | #ifdef CONFIG_PAGE_POISONING |
| 2626 | extern bool page_poisoning_enabled(void); | 2629 | extern bool page_poisoning_enabled(void); |
| @@ -2655,13 +2658,25 @@ static inline bool want_init_on_free(void) · 28 unmodified lines | |||
| 2655 | !page_poisoning_enabled(); | 2658 | !page_poisoning_enabled(); |
| 2656 | } | 2659 | } |
| 2657 | 2660 | ||
| 2658 | #ifdef CONFIG_DEBUG_PAGEALLOC_ENABLE_DEFAULT | 2661 | #ifdef CONFIG_DEBUG_PAGEALLOC |
| 2659 | DECLARE_STATIC_KEY_TRUE(_debug_pagealloc_enabled); | 2662 | extern void init_debug_pagealloc(void); |
| 2660 | #else | 2663 | #else |
| 2661 | DECLARE_STATIC_KEY_FALSE(_debug_pagealloc_enabled); | 2664 | static inline void init_debug_pagealloc(void) {} |
| 2662 | #endif | 2665 | #endif |
| 2666 | extern bool _debug_pagealloc_enabled_early; | ||
| 2667 | DECLARE_STATIC_KEY_FALSE(_debug_pagealloc_enabled); | ||
| 2663 | 2668 | ||
| 2664 | static inline bool debug_pagealloc_enabled(void) | 2669 | static inline bool debug_pagealloc_enabled(void) |
| 2670 | { | ||
| 2671 | return IS_ENABLED(CONFIG_DEBUG_PAGEALLOC) && | ||
| 2672 | _debug_pagealloc_enabled_early; | ||
| 2673 | } | ||
| 2674 | |||
| 2675 | /* | ||
| 2676 | * For use in fast paths after init_debug_pagealloc() has run, or when a | ||
| 2677 | * false negative result is not harmful when called too early. | ||
| 2678 | */ | ||
| 2679 | static inline bool debug_pagealloc_enabled_static(void) | ||
| 2665 | { | 2680 | { |
| 2666 | if (!IS_ENABLED(CONFIG_DEBUG_PAGEALLOC)) | 2681 | if (!IS_ENABLED(CONFIG_DEBUG_PAGEALLOC)) |
| 2667 | return false; | 2682 | return false; |
| @@ -215,9 +215,8 @@ enum node_stat_item { · 214 unmodified lines | |||
| 215 | NR_INACTIVE_FILE, /* " " " " " */ | 215 | NR_INACTIVE_FILE, /* " " " " " */ |
| 216 | NR_ACTIVE_FILE, /* " " " " " */ | 216 | NR_ACTIVE_FILE, /* " " " " " */ |
| 217 | NR_UNEVICTABLE, /* " " " " " */ | 217 | NR_UNEVICTABLE, /* " " " " " */ |
| 218 | NR_SLAB_RECLAIMABLE, /* Please do not reorder this item */ | 218 | NR_SLAB_RECLAIMABLE, |
| 219 | NR_SLAB_UNRECLAIMABLE, /* and this one without looking at | 219 | NR_SLAB_UNRECLAIMABLE, |
| 220 | * memcg_flush_percpu_vmstats() first. */ | ||
| 221 | NR_ISOLATED_ANON, /* Temporary isolated pages from anon lru */ | 220 | NR_ISOLATED_ANON, /* Temporary isolated pages from anon lru */ |
| 222 | NR_ISOLATED_FILE, /* Temporary isolated pages from file lru */ | 221 | NR_ISOLATED_FILE, /* Temporary isolated pages from file lru */ |
| 223 | WORKINGSET_NODES, | 222 | WORKINGSET_NODES, |
| @@ -587,9 +587,9 @@ struct platform_device_id { · 586 unmodified lines | |||
| 587 | #define MDIO_NAME_SIZE 32 | 587 | #define MDIO_NAME_SIZE 32 |
| 588 | #define MDIO_MODULE_PREFIX "mdio:" | 588 | #define MDIO_MODULE_PREFIX "mdio:" |
| 589 | 589 | ||
| 590 | #define MDIO_ID_FMT "%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d%d" | 590 | #define MDIO_ID_FMT "%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u%u" |
| 591 | #define MDIO_ID_ARGS(_id) \ | 591 | #define MDIO_ID_ARGS(_id) \ |
| 592 | (_id)>>31, ((_id)>>30) & 1, ((_id)>>29) & 1, ((_id)>>28) & 1, \ | 592 | ((_id)>>31) & 1, ((_id)>>30) & 1, ((_id)>>29) & 1, ((_id)>>28) & 1, \ |
| 593 | ((_id)>>27) & 1, ((_id)>>26) & 1, ((_id)>>25) & 1, ((_id)>>24) & 1, \ | 593 | ((_id)>>27) & 1, ((_id)>>26) & 1, ((_id)>>25) & 1, ((_id)>>24) & 1, \ |
| 594 | ((_id)>>23) & 1, ((_id)>>22) & 1, ((_id)>>21) & 1, ((_id)>>20) & 1, \ | 594 | ((_id)>>23) & 1, ((_id)>>22) & 1, ((_id)>>21) & 1, ((_id)>>20) & 1, \ |
| 595 | ((_id)>>19) & 1, ((_id)>>18) & 1, ((_id)>>17) & 1, ((_id)>>16) & 1, \ | 595 | ((_id)>>19) & 1, ((_id)>>18) & 1, ((_id)>>17) & 1, ((_id)>>16) & 1, \ |
| @@ -40,7 +40,7 @@ typedef enum { · 39 unmodified lines | |||
| 40 | FL_READING, | 40 | FL_READING, |
| 41 | FL_CACHEDPRG, | 41 | FL_CACHEDPRG, |
| 42 | /* These 4 come from onenand_state_t, which has been unified here */ | 42 | /* These 4 come from onenand_state_t, which has been unified here */ |
| 43 | FL_RESETING, | 43 | FL_RESETTING, |
| 44 | FL_OTPING, | 44 | FL_OTPING, |
| 45 | FL_PREPARING_ERASE, | 45 | FL_PREPARING_ERASE, |
| 46 | FL_VERIFYING_ERASE, | 46 | FL_VERIFYING_ERASE, |
| @@ -34,7 +34,6 @@ enum {LAST_NORM, LAST_ROOT, LAST_DOT, LAST_DOTDOT, LAST_BIND}; · 33 unmodified lines | |||
| 34 | 34 | ||
| 35 | /* internal use only */ | 35 | /* internal use only */ |
| 36 | #define LOOKUP_PARENT 0x0010 | 36 | #define LOOKUP_PARENT 0x0010 |
| 37 | #define LOOKUP_NO_REVAL 0x0080 | ||
| 38 | #define LOOKUP_JUMPED 0x1000 | 37 | #define LOOKUP_JUMPED 0x1000 |
| 39 | #define LOOKUP_ROOT 0x2000 | 38 | #define LOOKUP_ROOT 0x2000 |
| 40 | #define LOOKUP_ROOT_GRABBED 0x0008 | 39 | #define LOOKUP_ROOT_GRABBED 0x0008 |
| @@ -1775,7 +1775,7 @@ enum netdev_priv_flags { · 1774 unmodified lines | |||
| 1775 | * for hardware timestamping | 1775 | * for hardware timestamping |
| 1776 | * @sfp_bus: attached &struct sfp_bus structure. | 1776 | * @sfp_bus: attached &struct sfp_bus structure. |
| 1777 | * @qdisc_tx_busylock_key: lockdep class annotating Qdisc->busylock | 1777 | * @qdisc_tx_busylock_key: lockdep class annotating Qdisc->busylock |
| 1778 | spinlock | 1778 | * spinlock |
| 1779 | * @qdisc_running_key: lockdep class annotating Qdisc->running seqcount | 1779 | * @qdisc_running_key: lockdep class annotating Qdisc->running seqcount |
| 1780 | * @qdisc_xmit_lock_key: lockdep class annotating | 1780 | * @qdisc_xmit_lock_key: lockdep class annotating |
| 1781 | * netdev_queue->_xmit_lock spinlock | 1781 | * netdev_queue->_xmit_lock spinlock |
| @@ -12,6 +12,7 @@ · 11 unmodified lines | |||
| 12 | #include <linux/of.h> | 12 | #include <linux/of.h> |
| 13 | 13 | ||
| 14 | #if IS_ENABLED(CONFIG_OF_MDIO) | 14 | #if IS_ENABLED(CONFIG_OF_MDIO) |
| 15 | extern bool of_mdiobus_child_is_phy(struct device_node *child); | ||
| 15 | extern int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np); | 16 | extern int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np); |
| 16 | extern struct phy_device *of_phy_find_device(struct device_node *phy_np); | 17 | extern struct phy_device *of_phy_find_device(struct device_node *phy_np); |
| 17 | extern struct phy_device *of_phy_connect(struct net_device *dev, | 18 | extern struct phy_device *of_phy_connect(struct net_device *dev, |
| @@ -54,6 +55,11 @@ static inline int of_mdio_parse_addr(struct device *dev, · 36 unmodified lines | |||
| 54 | } | 55 | } |
| 55 | 56 | ||
| 56 | #else /* CONFIG_OF_MDIO */ | 57 | #else /* CONFIG_OF_MDIO */ |
| 58 | static inline bool of_mdiobus_child_is_phy(struct device_node *child) | ||
| 59 | { | ||
| 60 | return false; | ||
| 61 | } | ||
| 62 | |||
| 57 | static inline int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) | 63 | static inline int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np) |
| 58 | { | 64 | { |
| 59 | /* | 65 | /* |
| @@ -1000,7 +1000,7 @@ int phy_modify_paged_changed(struct phy_device *phydev, int page, u32 regnum, · 999 unmodified lines | |||
| 1000 | int phy_modify_paged(struct phy_device *phydev, int page, u32 regnum, | 1000 | int phy_modify_paged(struct phy_device *phydev, int page, u32 regnum, |
| 1001 | u16 mask, u16 set); | 1001 | u16 mask, u16 set); |
| 1002 | 1002 | ||
| 1003 | struct phy_device *phy_device_create(struct mii_bus *bus, int addr, int phy_id, | 1003 | struct phy_device *phy_device_create(struct mii_bus *bus, int addr, u32 phy_id, |
| 1004 | bool is_c45, | 1004 | bool is_c45, |
| 1005 | struct phy_c45_device_ids *c45_ids); | 1005 | struct phy_c45_device_ids *c45_ids); |
| 1006 | #if IS_ENABLED(CONFIG_PHYLIB) | 1006 | #if IS_ENABLED(CONFIG_PHYLIB) |
| @@ -49,6 +49,7 @@ struct sysc_regbits { · 48 unmodified lines | |||
| 49 | s8 emufree_shift; | 49 | s8 emufree_shift; |
| 50 | }; | 50 | }; |
| 51 | 51 | ||
| 52 | #define SYSC_QUIRK_FORCE_MSTANDBY BIT(20) | ||
| 52 | #define SYSC_MODULE_QUIRK_AESS BIT(19) | 53 | #define SYSC_MODULE_QUIRK_AESS BIT(19) |
| 53 | #define SYSC_MODULE_QUIRK_SGX BIT(18) | 54 | #define SYSC_MODULE_QUIRK_SGX BIT(18) |
| 54 | #define SYSC_MODULE_QUIRK_HDQ1W BIT(17) | 55 | #define SYSC_MODULE_QUIRK_HDQ1W BIT(17) |
| @@ -69,29 +69,32 @@ struct posix_clock_operations { · 68 unmodified lines | |||
| 69 | * | 69 | * |
| 70 | * @ops: Functional interface to the clock | 70 | * @ops: Functional interface to the clock |
| 71 | * @cdev: Character device instance for this clock | 71 | * @cdev: Character device instance for this clock |
| 72 | * @kref: Reference count. | 72 | * @dev: Pointer to the clock's device. |
| 73 | * @rwsem: Protects the 'zombie' field from concurrent access. | 73 | * @rwsem: Protects the 'zombie' field from concurrent access. |
| 74 | * @zombie: If 'zombie' is true, then the hardware has disappeared. | 74 | * @zombie: If 'zombie' is true, then the hardware has disappeared. |
| 75 | * @release: A function to free the structure when the reference count reaches | ||
| 76 | * zero. May be NULL if structure is statically allocated. | ||
| 77 | * | 75 | * |
| 78 | * Drivers should embed their struct posix_clock within a private | 76 | * Drivers should embed their struct posix_clock within a private |
| 79 | * structure, obtaining a reference to it during callbacks using | 77 | * structure, obtaining a reference to it during callbacks using |
| 80 | * container_of(). | 78 | * container_of(). |
| 79 | * | ||
| 80 | * Drivers should supply an initialized but not exposed struct device | ||
| 81 | * to posix_clock_register(). It is used to manage lifetime of the | ||
| 82 | * driver's private structure. It's 'release' field should be set to | ||
| 83 | * a release function for this private structure. | ||
| 81 | */ | 84 | */ |
| 82 | struct posix_clock { | 85 | struct posix_clock { |
| 83 | struct posix_clock_operations ops; | 86 | struct posix_clock_operations ops; |
| 84 | struct cdev cdev; | 87 | struct cdev cdev; |
| 85 | struct kref kref; | 88 | struct device *dev; |
| 86 | struct rw_semaphore rwsem; | 89 | struct rw_semaphore rwsem; |
| 87 | bool zombie; | 90 | bool zombie; |
| 88 | void (*release)(struct posix_clock *clk); | ||
| 89 | }; | 91 | }; |
| 90 | 92 | ||
| 91 | /** | 93 | /** |
| 92 | * posix_clock_register() - register a new clock | 94 | * posix_clock_register() - register a new clock |
| 93 | * @clk: Pointer to the clock. Caller must provide 'ops' and 'release' | 95 | * @clk: Pointer to the clock. Caller must provide 'ops' field |
| 94 | * @devid: Allocated device id | 96 | * @dev: Pointer to the initialized device. Caller must provide |
| 97 | * 'release' field | ||
| 95 | * | 98 | * |
| 96 | * A clock driver calls this function to register itself with the | 99 | * A clock driver calls this function to register itself with the |
| 97 | * clock device subsystem. If 'clk' points to dynamically allocated | 100 | * clock device subsystem. If 'clk' points to dynamically allocated |
| @@ -100,7 +103,7 @@ struct posix_clock { · 2 unmodified lines | |||
| 100 | * | 103 | * |
| 101 | * Returns zero on success, non-zero otherwise. | 104 | * Returns zero on success, non-zero otherwise. |
| 102 | */ | 105 | */ |
| 103 | int posix_clock_register(struct posix_clock *clk, dev_t devid); | 106 | int posix_clock_register(struct posix_clock *clk, struct device *dev); |
| 104 | 107 | ||
| 105 | /** | 108 | /** |
| 106 | * posix_clock_unregister() - unregister a clock | 109 | * posix_clock_unregister() - unregister a clock |
| @@ -100,6 +100,43 @@ static inline void hlist_nulls_add_head_rcu(struct hlist_nulls_node *n, · 99 unmodified lines | |||
| 100 | first->pprev = &n->next; | 100 | first->pprev = &n->next; |
| 101 | } | 101 | } |
| 102 | 102 | ||
| 103 | /** | ||
| 104 | * hlist_nulls_add_tail_rcu | ||
| 105 | * @n: the element to add to the hash list. | ||
| 106 | * @h: the list to add to. | ||
| 107 | * | ||
| 108 | * Description: | ||
| 109 | * Adds the specified element to the specified hlist_nulls, | ||
| 110 | * while permitting racing traversals. | ||
| 111 | * | ||
| 112 | * The caller must take whatever precautions are necessary | ||
| 113 | * (such as holding appropriate locks) to avoid racing | ||
| 114 | * with another list-mutation primitive, such as hlist_nulls_add_head_rcu() | ||
| 115 | * or hlist_nulls_del_rcu(), running on this same list. | ||
| 116 | * However, it is perfectly legal to run concurrently with | ||
| 117 | * the _rcu list-traversal primitives, such as | ||
| 118 | * hlist_nulls_for_each_entry_rcu(), used to prevent memory-consistency | ||
| 119 | * problems on Alpha CPUs. Regardless of the type of CPU, the | ||
| 120 | * list-traversal primitive must be guarded by rcu_read_lock(). | ||
| 121 | */ | ||
| 122 | static inline void hlist_nulls_add_tail_rcu(struct hlist_nulls_node *n, | ||
| 123 | struct hlist_nulls_head *h) | ||
| 124 | { | ||
| 125 | struct hlist_nulls_node *i, *last = NULL; | ||
| 126 | |||
| 127 | /* Note: write side code, so rcu accessors are not needed. */ | ||
| 128 | for (i = h->first; !is_a_nulls(i); i = i->next) | ||
| 129 | last = i; | ||
| 130 | |||
| 131 | if (last) { | ||
| 132 | n->next = last->next; | ||
| 133 | n->pprev = &last->next; | ||
| 134 | rcu_assign_pointer(hlist_next_rcu(last), n); | ||
| 135 | } else { | ||
| 136 | hlist_nulls_add_head_rcu(n, h); | ||
| 137 | } | ||
| 138 | } | ||
| 139 | |||
| 103 | /** | 140 | /** |
| 104 | * hlist_nulls_for_each_entry_rcu - iterate over rcu list of given type | 141 | * hlist_nulls_for_each_entry_rcu - iterate over rcu list of given type |
| 105 | * @tpos: the type * to use as a loop cursor. | 142 | * @tpos: the type * to use as a loop cursor. |
| @@ -1929,11 +1929,11 @@ static inline void rseq_migrate(struct task_struct *t) · 1928 unmodified lines | |||
| 1929 | 1929 | ||
| 1930 | /* | 1930 | /* |
| 1931 | * If parent process has a registered restartable sequences area, the | 1931 | * If parent process has a registered restartable sequences area, the |
| 1932 | * child inherits. Only applies when forking a process, not a thread. | 1932 | * child inherits. Unregister rseq for a clone with CLONE_VM set. |
| 1933 | */ | 1933 | */ |
| 1934 | static inline void rseq_fork(struct task_struct *t, unsigned long clone_flags) | 1934 | static inline void rseq_fork(struct task_struct *t, unsigned long clone_flags) |
| 1935 | { | 1935 | { |
| 1936 | if (clone_flags & CLONE_THREAD) { | 1936 | if (clone_flags & CLONE_VM) { |
| 1937 | t->rseq = NULL; | 1937 | t->rseq = NULL; |
| 1938 | t->rseq_sig = 0; | 1938 | t->rseq_sig = 0; |
| 1939 | t->rseq_event_mask = 0; | 1939 | t->rseq_event_mask = 0; |
| @@ -12,6 +12,8 @@ · 11 unmodified lines | |||
| 12 | #define SCHED_CPUFREQ_MIGRATION (1U << 1) | 12 | #define SCHED_CPUFREQ_MIGRATION (1U << 1) |
| 13 | 13 | ||
| 14 | #ifdef CONFIG_CPU_FREQ | 14 | #ifdef CONFIG_CPU_FREQ |
| 15 | struct cpufreq_policy; | ||
| 16 | |||
| 15 | struct update_util_data { | 17 | struct update_util_data { |
| 16 | void (*func)(struct update_util_data *data, u64 time, unsigned int flags); | 18 | void (*func)(struct update_util_data *data, u64 time, unsigned int flags); |
| 17 | }; | 19 | }; |
| @@ -20,6 +22,7 @@ void cpufreq_add_update_util_hook(int cpu, struct update_util_data *data, · 2 unmodified lines | |||
| 20 | void (*func)(struct update_util_data *data, u64 time, | 22 | void (*func)(struct update_util_data *data, u64 time, |
| 21 | unsigned int flags)); | 23 | unsigned int flags)); |
| 22 | void cpufreq_remove_update_util_hook(int cpu); | 24 | void cpufreq_remove_update_util_hook(int cpu); |
| 25 | bool cpufreq_this_cpu_can_update(struct cpufreq_policy *policy); | ||
| 23 | 26 | ||
| 24 | static inline unsigned long map_util_freq(unsigned long util, | 27 | static inline unsigned long map_util_freq(unsigned long util, |
| 25 | unsigned long freq, unsigned long cap) | 28 | unsigned long freq, unsigned long cap) |
| @@ -358,17 +358,22 @@ static inline void sk_psock_update_proto(struct sock *sk, · 357 unmodified lines | |||
| 358 | static inline void sk_psock_restore_proto(struct sock *sk, | 358 | static inline void sk_psock_restore_proto(struct sock *sk, |
| 359 | struct sk_psock *psock) | 359 | struct sk_psock *psock) |
| 360 | { | 360 | { |
| 361 | sk->sk_write_space = psock->saved_write_space; | 361 | sk->sk_prot->unhash = psock->saved_unhash; |
| 362 | 362 | ||
| 363 | if (psock->sk_proto) { | 363 | if (psock->sk_proto) { |
| 364 | struct inet_connection_sock *icsk = inet_csk(sk); | 364 | struct inet_connection_sock *icsk = inet_csk(sk); |
| 365 | bool has_ulp = !!icsk->icsk_ulp_data; | 365 | bool has_ulp = !!icsk->icsk_ulp_data; |
| 366 | 366 | ||
| 367 | if (has_ulp) | 367 | if (has_ulp) { |
| 368 | tcp_update_ulp(sk, psock->sk_proto); | 368 | tcp_update_ulp(sk, psock->sk_proto, |
| 369 | else | 369 | psock->saved_write_space); |
| 370 | } else { | ||
| 370 | sk->sk_prot = psock->sk_proto; | 371 | sk->sk_prot = psock->sk_proto; |
| 372 | sk->sk_write_space = psock->saved_write_space; | ||
| 373 | } | ||
| 371 | psock->sk_proto = NULL; | 374 | psock->sk_proto = NULL; |
| 375 | } else { | ||
| 376 | sk->sk_write_space = psock->saved_write_space; | ||
| 372 | } | 377 | } |
| 373 | } | 378 | } |
| 374 | 379 | ||
| @@ -689,10 +689,10 @@ extern void spi_finalize_current_transfer(struct spi_controller *ctlr); · 688 unmodified lines | |||
| 689 | /* Helper calls for driver to timestamp transfer */ | 689 | /* Helper calls for driver to timestamp transfer */ |
| 690 | void spi_take_timestamp_pre(struct spi_controller *ctlr, | 690 | void spi_take_timestamp_pre(struct spi_controller *ctlr, |
| 691 | struct spi_transfer *xfer, | 691 | struct spi_transfer *xfer, |
| 692 | const void *tx, bool irqs_off); | 692 | size_t progress, bool irqs_off); |
| 693 | void spi_take_timestamp_post(struct spi_controller *ctlr, | 693 | void spi_take_timestamp_post(struct spi_controller *ctlr, |
| 694 | struct spi_transfer *xfer, | 694 | struct spi_transfer *xfer, |
| 695 | const void *tx, bool irqs_off); | 695 | size_t progress, bool irqs_off); |
| 696 | 696 | ||
| 697 | /* the spi driver core manages memory for the spi_controller classdev */ | 697 | /* the spi driver core manages memory for the spi_controller classdev */ |
| 698 | extern struct spi_controller *__spi_alloc_controller(struct device *host, | 698 | extern struct spi_controller *__spi_alloc_controller(struct device *host, |
| @@ -1,6 +1,6 @@ | |||
| 1 | /* SPDX-License-Identifier: GPL-2.0-only */ | 1 | /* SPDX-License-Identifier: GPL-2.0-only */ |
| 2 | /* | 2 | /* |
| 3 | * 10G controller driver for Samsung EXYNOS SoCs | 3 | * 10G controller driver for Samsung Exynos SoCs |
| 4 | * | 4 | * |
| 5 | * Copyright (C) 2013 Samsung Electronics Co., Ltd. | 5 | * Copyright (C) 2013 Samsung Electronics Co., Ltd. |
| 6 | * http://www.samsung.com | 6 | * http://www.samsung.com |
| @@ -1232,6 +1232,7 @@ asmlinkage long sys_ni_syscall(void); · 1231 unmodified lines | |||
| 1232 | */ | 1232 | */ |
| 1233 | 1233 | ||
| 1234 | int ksys_umount(char __user *name, int flags); | 1234 | int ksys_umount(char __user *name, int flags); |
| 1235 | int ksys_dup(unsigned int fildes); | ||
| 1235 | int ksys_chroot(const char __user *filename); | 1236 | int ksys_chroot(const char __user *filename); |
| 1236 | ssize_t ksys_write(unsigned int fd, const char __user *buf, size_t count); | 1237 | ssize_t ksys_write(unsigned int fd, const char __user *buf, size_t count); |
| 1237 | int ksys_chdir(const char __user *filename); | 1238 | int ksys_chdir(const char __user *filename); |
| @@ -30,7 +30,7 @@ struct tnum tnum_lshift(struct tnum a, u8 shift); · 29 unmodified lines | |||
| 30 | /* Shift (rsh) a tnum right (by a fixed shift) */ | 30 | /* Shift (rsh) a tnum right (by a fixed shift) */ |
| 31 | struct tnum tnum_rshift(struct tnum a, u8 shift); | 31 | struct tnum tnum_rshift(struct tnum a, u8 shift); |
| 32 | /* Shift (arsh) a tnum right (by a fixed min_shift) */ | 32 | /* Shift (arsh) a tnum right (by a fixed min_shift) */ |
| 33 | struct tnum tnum_arshift(struct tnum a, u8 min_shift); | 33 | struct tnum tnum_arshift(struct tnum a, u8 min_shift, u8 insn_bitness); |
| 34 | /* Add two tnums, return @a + @b */ | 34 | /* Add two tnums, return @a + @b */ |
| 35 | struct tnum tnum_add(struct tnum a, struct tnum b); | 35 | struct tnum tnum_add(struct tnum a, struct tnum b); |
| 36 | /* Subtract two tnums, return @a - @b */ | 36 | /* Subtract two tnums, return @a - @b */ |
| @@ -403,6 +403,7 @@ extern int tpm_pcr_extend(struct tpm_chip *chip, u32 pcr_idx, · 402 unmodified lines | |||
| 403 | extern int tpm_send(struct tpm_chip *chip, void *cmd, size_t buflen); | 403 | extern int tpm_send(struct tpm_chip *chip, void *cmd, size_t buflen); |
| 404 | extern int tpm_get_random(struct tpm_chip *chip, u8 *data, size_t max); | 404 | extern int tpm_get_random(struct tpm_chip *chip, u8 *data, size_t max); |
| 405 | extern struct tpm_chip *tpm_default_chip(void); | 405 | extern struct tpm_chip *tpm_default_chip(void); |
| 406 | void tpm2_flush_context(struct tpm_chip *chip, u32 handle); | ||
| 406 | #else | 407 | #else |
| 407 | static inline int tpm_is_tpm2(struct tpm_chip *chip) | 408 | static inline int tpm_is_tpm2(struct tpm_chip *chip) |
| 408 | { | 409 | { |