Requested my mripard for some misc patches that need this as a base.
Showing the changes to include/linux (25 of 895 files). Show all
Unified · Split
| @@ -524,7 +524,7 @@ struct request_queue { · 523 unmodified lines | |||
| 524 | unsigned int sg_reserved_size; | 524 | unsigned int sg_reserved_size; |
| 525 | int node; | 525 | int node; |
| 526 | #ifdef CONFIG_BLK_DEV_IO_TRACE | 526 | #ifdef CONFIG_BLK_DEV_IO_TRACE |
| 527 | struct blk_trace *blk_trace; | 527 | struct blk_trace __rcu *blk_trace; |
| 528 | struct mutex blk_trace_mutex; | 528 | struct mutex blk_trace_mutex; |
| 529 | #endif | 529 | #endif |
| 530 | /* | 530 | /* |
| @@ -1494,7 +1494,6 @@ static inline void put_dev_sector(Sector p) · 963 unmodified lines | |||
| 1494 | } | 1494 | } |
| 1495 | 1495 | ||
| 1496 | int kblockd_schedule_work(struct work_struct *work); | 1496 | int kblockd_schedule_work(struct work_struct *work); |
| 1497 | int kblockd_schedule_work_on(int cpu, struct work_struct *work); | ||
| 1498 | int kblockd_mod_delayed_work_on(int cpu, struct delayed_work *dwork, unsigned long delay); | 1497 | int kblockd_mod_delayed_work_on(int cpu, struct delayed_work *dwork, unsigned long delay); |
| 1499 | 1498 | ||
| 1500 | #define MODULE_ALIAS_BLOCKDEV(major,minor) \ | 1499 | #define MODULE_ALIAS_BLOCKDEV(major,minor) \ |
| @@ -51,9 +51,13 @@ void __trace_note_message(struct blk_trace *, struct blkcg *blkcg, const char *f · 50 unmodified lines | |||
| 51 | **/ | 51 | **/ |
| 52 | #define blk_add_cgroup_trace_msg(q, cg, fmt, ...) \ | 52 | #define blk_add_cgroup_trace_msg(q, cg, fmt, ...) \ |
| 53 | do { \ | 53 | do { \ |
| 54 | struct blk_trace *bt = (q)->blk_trace; \ | 54 | struct blk_trace *bt; \ |
| 55 | \ | ||
| 56 | rcu_read_lock(); \ | ||
| 57 | bt = rcu_dereference((q)->blk_trace); \ | ||
| 55 | if (unlikely(bt)) \ | 58 | if (unlikely(bt)) \ |
| 56 | __trace_note_message(bt, cg, fmt, ##__VA_ARGS__);\ | 59 | __trace_note_message(bt, cg, fmt, ##__VA_ARGS__);\ |
| 60 | rcu_read_unlock(); \ | ||
| 57 | } while (0) | 61 | } while (0) |
| 58 | #define blk_add_trace_msg(q, fmt, ...) \ | 62 | #define blk_add_trace_msg(q, fmt, ...) \ |
| 59 | blk_add_cgroup_trace_msg(q, NULL, fmt, ##__VA_ARGS__) | 63 | blk_add_cgroup_trace_msg(q, NULL, fmt, ##__VA_ARGS__) |
| @@ -61,10 +65,14 @@ void __trace_note_message(struct blk_trace *, struct blkcg *blkcg, const char *f · 1 unmodified line | |||
| 61 | 65 | ||
| 62 | static inline bool blk_trace_note_message_enabled(struct request_queue *q) | 66 | static inline bool blk_trace_note_message_enabled(struct request_queue *q) |
| 63 | { | 67 | { |
| 64 | struct blk_trace *bt = q->blk_trace; | 68 | struct blk_trace *bt; |
| 65 | if (likely(!bt)) | 69 | bool ret; |
| 66 | return false; | 70 | |
| 67 | return bt->act_mask & BLK_TC_NOTIFY; | 71 | rcu_read_lock(); |
| 72 | bt = rcu_dereference(q->blk_trace); | ||
| 73 | ret = bt && (bt->act_mask & BLK_TC_NOTIFY); | ||
| 74 | rcu_read_unlock(); | ||
| 75 | return ret; | ||
| 68 | } | 76 | } |
| 69 | 77 | ||
| 70 | extern void blk_add_driver_data(struct request_queue *q, struct request *rq, | 78 | extern void blk_add_driver_data(struct request_queue *q, struct request *rq, |
| @@ -10,6 +10,9 @@ · 9 unmodified lines | |||
| 10 | #include <linux/kernel.h> | 10 | #include <linux/kernel.h> |
| 11 | #include <linux/types.h> | 11 | #include <linux/types.h> |
| 12 | 12 | ||
| 13 | #define BOOTCONFIG_MAGIC "#BOOTCONFIG\n" | ||
| 14 | #define BOOTCONFIG_MAGIC_LEN 12 | ||
| 15 | |||
| 13 | /* XBC tree node */ | 16 | /* XBC tree node */ |
| 14 | struct xbc_node { | 17 | struct xbc_node { |
| 15 | u16 next; | 18 | u16 next; |
| @@ -248,15 +248,6 @@ typedef struct compat_siginfo { · 247 unmodified lines | |||
| 248 | } _sifields; | 248 | } _sifields; |
| 249 | } compat_siginfo_t; | 249 | } compat_siginfo_t; |
| 250 | 250 | ||
| 251 | /* | ||
| 252 | * These functions operate on 32- or 64-bit specs depending on | ||
| 253 | * COMPAT_USE_64BIT_TIME, hence the void user pointer arguments. | ||
| 254 | */ | ||
| 255 | extern int compat_get_timespec(struct timespec *, const void __user *); | ||
| 256 | extern int compat_put_timespec(const struct timespec *, void __user *); | ||
| 257 | extern int compat_get_timeval(struct timeval *, const void __user *); | ||
| 258 | extern int compat_put_timeval(const struct timeval *, void __user *); | ||
| 259 | |||
| 260 | struct compat_iovec { | 251 | struct compat_iovec { |
| 261 | compat_uptr_t iov_base; | 252 | compat_uptr_t iov_base; |
| 262 | compat_size_t iov_len; | 253 | compat_size_t iov_len; |
| @@ -416,26 +407,6 @@ int copy_siginfo_to_user32(struct compat_siginfo __user *to, const kernel_siginf · 153 unmodified lines | |||
| 416 | int get_compat_sigevent(struct sigevent *event, | 407 | int get_compat_sigevent(struct sigevent *event, |
| 417 | const struct compat_sigevent __user *u_event); | 408 | const struct compat_sigevent __user *u_event); |
| 418 | 409 | ||
| 419 | static inline int old_timeval32_compare(struct old_timeval32 *lhs, | ||
| 420 | struct old_timeval32 *rhs) | ||
| 421 | { | ||
| 422 | if (lhs->tv_sec < rhs->tv_sec) | ||
| 423 | return -1; | ||
| 424 | if (lhs->tv_sec > rhs->tv_sec) | ||
| 425 | return 1; | ||
| 426 | return lhs->tv_usec - rhs->tv_usec; | ||
| 427 | } | ||
| 428 | |||
| 429 | static inline int old_timespec32_compare(struct old_timespec32 *lhs, | ||
| 430 | struct old_timespec32 *rhs) | ||
| 431 | { | ||
| 432 | if (lhs->tv_sec < rhs->tv_sec) | ||
| 433 | return -1; | ||
| 434 | if (lhs->tv_sec > rhs->tv_sec) | ||
| 435 | return 1; | ||
| 436 | return lhs->tv_nsec - rhs->tv_nsec; | ||
| 437 | } | ||
| 438 | |||
| 439 | extern int get_compat_sigset(sigset_t *set, const compat_sigset_t __user *compat); | 410 | extern int get_compat_sigset(sigset_t *set, const compat_sigset_t __user *compat); |
| 440 | 411 | ||
| 441 | /* | 412 | /* |
| @@ -127,9 +127,9 @@ struct dentry *debugfs_create_blob(const char *name, umode_t mode, · 126 unmodified lines | |||
| 127 | struct dentry *parent, | 127 | struct dentry *parent, |
| 128 | struct debugfs_blob_wrapper *blob); | 128 | struct debugfs_blob_wrapper *blob); |
| 129 | 129 | ||
| 130 | struct dentry *debugfs_create_regset32(const char *name, umode_t mode, | 130 | void debugfs_create_regset32(const char *name, umode_t mode, |
| 131 | struct dentry *parent, | 131 | struct dentry *parent, |
| 132 | struct debugfs_regset32 *regset); | 132 | struct debugfs_regset32 *regset); |
| 133 | 133 | ||
| 134 | void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs, | 134 | void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs, |
| 135 | int nregs, void __iomem *base, char *prefix); | 135 | int nregs, void __iomem *base, char *prefix); |
| @@ -304,11 +304,10 @@ static inline struct dentry *debugfs_create_blob(const char *name, umode_t mode, · 168 unmodified lines | |||
| 304 | return ERR_PTR(-ENODEV); | 304 | return ERR_PTR(-ENODEV); |
| 305 | } | 305 | } |
| 306 | 306 | ||
| 307 | static inline struct dentry *debugfs_create_regset32(const char *name, | 307 | static inline void debugfs_create_regset32(const char *name, umode_t mode, |
| 308 | umode_t mode, struct dentry *parent, | 308 | struct dentry *parent, |
| 309 | struct debugfs_regset32 *regset) | 309 | struct debugfs_regset32 *regset) |
| 310 | { | 310 | { |
| 311 | return ERR_PTR(-ENODEV); | ||
| 312 | } | 311 | } |
| 313 | 312 | ||
| 314 | static inline void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs, | 313 | static inline void debugfs_print_regs32(struct seq_file *s, const struct debugfs_reg32 *regs, |
| @@ -798,6 +798,17 @@ static inline struct device_node *dev_of_node(struct device *dev) · 797 unmodified lines | |||
| 798 | return dev->of_node; | 798 | return dev->of_node; |
| 799 | } | 799 | } |
| 800 | 800 | ||
| 801 | static inline bool dev_has_sync_state(struct device *dev) | ||
| 802 | { | ||
| 803 | if (!dev) | ||
| 804 | return false; | ||
| 805 | if (dev->driver && dev->driver->sync_state) | ||
| 806 | return true; | ||
| 807 | if (dev->bus && dev->bus->sync_state) | ||
| 808 | return true; | ||
| 809 | return false; | ||
| 810 | } | ||
| 811 | |||
| 801 | /* | 812 | /* |
| 802 | * High level routines for use by the bus drivers | 813 | * High level routines for use by the bus drivers |
| 803 | */ | 814 | */ |
| @@ -492,7 +492,7 @@ struct hid_report_enum { · 491 unmodified lines | |||
| 492 | }; | 492 | }; |
| 493 | 493 | ||
| 494 | #define HID_MIN_BUFFER_SIZE 64 /* make sure there is at least a packet size of space */ | 494 | #define HID_MIN_BUFFER_SIZE 64 /* make sure there is at least a packet size of space */ |
| 495 | #define HID_MAX_BUFFER_SIZE 4096 /* 4kb */ | 495 | #define HID_MAX_BUFFER_SIZE 8192 /* 8kb */ |
| 496 | #define HID_CONTROL_FIFO_SIZE 256 /* to init devices with >100 reports */ | 496 | #define HID_CONTROL_FIFO_SIZE 256 /* to init devices with >100 reports */ |
| 497 | #define HID_OUTPUT_FIFO_SIZE 64 | 497 | #define HID_OUTPUT_FIFO_SIZE 64 |
| 498 | 498 | ||
| @@ -22,19 +22,23 @@ extern int inet6_unregister_icmp_sender(ip6_icmp_send_t *fn); · 21 unmodified lines | |||
| 22 | int ip6_err_gen_icmpv6_unreach(struct sk_buff *skb, int nhs, int type, | 22 | int ip6_err_gen_icmpv6_unreach(struct sk_buff *skb, int nhs, int type, |
| 23 | unsigned int data_len); | 23 | unsigned int data_len); |
| 24 | 24 | ||
| 25 | #if IS_ENABLED(CONFIG_NF_NAT) | ||
| 26 | void icmpv6_ndo_send(struct sk_buff *skb_in, u8 type, u8 code, __u32 info); | ||
| 27 | #else | ||
| 28 | #define icmpv6_ndo_send icmpv6_send | ||
| 29 | #endif | ||
| 30 | |||
| 25 | #else | 31 | #else |
| 26 | 32 | ||
| 27 | static inline void icmpv6_send(struct sk_buff *skb, | 33 | static inline void icmpv6_send(struct sk_buff *skb, |
| 28 | u8 type, u8 code, __u32 info) | 34 | u8 type, u8 code, __u32 info) |
| 29 | { | 35 | { |
| 30 | |||
| 31 | } | 36 | } |
| 32 | #endif | ||
| 33 | 37 | ||
| 34 | #if IS_ENABLED(CONFIG_NF_NAT) | 38 | static inline void icmpv6_ndo_send(struct sk_buff *skb, |
| 35 | void icmpv6_ndo_send(struct sk_buff *skb_in, u8 type, u8 code, __u32 info); | 39 | u8 type, u8 code, __u32 info) |
| 36 | #else | 40 | { |
| 37 | #define icmpv6_ndo_send icmpv6_send | 41 | } |
| 38 | #endif | 42 | #endif |
| 39 | 43 | ||
| 40 | extern int icmpv6_init(void); | 44 | extern int icmpv6_init(void); |
| @@ -122,7 +122,7 @@ static inline int intel_svm_unbind_mm(struct device *dev, int pasid) · 121 unmodified lines | |||
| 122 | BUG(); | 122 | BUG(); |
| 123 | } | 123 | } |
| 124 | 124 | ||
| 125 | static int intel_svm_is_pasid_valid(struct device *dev, int pasid) | 125 | static inline int intel_svm_is_pasid_valid(struct device *dev, int pasid) |
| 126 | { | 126 | { |
| 127 | return -EINVAL; | 127 | return -EINVAL; |
| 128 | } | 128 | } |
| @@ -192,7 +192,7 @@ enum { · 191 unmodified lines | |||
| 192 | IRQ_DOMAIN_FLAG_HIERARCHY = (1 << 0), | 192 | IRQ_DOMAIN_FLAG_HIERARCHY = (1 << 0), |
| 193 | 193 | ||
| 194 | /* Irq domain name was allocated in __irq_domain_add() */ | 194 | /* Irq domain name was allocated in __irq_domain_add() */ |
| 195 | IRQ_DOMAIN_NAME_ALLOCATED = (1 << 6), | 195 | IRQ_DOMAIN_NAME_ALLOCATED = (1 << 1), |
| 196 | 196 | ||
| 197 | /* Irq domain is an IPI domain with virq per cpu */ | 197 | /* Irq domain is an IPI domain with virq per cpu */ |
| 198 | IRQ_DOMAIN_FLAG_IPI_PER_CPU = (1 << 2), | 198 | IRQ_DOMAIN_FLAG_IPI_PER_CPU = (1 << 2), |
| @@ -66,33 +66,15 @@ static inline ktime_t ktime_set(const s64 secs, const unsigned long nsecs) · 65 unmodified lines | |||
| 66 | */ | 66 | */ |
| 67 | #define ktime_sub_ns(kt, nsval) ((kt) - (nsval)) | 67 | #define ktime_sub_ns(kt, nsval) ((kt) - (nsval)) |
| 68 | 68 | ||
| 69 | /* convert a timespec to ktime_t format: */ | ||
| 70 | static inline ktime_t timespec_to_ktime(struct timespec ts) | ||
| 71 | { | ||
| 72 | return ktime_set(ts.tv_sec, ts.tv_nsec); | ||
| 73 | } | ||
| 74 | |||
| 75 | /* convert a timespec64 to ktime_t format: */ | 69 | /* convert a timespec64 to ktime_t format: */ |
| 76 | static inline ktime_t timespec64_to_ktime(struct timespec64 ts) | 70 | static inline ktime_t timespec64_to_ktime(struct timespec64 ts) |
| 77 | { | 71 | { |
| 78 | return ktime_set(ts.tv_sec, ts.tv_nsec); | 72 | return ktime_set(ts.tv_sec, ts.tv_nsec); |
| 79 | } | 73 | } |
| 80 | 74 | ||
| 81 | /* convert a timeval to ktime_t format: */ | ||
| 82 | static inline ktime_t timeval_to_ktime(struct timeval tv) | ||
| 83 | { | ||
| 84 | return ktime_set(tv.tv_sec, tv.tv_usec * NSEC_PER_USEC); | ||
| 85 | } | ||
| 86 | |||
| 87 | /* Map the ktime_t to timespec conversion to ns_to_timespec function */ | ||
| 88 | #define ktime_to_timespec(kt) ns_to_timespec((kt)) | ||
| 89 | |||
| 90 | /* Map the ktime_t to timespec conversion to ns_to_timespec function */ | 75 | /* Map the ktime_t to timespec conversion to ns_to_timespec function */ |
| 91 | #define ktime_to_timespec64(kt) ns_to_timespec64((kt)) | 76 | #define ktime_to_timespec64(kt) ns_to_timespec64((kt)) |
| 92 | 77 | ||
| 93 | /* Map the ktime_t to timeval conversion to ns_to_timeval function */ | ||
| 94 | #define ktime_to_timeval(kt) ns_to_timeval((kt)) | ||
| 95 | |||
| 96 | /* Convert ktime_t to nanoseconds */ | 78 | /* Convert ktime_t to nanoseconds */ |
| 97 | static inline s64 ktime_to_ns(const ktime_t kt) | 79 | static inline s64 ktime_to_ns(const ktime_t kt) |
| 98 | { | 80 | { |
| @@ -215,25 +197,6 @@ static inline ktime_t ktime_sub_ms(const ktime_t kt, const u64 msec) · 116 unmodified lines | |||
| 215 | 197 | ||
| 216 | extern ktime_t ktime_add_safe(const ktime_t lhs, const ktime_t rhs); | 198 | extern ktime_t ktime_add_safe(const ktime_t lhs, const ktime_t rhs); |
| 217 | 199 | ||
| 218 | /** | ||
| 219 | * ktime_to_timespec_cond - convert a ktime_t variable to timespec | ||
| 220 | * format only if the variable contains data | ||
| 221 | * @kt: the ktime_t variable to convert | ||
| 222 | * @ts: the timespec variable to store the result in | ||
| 223 | * | ||
| 224 | * Return: %true if there was a successful conversion, %false if kt was 0. | ||
| 225 | */ | ||
| 226 | static inline __must_check bool ktime_to_timespec_cond(const ktime_t kt, | ||
| 227 | struct timespec *ts) | ||
| 228 | { | ||
| 229 | if (kt) { | ||
| 230 | *ts = ktime_to_timespec(kt); | ||
| 231 | return true; | ||
| 232 | } else { | ||
| 233 | return false; | ||
| 234 | } | ||
| 235 | } | ||
| 236 | |||
| 237 | /** | 200 | /** |
| 238 | * ktime_to_timespec64_cond - convert a ktime_t variable to timespec64 | 201 | * ktime_to_timespec64_cond - convert a ktime_t variable to timespec64 |
| 239 | * format only if the variable contains data | 202 | * format only if the variable contains data |
| @@ -889,6 +889,8 @@ int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu); · 888 unmodified lines | |||
| 889 | bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu); | 889 | bool kvm_arch_vcpu_in_kernel(struct kvm_vcpu *vcpu); |
| 890 | int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu); | 890 | int kvm_arch_vcpu_should_kick(struct kvm_vcpu *vcpu); |
| 891 | bool kvm_arch_dy_runnable(struct kvm_vcpu *vcpu); | 891 | bool kvm_arch_dy_runnable(struct kvm_vcpu *vcpu); |
| 892 | int kvm_arch_post_init_vm(struct kvm *kvm); | ||
| 893 | void kvm_arch_pre_destroy_vm(struct kvm *kvm); | ||
| 892 | 894 | ||
| 893 | #ifndef __KVM_HAVE_ARCH_VM_ALLOC | 895 | #ifndef __KVM_HAVE_ARCH_VM_ALLOC |
| 894 | /* | 896 | /* |
| @@ -1342,7 +1344,7 @@ static inline void kvm_vcpu_set_dy_eligible(struct kvm_vcpu *vcpu, bool val) · 447 unmodified lines | |||
| 1342 | #endif /* CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT */ | 1344 | #endif /* CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT */ |
| 1343 | 1345 | ||
| 1344 | struct kvm_vcpu *kvm_get_running_vcpu(void); | 1346 | struct kvm_vcpu *kvm_get_running_vcpu(void); |
| 1345 | struct kvm_vcpu __percpu **kvm_get_running_vcpus(void); | 1347 | struct kvm_vcpu * __percpu *kvm_get_running_vcpus(void); |
| 1346 | 1348 | ||
| 1347 | #ifdef CONFIG_HAVE_KVM_IRQ_BYPASS | 1349 | #ifdef CONFIG_HAVE_KVM_IRQ_BYPASS |
| 1348 | bool kvm_arch_has_irq_bypass(void); | 1350 | bool kvm_arch_has_irq_bypass(void); |
| @@ -688,7 +688,10 @@ struct mlx5_ifc_flow_table_nic_cap_bits { · 687 unmodified lines | |||
| 688 | u8 nic_rx_multi_path_tirs[0x1]; | 688 | u8 nic_rx_multi_path_tirs[0x1]; |
| 689 | u8 nic_rx_multi_path_tirs_fts[0x1]; | 689 | u8 nic_rx_multi_path_tirs_fts[0x1]; |
| 690 | u8 allow_sniffer_and_nic_rx_shared_tir[0x1]; | 690 | u8 allow_sniffer_and_nic_rx_shared_tir[0x1]; |
| 691 | u8 reserved_at_3[0x1d]; | 691 | u8 reserved_at_3[0x4]; |
| 692 | u8 sw_owner_reformat_supported[0x1]; | ||
| 693 | u8 reserved_at_8[0x18]; | ||
| 694 | |||
| 692 | u8 encap_general_header[0x1]; | 695 | u8 encap_general_header[0x1]; |
| 693 | u8 reserved_at_21[0xa]; | 696 | u8 reserved_at_21[0xa]; |
| 694 | u8 log_max_packet_reformat_context[0x5]; | 697 | u8 log_max_packet_reformat_context[0x5]; |
| @@ -2715,6 +2715,10 @@ static inline bool debug_pagealloc_enabled_static(void) · 2714 unmodified lines | |||
| 2715 | #if defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_ARCH_HAS_SET_DIRECT_MAP) | 2715 | #if defined(CONFIG_DEBUG_PAGEALLOC) || defined(CONFIG_ARCH_HAS_SET_DIRECT_MAP) |
| 2716 | extern void __kernel_map_pages(struct page *page, int numpages, int enable); | 2716 | extern void __kernel_map_pages(struct page *page, int numpages, int enable); |
| 2717 | 2717 | ||
| 2718 | /* | ||
| 2719 | * When called in DEBUG_PAGEALLOC context, the call should most likely be | ||
| 2720 | * guarded by debug_pagealloc_enabled() or debug_pagealloc_enabled_static() | ||
| 2721 | */ | ||
| 2718 | static inline void | 2722 | static inline void |
| 2719 | kernel_map_pages(struct page *page, int numpages, int enable) | 2723 | kernel_map_pages(struct page *page, int numpages, int enable) |
| 2720 | { | 2724 | { |
| @@ -72,6 +72,8 @@ void netdev_set_default_ethtool_ops(struct net_device *dev, · 71 unmodified lines | |||
| 72 | #define NET_RX_SUCCESS 0 /* keep 'em coming, baby */ | 72 | #define NET_RX_SUCCESS 0 /* keep 'em coming, baby */ |
| 73 | #define NET_RX_DROP 1 /* packet dropped */ | 73 | #define NET_RX_DROP 1 /* packet dropped */ |
| 74 | 74 | ||
| 75 | #define MAX_NEST_DEV 8 | ||
| 76 | |||
| 75 | /* | 77 | /* |
| 76 | * Transmit return codes: transmit return codes originate from three different | 78 | * Transmit return codes: transmit return codes originate from three different |
| 77 | * namespaces: | 79 | * namespaces: |
| @@ -4389,11 +4391,8 @@ void *netdev_lower_get_next(struct net_device *dev, · 4311 unmodified lines | |||
| 4389 | ldev; \ | 4391 | ldev; \ |
| 4390 | ldev = netdev_lower_get_next(dev, &(iter))) | 4392 | ldev = netdev_lower_get_next(dev, &(iter))) |
| 4391 | 4393 | ||
| 4392 | struct net_device *netdev_all_lower_get_next(struct net_device *dev, | 4394 | struct net_device *netdev_next_lower_dev_rcu(struct net_device *dev, |
| 4393 | struct list_head **iter); | 4395 | struct list_head **iter); |
| 4394 | struct net_device *netdev_all_lower_get_next_rcu(struct net_device *dev, | ||
| 4395 | struct list_head **iter); | ||
| 4396 | |||
| 4397 | int netdev_walk_all_lower_dev(struct net_device *dev, | 4396 | int netdev_walk_all_lower_dev(struct net_device *dev, |
| 4398 | int (*fn)(struct net_device *lower_dev, | 4397 | int (*fn)(struct net_device *lower_dev, |
| 4399 | void *data), | 4398 | void *data), |
| @@ -121,6 +121,7 @@ struct ip_set_ext { · 120 unmodified lines | |||
| 121 | u32 timeout; | 121 | u32 timeout; |
| 122 | u8 packets_op; | 122 | u8 packets_op; |
| 123 | u8 bytes_op; | 123 | u8 bytes_op; |
| 124 | bool target; | ||
| 124 | }; | 125 | }; |
| 125 | 126 | ||
| 126 | struct ip_set; | 127 | struct ip_set; |
| @@ -187,6 +188,14 @@ struct ip_set_type_variant { · 60 unmodified lines | |||
| 187 | /* Return true if "b" set is the same as "a" | 188 | /* Return true if "b" set is the same as "a" |
| 188 | * according to the create set parameters */ | 189 | * according to the create set parameters */ |
| 189 | bool (*same_set)(const struct ip_set *a, const struct ip_set *b); | 190 | bool (*same_set)(const struct ip_set *a, const struct ip_set *b); |
| 191 | /* Region-locking is used */ | ||
| 192 | bool region_lock; | ||
| 193 | }; | ||
| 194 | |||
| 195 | struct ip_set_region { | ||
| 196 | spinlock_t lock; /* Region lock */ | ||
| 197 | size_t ext_size; /* Size of the dynamic extensions */ | ||
| 198 | u32 elements; /* Number of elements vs timeout */ | ||
| 190 | }; | 199 | }; |
| 191 | 200 | ||
| 192 | /* The core set type structure */ | 201 | /* The core set type structure */ |
| @@ -501,7 +510,7 @@ ip_set_init_skbinfo(struct ip_set_skbinfo *skbinfo, · 308 unmodified lines | |||
| 501 | } | 510 | } |
| 502 | 511 | ||
| 503 | #define IP_SET_INIT_KEXT(skb, opt, set) \ | 512 | #define IP_SET_INIT_KEXT(skb, opt, set) \ |
| 504 | { .bytes = (skb)->len, .packets = 1, \ | 513 | { .bytes = (skb)->len, .packets = 1, .target = true,\ |
| 505 | .timeout = ip_set_adt_opt_timeout(opt, set) } | 514 | .timeout = ip_set_adt_opt_timeout(opt, set) } |
| 506 | 515 | ||
| 507 | #define IP_SET_INIT_UEXT(set) \ | 516 | #define IP_SET_INIT_UEXT(set) \ |
| @@ -11,6 +11,7 @@ struct omap2_mcspi_platform_config { · 10 unmodified lines | |||
| 11 | unsigned short num_cs; | 11 | unsigned short num_cs; |
| 12 | unsigned int regs_offset; | 12 | unsigned int regs_offset; |
| 13 | unsigned int pin_dir:1; | 13 | unsigned int pin_dir:1; |
| 14 | size_t max_xfer_len; | ||
| 14 | }; | 15 | }; |
| 15 | 16 | ||
| 16 | struct omap2_mcspi_device_config { | 17 | struct omap2_mcspi_device_config { |
| @@ -145,6 +145,13 @@ static inline void hlist_nulls_add_tail_rcu(struct hlist_nulls_node *n, · 144 unmodified lines | |||
| 145 | } | 145 | } |
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | /* after that hlist_nulls_del will work */ | ||
| 149 | static inline void hlist_nulls_add_fake(struct hlist_nulls_node *n) | ||
| 150 | { | ||
| 151 | n->pprev = &n->next; | ||
| 152 | n->next = (struct hlist_nulls_node *)NULLS_MARKER(NULL); | ||
| 153 | } | ||
| 154 | |||
| 148 | /** | 155 | /** |
| 149 | * hlist_nulls_for_each_entry_rcu - iterate over rcu list of given type | 156 | * hlist_nulls_for_each_entry_rcu - iterate over rcu list of given type |
| 150 | * @tpos: the type * to use as a loop cursor. | 157 | * @tpos: the type * to use as a loop cursor. |
| @@ -611,9 +611,15 @@ typedef unsigned char *sk_buff_data_t; · 610 unmodified lines | |||
| 611 | * @next: Next buffer in list | 611 | * @next: Next buffer in list |
| 612 | * @prev: Previous buffer in list | 612 | * @prev: Previous buffer in list |
| 613 | * @tstamp: Time we arrived/left | 613 | * @tstamp: Time we arrived/left |
| 614 | * @skb_mstamp_ns: (aka @tstamp) earliest departure time; start point | ||
| 615 | * for retransmit timer | ||
| 614 | * @rbnode: RB tree node, alternative to next/prev for netem/tcp | 616 | * @rbnode: RB tree node, alternative to next/prev for netem/tcp |
| 617 | * @list: queue head | ||
| 615 | * @sk: Socket we are owned by | 618 | * @sk: Socket we are owned by |
| 619 | * @ip_defrag_offset: (aka @sk) alternate use of @sk, used in | ||
| 620 | * fragmentation management | ||
| 616 | * @dev: Device we arrived on/are leaving by | 621 | * @dev: Device we arrived on/are leaving by |
| 622 | * @dev_scratch: (aka @dev) alternate use of @dev when @dev would be %NULL | ||
| 617 | * @cb: Control buffer. Free for use by every layer. Put private vars here | 623 | * @cb: Control buffer. Free for use by every layer. Put private vars here |
| 618 | * @_skb_refdst: destination entry (with norefcount bit) | 624 | * @_skb_refdst: destination entry (with norefcount bit) |
| 619 | * @sp: the security path, used for xfrm | 625 | * @sp: the security path, used for xfrm |
| @@ -632,6 +638,9 @@ typedef unsigned char *sk_buff_data_t; · 12 unmodified lines | |||
| 632 | * @pkt_type: Packet class | 638 | * @pkt_type: Packet class |
| 633 | * @fclone: skbuff clone status | 639 | * @fclone: skbuff clone status |
| 634 | * @ipvs_property: skbuff is owned by ipvs | 640 | * @ipvs_property: skbuff is owned by ipvs |
| 641 | * @inner_protocol_type: whether the inner protocol is | ||
| 642 | * ENCAP_TYPE_ETHER or ENCAP_TYPE_IPPROTO | ||
| 643 | * @remcsum_offload: remote checksum offload is enabled | ||
| 635 | * @offload_fwd_mark: Packet was L2-forwarded in hardware | 644 | * @offload_fwd_mark: Packet was L2-forwarded in hardware |
| 636 | * @offload_l3_fwd_mark: Packet was L3-forwarded in hardware | 645 | * @offload_l3_fwd_mark: Packet was L3-forwarded in hardware |
| 637 | * @tc_skip_classify: do not classify packet. set by IFB device | 646 | * @tc_skip_classify: do not classify packet. set by IFB device |
| @@ -650,6 +659,8 @@ typedef unsigned char *sk_buff_data_t; · 12 unmodified lines | |||
| 650 | * @tc_index: Traffic control index | 659 | * @tc_index: Traffic control index |
| 651 | * @hash: the packet hash | 660 | * @hash: the packet hash |
| 652 | * @queue_mapping: Queue mapping for multiqueue devices | 661 | * @queue_mapping: Queue mapping for multiqueue devices |
| 662 | * @head_frag: skb was allocated from page fragments, | ||
| 663 | * not allocated by kmalloc() or vmalloc(). | ||
| 653 | * @pfmemalloc: skbuff was allocated from PFMEMALLOC reserves | 664 | * @pfmemalloc: skbuff was allocated from PFMEMALLOC reserves |
| 654 | * @active_extensions: active extensions (skb_ext_id types) | 665 | * @active_extensions: active extensions (skb_ext_id types) |
| 655 | * @ndisc_nodetype: router type (from link layer) | 666 | * @ndisc_nodetype: router type (from link layer) |
| @@ -660,15 +671,28 @@ typedef unsigned char *sk_buff_data_t; · 4 unmodified lines | |||
| 660 | * @wifi_acked_valid: wifi_acked was set | 671 | * @wifi_acked_valid: wifi_acked was set |
| 661 | * @wifi_acked: whether frame was acked on wifi or not | 672 | * @wifi_acked: whether frame was acked on wifi or not |
| 662 | * @no_fcs: Request NIC to treat last 4 bytes as Ethernet FCS | 673 | * @no_fcs: Request NIC to treat last 4 bytes as Ethernet FCS |
| 674 | * @encapsulation: indicates the inner headers in the skbuff are valid | ||
| 675 | * @encap_hdr_csum: software checksum is needed | ||
| 676 | * @csum_valid: checksum is already valid | ||
| 663 | * @csum_not_inet: use CRC32c to resolve CHECKSUM_PARTIAL | 677 | * @csum_not_inet: use CRC32c to resolve CHECKSUM_PARTIAL |
| 678 | * @csum_complete_sw: checksum was completed by software | ||
| 679 | * @csum_level: indicates the number of consecutive checksums found in | ||
| 680 | * the packet minus one that have been verified as | ||
| 681 | * CHECKSUM_UNNECESSARY (max 3) | ||
| 664 | * @dst_pending_confirm: need to confirm neighbour | 682 | * @dst_pending_confirm: need to confirm neighbour |
| 665 | * @decrypted: Decrypted SKB | 683 | * @decrypted: Decrypted SKB |
| 666 | * @napi_id: id of the NAPI struct this skb came from | 684 | * @napi_id: id of the NAPI struct this skb came from |
| 685 | * @sender_cpu: (aka @napi_id) source CPU in XPS | ||
| 667 | * @secmark: security marking | 686 | * @secmark: security marking |
| 668 | * @mark: Generic packet mark | 687 | * @mark: Generic packet mark |
| 688 | * @reserved_tailroom: (aka @mark) number of bytes of free space available | ||
| 689 | * at the tail of an sk_buff | ||
| 690 | * @vlan_present: VLAN tag is present | ||
| 669 | * @vlan_proto: vlan encapsulation protocol | 691 | * @vlan_proto: vlan encapsulation protocol |
| 670 | * @vlan_tci: vlan tag control information | 692 | * @vlan_tci: vlan tag control information |
| 671 | * @inner_protocol: Protocol (encapsulation) | 693 | * @inner_protocol: Protocol (encapsulation) |
| 694 | * @inner_ipproto: (aka @inner_protocol) stores ipproto when | ||
| 695 | * skb->inner_protocol_type == ENCAP_TYPE_IPPROTO; | ||
| 672 | * @inner_transport_header: Inner transport layer header (encapsulation) | 696 | * @inner_transport_header: Inner transport layer header (encapsulation) |
| 673 | * @inner_network_header: Network layer header (encapsulation) | 697 | * @inner_network_header: Network layer header (encapsulation) |
| 674 | * @inner_mac_header: Link layer header (encapsulation) | 698 | * @inner_mac_header: Link layer header (encapsulation) |
| @@ -750,7 +774,9 @@ struct sk_buff { · 75 unmodified lines | |||
| 750 | #endif | 774 | #endif |
| 751 | #define CLONED_OFFSET() offsetof(struct sk_buff, __cloned_offset) | 775 | #define CLONED_OFFSET() offsetof(struct sk_buff, __cloned_offset) |
| 752 | 776 | ||
| 777 | /* private: */ | ||
| 753 | __u8 __cloned_offset[0]; | 778 | __u8 __cloned_offset[0]; |
| 779 | /* public: */ | ||
| 754 | __u8 cloned:1, | 780 | __u8 cloned:1, |
| 755 | nohdr:1, | 781 | nohdr:1, |
| 756 | fclone:2, | 782 | fclone:2, |
| @@ -775,7 +801,9 @@ struct sk_buff { · 18 unmodified lines | |||
| 775 | #endif | 801 | #endif |
| 776 | #define PKT_TYPE_OFFSET() offsetof(struct sk_buff, __pkt_type_offset) | 802 | #define PKT_TYPE_OFFSET() offsetof(struct sk_buff, __pkt_type_offset) |
| 777 | 803 | ||
| 804 | /* private: */ | ||
| 778 | __u8 __pkt_type_offset[0]; | 805 | __u8 __pkt_type_offset[0]; |
| 806 | /* public: */ | ||
| 779 | __u8 pkt_type:3; | 807 | __u8 pkt_type:3; |
| 780 | __u8 ignore_df:1; | 808 | __u8 ignore_df:1; |
| 781 | __u8 nf_trace:1; | 809 | __u8 nf_trace:1; |
| @@ -798,7 +826,9 @@ struct sk_buff { · 16 unmodified lines | |||
| 798 | #define PKT_VLAN_PRESENT_BIT 0 | 826 | #define PKT_VLAN_PRESENT_BIT 0 |
| 799 | #endif | 827 | #endif |
| 800 | #define PKT_VLAN_PRESENT_OFFSET() offsetof(struct sk_buff, __pkt_vlan_present_offset) | 828 | #define PKT_VLAN_PRESENT_OFFSET() offsetof(struct sk_buff, __pkt_vlan_present_offset) |
| 829 | /* private: */ | ||
| 801 | __u8 __pkt_vlan_present_offset[0]; | 830 | __u8 __pkt_vlan_present_offset[0]; |
| 831 | /* public: */ | ||
| 802 | __u8 vlan_present:1; | 832 | __u8 vlan_present:1; |
| 803 | __u8 csum_complete_sw:1; | 833 | __u8 csum_complete_sw:1; |
| 804 | __u8 csum_level:2; | 834 | __u8 csum_level:2; |
| @@ -64,6 +64,9 @@ extern void swiotlb_tbl_sync_single(struct device *hwdev, · 63 unmodified lines | |||
| 64 | size_t size, enum dma_data_direction dir, | 64 | size_t size, enum dma_data_direction dir, |
| 65 | enum dma_sync_target target); | 65 | enum dma_sync_target target); |
| 66 | 66 | ||
| 67 | dma_addr_t swiotlb_map(struct device *dev, phys_addr_t phys, | ||
| 68 | size_t size, enum dma_data_direction dir, unsigned long attrs); | ||
| 69 | |||
| 67 | #ifdef CONFIG_SWIOTLB | 70 | #ifdef CONFIG_SWIOTLB |
| 68 | extern enum swiotlb_force swiotlb_force; | 71 | extern enum swiotlb_force swiotlb_force; |
| 69 | extern phys_addr_t io_tlb_start, io_tlb_end; | 72 | extern phys_addr_t io_tlb_start, io_tlb_end; |
| @@ -73,8 +76,6 @@ static inline bool is_swiotlb_buffer(phys_addr_t paddr) · 3 unmodified lines | |||
| 73 | return paddr >= io_tlb_start && paddr < io_tlb_end; | 76 | return paddr >= io_tlb_start && paddr < io_tlb_end; |
| 74 | } | 77 | } |
| 75 | 78 | ||
| 76 | bool swiotlb_map(struct device *dev, phys_addr_t *phys, dma_addr_t *dma_addr, | ||
| 77 | size_t size, enum dma_data_direction dir, unsigned long attrs); | ||
| 78 | void __init swiotlb_exit(void); | 79 | void __init swiotlb_exit(void); |
| 79 | unsigned int swiotlb_max_segment(void); | 80 | unsigned int swiotlb_max_segment(void); |
| 80 | size_t swiotlb_max_mapping_size(struct device *dev); | 81 | size_t swiotlb_max_mapping_size(struct device *dev); |
| @@ -85,12 +86,6 @@ static inline bool is_swiotlb_buffer(phys_addr_t paddr) · 4 unmodified lines | |||
| 85 | { | 86 | { |
| 86 | return false; | 87 | return false; |
| 87 | } | 88 | } |
| 88 | static inline bool swiotlb_map(struct device *dev, phys_addr_t *phys, | ||
| 89 | dma_addr_t *dma_addr, size_t size, enum dma_data_direction dir, | ||
| 90 | unsigned long attrs) | ||
| 91 | { | ||
| 92 | return false; | ||
| 93 | } | ||
| 94 | static inline void swiotlb_exit(void) | 89 | static inline void swiotlb_exit(void) |
| 95 | { | 90 | { |
| 96 | } | 91 | } |
| @@ -12,8 +12,6 @@ · 11 unmodified lines | |||
| 12 | #include <linux/time64.h> | 12 | #include <linux/time64.h> |
| 13 | #include <linux/timex.h> | 13 | #include <linux/timex.h> |
| 14 | 14 | ||
| 15 | #define TIME_T_MAX (__kernel_old_time_t)((1UL << ((sizeof(__kernel_old_time_t) << 3) - 1)) - 1) | ||
| 16 | |||
| 17 | typedef s32 old_time32_t; | 15 | typedef s32 old_time32_t; |
| 18 | 16 | ||
| 19 | struct old_timespec32 { | 17 | struct old_timespec32 { |
| @@ -73,162 +71,12 @@ struct __kernel_timex; · 53 unmodified lines | |||
| 73 | int get_old_timex32(struct __kernel_timex *, const struct old_timex32 __user *); | 71 | int get_old_timex32(struct __kernel_timex *, const struct old_timex32 __user *); |
| 74 | int put_old_timex32(struct old_timex32 __user *, const struct __kernel_timex *); | 72 | int put_old_timex32(struct old_timex32 __user *, const struct __kernel_timex *); |
| 75 | 73 | ||
| 76 | #if __BITS_PER_LONG == 64 | ||
| 77 | |||
| 78 | /* timespec64 is defined as timespec here */ | ||
| 79 | static inline struct timespec timespec64_to_timespec(const struct timespec64 ts64) | ||
| 80 | { | ||
| 81 | return *(const struct timespec *)&ts64; | ||
| 82 | } | ||
| 83 | |||
| 84 | static inline struct timespec64 timespec_to_timespec64(const struct timespec ts) | ||
| 85 | { | ||
| 86 | return *(const struct timespec64 *)&ts; | ||
| 87 | } | ||
| 88 | |||
| 89 | #else | ||
| 90 | static inline struct timespec timespec64_to_timespec(const struct timespec64 ts64) | ||
| 91 | { | ||
| 92 | struct timespec ret; | ||
| 93 | |||
| 94 | ret.tv_sec = (time_t)ts64.tv_sec; | ||
| 95 | ret.tv_nsec = ts64.tv_nsec; | ||
| 96 | return ret; | ||
| 97 | } | ||
| 98 | |||
| 99 | static inline struct timespec64 timespec_to_timespec64(const struct timespec ts) | ||
| 100 | { | ||
| 101 | struct timespec64 ret; | ||
| 102 | |||
| 103 | ret.tv_sec = ts.tv_sec; | ||
| 104 | ret.tv_nsec = ts.tv_nsec; | ||
| 105 | return ret; | ||
| 106 | } | ||
| 107 | #endif | ||
| 108 | |||
| 109 | static inline int timespec_equal(const struct timespec *a, | ||
| 110 | const struct timespec *b) | ||
| 111 | { | ||
| 112 | return (a->tv_sec == b->tv_sec) && (a->tv_nsec == b->tv_nsec); | ||
| 113 | } | ||
| 114 | |||
| 115 | /* | ||
| 116 | * lhs < rhs: return <0 | ||
| 117 | * lhs == rhs: return 0 | ||
| 118 | * lhs > rhs: return >0 | ||
| 119 | */ | ||
| 120 | static inline int timespec_compare(const struct timespec *lhs, const struct timespec *rhs) | ||
| 121 | { | ||
| 122 | if (lhs->tv_sec < rhs->tv_sec) | ||
| 123 | return -1; | ||
| 124 | if (lhs->tv_sec > rhs->tv_sec) | ||
| 125 | return 1; | ||
| 126 | return lhs->tv_nsec - rhs->tv_nsec; | ||
| 127 | } | ||
| 128 | |||
| 129 | /* | ||
| 130 | * Returns true if the timespec is norm, false if denorm: | ||
| 131 | */ | ||
| 132 | static inline bool timespec_valid(const struct timespec *ts) | ||
| 133 | { | ||
| 134 | /* Dates before 1970 are bogus */ | ||
| 135 | if (ts->tv_sec < 0) | ||
| 136 | return false; | ||
| 137 | /* Can't have more nanoseconds then a second */ | ||
| 138 | if ((unsigned long)ts->tv_nsec >= NSEC_PER_SEC) | ||
| 139 | return false; | ||
| 140 | return true; | ||
| 141 | } | ||
| 142 | |||
| 143 | /** | ||
| 144 | * timespec_to_ns - Convert timespec to nanoseconds | ||
| 145 | * @ts: pointer to the timespec variable to be converted | ||
| 146 | * | ||
| 147 | * Returns the scalar nanosecond representation of the timespec | ||
| 148 | * parameter. | ||
| 149 | */ | ||
| 150 | static inline s64 timespec_to_ns(const struct timespec *ts) | ||
| 151 | { | ||
| 152 | return ((s64) ts->tv_sec * NSEC_PER_SEC) + ts->tv_nsec; | ||
| 153 | } | ||
| 154 | |||
| 155 | /** | 74 | /** |
| 156 | * ns_to_timespec - Convert nanoseconds to timespec | 75 | * ns_to_kernel_old_timeval - Convert nanoseconds to timeval |
| 157 | * @nsec: the nanoseconds value to be converted | ||
| 158 | * | ||
| 159 | * Returns the timespec representation of the nsec parameter. | ||
| 160 | */ | ||
| 161 | extern struct timespec ns_to_timespec(const s64 nsec); | ||
| 162 | |||
| 163 | /** | ||
| 164 | * timespec_add_ns - Adds nanoseconds to a timespec | ||
| 165 | * @a: pointer to timespec to be incremented | ||
| 166 | * @ns: unsigned nanoseconds value to be added | ||
| 167 | * | ||
| 168 | * This must always be inlined because its used from the x86-64 vdso, | ||
| 169 | * which cannot call other kernel functions. | ||
| 170 | */ | ||
| 171 | static __always_inline void timespec_add_ns(struct timespec *a, u64 ns) | ||
| 172 | { | ||
| 173 | a->tv_sec += __iter_div_u64_rem(a->tv_nsec + ns, NSEC_PER_SEC, &ns); | ||
| 174 | a->tv_nsec = ns; | ||
| 175 | } | ||
| 176 | |||
| 177 | static inline unsigned long mktime(const unsigned int year, | ||
| 178 | const unsigned int mon, const unsigned int day, | ||
| 179 | const unsigned int hour, const unsigned int min, | ||
| 180 | const unsigned int sec) | ||
| 181 | { | ||
| 182 | return mktime64(year, mon, day, hour, min, sec); | ||
| 183 | } | ||
| 184 | |||
| 185 | static inline bool timeval_valid(const struct timeval *tv) | ||
| 186 | { | ||
| 187 | /* Dates before 1970 are bogus */ | ||
| 188 | if (tv->tv_sec < 0) | ||
| 189 | return false; | ||
| 190 | |||
| 191 | /* Can't have more microseconds then a second */ | ||
| 192 | if (tv->tv_usec < 0 || tv->tv_usec >= USEC_PER_SEC) | ||
| 193 | return false; | ||
| 194 | |||
| 195 | return true; | ||
| 196 | } | ||
| 197 | |||
| 198 | /** | ||
| 199 | * timeval_to_ns - Convert timeval to nanoseconds | ||
| 200 | * @ts: pointer to the timeval variable to be converted | ||
| 201 | * | ||
| 202 | * Returns the scalar nanosecond representation of the timeval | ||
| 203 | * parameter. | ||
| 204 | */ | ||
| 205 | static inline s64 timeval_to_ns(const struct timeval *tv) | ||
| 206 | { | ||
| 207 | return ((s64) tv->tv_sec * NSEC_PER_SEC) + | ||
| 208 | tv->tv_usec * NSEC_PER_USEC; | ||
| 209 | } | ||
| 210 | |||
| 211 | /** | ||
| 212 | * ns_to_timeval - Convert nanoseconds to timeval | ||
| 213 | * @nsec: the nanoseconds value to be converted | 76 | * @nsec: the nanoseconds value to be converted |
| 214 | * | 77 | * |
| 215 | * Returns the timeval representation of the nsec parameter. | 78 | * Returns the timeval representation of the nsec parameter. |
| 216 | */ | 79 | */ |
| 217 | extern struct timeval ns_to_timeval(const s64 nsec); | ||
| 218 | extern struct __kernel_old_timeval ns_to_kernel_old_timeval(s64 nsec); | 80 | extern struct __kernel_old_timeval ns_to_kernel_old_timeval(s64 nsec); |
| 219 | 81 | ||
| 220 | /* | ||
| 221 | * Old names for the 32-bit time_t interfaces, these will be removed | ||
| 222 | * when everything uses the new names. | ||
| 223 | */ | ||
| 224 | #define compat_time_t old_time32_t | ||
| 225 | #define compat_timeval old_timeval32 | ||
| 226 | #define compat_timespec old_timespec32 | ||
| 227 | #define compat_itimerspec old_itimerspec32 | ||
| 228 | #define ns_to_compat_timeval ns_to_old_timeval32 | ||
| 229 | #define get_compat_itimerspec64 get_old_itimerspec32 | ||
| 230 | #define put_compat_itimerspec64 put_old_itimerspec32 | ||
| 231 | #define compat_get_timespec64 get_old_timespec32 | ||
| 232 | #define compat_put_timespec64 put_old_timespec32 | ||
| 233 | |||
| 234 | #endif | 82 | #endif |
| @@ -11,36 +11,4 @@ static inline unsigned long get_seconds(void) · 10 unmodified lines | |||
| 11 | return ktime_get_real_seconds(); | 11 | return ktime_get_real_seconds(); |
| 12 | } | 12 | } |
| 13 | 13 | ||
| 14 | static inline void getnstimeofday(struct timespec *ts) | ||
| 15 | { | ||
| 16 | struct timespec64 ts64; | ||
| 17 | |||
| 18 | ktime_get_real_ts64(&ts64); | ||
| 19 | *ts = timespec64_to_timespec(ts64); | ||
| 20 | } | ||
| 21 | |||
| 22 | static inline void ktime_get_ts(struct timespec *ts) | ||
| 23 | { | ||
| 24 | struct timespec64 ts64; | ||
| 25 | |||
| 26 | ktime_get_ts64(&ts64); | ||
| 27 | *ts = timespec64_to_timespec(ts64); | ||
| 28 | } | ||
| 29 | |||
| 30 | static inline void getrawmonotonic(struct timespec *ts) | ||
| 31 | { | ||
| 32 | struct timespec64 ts64; | ||
| 33 | |||
| 34 | ktime_get_raw_ts64(&ts64); | ||
| 35 | *ts = timespec64_to_timespec(ts64); | ||
| 36 | } | ||
| 37 | |||
| 38 | static inline void getboottime(struct timespec *ts) | ||
| 39 | { | ||
| 40 | struct timespec64 ts64; | ||
| 41 | |||
| 42 | getboottime64(&ts64); | ||
| 43 | *ts = timespec64_to_timespec(ts64); | ||
| 44 | } | ||
| 45 | |||
| 46 | #endif | 14 | #endif |
| @@ -225,6 +225,8 @@ struct tty_port_client_operations { · 224 unmodified lines | |||
| 225 | void (*write_wakeup)(struct tty_port *port); | 225 | void (*write_wakeup)(struct tty_port *port); |
| 226 | }; | 226 | }; |
| 227 | 227 | ||
| 228 | extern const struct tty_port_client_operations tty_port_default_client_ops; | ||
| 229 | |||
| 228 | struct tty_port { | 230 | struct tty_port { |
| 229 | struct tty_bufhead buf; /* Locked internally */ | 231 | struct tty_bufhead buf; /* Locked internally */ |
| 230 | struct tty_struct *tty; /* Back pointer */ | 232 | struct tty_struct *tty; /* Back pointer */ |
| @@ -65,11 +65,6 @@ typedef __kernel_ssize_t ssize_t; · 64 unmodified lines | |||
| 65 | typedef __kernel_ptrdiff_t ptrdiff_t; | 65 | typedef __kernel_ptrdiff_t ptrdiff_t; |
| 66 | #endif | 66 | #endif |
| 67 | 67 | ||
| 68 | #ifndef _TIME_T | ||
| 69 | #define _TIME_T | ||
| 70 | typedef __kernel_old_time_t time_t; | ||
| 71 | #endif | ||
| 72 | |||
| 73 | #ifndef _CLOCK_T | 68 | #ifndef _CLOCK_T |
| 74 | #define _CLOCK_T | 69 | #define _CLOCK_T |
| 75 | typedef __kernel_clock_t clock_t; | 70 | typedef __kernel_clock_t clock_t; |
| @@ -69,4 +69,7 @@ · 68 unmodified lines | |||
| 69 | /* Hub needs extra delay after resetting its port. */ | 69 | /* Hub needs extra delay after resetting its port. */ |
| 70 | #define USB_QUIRK_HUB_SLOW_RESET BIT(14) | 70 | #define USB_QUIRK_HUB_SLOW_RESET BIT(14) |
| 71 | 71 | ||
| 72 | /* device has blacklisted endpoints */ | ||
| 73 | #define USB_QUIRK_ENDPOINT_BLACKLIST BIT(15) | ||
| 74 | |||
| 72 | #endif /* __LINUX_USB_QUIRKS_H */ | 75 | #endif /* __LINUX_USB_QUIRKS_H */ |