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 | 19 | struct platform_device; |
| 20 | 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 | 24 | int ahci_platform_enable_clks(struct ahci_host_priv *hpriv); |
| 23 | 25 | void ahci_platform_disable_clks(struct ahci_host_priv *hpriv); |
| 24 | 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 | 470 | gfp_t); |
| 471 | 471 | extern int bio_uncopy_user(struct bio *); |
| 472 | 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 | 475 | static inline void zero_fill_bio(struct bio *bio) |
| 475 | 476 | { |
| @@ -328,6 +328,7 @@ struct queue_limits { · 327 unmodified lines | ||
| 328 | 328 | unsigned int max_sectors; |
| 329 | 329 | unsigned int max_segment_size; |
| 330 | 330 | unsigned int physical_block_size; |
| 331 | + unsigned int logical_block_size; | |
| 331 | 332 | unsigned int alignment_offset; |
| 332 | 333 | unsigned int io_min; |
| 333 | 334 | unsigned int io_opt; |
| @@ -338,7 +339,6 @@ struct queue_limits { · 4 unmodified lines | ||
| 338 | 339 | unsigned int discard_granularity; |
| 339 | 340 | unsigned int discard_alignment; |
| 340 | 341 | |
| 341 | − unsigned short logical_block_size; | |
| 342 | 342 | unsigned short max_segments; |
| 343 | 343 | unsigned short max_integrity_segments; |
| 344 | 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 | 1077 | unsigned int max_write_same_sectors); |
| 1078 | 1078 | extern void blk_queue_max_write_zeroes_sectors(struct request_queue *q, |
| 1079 | 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 | 1081 | extern void blk_queue_physical_block_size(struct request_queue *, unsigned int); |
| 1082 | 1082 | extern void blk_queue_alignment_offset(struct request_queue *q, |
| 1083 | 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 | 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 | 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 | 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 | 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 | 157 | struct cgroup *cgroup, |
| 158 | 158 | enum bpf_attach_type type); |
| 159 | 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); | |
| 161 | −void bpf_cgroup_storage_release(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_aux *aux, struct bpf_map *map); | |
| 162 | 162 | |
| 163 | 163 | int bpf_percpu_cgroup_storage_copy(struct bpf_map *map, void *key, void *value); |
| 164 | 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 | 361 | static inline void bpf_cgroup_storage_set( |
| 362 | 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 | 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 | 366 | struct bpf_map *map) {} |
| 367 | 367 | static inline struct bpf_cgroup_storage *bpf_cgroup_storage_alloc( |
| 368 | 368 | struct bpf_prog *prog, enum bpf_cgroup_storage_type stype) { return NULL; } |
| @@ -461,6 +461,7 @@ struct bpf_trampoline { · 460 unmodified lines | ||
| 461 | 461 | struct { |
| 462 | 462 | struct btf_func_model model; |
| 463 | 463 | void *addr; |
| 464 | + bool ftrace_managed; | |
| 464 | 465 | } func; |
| 465 | 466 | /* list of BPF programs using this trampoline */ |
| 466 | 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 | 818 | void bpf_prog_put(struct bpf_prog *prog); |
| 818 | 819 | int __bpf_prog_charge(struct user_struct *user, u32 pages); |
| 819 | 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 | 824 | void bpf_prog_free_id(struct bpf_prog *prog, bool do_idr_lock); |
| 822 | 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 | 156 | #endif /* __LINUX_BVEC_ITER_H */ |
| @@ -18,6 +18,7 @@ · 17 unmodified lines | ||
| 18 | 18 | #include <linux/can/error.h> |
| 19 | 19 | #include <linux/can/led.h> |
| 20 | 20 | #include <linux/can/netlink.h> |
| 21 | +#include <linux/can/skb.h> | |
| 21 | 22 | #include <linux/netdevice.h> |
| 22 | 23 | |
| 23 | 24 | /* |
| @@ -91,6 +92,36 @@ struct can_priv { · 67 unmodified lines | ||
| 91 | 92 | #define get_can_dlc(i) (min_t(__u8, (i), CAN_MAX_DLC)) |
| 92 | 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 | 125 | /* Drop a given socketbuffer if it does not contain a valid CAN frame. */ |
| 95 | 126 | static inline bool can_dropped_invalid_skb(struct net_device *dev, |
| 96 | 127 | struct sk_buff *skb) |
| @@ -108,6 +139,9 @@ static inline bool can_dropped_invalid_skb(struct net_device *dev, · 11 unmodified lines | ||
| 108 | 139 | } else |
| 109 | 140 | goto inval_skb; |
| 110 | 141 | |
| 142 | + if (!can_skb_headroom_valid(dev, skb)) | |
| 143 | + goto inval_skb; | |
| 144 | + | |
| 111 | 145 | return false; |
| 112 | 146 | |
| 113 | 147 | inval_skb: |
| @@ -595,17 +595,6 @@ struct governor_attr { · 594 unmodified lines | ||
| 595 | 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 | 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 | 1364 | static inline int dmaengine_desc_set_reuse(struct dma_async_tx_descriptor *tx) |
| 1365 | 1365 | { |
| 1366 | 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 | 1373 | if (caps.descriptor_reuse) { |
| 1371 | 1374 | tx->flags |= DMA_CTRL_REUSE; |
| @@ -824,7 +824,7 @@ typedef struct { · 823 unmodified lines | ||
| 824 | 824 | __aligned_u64 image_size; |
| 825 | 825 | unsigned int image_code_type; |
| 826 | 826 | unsigned int image_data_type; |
| 827 | − unsigned long unload; | |
| 827 | + u32 unload; | |
| 828 | 828 | } efi_loaded_image_32_t; |
| 829 | 829 | |
| 830 | 830 | typedef struct { |
| @@ -840,14 +840,14 @@ typedef struct { · 9 unmodified lines | ||
| 840 | 840 | __aligned_u64 image_size; |
| 841 | 841 | unsigned int image_code_type; |
| 842 | 842 | unsigned int image_data_type; |
| 843 | − unsigned long unload; | |
| 843 | + u64 unload; | |
| 844 | 844 | } efi_loaded_image_64_t; |
| 845 | 845 | |
| 846 | 846 | typedef struct { |
| 847 | 847 | u32 revision; |
| 848 | − void *parent_handle; | |
| 848 | + efi_handle_t parent_handle; | |
| 849 | 849 | efi_system_table_t *system_table; |
| 850 | − void *device_handle; | |
| 850 | + efi_handle_t device_handle; | |
| 851 | 851 | void *file_path; |
| 852 | 852 | void *reserved; |
| 853 | 853 | u32 load_options_size; |
| @@ -856,7 +856,7 @@ typedef struct { · 2 unmodified lines | ||
| 856 | 856 | __aligned_u64 image_size; |
| 857 | 857 | unsigned int image_code_type; |
| 858 | 858 | unsigned int image_data_type; |
| 859 | − unsigned long unload; | |
| 859 | + efi_status_t (*unload)(efi_handle_t image_handle); | |
| 860 | 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 | 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 | 35 | static inline struct ethhdr *inner_eth_hdr(const struct sk_buff *skb) |
| 28 | 36 | { |
| 29 | 37 | return (struct ethhdr *)skb_inner_mac_header(skb); |
| @@ -457,7 +457,7 @@ struct jbd2_revoke_table_s; · 456 unmodified lines | ||
| 457 | 457 | * @h_journal: Which journal handle belongs to - used iff h_reserved set. |
| 458 | 458 | * @h_rsv_handle: Handle reserved for finishing the logical operation. |
| 459 | 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 | 461 | * @h_revoke_credits: Number of remaining revoke records available for handle |
| 462 | 462 | * @h_ref: Reference count on this handle. |
| 463 | 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 | 205 | #endif /* CONFIG_KASAN_SW_TAGS */ |
| 206 | 206 | |
| 207 | 207 | #ifdef CONFIG_KASAN_VMALLOC |
| 208 | −int kasan_populate_vmalloc(unsigned long requested_size, | |
| 209 | − struct vm_struct *area); | |
| 210 | −void kasan_poison_vmalloc(void *start, unsigned long size); | |
| 208 | +int kasan_populate_vmalloc(unsigned long addr, unsigned long size); | |
| 209 | +void kasan_poison_vmalloc(const void *start, unsigned long size); | |
| 210 | +void kasan_unpoison_vmalloc(const void *start, unsigned long size); | |
| 211 | 211 | void kasan_release_vmalloc(unsigned long start, unsigned long end, |
| 212 | 212 | unsigned long free_region_start, |
| 213 | 213 | unsigned long free_region_end); |
| 214 | 214 | #else |
| 215 | −static inline int kasan_populate_vmalloc(unsigned long requested_size, | |
| 216 | − struct vm_struct *area) | |
| 215 | +static inline int kasan_populate_vmalloc(unsigned long start, | |
| 216 | + unsigned long size) | |
| 217 | 217 | { |
| 218 | 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 | 225 | static inline void kasan_release_vmalloc(unsigned long start, |
| 223 | 226 | unsigned long end, |
| 224 | 227 | unsigned long free_region_start, |
| @@ -79,15 +79,6 @@ · 78 unmodified lines | ||
| 79 | 79 | */ |
| 80 | 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 | 82 | #define typeof_member(T, m) typeof(((T*)0)->m) |
| 92 | 83 | |
| 93 | 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 | 1175 | struct ata_taskfile *tf, u16 *id); |
| 1176 | 1176 | extern void ata_qc_complete(struct ata_queued_cmd *qc); |
| 1177 | 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 | 1179 | extern void ata_scsi_simulate(struct ata_device *dev, struct scsi_cmnd *cmd); |
| 1179 | 1180 | extern int ata_std_bios_param(struct scsi_device *sdev, |
| 1180 | 1181 | struct block_device *bdev, |
| @@ -122,8 +122,8 @@ static inline bool movable_node_is_enabled(void) · 121 unmodified lines | ||
| 122 | 122 | |
| 123 | 123 | extern void arch_remove_memory(int nid, u64 start, u64 size, |
| 124 | 124 | struct vmem_altmap *altmap); |
| 125 | −extern void __remove_pages(struct zone *zone, unsigned long start_pfn, | |
| 126 | − unsigned long nr_pages, struct vmem_altmap *altmap); | |
| 125 | +extern void __remove_pages(unsigned long start_pfn, unsigned long nr_pages, | |
| 126 | + struct vmem_altmap *altmap); | |
| 127 | 127 | |
| 128 | 128 | /* reasonably generic interface to expand the physical pages */ |
| 129 | 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 | 342 | extern int add_memory_resource(int nid, struct resource *resource); |
| 343 | 343 | extern void move_pfn_range_to_zone(struct zone *zone, unsigned long start_pfn, |
| 344 | 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 | 348 | extern bool is_memblock_offlined(struct memory_block *mem); |
| 346 | 349 | extern int sparse_add_section(int nid, unsigned long pfn, |
| 347 | 350 | unsigned long nr_pages, struct vmem_altmap *altmap); |
| @@ -46,6 +46,14 @@ · 45 unmodified lines | ||
| 46 | 46 | |
| 47 | 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 | 57 | #define RTC_PDN2 0x002e |
| 50 | 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 | 2621 | typedef int (*pte_fn_t)(pte_t *pte, unsigned long addr, void *data); |
| 2622 | 2622 | extern int apply_to_page_range(struct mm_struct *mm, unsigned long address, |
| 2623 | 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 | 2628 | #ifdef CONFIG_PAGE_POISONING |
| 2626 | 2629 | extern bool page_poisoning_enabled(void); |
| @@ -2655,13 +2658,25 @@ static inline bool want_init_on_free(void) · 28 unmodified lines | ||
| 2655 | 2658 | !page_poisoning_enabled(); |
| 2656 | 2659 | } |
| 2657 | 2660 | |
| 2658 | −#ifdef CONFIG_DEBUG_PAGEALLOC_ENABLE_DEFAULT | |
| 2659 | −DECLARE_STATIC_KEY_TRUE(_debug_pagealloc_enabled); | |
| 2661 | +#ifdef CONFIG_DEBUG_PAGEALLOC | |
| 2662 | +extern void init_debug_pagealloc(void); | |
| 2660 | 2663 | #else |
| 2661 | −DECLARE_STATIC_KEY_FALSE(_debug_pagealloc_enabled); | |
| 2664 | +static inline void init_debug_pagealloc(void) {} | |
| 2662 | 2665 | #endif |
| 2666 | +extern bool _debug_pagealloc_enabled_early; | |
| 2667 | +DECLARE_STATIC_KEY_FALSE(_debug_pagealloc_enabled); | |
| 2663 | 2668 | |
| 2664 | 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 | 2681 | if (!IS_ENABLED(CONFIG_DEBUG_PAGEALLOC)) |
| 2667 | 2682 | return false; |
| @@ -215,9 +215,8 @@ enum node_stat_item { · 214 unmodified lines | ||
| 215 | 215 | NR_INACTIVE_FILE, /* " " " " " */ |
| 216 | 216 | NR_ACTIVE_FILE, /* " " " " " */ |
| 217 | 217 | NR_UNEVICTABLE, /* " " " " " */ |
| 218 | − NR_SLAB_RECLAIMABLE, /* Please do not reorder this item */ | |
| 219 | − NR_SLAB_UNRECLAIMABLE, /* and this one without looking at | |
| 220 | − * memcg_flush_percpu_vmstats() first. */ | |
| 218 | + NR_SLAB_RECLAIMABLE, | |
| 219 | + NR_SLAB_UNRECLAIMABLE, | |
| 221 | 220 | NR_ISOLATED_ANON, /* Temporary isolated pages from anon lru */ |
| 222 | 221 | NR_ISOLATED_FILE, /* Temporary isolated pages from file lru */ |
| 223 | 222 | WORKINGSET_NODES, |
| @@ -587,9 +587,9 @@ struct platform_device_id { · 586 unmodified lines | ||
| 587 | 587 | #define MDIO_NAME_SIZE 32 |
| 588 | 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 | 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 | 593 | ((_id)>>27) & 1, ((_id)>>26) & 1, ((_id)>>25) & 1, ((_id)>>24) & 1, \ |
| 594 | 594 | ((_id)>>23) & 1, ((_id)>>22) & 1, ((_id)>>21) & 1, ((_id)>>20) & 1, \ |
| 595 | 595 | ((_id)>>19) & 1, ((_id)>>18) & 1, ((_id)>>17) & 1, ((_id)>>16) & 1, \ |
| @@ -40,7 +40,7 @@ typedef enum { · 39 unmodified lines | ||
| 40 | 40 | FL_READING, |
| 41 | 41 | FL_CACHEDPRG, |
| 42 | 42 | /* These 4 come from onenand_state_t, which has been unified here */ |
| 43 | − FL_RESETING, | |
| 43 | + FL_RESETTING, | |
| 44 | 44 | FL_OTPING, |
| 45 | 45 | FL_PREPARING_ERASE, |
| 46 | 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 | 35 | /* internal use only */ |
| 36 | 36 | #define LOOKUP_PARENT 0x0010 |
| 37 | −#define LOOKUP_NO_REVAL 0x0080 | |
| 38 | 37 | #define LOOKUP_JUMPED 0x1000 |
| 39 | 38 | #define LOOKUP_ROOT 0x2000 |
| 40 | 39 | #define LOOKUP_ROOT_GRABBED 0x0008 |
| @@ -1775,7 +1775,7 @@ enum netdev_priv_flags { · 1774 unmodified lines | ||
| 1775 | 1775 | * for hardware timestamping |
| 1776 | 1776 | * @sfp_bus: attached &struct sfp_bus structure. |
| 1777 | 1777 | * @qdisc_tx_busylock_key: lockdep class annotating Qdisc->busylock |
| 1778 | − spinlock | |
| 1778 | + * spinlock | |
| 1779 | 1779 | * @qdisc_running_key: lockdep class annotating Qdisc->running seqcount |
| 1780 | 1780 | * @qdisc_xmit_lock_key: lockdep class annotating |
| 1781 | 1781 | * netdev_queue->_xmit_lock spinlock |
| @@ -12,6 +12,7 @@ · 11 unmodified lines | ||
| 12 | 12 | #include <linux/of.h> |
| 13 | 13 | |
| 14 | 14 | #if IS_ENABLED(CONFIG_OF_MDIO) |
| 15 | +extern bool of_mdiobus_child_is_phy(struct device_node *child); | |
| 15 | 16 | extern int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np); |
| 16 | 17 | extern struct phy_device *of_phy_find_device(struct device_node *phy_np); |
| 17 | 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 | 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 | 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 | 1000 | int phy_modify_paged(struct phy_device *phydev, int page, u32 regnum, |
| 1001 | 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 | 1004 | bool is_c45, |
| 1005 | 1005 | struct phy_c45_device_ids *c45_ids); |
| 1006 | 1006 | #if IS_ENABLED(CONFIG_PHYLIB) |
| @@ -49,6 +49,7 @@ struct sysc_regbits { · 48 unmodified lines | ||
| 49 | 49 | s8 emufree_shift; |
| 50 | 50 | }; |
| 51 | 51 | |
| 52 | +#define SYSC_QUIRK_FORCE_MSTANDBY BIT(20) | |
| 52 | 53 | #define SYSC_MODULE_QUIRK_AESS BIT(19) |
| 53 | 54 | #define SYSC_MODULE_QUIRK_SGX BIT(18) |
| 54 | 55 | #define SYSC_MODULE_QUIRK_HDQ1W BIT(17) |
| @@ -69,29 +69,32 @@ struct posix_clock_operations { · 68 unmodified lines | ||
| 69 | 69 | * |
| 70 | 70 | * @ops: Functional interface to the clock |
| 71 | 71 | * @cdev: Character device instance for this clock |
| 72 | − * @kref: Reference count. | |
| 72 | + * @dev: Pointer to the clock's device. | |
| 73 | 73 | * @rwsem: Protects the 'zombie' field from concurrent access. |
| 74 | 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 | 76 | * Drivers should embed their struct posix_clock within a private |
| 79 | 77 | * structure, obtaining a reference to it during callbacks using |
| 80 | 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 | 85 | struct posix_clock { |
| 83 | 86 | struct posix_clock_operations ops; |
| 84 | 87 | struct cdev cdev; |
| 85 | − struct kref kref; | |
| 88 | + struct device *dev; | |
| 86 | 89 | struct rw_semaphore rwsem; |
| 87 | 90 | bool zombie; |
| 88 | − void (*release)(struct posix_clock *clk); | |
| 89 | 91 | }; |
| 90 | 92 | |
| 91 | 93 | /** |
| 92 | 94 | * posix_clock_register() - register a new clock |
| 93 | − * @clk: Pointer to the clock. Caller must provide 'ops' and 'release' | |
| 94 | − * @devid: Allocated device id | |
| 95 | + * @clk: Pointer to the clock. Caller must provide 'ops' field | |
| 96 | + * @dev: Pointer to the initialized device. Caller must provide | |
| 97 | + * 'release' field | |
| 95 | 98 | * |
| 96 | 99 | * A clock driver calls this function to register itself with the |
| 97 | 100 | * clock device subsystem. If 'clk' points to dynamically allocated |
| @@ -100,7 +103,7 @@ struct posix_clock { · 2 unmodified lines | ||
| 100 | 103 | * |
| 101 | 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 | 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 | 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 | 141 | * hlist_nulls_for_each_entry_rcu - iterate over rcu list of given type |
| 105 | 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 | 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 | 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 | 1937 | t->rseq = NULL; |
| 1938 | 1938 | t->rseq_sig = 0; |
| 1939 | 1939 | t->rseq_event_mask = 0; |
| @@ -12,6 +12,8 @@ · 11 unmodified lines | ||
| 12 | 12 | #define SCHED_CPUFREQ_MIGRATION (1U << 1) |
| 13 | 13 | |
| 14 | 14 | #ifdef CONFIG_CPU_FREQ |
| 15 | +struct cpufreq_policy; | |
| 16 | + | |
| 15 | 17 | struct update_util_data { |
| 16 | 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 | 22 | void (*func)(struct update_util_data *data, u64 time, |
| 21 | 23 | unsigned int flags)); |
| 22 | 24 | void cpufreq_remove_update_util_hook(int cpu); |
| 25 | +bool cpufreq_this_cpu_can_update(struct cpufreq_policy *policy); | |
| 23 | 26 | |
| 24 | 27 | static inline unsigned long map_util_freq(unsigned long util, |
| 25 | 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 | 358 | static inline void sk_psock_restore_proto(struct sock *sk, |
| 359 | 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 | 363 | if (psock->sk_proto) { |
| 364 | 364 | struct inet_connection_sock *icsk = inet_csk(sk); |
| 365 | 365 | bool has_ulp = !!icsk->icsk_ulp_data; |
| 366 | 366 | |
| 367 | − if (has_ulp) | |
| 368 | − tcp_update_ulp(sk, psock->sk_proto); | |
| 369 | − else | |
| 367 | + if (has_ulp) { | |
| 368 | + tcp_update_ulp(sk, psock->sk_proto, | |
| 369 | + psock->saved_write_space); | |
| 370 | + } else { | |
| 370 | 371 | sk->sk_prot = psock->sk_proto; |
| 372 | + sk->sk_write_space = psock->saved_write_space; | |
| 373 | + } | |
| 371 | 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 | 689 | /* Helper calls for driver to timestamp transfer */ |
| 690 | 690 | void spi_take_timestamp_pre(struct spi_controller *ctlr, |
| 691 | 691 | struct spi_transfer *xfer, |
| 692 | − const void *tx, bool irqs_off); | |
| 692 | + size_t progress, bool irqs_off); | |
| 693 | 693 | void spi_take_timestamp_post(struct spi_controller *ctlr, |
| 694 | 694 | struct spi_transfer *xfer, |
| 695 | − const void *tx, bool irqs_off); | |
| 695 | + size_t progress, bool irqs_off); | |
| 696 | 696 | |
| 697 | 697 | /* the spi driver core manages memory for the spi_controller classdev */ |
| 698 | 698 | extern struct spi_controller *__spi_alloc_controller(struct device *host, |
| @@ -1,6 +1,6 @@ | ||
| 1 | 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 | 5 | * Copyright (C) 2013 Samsung Electronics Co., Ltd. |
| 6 | 6 | * http://www.samsung.com |
| @@ -1232,6 +1232,7 @@ asmlinkage long sys_ni_syscall(void); · 1231 unmodified lines | ||
| 1232 | 1232 | */ |
| 1233 | 1233 | |
| 1234 | 1234 | int ksys_umount(char __user *name, int flags); |
| 1235 | +int ksys_dup(unsigned int fildes); | |
| 1235 | 1236 | int ksys_chroot(const char __user *filename); |
| 1236 | 1237 | ssize_t ksys_write(unsigned int fd, const char __user *buf, size_t count); |
| 1237 | 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 | 30 | /* Shift (rsh) a tnum right (by a fixed shift) */ |
| 31 | 31 | struct tnum tnum_rshift(struct tnum a, u8 shift); |
| 32 | 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 | 34 | /* Add two tnums, return @a + @b */ |
| 35 | 35 | struct tnum tnum_add(struct tnum a, struct tnum b); |
| 36 | 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 | 403 | extern int tpm_send(struct tpm_chip *chip, void *cmd, size_t buflen); |
| 404 | 404 | extern int tpm_get_random(struct tpm_chip *chip, u8 *data, size_t max); |
| 405 | 405 | extern struct tpm_chip *tpm_default_chip(void); |
| 406 | +void tpm2_flush_context(struct tpm_chip *chip, u32 handle); | |
| 406 | 407 | #else |
| 407 | 408 | static inline int tpm_is_tpm2(struct tpm_chip *chip) |
| 408 | 409 | { |