diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-09 16:33:36 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-07-09 16:33:36 -0400 |
| commit | a82a729f04232ccd0b59406574ba4cf20027a49d (patch) | |
| tree | da5912344b00ed60a1a653fc2442db7425db289d /include/linux | |
| parent | 899dd388853071f5c8848545209d4e2c5d95b1d9 (diff) | |
| parent | 27daabd9b6a157c34a6e7a7f509fa26866e6420f (diff) | |
Merge branch 'akpm' (updates from Andrew Morton)
Merge second patch-bomb from Andrew Morton:
- misc fixes
- audit stuff
- fanotify/inotify/dnotify things
- most of the rest of MM. The new cache shrinker code from Glauber and
Dave Chinner probably isn't quite stabilized yet.
- ptrace
- ipc
- partitions
- reboot cleanups
- add LZ4 decompressor, use it for kernel compression
* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (118 commits)
lib/scatterlist: error handling in __sg_alloc_table()
scsi_debug: fix do_device_access() with wrap around range
crypto: talitos: use sg_pcopy_to_buffer()
lib/scatterlist: introduce sg_pcopy_from_buffer() and sg_pcopy_to_buffer()
lib/scatterlist: factor out sg_miter_get_next_page() from sg_miter_next()
crypto: add lz4 Cryptographic API
lib: add lz4 compressor module
arm: add support for LZ4-compressed kernel
lib: add support for LZ4-compressed kernel
decompressor: add LZ4 decompressor module
lib: add weak clz/ctz functions
reboot: move arch/x86 reboot= handling to generic kernel
reboot: arm: change reboot_mode to use enum reboot_mode
reboot: arm: prepare reboot_mode for moving to generic kernel code
reboot: arm: remove unused restart_mode fields from some arm subarchs
reboot: unicore32: prepare reboot_mode for moving to generic kernel code
reboot: x86: prepare reboot_mode for moving to generic kernel code
reboot: checkpatch.pl the new kernel/reboot.c file
reboot: move shutdown/reboot related functions to kernel/reboot.c
reboot: remove -stable friendly PF_THREAD_BOUND define
...
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/audit.h | 26 | ||||
| -rw-r--r-- | include/linux/decompress/unlz4.h | 10 | ||||
| -rw-r--r-- | include/linux/fs.h | 4 | ||||
| -rw-r--r-- | include/linux/gfp.h | 2 | ||||
| -rw-r--r-- | include/linux/lz4.h | 87 | ||||
| -rw-r--r-- | include/linux/mm.h | 6 | ||||
| -rw-r--r-- | include/linux/mmzone.h | 28 | ||||
| -rw-r--r-- | include/linux/ptrace.h | 10 | ||||
| -rw-r--r-- | include/linux/reboot.h | 27 | ||||
| -rw-r--r-- | include/linux/scatterlist.h | 5 | ||||
| -rw-r--r-- | include/linux/sched.h | 3 | ||||
| -rw-r--r-- | include/linux/sem.h | 6 | ||||
| -rw-r--r-- | include/linux/vexpress.h | 1 | ||||
| -rw-r--r-- | include/linux/vmalloc.h | 12 | ||||
| -rw-r--r-- | include/linux/writeback.h | 8 |
15 files changed, 170 insertions, 65 deletions
diff --git a/include/linux/audit.h b/include/linux/audit.h index b20b03852f21..729a4d165bcc 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h | |||
| @@ -103,8 +103,11 @@ extern void __audit_syscall_exit(int ret_success, long ret_value); | |||
| 103 | extern struct filename *__audit_reusename(const __user char *uptr); | 103 | extern struct filename *__audit_reusename(const __user char *uptr); |
| 104 | extern void __audit_getname(struct filename *name); | 104 | extern void __audit_getname(struct filename *name); |
| 105 | extern void audit_putname(struct filename *name); | 105 | extern void audit_putname(struct filename *name); |
| 106 | |||
| 107 | #define AUDIT_INODE_PARENT 1 /* dentry represents the parent */ | ||
| 108 | #define AUDIT_INODE_HIDDEN 2 /* audit record should be hidden */ | ||
| 106 | extern void __audit_inode(struct filename *name, const struct dentry *dentry, | 109 | extern void __audit_inode(struct filename *name, const struct dentry *dentry, |
| 107 | unsigned int parent); | 110 | unsigned int flags); |
| 108 | extern void __audit_inode_child(const struct inode *parent, | 111 | extern void __audit_inode_child(const struct inode *parent, |
| 109 | const struct dentry *dentry, | 112 | const struct dentry *dentry, |
| 110 | const unsigned char type); | 113 | const unsigned char type); |
| @@ -148,10 +151,22 @@ static inline void audit_getname(struct filename *name) | |||
| 148 | if (unlikely(!audit_dummy_context())) | 151 | if (unlikely(!audit_dummy_context())) |
| 149 | __audit_getname(name); | 152 | __audit_getname(name); |
| 150 | } | 153 | } |
| 151 | static inline void audit_inode(struct filename *name, const struct dentry *dentry, | 154 | static inline void audit_inode(struct filename *name, |
| 155 | const struct dentry *dentry, | ||
| 152 | unsigned int parent) { | 156 | unsigned int parent) { |
| 157 | if (unlikely(!audit_dummy_context())) { | ||
| 158 | unsigned int flags = 0; | ||
| 159 | if (parent) | ||
| 160 | flags |= AUDIT_INODE_PARENT; | ||
| 161 | __audit_inode(name, dentry, flags); | ||
| 162 | } | ||
| 163 | } | ||
| 164 | static inline void audit_inode_parent_hidden(struct filename *name, | ||
| 165 | const struct dentry *dentry) | ||
| 166 | { | ||
| 153 | if (unlikely(!audit_dummy_context())) | 167 | if (unlikely(!audit_dummy_context())) |
| 154 | __audit_inode(name, dentry, parent); | 168 | __audit_inode(name, dentry, |
| 169 | AUDIT_INODE_PARENT | AUDIT_INODE_HIDDEN); | ||
| 155 | } | 170 | } |
| 156 | static inline void audit_inode_child(const struct inode *parent, | 171 | static inline void audit_inode_child(const struct inode *parent, |
| 157 | const struct dentry *dentry, | 172 | const struct dentry *dentry, |
| @@ -311,7 +326,7 @@ static inline void audit_putname(struct filename *name) | |||
| 311 | { } | 326 | { } |
| 312 | static inline void __audit_inode(struct filename *name, | 327 | static inline void __audit_inode(struct filename *name, |
| 313 | const struct dentry *dentry, | 328 | const struct dentry *dentry, |
| 314 | unsigned int parent) | 329 | unsigned int flags) |
| 315 | { } | 330 | { } |
| 316 | static inline void __audit_inode_child(const struct inode *parent, | 331 | static inline void __audit_inode_child(const struct inode *parent, |
| 317 | const struct dentry *dentry, | 332 | const struct dentry *dentry, |
| @@ -321,6 +336,9 @@ static inline void audit_inode(struct filename *name, | |||
| 321 | const struct dentry *dentry, | 336 | const struct dentry *dentry, |
| 322 | unsigned int parent) | 337 | unsigned int parent) |
| 323 | { } | 338 | { } |
| 339 | static inline void audit_inode_parent_hidden(struct filename *name, | ||
| 340 | const struct dentry *dentry) | ||
| 341 | { } | ||
| 324 | static inline void audit_inode_child(const struct inode *parent, | 342 | static inline void audit_inode_child(const struct inode *parent, |
| 325 | const struct dentry *dentry, | 343 | const struct dentry *dentry, |
| 326 | const unsigned char type) | 344 | const unsigned char type) |
diff --git a/include/linux/decompress/unlz4.h b/include/linux/decompress/unlz4.h new file mode 100644 index 000000000000..d5b68bf3ec92 --- /dev/null +++ b/include/linux/decompress/unlz4.h | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | #ifndef DECOMPRESS_UNLZ4_H | ||
| 2 | #define DECOMPRESS_UNLZ4_H | ||
| 3 | |||
| 4 | int unlz4(unsigned char *inbuf, int len, | ||
| 5 | int(*fill)(void*, unsigned int), | ||
| 6 | int(*flush)(void*, unsigned int), | ||
| 7 | unsigned char *output, | ||
| 8 | int *pos, | ||
| 9 | void(*error)(char *x)); | ||
| 10 | #endif | ||
diff --git a/include/linux/fs.h b/include/linux/fs.h index 834c9e5113d9..a35b10e9a680 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -372,8 +372,8 @@ struct address_space_operations { | |||
| 372 | int (*get_xip_mem)(struct address_space *, pgoff_t, int, | 372 | int (*get_xip_mem)(struct address_space *, pgoff_t, int, |
| 373 | void **, unsigned long *); | 373 | void **, unsigned long *); |
| 374 | /* | 374 | /* |
| 375 | * migrate the contents of a page to the specified target. If sync | 375 | * migrate the contents of a page to the specified target. If |
| 376 | * is false, it must not block. | 376 | * migrate_mode is MIGRATE_ASYNC, it must not block. |
| 377 | */ | 377 | */ |
| 378 | int (*migratepage) (struct address_space *, | 378 | int (*migratepage) (struct address_space *, |
| 379 | struct page *, struct page *, enum migrate_mode); | 379 | struct page *, struct page *, enum migrate_mode); |
diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 0f615eb23d05..9b4dd491f7e8 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h | |||
| @@ -209,7 +209,7 @@ static inline int allocflags_to_migratetype(gfp_t gfp_flags) | |||
| 209 | * 0x9 => DMA or NORMAL (MOVABLE+DMA) | 209 | * 0x9 => DMA or NORMAL (MOVABLE+DMA) |
| 210 | * 0xa => MOVABLE (Movable is valid only if HIGHMEM is set too) | 210 | * 0xa => MOVABLE (Movable is valid only if HIGHMEM is set too) |
| 211 | * 0xb => BAD (MOVABLE+HIGHMEM+DMA) | 211 | * 0xb => BAD (MOVABLE+HIGHMEM+DMA) |
| 212 | * 0xc => DMA32 (MOVABLE+HIGHMEM+DMA32) | 212 | * 0xc => DMA32 (MOVABLE+DMA32) |
| 213 | * 0xd => BAD (MOVABLE+DMA32+DMA) | 213 | * 0xd => BAD (MOVABLE+DMA32+DMA) |
| 214 | * 0xe => BAD (MOVABLE+DMA32+HIGHMEM) | 214 | * 0xe => BAD (MOVABLE+DMA32+HIGHMEM) |
| 215 | * 0xf => BAD (MOVABLE+DMA32+HIGHMEM+DMA) | 215 | * 0xf => BAD (MOVABLE+DMA32+HIGHMEM+DMA) |
diff --git a/include/linux/lz4.h b/include/linux/lz4.h new file mode 100644 index 000000000000..d21c13f10a64 --- /dev/null +++ b/include/linux/lz4.h | |||
| @@ -0,0 +1,87 @@ | |||
| 1 | #ifndef __LZ4_H__ | ||
| 2 | #define __LZ4_H__ | ||
| 3 | /* | ||
| 4 | * LZ4 Kernel Interface | ||
| 5 | * | ||
| 6 | * Copyright (C) 2013, LG Electronics, Kyungsik Lee <kyungsik.lee@lge.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | #define LZ4_MEM_COMPRESS (4096 * sizeof(unsigned char *)) | ||
| 13 | #define LZ4HC_MEM_COMPRESS (65538 * sizeof(unsigned char *)) | ||
| 14 | |||
| 15 | /* | ||
| 16 | * lz4_compressbound() | ||
| 17 | * Provides the maximum size that LZ4 may output in a "worst case" scenario | ||
| 18 | * (input data not compressible) | ||
| 19 | */ | ||
| 20 | static inline size_t lz4_compressbound(size_t isize) | ||
| 21 | { | ||
| 22 | return isize + (isize / 255) + 16; | ||
| 23 | } | ||
| 24 | |||
| 25 | /* | ||
| 26 | * lz4_compress() | ||
| 27 | * src : source address of the original data | ||
| 28 | * src_len : size of the original data | ||
| 29 | * dst : output buffer address of the compressed data | ||
| 30 | * This requires 'dst' of size LZ4_COMPRESSBOUND. | ||
| 31 | * dst_len : is the output size, which is returned after compress done | ||
| 32 | * workmem : address of the working memory. | ||
| 33 | * This requires 'workmem' of size LZ4_MEM_COMPRESS. | ||
| 34 | * return : Success if return 0 | ||
| 35 | * Error if return (< 0) | ||
| 36 | * note : Destination buffer and workmem must be already allocated with | ||
| 37 | * the defined size. | ||
| 38 | */ | ||
| 39 | int lz4_compress(const unsigned char *src, size_t src_len, | ||
| 40 | unsigned char *dst, size_t *dst_len, void *wrkmem); | ||
| 41 | |||
| 42 | /* | ||
| 43 | * lz4hc_compress() | ||
| 44 | * src : source address of the original data | ||
| 45 | * src_len : size of the original data | ||
| 46 | * dst : output buffer address of the compressed data | ||
| 47 | * This requires 'dst' of size LZ4_COMPRESSBOUND. | ||
| 48 | * dst_len : is the output size, which is returned after compress done | ||
| 49 | * workmem : address of the working memory. | ||
| 50 | * This requires 'workmem' of size LZ4HC_MEM_COMPRESS. | ||
| 51 | * return : Success if return 0 | ||
| 52 | * Error if return (< 0) | ||
| 53 | * note : Destination buffer and workmem must be already allocated with | ||
| 54 | * the defined size. | ||
| 55 | */ | ||
| 56 | int lz4hc_compress(const unsigned char *src, size_t src_len, | ||
| 57 | unsigned char *dst, size_t *dst_len, void *wrkmem); | ||
| 58 | |||
| 59 | /* | ||
| 60 | * lz4_decompress() | ||
| 61 | * src : source address of the compressed data | ||
| 62 | * src_len : is the input size, whcih is returned after decompress done | ||
| 63 | * dest : output buffer address of the decompressed data | ||
| 64 | * actual_dest_len: is the size of uncompressed data, supposing it's known | ||
| 65 | * return : Success if return 0 | ||
| 66 | * Error if return (< 0) | ||
| 67 | * note : Destination buffer must be already allocated. | ||
| 68 | * slightly faster than lz4_decompress_unknownoutputsize() | ||
| 69 | */ | ||
| 70 | int lz4_decompress(const char *src, size_t *src_len, char *dest, | ||
| 71 | size_t actual_dest_len); | ||
| 72 | |||
| 73 | /* | ||
| 74 | * lz4_decompress_unknownoutputsize() | ||
| 75 | * src : source address of the compressed data | ||
| 76 | * src_len : is the input size, therefore the compressed size | ||
| 77 | * dest : output buffer address of the decompressed data | ||
| 78 | * dest_len: is the max size of the destination buffer, which is | ||
| 79 | * returned with actual size of decompressed data after | ||
| 80 | * decompress done | ||
| 81 | * return : Success if return 0 | ||
| 82 | * Error if return (< 0) | ||
| 83 | * note : Destination buffer must be already allocated. | ||
| 84 | */ | ||
| 85 | int lz4_decompress_unknownoutputsize(const char *src, size_t src_len, | ||
| 86 | char *dest, size_t *dest_len); | ||
| 87 | #endif | ||
diff --git a/include/linux/mm.h b/include/linux/mm.h index b87681adf0ba..f0224608d15e 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
| @@ -151,12 +151,6 @@ extern unsigned int kobjsize(const void *objp); | |||
| 151 | #define VM_STACK_FLAGS (VM_GROWSDOWN | VM_STACK_DEFAULT_FLAGS | VM_ACCOUNT) | 151 | #define VM_STACK_FLAGS (VM_GROWSDOWN | VM_STACK_DEFAULT_FLAGS | VM_ACCOUNT) |
| 152 | #endif | 152 | #endif |
| 153 | 153 | ||
| 154 | #define VM_READHINTMASK (VM_SEQ_READ | VM_RAND_READ) | ||
| 155 | #define VM_ClearReadHint(v) (v)->vm_flags &= ~VM_READHINTMASK | ||
| 156 | #define VM_NormalReadHint(v) (!((v)->vm_flags & VM_READHINTMASK)) | ||
| 157 | #define VM_SequentialReadHint(v) ((v)->vm_flags & VM_SEQ_READ) | ||
| 158 | #define VM_RandomReadHint(v) ((v)->vm_flags & VM_RAND_READ) | ||
| 159 | |||
| 160 | /* | 154 | /* |
| 161 | * Special vmas that are non-mergable, non-mlock()able. | 155 | * Special vmas that are non-mergable, non-mlock()able. |
| 162 | * Note: mm/huge_memory.c VM_NO_THP depends on this definition. | 156 | * Note: mm/huge_memory.c VM_NO_THP depends on this definition. |
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index ae19af5ec02c..af4a3b77a8de 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
| @@ -869,11 +869,6 @@ static inline int is_highmem_idx(enum zone_type idx) | |||
| 869 | #endif | 869 | #endif |
| 870 | } | 870 | } |
| 871 | 871 | ||
| 872 | static inline int is_normal_idx(enum zone_type idx) | ||
| 873 | { | ||
| 874 | return (idx == ZONE_NORMAL); | ||
| 875 | } | ||
| 876 | |||
| 877 | /** | 872 | /** |
| 878 | * is_highmem - helper function to quickly check if a struct zone is a | 873 | * is_highmem - helper function to quickly check if a struct zone is a |
| 879 | * highmem zone or not. This is an attempt to keep references | 874 | * highmem zone or not. This is an attempt to keep references |
| @@ -892,29 +887,6 @@ static inline int is_highmem(struct zone *zone) | |||
| 892 | #endif | 887 | #endif |
| 893 | } | 888 | } |
| 894 | 889 | ||
| 895 | static inline int is_normal(struct zone *zone) | ||
| 896 | { | ||
| 897 | return zone == zone->zone_pgdat->node_zones + ZONE_NORMAL; | ||
| 898 | } | ||
| 899 | |||
| 900 | static inline int is_dma32(struct zone *zone) | ||
| 901 | { | ||
| 902 | #ifdef CONFIG_ZONE_DMA32 | ||
| 903 | return zone == zone->zone_pgdat->node_zones + ZONE_DMA32; | ||
| 904 | #else | ||
| 905 | return 0; | ||
| 906 | #endif | ||
| 907 | } | ||
| 908 | |||
| 909 | static inline int is_dma(struct zone *zone) | ||
| 910 | { | ||
| 911 | #ifdef CONFIG_ZONE_DMA | ||
| 912 | return zone == zone->zone_pgdat->node_zones + ZONE_DMA; | ||
| 913 | #else | ||
| 914 | return 0; | ||
| 915 | #endif | ||
| 916 | } | ||
| 917 | |||
| 918 | /* These two functions are used to setup the per zone pages min values */ | 890 | /* These two functions are used to setup the per zone pages min values */ |
| 919 | struct ctl_table; | 891 | struct ctl_table; |
| 920 | int min_free_kbytes_sysctl_handler(struct ctl_table *, int, | 892 | int min_free_kbytes_sysctl_handler(struct ctl_table *, int, |
diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h index 89573a33ab3c..07d0df6bf768 100644 --- a/include/linux/ptrace.h +++ b/include/linux/ptrace.h | |||
| @@ -142,9 +142,6 @@ static inline void ptrace_init_task(struct task_struct *child, bool ptrace) | |||
| 142 | { | 142 | { |
| 143 | INIT_LIST_HEAD(&child->ptrace_entry); | 143 | INIT_LIST_HEAD(&child->ptrace_entry); |
| 144 | INIT_LIST_HEAD(&child->ptraced); | 144 | INIT_LIST_HEAD(&child->ptraced); |
| 145 | #ifdef CONFIG_HAVE_HW_BREAKPOINT | ||
| 146 | atomic_set(&child->ptrace_bp_refcnt, 1); | ||
| 147 | #endif | ||
| 148 | child->jobctl = 0; | 145 | child->jobctl = 0; |
| 149 | child->ptrace = 0; | 146 | child->ptrace = 0; |
| 150 | child->parent = child->real_parent; | 147 | child->parent = child->real_parent; |
| @@ -351,11 +348,4 @@ extern int task_current_syscall(struct task_struct *target, long *callno, | |||
| 351 | unsigned long args[6], unsigned int maxargs, | 348 | unsigned long args[6], unsigned int maxargs, |
| 352 | unsigned long *sp, unsigned long *pc); | 349 | unsigned long *sp, unsigned long *pc); |
| 353 | 350 | ||
| 354 | #ifdef CONFIG_HAVE_HW_BREAKPOINT | ||
| 355 | extern int ptrace_get_breakpoints(struct task_struct *tsk); | ||
| 356 | extern void ptrace_put_breakpoints(struct task_struct *tsk); | ||
| 357 | #else | ||
| 358 | static inline void ptrace_put_breakpoints(struct task_struct *tsk) { } | ||
| 359 | #endif /* CONFIG_HAVE_HW_BREAKPOINT */ | ||
| 360 | |||
| 361 | #endif | 351 | #endif |
diff --git a/include/linux/reboot.h b/include/linux/reboot.h index 23b36304cd88..8e00f9f6f963 100644 --- a/include/linux/reboot.h +++ b/include/linux/reboot.h | |||
| @@ -10,6 +10,31 @@ | |||
| 10 | #define SYS_HALT 0x0002 /* Notify of system halt */ | 10 | #define SYS_HALT 0x0002 /* Notify of system halt */ |
| 11 | #define SYS_POWER_OFF 0x0003 /* Notify of system power off */ | 11 | #define SYS_POWER_OFF 0x0003 /* Notify of system power off */ |
| 12 | 12 | ||
| 13 | enum reboot_mode { | ||
| 14 | REBOOT_COLD = 0, | ||
| 15 | REBOOT_WARM, | ||
| 16 | REBOOT_HARD, | ||
| 17 | REBOOT_SOFT, | ||
| 18 | REBOOT_GPIO, | ||
| 19 | }; | ||
| 20 | extern enum reboot_mode reboot_mode; | ||
| 21 | |||
| 22 | enum reboot_type { | ||
| 23 | BOOT_TRIPLE = 't', | ||
| 24 | BOOT_KBD = 'k', | ||
| 25 | BOOT_BIOS = 'b', | ||
| 26 | BOOT_ACPI = 'a', | ||
| 27 | BOOT_EFI = 'e', | ||
| 28 | BOOT_CF9 = 'p', | ||
| 29 | BOOT_CF9_COND = 'q', | ||
| 30 | }; | ||
| 31 | extern enum reboot_type reboot_type; | ||
| 32 | |||
| 33 | extern int reboot_default; | ||
| 34 | extern int reboot_cpu; | ||
| 35 | extern int reboot_force; | ||
| 36 | |||
| 37 | |||
| 13 | extern int register_reboot_notifier(struct notifier_block *); | 38 | extern int register_reboot_notifier(struct notifier_block *); |
| 14 | extern int unregister_reboot_notifier(struct notifier_block *); | 39 | extern int unregister_reboot_notifier(struct notifier_block *); |
| 15 | 40 | ||
| @@ -26,7 +51,7 @@ extern void machine_shutdown(void); | |||
| 26 | struct pt_regs; | 51 | struct pt_regs; |
| 27 | extern void machine_crash_shutdown(struct pt_regs *); | 52 | extern void machine_crash_shutdown(struct pt_regs *); |
| 28 | 53 | ||
| 29 | /* | 54 | /* |
| 30 | * Architecture independent implemenations of sys_reboot commands. | 55 | * Architecture independent implemenations of sys_reboot commands. |
| 31 | */ | 56 | */ |
| 32 | 57 | ||
diff --git a/include/linux/scatterlist.h b/include/linux/scatterlist.h index 26806775b11b..adae88f5b0ab 100644 --- a/include/linux/scatterlist.h +++ b/include/linux/scatterlist.h | |||
| @@ -244,6 +244,11 @@ size_t sg_copy_from_buffer(struct scatterlist *sgl, unsigned int nents, | |||
| 244 | size_t sg_copy_to_buffer(struct scatterlist *sgl, unsigned int nents, | 244 | size_t sg_copy_to_buffer(struct scatterlist *sgl, unsigned int nents, |
| 245 | void *buf, size_t buflen); | 245 | void *buf, size_t buflen); |
| 246 | 246 | ||
| 247 | size_t sg_pcopy_from_buffer(struct scatterlist *sgl, unsigned int nents, | ||
| 248 | void *buf, size_t buflen, off_t skip); | ||
| 249 | size_t sg_pcopy_to_buffer(struct scatterlist *sgl, unsigned int nents, | ||
| 250 | void *buf, size_t buflen, off_t skip); | ||
| 251 | |||
| 247 | /* | 252 | /* |
| 248 | * Maximum number of entries that will be allocated in one piece, if | 253 | * Maximum number of entries that will be allocated in one piece, if |
| 249 | * a list larger than this is required then chaining will be utilized. | 254 | * a list larger than this is required then chaining will be utilized. |
diff --git a/include/linux/sched.h b/include/linux/sched.h index cdd5407b37e2..75324d8157e3 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -1401,9 +1401,6 @@ struct task_struct { | |||
| 1401 | } memcg_batch; | 1401 | } memcg_batch; |
| 1402 | unsigned int memcg_kmem_skip_account; | 1402 | unsigned int memcg_kmem_skip_account; |
| 1403 | #endif | 1403 | #endif |
| 1404 | #ifdef CONFIG_HAVE_HW_BREAKPOINT | ||
| 1405 | atomic_t ptrace_bp_refcnt; | ||
| 1406 | #endif | ||
| 1407 | #ifdef CONFIG_UPROBES | 1404 | #ifdef CONFIG_UPROBES |
| 1408 | struct uprobe_task *utask; | 1405 | struct uprobe_task *utask; |
| 1409 | #endif | 1406 | #endif |
diff --git a/include/linux/sem.h b/include/linux/sem.h index 53d42650b193..976ce3a19f1b 100644 --- a/include/linux/sem.h +++ b/include/linux/sem.h | |||
| @@ -12,10 +12,12 @@ struct task_struct; | |||
| 12 | struct sem_array { | 12 | struct sem_array { |
| 13 | struct kern_ipc_perm ____cacheline_aligned_in_smp | 13 | struct kern_ipc_perm ____cacheline_aligned_in_smp |
| 14 | sem_perm; /* permissions .. see ipc.h */ | 14 | sem_perm; /* permissions .. see ipc.h */ |
| 15 | time_t sem_otime; /* last semop time */ | ||
| 16 | time_t sem_ctime; /* last change time */ | 15 | time_t sem_ctime; /* last change time */ |
| 17 | struct sem *sem_base; /* ptr to first semaphore in array */ | 16 | struct sem *sem_base; /* ptr to first semaphore in array */ |
| 18 | struct list_head sem_pending; /* pending operations to be processed */ | 17 | struct list_head pending_alter; /* pending operations */ |
| 18 | /* that alter the array */ | ||
| 19 | struct list_head pending_const; /* pending complex operations */ | ||
| 20 | /* that do not alter semvals */ | ||
| 19 | struct list_head list_id; /* undo requests on this array */ | 21 | struct list_head list_id; /* undo requests on this array */ |
| 20 | int sem_nsems; /* no. of semaphores in array */ | 22 | int sem_nsems; /* no. of semaphores in array */ |
| 21 | int complex_count; /* pending complex operations */ | 23 | int complex_count; /* pending complex operations */ |
diff --git a/include/linux/vexpress.h b/include/linux/vexpress.h index ea7168a68081..617c01b8f74a 100644 --- a/include/linux/vexpress.h +++ b/include/linux/vexpress.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #define _LINUX_VEXPRESS_H | 15 | #define _LINUX_VEXPRESS_H |
| 16 | 16 | ||
| 17 | #include <linux/device.h> | 17 | #include <linux/device.h> |
| 18 | #include <linux/reboot.h> | ||
| 18 | 19 | ||
| 19 | #define VEXPRESS_SITE_MB 0 | 20 | #define VEXPRESS_SITE_MB 0 |
| 20 | #define VEXPRESS_SITE_DB1 1 | 21 | #define VEXPRESS_SITE_DB1 1 |
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index dd0a2c810529..4b8a89189a29 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h | |||
| @@ -10,12 +10,12 @@ | |||
| 10 | struct vm_area_struct; /* vma defining user mapping in mm_types.h */ | 10 | struct vm_area_struct; /* vma defining user mapping in mm_types.h */ |
| 11 | 11 | ||
| 12 | /* bits in flags of vmalloc's vm_struct below */ | 12 | /* bits in flags of vmalloc's vm_struct below */ |
| 13 | #define VM_IOREMAP 0x00000001 /* ioremap() and friends */ | 13 | #define VM_IOREMAP 0x00000001 /* ioremap() and friends */ |
| 14 | #define VM_ALLOC 0x00000002 /* vmalloc() */ | 14 | #define VM_ALLOC 0x00000002 /* vmalloc() */ |
| 15 | #define VM_MAP 0x00000004 /* vmap()ed pages */ | 15 | #define VM_MAP 0x00000004 /* vmap()ed pages */ |
| 16 | #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */ | 16 | #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */ |
| 17 | #define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed */ | 17 | #define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed */ |
| 18 | #define VM_UNLIST 0x00000020 /* vm_struct is not listed in vmlist */ | 18 | #define VM_UNINITIALIZED 0x00000020 /* vm_struct is not fully initialized */ |
| 19 | /* bits [20..32] reserved for arch specific ioremap internals */ | 19 | /* bits [20..32] reserved for arch specific ioremap internals */ |
| 20 | 20 | ||
| 21 | /* | 21 | /* |
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index abfe11787af3..4e198ca1f685 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h | |||
| @@ -47,11 +47,16 @@ enum wb_reason { | |||
| 47 | WB_REASON_LAPTOP_TIMER, | 47 | WB_REASON_LAPTOP_TIMER, |
| 48 | WB_REASON_FREE_MORE_MEM, | 48 | WB_REASON_FREE_MORE_MEM, |
| 49 | WB_REASON_FS_FREE_SPACE, | 49 | WB_REASON_FS_FREE_SPACE, |
| 50 | /* | ||
| 51 | * There is no bdi forker thread any more and works are done | ||
| 52 | * by emergency worker, however, this is TPs userland visible | ||
| 53 | * and we'll be exposing exactly the same information, | ||
| 54 | * so it has a mismatch name. | ||
| 55 | */ | ||
| 50 | WB_REASON_FORKER_THREAD, | 56 | WB_REASON_FORKER_THREAD, |
| 51 | 57 | ||
| 52 | WB_REASON_MAX, | 58 | WB_REASON_MAX, |
| 53 | }; | 59 | }; |
| 54 | extern const char *wb_reason_name[]; | ||
| 55 | 60 | ||
| 56 | /* | 61 | /* |
| 57 | * A control structure which tells the writeback code what to do. These are | 62 | * A control structure which tells the writeback code what to do. These are |
| @@ -95,7 +100,6 @@ int try_to_writeback_inodes_sb_nr(struct super_block *, unsigned long nr, | |||
| 95 | void sync_inodes_sb(struct super_block *); | 100 | void sync_inodes_sb(struct super_block *); |
| 96 | long writeback_inodes_wb(struct bdi_writeback *wb, long nr_pages, | 101 | long writeback_inodes_wb(struct bdi_writeback *wb, long nr_pages, |
| 97 | enum wb_reason reason); | 102 | enum wb_reason reason); |
| 98 | long wb_do_writeback(struct bdi_writeback *wb, int force_wait); | ||
| 99 | void wakeup_flusher_threads(long nr_pages, enum wb_reason reason); | 103 | void wakeup_flusher_threads(long nr_pages, enum wb_reason reason); |
| 100 | void inode_wait_for_writeback(struct inode *inode); | 104 | void inode_wait_for_writeback(struct inode *inode); |
| 101 | 105 | ||
