diff options
Diffstat (limited to 'fs')
56 files changed, 180 insertions, 109 deletions
diff --git a/fs/9p/vfs_addr.c b/fs/9p/vfs_addr.c index 3128aa948a4e..9ac4ffe9ac7d 100644 --- a/fs/9p/vfs_addr.c +++ b/fs/9p/vfs_addr.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/inet.h> | 32 | #include <linux/inet.h> |
33 | #include <linux/pagemap.h> | 33 | #include <linux/pagemap.h> |
34 | #include <linux/idr.h> | 34 | #include <linux/idr.h> |
35 | #include <linux/sched.h> | ||
35 | 36 | ||
36 | #include "debug.h" | 37 | #include "debug.h" |
37 | #include "v9fs.h" | 38 | #include "v9fs.h" |
diff --git a/fs/9p/vfs_dentry.c b/fs/9p/vfs_dentry.c index 775e26e82cbc..d93960429c09 100644 --- a/fs/9p/vfs_dentry.c +++ b/fs/9p/vfs_dentry.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/inet.h> | 33 | #include <linux/inet.h> |
34 | #include <linux/namei.h> | 34 | #include <linux/namei.h> |
35 | #include <linux/idr.h> | 35 | #include <linux/idr.h> |
36 | #include <linux/sched.h> | ||
36 | 37 | ||
37 | #include "debug.h" | 38 | #include "debug.h" |
38 | #include "v9fs.h" | 39 | #include "v9fs.h" |
diff --git a/fs/9p/vfs_inode.c b/fs/9p/vfs_inode.c index 7624821729a0..c76cd8fa3f6c 100644 --- a/fs/9p/vfs_inode.c +++ b/fs/9p/vfs_inode.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/inet.h> | 33 | #include <linux/inet.h> |
34 | #include <linux/namei.h> | 34 | #include <linux/namei.h> |
35 | #include <linux/idr.h> | 35 | #include <linux/idr.h> |
36 | #include <linux/sched.h> | ||
36 | 37 | ||
37 | #include "debug.h" | 38 | #include "debug.h" |
38 | #include "v9fs.h" | 39 | #include "v9fs.h" |
diff --git a/fs/9p/vfs_super.c b/fs/9p/vfs_super.c index 8eb9263a67b9..7bdf8b326841 100644 --- a/fs/9p/vfs_super.c +++ b/fs/9p/vfs_super.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <linux/seq_file.h> | 36 | #include <linux/seq_file.h> |
37 | #include <linux/mount.h> | 37 | #include <linux/mount.h> |
38 | #include <linux/idr.h> | 38 | #include <linux/idr.h> |
39 | #include <linux/sched.h> | ||
39 | 40 | ||
40 | #include "debug.h" | 41 | #include "debug.h" |
41 | #include "v9fs.h" | 42 | #include "v9fs.h" |
diff --git a/fs/affs/inode.c b/fs/affs/inode.c index c5b9d73c084a..4609a6c13fe9 100644 --- a/fs/affs/inode.c +++ b/fs/affs/inode.c | |||
@@ -9,7 +9,7 @@ | |||
9 | * | 9 | * |
10 | * (C) 1991 Linus Torvalds - minix filesystem | 10 | * (C) 1991 Linus Torvalds - minix filesystem |
11 | */ | 11 | */ |
12 | 12 | #include <linux/sched.h> | |
13 | #include "affs.h" | 13 | #include "affs.h" |
14 | 14 | ||
15 | extern const struct inode_operations affs_symlink_inode_operations; | 15 | extern const struct inode_operations affs_symlink_inode_operations; |
diff --git a/fs/affs/super.c b/fs/affs/super.c index b800d451cd60..6d0ebc321530 100644 --- a/fs/affs/super.c +++ b/fs/affs/super.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/statfs.h> | 15 | #include <linux/statfs.h> |
16 | #include <linux/parser.h> | 16 | #include <linux/parser.h> |
17 | #include <linux/magic.h> | 17 | #include <linux/magic.h> |
18 | #include <linux/sched.h> | ||
18 | #include "affs.h" | 19 | #include "affs.h" |
19 | 20 | ||
20 | extern struct timezone sys_tz; | 21 | extern struct timezone sys_tz; |
diff --git a/fs/afs/callback.c b/fs/afs/callback.c index f64e40fefc02..bacf518c6fa8 100644 --- a/fs/afs/callback.c +++ b/fs/afs/callback.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/module.h> | 17 | #include <linux/module.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <linux/circ_buf.h> | 19 | #include <linux/circ_buf.h> |
20 | #include <linux/sched.h> | ||
20 | #include "internal.h" | 21 | #include "internal.h" |
21 | 22 | ||
22 | unsigned afs_vnode_update_timeout = 10; | 23 | unsigned afs_vnode_update_timeout = 10; |
diff --git a/fs/afs/cell.c b/fs/afs/cell.c index 9b1311a1df51..175a567db78c 100644 --- a/fs/afs/cell.c +++ b/fs/afs/cell.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/slab.h> | 13 | #include <linux/slab.h> |
14 | #include <linux/key.h> | 14 | #include <linux/key.h> |
15 | #include <linux/ctype.h> | 15 | #include <linux/ctype.h> |
16 | #include <linux/sched.h> | ||
16 | #include <keys/rxrpc-type.h> | 17 | #include <keys/rxrpc-type.h> |
17 | #include "internal.h" | 18 | #include "internal.h" |
18 | 19 | ||
diff --git a/fs/afs/dir.c b/fs/afs/dir.c index 719af4fb15dc..546c59522eb1 100644 --- a/fs/afs/dir.c +++ b/fs/afs/dir.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/fs.h> | 16 | #include <linux/fs.h> |
17 | #include <linux/pagemap.h> | 17 | #include <linux/pagemap.h> |
18 | #include <linux/ctype.h> | 18 | #include <linux/ctype.h> |
19 | #include <linux/sched.h> | ||
19 | #include "internal.h" | 20 | #include "internal.h" |
20 | 21 | ||
21 | static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry, | 22 | static struct dentry *afs_lookup(struct inode *dir, struct dentry *dentry, |
diff --git a/fs/afs/inode.c b/fs/afs/inode.c index 47f5fed7195d..d196840127c6 100644 --- a/fs/afs/inode.c +++ b/fs/afs/inode.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <linux/slab.h> | 19 | #include <linux/slab.h> |
20 | #include <linux/fs.h> | 20 | #include <linux/fs.h> |
21 | #include <linux/pagemap.h> | 21 | #include <linux/pagemap.h> |
22 | #include <linux/sched.h> | ||
22 | #include "internal.h" | 23 | #include "internal.h" |
23 | 24 | ||
24 | struct afs_iget_data { | 25 | struct afs_iget_data { |
diff --git a/fs/afs/internal.h b/fs/afs/internal.h index 4953ba5a6f44..2dac3ad2c44b 100644 --- a/fs/afs/internal.h +++ b/fs/afs/internal.h | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/skbuff.h> | 16 | #include <linux/skbuff.h> |
17 | #include <linux/rxrpc.h> | 17 | #include <linux/rxrpc.h> |
18 | #include <linux/key.h> | 18 | #include <linux/key.h> |
19 | #include <linux/workqueue.h> | ||
19 | #include "afs.h" | 20 | #include "afs.h" |
20 | #include "afs_vl.h" | 21 | #include "afs_vl.h" |
21 | 22 | ||
diff --git a/fs/afs/main.c b/fs/afs/main.c index f1f71ff7d5c6..cd21195bbb24 100644 --- a/fs/afs/main.c +++ b/fs/afs/main.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/moduleparam.h> | 13 | #include <linux/moduleparam.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/completion.h> | 15 | #include <linux/completion.h> |
16 | #include <linux/sched.h> | ||
16 | #include "internal.h" | 17 | #include "internal.h" |
17 | 18 | ||
18 | MODULE_DESCRIPTION("AFS Client File System"); | 19 | MODULE_DESCRIPTION("AFS Client File System"); |
diff --git a/fs/afs/proc.c b/fs/afs/proc.c index d5601f617cdb..13df512aea9e 100644 --- a/fs/afs/proc.c +++ b/fs/afs/proc.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/module.h> | 13 | #include <linux/module.h> |
14 | #include <linux/proc_fs.h> | 14 | #include <linux/proc_fs.h> |
15 | #include <linux/seq_file.h> | 15 | #include <linux/seq_file.h> |
16 | #include <linux/sched.h> | ||
16 | #include <asm/uaccess.h> | 17 | #include <asm/uaccess.h> |
17 | #include "internal.h" | 18 | #include "internal.h" |
18 | 19 | ||
diff --git a/fs/afs/security.c b/fs/afs/security.c index e0ea88b63ebf..566fe712c682 100644 --- a/fs/afs/security.c +++ b/fs/afs/security.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/slab.h> | 13 | #include <linux/slab.h> |
14 | #include <linux/fs.h> | 14 | #include <linux/fs.h> |
15 | #include <linux/ctype.h> | 15 | #include <linux/ctype.h> |
16 | #include <linux/sched.h> | ||
16 | #include <keys/rxrpc-type.h> | 17 | #include <keys/rxrpc-type.h> |
17 | #include "internal.h" | 18 | #include "internal.h" |
18 | 19 | ||
diff --git a/fs/afs/super.c b/fs/afs/super.c index 8d47ad88a093..2e8496ba1205 100644 --- a/fs/afs/super.c +++ b/fs/afs/super.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/pagemap.h> | 22 | #include <linux/pagemap.h> |
23 | #include <linux/parser.h> | 23 | #include <linux/parser.h> |
24 | #include <linux/statfs.h> | 24 | #include <linux/statfs.h> |
25 | #include <linux/sched.h> | ||
25 | #include "internal.h" | 26 | #include "internal.h" |
26 | 27 | ||
27 | #define AFS_FS_MAGIC 0x6B414653 /* 'kAFS' */ | 28 | #define AFS_FS_MAGIC 0x6B414653 /* 'kAFS' */ |
diff --git a/fs/afs/vlocation.c b/fs/afs/vlocation.c index 3370cdb72566..09e3ad0fc7cc 100644 --- a/fs/afs/vlocation.c +++ b/fs/afs/vlocation.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/module.h> | 13 | #include <linux/module.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/sched.h> | ||
15 | #include "internal.h" | 16 | #include "internal.h" |
16 | 17 | ||
17 | unsigned afs_vlocation_timeout = 10; /* volume location timeout in seconds */ | 18 | unsigned afs_vlocation_timeout = 10; /* volume location timeout in seconds */ |
diff --git a/fs/afs/vnode.c b/fs/afs/vnode.c index c36c98ce2c3c..232c55dc245d 100644 --- a/fs/afs/vnode.c +++ b/fs/afs/vnode.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | #include <linux/slab.h> | 15 | #include <linux/slab.h> |
16 | #include <linux/fs.h> | 16 | #include <linux/fs.h> |
17 | #include <linux/sched.h> | ||
17 | #include "internal.h" | 18 | #include "internal.h" |
18 | 19 | ||
19 | #if 0 | 20 | #if 0 |
diff --git a/fs/afs/volume.c b/fs/afs/volume.c index dd160cada45d..8bab0e3437f9 100644 --- a/fs/afs/volume.c +++ b/fs/afs/volume.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/slab.h> | 15 | #include <linux/slab.h> |
16 | #include <linux/fs.h> | 16 | #include <linux/fs.h> |
17 | #include <linux/pagemap.h> | 17 | #include <linux/pagemap.h> |
18 | #include <linux/sched.h> | ||
18 | #include "internal.h" | 19 | #include "internal.h" |
19 | 20 | ||
20 | static const char *afs_voltypes[] = { "R/W", "R/O", "BAK" }; | 21 | static const char *afs_voltypes[] = { "R/W", "R/O", "BAK" }; |
diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c index 72d0b412c376..330fd3fe8546 100644 --- a/fs/binfmt_misc.c +++ b/fs/binfmt_misc.c | |||
@@ -18,7 +18,7 @@ | |||
18 | 18 | ||
19 | #include <linux/module.h> | 19 | #include <linux/module.h> |
20 | #include <linux/init.h> | 20 | #include <linux/init.h> |
21 | 21 | #include <linux/sched.h> | |
22 | #include <linux/binfmts.h> | 22 | #include <linux/binfmts.h> |
23 | #include <linux/slab.h> | 23 | #include <linux/slab.h> |
24 | #include <linux/ctype.h> | 24 | #include <linux/ctype.h> |
diff --git a/fs/buffer.c b/fs/buffer.c index 49590d590d7d..aa68206bd517 100644 --- a/fs/buffer.c +++ b/fs/buffer.c | |||
@@ -2101,7 +2101,7 @@ int cont_prepare_write(struct page *page, unsigned offset, | |||
2101 | PAGE_CACHE_SIZE, get_block); | 2101 | PAGE_CACHE_SIZE, get_block); |
2102 | if (status) | 2102 | if (status) |
2103 | goto out_unmap; | 2103 | goto out_unmap; |
2104 | zero_user_page(page, zerofrom, PAGE_CACHE_SIZE - zerofrom, | 2104 | zero_user_page(new_page, zerofrom, PAGE_CACHE_SIZE - zerofrom, |
2105 | KM_USER0); | 2105 | KM_USER0); |
2106 | generic_commit_write(NULL, new_page, zerofrom, PAGE_CACHE_SIZE); | 2106 | generic_commit_write(NULL, new_page, zerofrom, PAGE_CACHE_SIZE); |
2107 | unlock_page(new_page); | 2107 | unlock_page(new_page); |
diff --git a/fs/coda/cache.c b/fs/coda/cache.c index 5d0527133266..fcb88fa8d2f2 100644 --- a/fs/coda/cache.c +++ b/fs/coda/cache.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <asm/uaccess.h> | 16 | #include <asm/uaccess.h> |
17 | #include <linux/string.h> | 17 | #include <linux/string.h> |
18 | #include <linux/list.h> | 18 | #include <linux/list.h> |
19 | #include <linux/sched.h> | ||
19 | 20 | ||
20 | #include <linux/coda.h> | 21 | #include <linux/coda.h> |
21 | #include <linux/coda_linux.h> | 22 | #include <linux/coda_linux.h> |
diff --git a/fs/coda/upcall.c b/fs/coda/upcall.c index a5b5e631ba61..5faacdb1a479 100644 --- a/fs/coda/upcall.c +++ b/fs/coda/upcall.c | |||
@@ -16,7 +16,7 @@ | |||
16 | 16 | ||
17 | #include <asm/system.h> | 17 | #include <asm/system.h> |
18 | #include <linux/signal.h> | 18 | #include <linux/signal.h> |
19 | 19 | #include <linux/sched.h> | |
20 | #include <linux/types.h> | 20 | #include <linux/types.h> |
21 | #include <linux/kernel.h> | 21 | #include <linux/kernel.h> |
22 | #include <linux/mm.h> | 22 | #include <linux/mm.h> |
diff --git a/fs/configfs/inode.c b/fs/configfs/inode.c index 2ec9beac17cf..ddc003a9d214 100644 --- a/fs/configfs/inode.c +++ b/fs/configfs/inode.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <linux/namei.h> | 32 | #include <linux/namei.h> |
33 | #include <linux/backing-dev.h> | 33 | #include <linux/backing-dev.h> |
34 | #include <linux/capability.h> | 34 | #include <linux/capability.h> |
35 | #include <linux/sched.h> | ||
35 | 36 | ||
36 | #include <linux/configfs.h> | 37 | #include <linux/configfs.h> |
37 | #include "configfs_internal.h" | 38 | #include "configfs_internal.h" |
diff --git a/fs/ecryptfs/messaging.c b/fs/ecryptfs/messaging.c index 3baf253be95a..a9d87c47f72d 100644 --- a/fs/ecryptfs/messaging.c +++ b/fs/ecryptfs/messaging.c | |||
@@ -19,7 +19,7 @@ | |||
19 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | 19 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA |
20 | * 02111-1307, USA. | 20 | * 02111-1307, USA. |
21 | */ | 21 | */ |
22 | 22 | #include <linux/sched.h> | |
23 | #include "ecryptfs_kernel.h" | 23 | #include "ecryptfs_kernel.h" |
24 | 24 | ||
25 | static LIST_HEAD(ecryptfs_msg_ctx_free_list); | 25 | static LIST_HEAD(ecryptfs_msg_ctx_free_list); |
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/mm.h> | 12 | #include <linux/mm.h> |
13 | #include <linux/slab.h> | 13 | #include <linux/slab.h> |
14 | #include <linux/fs.h> | 14 | #include <linux/fs.h> |
15 | #include <linux/sched.h> | ||
15 | #include <linux/pipe_fs_i.h> | 16 | #include <linux/pipe_fs_i.h> |
16 | 17 | ||
17 | static void wait_for_partner(struct inode* inode, unsigned int *cnt) | 18 | static void wait_for_partner(struct inode* inode, unsigned int *cnt) |
diff --git a/fs/fuse/file.c b/fs/fuse/file.c index acfad65a6e8e..d0ed60bc3188 100644 --- a/fs/fuse/file.c +++ b/fs/fuse/file.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/pagemap.h> | 11 | #include <linux/pagemap.h> |
12 | #include <linux/slab.h> | 12 | #include <linux/slab.h> |
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/sched.h> | ||
14 | 15 | ||
15 | static const struct file_operations fuse_direct_io_file_operations; | 16 | static const struct file_operations fuse_direct_io_file_operations; |
16 | 17 | ||
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c index c3a2ad0da43c..78f7a1dc90dd 100644 --- a/fs/fuse/inode.c +++ b/fs/fuse/inode.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/parser.h> | 17 | #include <linux/parser.h> |
18 | #include <linux/statfs.h> | 18 | #include <linux/statfs.h> |
19 | #include <linux/random.h> | 19 | #include <linux/random.h> |
20 | #include <linux/sched.h> | ||
20 | 21 | ||
21 | MODULE_AUTHOR("Miklos Szeredi <miklos@szeredi.hu>"); | 22 | MODULE_AUTHOR("Miklos Szeredi <miklos@szeredi.hu>"); |
22 | MODULE_DESCRIPTION("Filesystem in Userspace"); | 23 | MODULE_DESCRIPTION("Filesystem in Userspace"); |
diff --git a/fs/gfs2/glock.h b/fs/gfs2/glock.h index 11477ca3a3c0..b3e152db70c8 100644 --- a/fs/gfs2/glock.h +++ b/fs/gfs2/glock.h | |||
@@ -10,6 +10,7 @@ | |||
10 | #ifndef __GLOCK_DOT_H__ | 10 | #ifndef __GLOCK_DOT_H__ |
11 | #define __GLOCK_DOT_H__ | 11 | #define __GLOCK_DOT_H__ |
12 | 12 | ||
13 | #include <linux/sched.h> | ||
13 | #include "incore.h" | 14 | #include "incore.h" |
14 | 15 | ||
15 | /* Flags for lock requests; used in gfs2_holder gh_flag field. | 16 | /* Flags for lock requests; used in gfs2_holder gh_flag field. |
diff --git a/fs/hfs/inode.c b/fs/hfs/inode.c index fafcba593871..9a934db0bd8a 100644 --- a/fs/hfs/inode.c +++ b/fs/hfs/inode.c | |||
@@ -13,6 +13,7 @@ | |||
13 | 13 | ||
14 | #include <linux/pagemap.h> | 14 | #include <linux/pagemap.h> |
15 | #include <linux/mpage.h> | 15 | #include <linux/mpage.h> |
16 | #include <linux/sched.h> | ||
16 | 17 | ||
17 | #include "hfs_fs.h" | 18 | #include "hfs_fs.h" |
18 | #include "btree.h" | 19 | #include "btree.h" |
diff --git a/fs/hfsplus/inode.c b/fs/hfsplus/inode.c index 642012ac3370..45dab5d6cc10 100644 --- a/fs/hfsplus/inode.c +++ b/fs/hfsplus/inode.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/fs.h> | 12 | #include <linux/fs.h> |
13 | #include <linux/pagemap.h> | 13 | #include <linux/pagemap.h> |
14 | #include <linux/mpage.h> | 14 | #include <linux/mpage.h> |
15 | #include <linux/sched.h> | ||
15 | 16 | ||
16 | #include "hfsplus_fs.h" | 17 | #include "hfsplus_fs.h" |
17 | #include "hfsplus_raw.h" | 18 | #include "hfsplus_raw.h" |
diff --git a/fs/hpfs/buffer.c b/fs/hpfs/buffer.c index b52b7381d10f..b6fca543544c 100644 --- a/fs/hpfs/buffer.c +++ b/fs/hpfs/buffer.c | |||
@@ -5,7 +5,7 @@ | |||
5 | * | 5 | * |
6 | * general buffer i/o | 6 | * general buffer i/o |
7 | */ | 7 | */ |
8 | 8 | #include <linux/sched.h> | |
9 | #include "hpfs_fn.h" | 9 | #include "hpfs_fn.h" |
10 | 10 | ||
11 | void hpfs_lock_creation(struct super_block *s) | 11 | void hpfs_lock_creation(struct super_block *s) |
diff --git a/fs/hpfs/namei.c b/fs/hpfs/namei.c index 9953cf9a2f16..d256559b4104 100644 --- a/fs/hpfs/namei.c +++ b/fs/hpfs/namei.c | |||
@@ -5,7 +5,7 @@ | |||
5 | * | 5 | * |
6 | * adding & removing files & directories | 6 | * adding & removing files & directories |
7 | */ | 7 | */ |
8 | 8 | #include <linux/sched.h> | |
9 | #include "hpfs_fn.h" | 9 | #include "hpfs_fn.h" |
10 | 10 | ||
11 | static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, int mode) | 11 | static int hpfs_mkdir(struct inode *dir, struct dentry *dentry, int mode) |
diff --git a/fs/hpfs/super.c b/fs/hpfs/super.c index fca1165d7192..29cc34abb2ea 100644 --- a/fs/hpfs/super.c +++ b/fs/hpfs/super.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/statfs.h> | 13 | #include <linux/statfs.h> |
14 | #include <linux/magic.h> | 14 | #include <linux/magic.h> |
15 | #include <linux/sched.h> | ||
15 | 16 | ||
16 | /* Mark the filesystem dirty, so that chkdsk checks it when os/2 booted */ | 17 | /* Mark the filesystem dirty, so that chkdsk checks it when os/2 booted */ |
17 | 18 | ||
diff --git a/fs/minix/bitmap.c b/fs/minix/bitmap.c index c4a554df7b7e..99a12f127769 100644 --- a/fs/minix/bitmap.c +++ b/fs/minix/bitmap.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/smp_lock.h> | 15 | #include <linux/smp_lock.h> |
16 | #include <linux/buffer_head.h> | 16 | #include <linux/buffer_head.h> |
17 | #include <linux/bitops.h> | 17 | #include <linux/bitops.h> |
18 | #include <linux/sched.h> | ||
18 | 19 | ||
19 | static int nibblemap[] = { 4,3,3,2,3,2,2,1,3,2,2,1,2,1,1,0 }; | 20 | static int nibblemap[] = { 4,3,3,2,3,2,2,1,3,2,2,1,2,1,1,0 }; |
20 | 21 | ||
diff --git a/fs/ncpfs/file.c b/fs/ncpfs/file.c index addfd3147ea7..d3152f8d95c6 100644 --- a/fs/ncpfs/file.c +++ b/fs/ncpfs/file.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/mm.h> | 17 | #include <linux/mm.h> |
18 | #include <linux/slab.h> | 18 | #include <linux/slab.h> |
19 | #include <linux/vmalloc.h> | 19 | #include <linux/vmalloc.h> |
20 | #include <linux/sched.h> | ||
20 | 21 | ||
21 | #include <linux/ncp_fs.h> | 22 | #include <linux/ncp_fs.h> |
22 | #include "ncplib_kernel.h" | 23 | #include "ncplib_kernel.h" |
diff --git a/fs/ncpfs/ioctl.c b/fs/ncpfs/ioctl.c index 8843a83d4ef0..c67b4bdcf719 100644 --- a/fs/ncpfs/ioctl.c +++ b/fs/ncpfs/ioctl.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/highuid.h> | 17 | #include <linux/highuid.h> |
18 | #include <linux/smp_lock.h> | 18 | #include <linux/smp_lock.h> |
19 | #include <linux/vmalloc.h> | 19 | #include <linux/vmalloc.h> |
20 | #include <linux/sched.h> | ||
20 | 21 | ||
21 | #include <linux/ncp_fs.h> | 22 | #include <linux/ncp_fs.h> |
22 | 23 | ||
diff --git a/fs/nfs/client.c b/fs/nfs/client.c index 50c6821bad26..881fa4900923 100644 --- a/fs/nfs/client.c +++ b/fs/nfs/client.c | |||
@@ -12,7 +12,7 @@ | |||
12 | 12 | ||
13 | #include <linux/module.h> | 13 | #include <linux/module.h> |
14 | #include <linux/init.h> | 14 | #include <linux/init.h> |
15 | 15 | #include <linux/sched.h> | |
16 | #include <linux/time.h> | 16 | #include <linux/time.h> |
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/mm.h> | 18 | #include <linux/mm.h> |
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c index ac92e45432a3..c27258b5d3e1 100644 --- a/fs/nfs/dir.c +++ b/fs/nfs/dir.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/pagevec.h> | 33 | #include <linux/pagevec.h> |
34 | #include <linux/namei.h> | 34 | #include <linux/namei.h> |
35 | #include <linux/mount.h> | 35 | #include <linux/mount.h> |
36 | #include <linux/sched.h> | ||
36 | 37 | ||
37 | #include "nfs4_fs.h" | 38 | #include "nfs4_fs.h" |
38 | #include "delegation.h" | 39 | #include "delegation.h" |
diff --git a/fs/nfs/file.c b/fs/nfs/file.c index 5eaee6dd040b..9eb8eb4e4a08 100644 --- a/fs/nfs/file.c +++ b/fs/nfs/file.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/slab.h> | 27 | #include <linux/slab.h> |
28 | #include <linux/pagemap.h> | 28 | #include <linux/pagemap.h> |
29 | #include <linux/smp_lock.h> | 29 | #include <linux/smp_lock.h> |
30 | #include <linux/aio.h> | ||
30 | 31 | ||
31 | #include <asm/uaccess.h> | 32 | #include <asm/uaccess.h> |
32 | #include <asm/system.h> | 33 | #include <asm/system.h> |
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 2b26ad7c9770..bd9f5a836592 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c | |||
@@ -15,7 +15,7 @@ | |||
15 | 15 | ||
16 | #include <linux/module.h> | 16 | #include <linux/module.h> |
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | 18 | #include <linux/sched.h> | |
19 | #include <linux/time.h> | 19 | #include <linux/time.h> |
20 | #include <linux/kernel.h> | 20 | #include <linux/kernel.h> |
21 | #include <linux/mm.h> | 21 | #include <linux/mm.h> |
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c index e12054c86d0d..cbdd1c6aaa94 100644 --- a/fs/nfs/pagelist.c +++ b/fs/nfs/pagelist.c | |||
@@ -11,6 +11,7 @@ | |||
11 | 11 | ||
12 | #include <linux/slab.h> | 12 | #include <linux/slab.h> |
13 | #include <linux/file.h> | 13 | #include <linux/file.h> |
14 | #include <linux/sched.h> | ||
14 | #include <linux/sunrpc/clnt.h> | 15 | #include <linux/sunrpc/clnt.h> |
15 | #include <linux/nfs3.h> | 16 | #include <linux/nfs3.h> |
16 | #include <linux/nfs4.h> | 17 | #include <linux/nfs4.h> |
diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c index 32ffea033c7a..864090edc28b 100644 --- a/fs/nfsd/nfs4callback.c +++ b/fs/nfsd/nfs4callback.c | |||
@@ -38,6 +38,7 @@ | |||
38 | #include <linux/inet.h> | 38 | #include <linux/inet.h> |
39 | #include <linux/errno.h> | 39 | #include <linux/errno.h> |
40 | #include <linux/delay.h> | 40 | #include <linux/delay.h> |
41 | #include <linux/sched.h> | ||
41 | #include <linux/sunrpc/xdr.h> | 42 | #include <linux/sunrpc/xdr.h> |
42 | #include <linux/sunrpc/svc.h> | 43 | #include <linux/sunrpc/svc.h> |
43 | #include <linux/sunrpc/clnt.h> | 44 | #include <linux/sunrpc/clnt.h> |
diff --git a/fs/nfsd/nfs4recover.c b/fs/nfsd/nfs4recover.c index c7774e3a9469..ebd03cc07479 100644 --- a/fs/nfsd/nfs4recover.c +++ b/fs/nfsd/nfs4recover.c | |||
@@ -45,7 +45,7 @@ | |||
45 | #include <asm/uaccess.h> | 45 | #include <asm/uaccess.h> |
46 | #include <asm/scatterlist.h> | 46 | #include <asm/scatterlist.h> |
47 | #include <linux/crypto.h> | 47 | #include <linux/crypto.h> |
48 | 48 | #include <linux/sched.h> | |
49 | 49 | ||
50 | #define NFSDDBG_FACILITY NFSDDBG_PROC | 50 | #define NFSDDBG_FACILITY NFSDDBG_PROC |
51 | 51 | ||
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c index d7759ce6ed94..ff55950efb43 100644 --- a/fs/nfsd/nfssvc.c +++ b/fs/nfsd/nfssvc.c | |||
@@ -9,7 +9,7 @@ | |||
9 | */ | 9 | */ |
10 | 10 | ||
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | 12 | #include <linux/sched.h> | |
13 | #include <linux/time.h> | 13 | #include <linux/time.h> |
14 | #include <linux/errno.h> | 14 | #include <linux/errno.h> |
15 | #include <linux/nfs.h> | 15 | #include <linux/nfs.h> |
diff --git a/fs/ntfs/file.c b/fs/ntfs/file.c index 39a1669506bd..7ed56390b582 100644 --- a/fs/ntfs/file.c +++ b/fs/ntfs/file.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <linux/swap.h> | 26 | #include <linux/swap.h> |
27 | #include <linux/uio.h> | 27 | #include <linux/uio.h> |
28 | #include <linux/writeback.h> | 28 | #include <linux/writeback.h> |
29 | #include <linux/sched.h> | ||
29 | 30 | ||
30 | #include <asm/page.h> | 31 | #include <asm/page.h> |
31 | #include <asm/uaccess.h> | 32 | #include <asm/uaccess.h> |
diff --git a/fs/partitions/Kconfig b/fs/partitions/Kconfig index 7638a1c42a7d..a99acd8de353 100644 --- a/fs/partitions/Kconfig +++ b/fs/partitions/Kconfig | |||
@@ -166,8 +166,12 @@ config LDM_PARTITION | |||
166 | depends on PARTITION_ADVANCED | 166 | depends on PARTITION_ADVANCED |
167 | ---help--- | 167 | ---help--- |
168 | Say Y here if you would like to use hard disks under Linux which | 168 | Say Y here if you would like to use hard disks under Linux which |
169 | were partitioned using Windows 2000's or XP's Logical Disk Manager. | 169 | were partitioned using Windows 2000's/XP's or Vista's Logical Disk |
170 | They are also known as "Dynamic Disks". | 170 | Manager. They are also known as "Dynamic Disks". |
171 | |||
172 | Note this driver only supports Dynamic Disks with a protective MBR | ||
173 | label, i.e. DOS partition table. It does not support GPT labelled | ||
174 | Dynamic Disks yet as can be created with Vista. | ||
171 | 175 | ||
172 | Windows 2000 introduced the concept of Dynamic Disks to get around | 176 | Windows 2000 introduced the concept of Dynamic Disks to get around |
173 | the limitations of the PC's partitioning scheme. The Logical Disk | 177 | the limitations of the PC's partitioning scheme. The Logical Disk |
@@ -175,8 +179,8 @@ config LDM_PARTITION | |||
175 | mirrored, striped or RAID volumes, all without the need for | 179 | mirrored, striped or RAID volumes, all without the need for |
176 | rebooting. | 180 | rebooting. |
177 | 181 | ||
178 | Normal partitions are now called Basic Disks under Windows 2000 and | 182 | Normal partitions are now called Basic Disks under Windows 2000, XP, |
179 | XP. | 183 | and Vista. |
180 | 184 | ||
181 | For a fuller description read <file:Documentation/ldm.txt>. | 185 | For a fuller description read <file:Documentation/ldm.txt>. |
182 | 186 | ||
diff --git a/fs/partitions/ldm.c b/fs/partitions/ldm.c index 1a60926a4ccd..c387812537d7 100644 --- a/fs/partitions/ldm.c +++ b/fs/partitions/ldm.c | |||
@@ -2,10 +2,10 @@ | |||
2 | * ldm - Support for Windows Logical Disk Manager (Dynamic Disks) | 2 | * ldm - Support for Windows Logical Disk Manager (Dynamic Disks) |
3 | * | 3 | * |
4 | * Copyright (C) 2001,2002 Richard Russon <ldm@flatcap.org> | 4 | * Copyright (C) 2001,2002 Richard Russon <ldm@flatcap.org> |
5 | * Copyright (c) 2001-2004 Anton Altaparmakov | 5 | * Copyright (c) 2001-2007 Anton Altaparmakov |
6 | * Copyright (C) 2001,2002 Jakob Kemi <jakob.kemi@telia.com> | 6 | * Copyright (C) 2001,2002 Jakob Kemi <jakob.kemi@telia.com> |
7 | * | 7 | * |
8 | * Documentation is available at http://linux-ntfs.sf.net/ldm | 8 | * Documentation is available at http://www.linux-ntfs.org/content/view/19/37/ |
9 | * | 9 | * |
10 | * This program is free software; you can redistribute it and/or modify it under | 10 | * This program is free software; you can redistribute it and/or modify it under |
11 | * the terms of the GNU General Public License as published by the Free Software | 11 | * the terms of the GNU General Public License as published by the Free Software |
@@ -62,7 +62,6 @@ static void _ldm_printk (const char *level, const char *function, | |||
62 | printk ("%s%s(): %s\n", level, function, buf); | 62 | printk ("%s%s(): %s\n", level, function, buf); |
63 | } | 63 | } |
64 | 64 | ||
65 | |||
66 | /** | 65 | /** |
67 | * ldm_parse_hexbyte - Convert a ASCII hex number to a byte | 66 | * ldm_parse_hexbyte - Convert a ASCII hex number to a byte |
68 | * @src: Pointer to at least 2 characters to convert. | 67 | * @src: Pointer to at least 2 characters to convert. |
@@ -118,7 +117,6 @@ static bool ldm_parse_guid (const u8 *src, u8 *dest) | |||
118 | return true; | 117 | return true; |
119 | } | 118 | } |
120 | 119 | ||
121 | |||
122 | /** | 120 | /** |
123 | * ldm_parse_privhead - Read the LDM Database PRIVHEAD structure | 121 | * ldm_parse_privhead - Read the LDM Database PRIVHEAD structure |
124 | * @data: Raw database PRIVHEAD structure loaded from the device | 122 | * @data: Raw database PRIVHEAD structure loaded from the device |
@@ -130,46 +128,48 @@ static bool ldm_parse_guid (const u8 *src, u8 *dest) | |||
130 | * Return: 'true' @ph contains the PRIVHEAD data | 128 | * Return: 'true' @ph contains the PRIVHEAD data |
131 | * 'false' @ph contents are undefined | 129 | * 'false' @ph contents are undefined |
132 | */ | 130 | */ |
133 | static bool ldm_parse_privhead (const u8 *data, struct privhead *ph) | 131 | static bool ldm_parse_privhead(const u8 *data, struct privhead *ph) |
134 | { | 132 | { |
135 | BUG_ON (!data || !ph); | 133 | bool is_vista = false; |
136 | 134 | ||
137 | if (MAGIC_PRIVHEAD != BE64 (data)) { | 135 | BUG_ON(!data || !ph); |
138 | ldm_error ("Cannot find PRIVHEAD structure. LDM database is" | 136 | if (MAGIC_PRIVHEAD != BE64(data)) { |
137 | ldm_error("Cannot find PRIVHEAD structure. LDM database is" | ||
139 | " corrupt. Aborting."); | 138 | " corrupt. Aborting."); |
140 | return false; | 139 | return false; |
141 | } | 140 | } |
142 | 141 | ph->ver_major = BE16(data + 0x000C); | |
143 | ph->ver_major = BE16 (data + 0x000C); | 142 | ph->ver_minor = BE16(data + 0x000E); |
144 | ph->ver_minor = BE16 (data + 0x000E); | 143 | ph->logical_disk_start = BE64(data + 0x011B); |
145 | ph->logical_disk_start = BE64 (data + 0x011B); | 144 | ph->logical_disk_size = BE64(data + 0x0123); |
146 | ph->logical_disk_size = BE64 (data + 0x0123); | 145 | ph->config_start = BE64(data + 0x012B); |
147 | ph->config_start = BE64 (data + 0x012B); | 146 | ph->config_size = BE64(data + 0x0133); |
148 | ph->config_size = BE64 (data + 0x0133); | 147 | /* Version 2.11 is Win2k/XP and version 2.12 is Vista. */ |
149 | 148 | if (ph->ver_major == 2 && ph->ver_minor == 12) | |
150 | if ((ph->ver_major != 2) || (ph->ver_minor != 11)) { | 149 | is_vista = true; |
151 | ldm_error ("Expected PRIVHEAD version %d.%d, got %d.%d." | 150 | if (!is_vista && (ph->ver_major != 2 || ph->ver_minor != 11)) { |
152 | " Aborting.", 2, 11, ph->ver_major, ph->ver_minor); | 151 | ldm_error("Expected PRIVHEAD version 2.11 or 2.12, got %d.%d." |
152 | " Aborting.", ph->ver_major, ph->ver_minor); | ||
153 | return false; | 153 | return false; |
154 | } | 154 | } |
155 | ldm_debug("PRIVHEAD version %d.%d (Windows %s).", ph->ver_major, | ||
156 | ph->ver_minor, is_vista ? "Vista" : "2000/XP"); | ||
155 | if (ph->config_size != LDM_DB_SIZE) { /* 1 MiB in sectors. */ | 157 | if (ph->config_size != LDM_DB_SIZE) { /* 1 MiB in sectors. */ |
156 | /* Warn the user and continue, carefully */ | 158 | /* Warn the user and continue, carefully. */ |
157 | ldm_info ("Database is normally %u bytes, it claims to " | 159 | ldm_info("Database is normally %u bytes, it claims to " |
158 | "be %llu bytes.", LDM_DB_SIZE, | 160 | "be %llu bytes.", LDM_DB_SIZE, |
159 | (unsigned long long)ph->config_size ); | 161 | udunsigned long long)ph->config_size); |
160 | } | 162 | } |
161 | if ((ph->logical_disk_size == 0) || | 163 | if ((ph->logical_disk_size == 0) || (ph->logical_disk_start + |
162 | (ph->logical_disk_start + ph->logical_disk_size > ph->config_start)) { | 164 | ph->logical_disk_size > ph->config_start)) { |
163 | ldm_error ("PRIVHEAD disk size doesn't match real disk size"); | 165 | ldm_error("PRIVHEAD disk size doesn't match real disk size"); |
164 | return false; | 166 | return false; |
165 | } | 167 | } |
166 | 168 | if (!ldm_parse_guid(data + 0x0030, ph->disk_id)) { | |
167 | if (!ldm_parse_guid (data + 0x0030, ph->disk_id)) { | 169 | ldm_error("PRIVHEAD contains an invalid GUID."); |
168 | ldm_error ("PRIVHEAD contains an invalid GUID."); | ||
169 | return false; | 170 | return false; |
170 | } | 171 | } |
171 | 172 | ldm_debug("Parsed PRIVHEAD successfully."); | |
172 | ldm_debug ("Parsed PRIVHEAD successfully."); | ||
173 | return true; | 173 | return true; |
174 | } | 174 | } |
175 | 175 | ||
@@ -409,7 +409,7 @@ out: | |||
409 | * Return: 'true' @toc1 contains validated TOCBLOCK info | 409 | * Return: 'true' @toc1 contains validated TOCBLOCK info |
410 | * 'false' @toc1 contents are undefined | 410 | * 'false' @toc1 contents are undefined |
411 | */ | 411 | */ |
412 | static bool ldm_validate_tocblocks (struct block_device *bdev, | 412 | static bool ldm_validate_tocblocks(struct block_device *bdev, |
413 | unsigned long base, struct ldmdb *ldb) | 413 | unsigned long base, struct ldmdb *ldb) |
414 | { | 414 | { |
415 | static const int off[4] = { OFF_TOCB1, OFF_TOCB2, OFF_TOCB3, OFF_TOCB4}; | 415 | static const int off[4] = { OFF_TOCB1, OFF_TOCB2, OFF_TOCB3, OFF_TOCB4}; |
@@ -417,54 +417,57 @@ static bool ldm_validate_tocblocks (struct block_device *bdev, | |||
417 | struct privhead *ph; | 417 | struct privhead *ph; |
418 | Sector sect; | 418 | Sector sect; |
419 | u8 *data; | 419 | u8 *data; |
420 | int i, nr_tbs; | ||
420 | bool result = false; | 421 | bool result = false; |
421 | int i; | ||
422 | 422 | ||
423 | BUG_ON (!bdev || !ldb); | 423 | BUG_ON(!bdev || !ldb); |
424 | 424 | ph = &ldb->ph; | |
425 | ph = &ldb->ph; | ||
426 | tb[0] = &ldb->toc; | 425 | tb[0] = &ldb->toc; |
427 | tb[1] = kmalloc (sizeof (*tb[1]), GFP_KERNEL); | 426 | tb[1] = kmalloc(sizeof(*tb[1]) * 3, GFP_KERNEL); |
428 | tb[2] = kmalloc (sizeof (*tb[2]), GFP_KERNEL); | 427 | if (!tb[1]) { |
429 | tb[3] = kmalloc (sizeof (*tb[3]), GFP_KERNEL); | 428 | ldm_crit("Out of memory."); |
430 | if (!tb[1] || !tb[2] || !tb[3]) { | 429 | goto err; |
431 | ldm_crit ("Out of memory."); | ||
432 | goto out; | ||
433 | } | 430 | } |
434 | 431 | tb[2] = (struct tocblock*)((u8*)tb[1] + sizeof(*tb[1])); | |
435 | for (i = 0; i < 4; i++) /* Read and parse all four toc's. */ | 432 | tb[3] = (struct tocblock*)((u8*)tb[2] + sizeof(*tb[2])); |
436 | { | 433 | /* |
437 | data = read_dev_sector (bdev, base + off[i], §); | 434 | * Try to read and parse all four TOCBLOCKs. |
435 | * | ||
436 | * Windows Vista LDM v2.12 does not always have all four TOCBLOCKs so | ||
437 | * skip any that fail as long as we get at least one valid TOCBLOCK. | ||
438 | */ | ||
439 | for (nr_tbs = i = 0; i < 4; i++) { | ||
440 | data = read_dev_sector(bdev, base + off[i], §); | ||
438 | if (!data) { | 441 | if (!data) { |
439 | ldm_crit ("Disk read failed."); | 442 | ldm_error("Disk read failed for TOCBLOCK %d.", i); |
440 | goto out; | 443 | continue; |
441 | } | 444 | } |
442 | result = ldm_parse_tocblock (data, tb[i]); | 445 | if (ldm_parse_tocblock(data, tb[nr_tbs])) |
443 | put_dev_sector (sect); | 446 | nr_tbs++; |
444 | if (!result) | 447 | put_dev_sector(sect); |
445 | goto out; /* Already logged */ | ||
446 | } | 448 | } |
447 | 449 | if (!nr_tbs) { | |
448 | /* Range check the toc against a privhead. */ | 450 | ldm_crit("Failed to find a valid TOCBLOCK."); |
451 | goto err; | ||
452 | } | ||
453 | /* Range check the TOCBLOCK against a privhead. */ | ||
449 | if (((tb[0]->bitmap1_start + tb[0]->bitmap1_size) > ph->config_size) || | 454 | if (((tb[0]->bitmap1_start + tb[0]->bitmap1_size) > ph->config_size) || |
450 | ((tb[0]->bitmap2_start + tb[0]->bitmap2_size) > ph->config_size)) { | 455 | ((tb[0]->bitmap2_start + tb[0]->bitmap2_size) > |
451 | ldm_crit ("The bitmaps are out of range. Giving up."); | 456 | ph->config_size)) { |
452 | goto out; | 457 | ldm_crit("The bitmaps are out of range. Giving up."); |
458 | goto err; | ||
453 | } | 459 | } |
454 | 460 | /* Compare all loaded TOCBLOCKs. */ | |
455 | if (!ldm_compare_tocblocks (tb[0], tb[1]) || /* Compare all tocs. */ | 461 | for (i = 1; i < nr_tbs; i++) { |
456 | !ldm_compare_tocblocks (tb[0], tb[2]) || | 462 | if (!ldm_compare_tocblocks(tb[0], tb[i])) { |
457 | !ldm_compare_tocblocks (tb[0], tb[3])) { | 463 | ldm_crit("TOCBLOCKs 0 and %d do not match.", i); |
458 | ldm_crit ("The TOCBLOCKs don't match."); | 464 | goto err; |
459 | goto out; | 465 | } |
460 | } | 466 | } |
461 | 467 | ldm_debug("Validated %d TOCBLOCKs successfully.", nr_tbs); | |
462 | ldm_debug ("Validated TOCBLOCKs successfully."); | ||
463 | result = true; | 468 | result = true; |
464 | out: | 469 | err: |
465 | kfree (tb[1]); | 470 | kfree(tb[1]); |
466 | kfree (tb[2]); | ||
467 | kfree (tb[3]); | ||
468 | return result; | 471 | return result; |
469 | } | 472 | } |
470 | 473 | ||
@@ -566,7 +569,7 @@ static bool ldm_validate_partition_table (struct block_device *bdev) | |||
566 | 569 | ||
567 | p = (struct partition*)(data + 0x01BE); | 570 | p = (struct partition*)(data + 0x01BE); |
568 | for (i = 0; i < 4; i++, p++) | 571 | for (i = 0; i < 4; i++, p++) |
569 | if (SYS_IND (p) == WIN2K_DYNAMIC_PARTITION) { | 572 | if (SYS_IND (p) == LDM_PARTITION) { |
570 | result = true; | 573 | result = true; |
571 | break; | 574 | break; |
572 | } | 575 | } |
@@ -975,44 +978,68 @@ static bool ldm_parse_dsk4 (const u8 *buffer, int buflen, struct vblk *vb) | |||
975 | * Return: 'true' @vb contains a Partition VBLK | 978 | * Return: 'true' @vb contains a Partition VBLK |
976 | * 'false' @vb contents are not defined | 979 | * 'false' @vb contents are not defined |
977 | */ | 980 | */ |
978 | static bool ldm_parse_prt3 (const u8 *buffer, int buflen, struct vblk *vb) | 981 | static bool ldm_parse_prt3(const u8 *buffer, int buflen, struct vblk *vb) |
979 | { | 982 | { |
980 | int r_objid, r_name, r_size, r_parent, r_diskid, r_index, len; | 983 | int r_objid, r_name, r_size, r_parent, r_diskid, r_index, len; |
981 | struct vblk_part *part; | 984 | struct vblk_part *part; |
982 | 985 | ||
983 | BUG_ON (!buffer || !vb); | 986 | BUG_ON(!buffer || !vb); |
984 | 987 | r_objid = ldm_relative(buffer, buflen, 0x18, 0); | |
985 | r_objid = ldm_relative (buffer, buflen, 0x18, 0); | 988 | if (r_objid < 0) { |
986 | r_name = ldm_relative (buffer, buflen, 0x18, r_objid); | 989 | ldm_error("r_objid %d < 0", r_objid); |
987 | r_size = ldm_relative (buffer, buflen, 0x34, r_name); | 990 | return false; |
988 | r_parent = ldm_relative (buffer, buflen, 0x34, r_size); | 991 | } |
989 | r_diskid = ldm_relative (buffer, buflen, 0x34, r_parent); | 992 | r_name = ldm_relative(buffer, buflen, 0x18, r_objid); |
990 | 993 | if (r_name < 0) { | |
994 | ldm_error("r_name %d < 0", r_name); | ||
995 | return false; | ||
996 | } | ||
997 | r_size = ldm_relative(buffer, buflen, 0x34, r_name); | ||
998 | if (r_size < 0) { | ||
999 | ldm_error("r_size %d < 0", r_size); | ||
1000 | return false; | ||
1001 | } | ||
1002 | r_parent = ldm_relative(buffer, buflen, 0x34, r_size); | ||
1003 | if (r_parent < 0) { | ||
1004 | ldm_error("r_parent %d < 0", r_parent); | ||
1005 | return false; | ||
1006 | } | ||
1007 | r_diskid = ldm_relative(buffer, buflen, 0x34, r_parent); | ||
1008 | if (r_diskid < 0) { | ||
1009 | ldm_error("r_diskid %d < 0", r_diskid); | ||
1010 | return false; | ||
1011 | } | ||
991 | if (buffer[0x12] & VBLK_FLAG_PART_INDEX) { | 1012 | if (buffer[0x12] & VBLK_FLAG_PART_INDEX) { |
992 | r_index = ldm_relative (buffer, buflen, 0x34, r_diskid); | 1013 | r_index = ldm_relative(buffer, buflen, 0x34, r_diskid); |
1014 | if (r_index < 0) { | ||
1015 | ldm_error("r_index %d < 0", r_index); | ||
1016 | return false; | ||
1017 | } | ||
993 | len = r_index; | 1018 | len = r_index; |
994 | } else { | 1019 | } else { |
995 | r_index = 0; | 1020 | r_index = 0; |
996 | len = r_diskid; | 1021 | len = r_diskid; |
997 | } | 1022 | } |
998 | if (len < 0) | 1023 | if (len < 0) { |
1024 | ldm_error("len %d < 0", len); | ||
999 | return false; | 1025 | return false; |
1000 | 1026 | } | |
1001 | len += VBLK_SIZE_PRT3; | 1027 | len += VBLK_SIZE_PRT3; |
1002 | if (len != BE32 (buffer + 0x14)) | 1028 | if (len > BE32(buffer + 0x14)) { |
1029 | ldm_error("len %d > BE32(buffer + 0x14) %d", len, | ||
1030 | BE32(buffer + 0x14)); | ||
1003 | return false; | 1031 | return false; |
1004 | 1032 | } | |
1005 | part = &vb->vblk.part; | 1033 | part = &vb->vblk.part; |
1006 | part->start = BE64 (buffer + 0x24 + r_name); | 1034 | part->start = BE64(buffer + 0x24 + r_name); |
1007 | part->volume_offset = BE64 (buffer + 0x2C + r_name); | 1035 | part->volume_offset = BE64(buffer + 0x2C + r_name); |
1008 | part->size = ldm_get_vnum (buffer + 0x34 + r_name); | 1036 | part->size = ldm_get_vnum(buffer + 0x34 + r_name); |
1009 | part->parent_id = ldm_get_vnum (buffer + 0x34 + r_size); | 1037 | part->parent_id = ldm_get_vnum(buffer + 0x34 + r_size); |
1010 | part->disk_id = ldm_get_vnum (buffer + 0x34 + r_parent); | 1038 | part->disk_id = ldm_get_vnum(buffer + 0x34 + r_parent); |
1011 | if (vb->flags & VBLK_FLAG_PART_INDEX) | 1039 | if (vb->flags & VBLK_FLAG_PART_INDEX) |
1012 | part->partnum = buffer[0x35 + r_diskid]; | 1040 | part->partnum = buffer[0x35 + r_diskid]; |
1013 | else | 1041 | else |
1014 | part->partnum = 0; | 1042 | part->partnum = 0; |
1015 | |||
1016 | return true; | 1043 | return true; |
1017 | } | 1044 | } |
1018 | 1045 | ||
@@ -1475,4 +1502,3 @@ out: | |||
1475 | kfree (ldb); | 1502 | kfree (ldb); |
1476 | return result; | 1503 | return result; |
1477 | } | 1504 | } |
1478 | |||
diff --git a/fs/partitions/ldm.h b/fs/partitions/ldm.h index 6e8d7952b8b5..d2e6a3046939 100644 --- a/fs/partitions/ldm.h +++ b/fs/partitions/ldm.h | |||
@@ -2,10 +2,10 @@ | |||
2 | * ldm - Part of the Linux-NTFS project. | 2 | * ldm - Part of the Linux-NTFS project. |
3 | * | 3 | * |
4 | * Copyright (C) 2001,2002 Richard Russon <ldm@flatcap.org> | 4 | * Copyright (C) 2001,2002 Richard Russon <ldm@flatcap.org> |
5 | * Copyright (C) 2001 Anton Altaparmakov <aia21@cantab.net> | 5 | * Copyright (c) 2001-2007 Anton Altaparmakov |
6 | * Copyright (C) 2001,2002 Jakob Kemi <jakob.kemi@telia.com> | 6 | * Copyright (C) 2001,2002 Jakob Kemi <jakob.kemi@telia.com> |
7 | * | 7 | * |
8 | * Documentation is available at http://linux-ntfs.sf.net/ldm | 8 | * Documentation is available at http://www.linux-ntfs.org/content/view/19/37/ |
9 | * | 9 | * |
10 | * This program is free software; you can redistribute it and/or modify it | 10 | * This program is free software; you can redistribute it and/or modify it |
11 | * under the terms of the GNU General Public License as published by the Free | 11 | * under the terms of the GNU General Public License as published by the Free |
@@ -93,7 +93,7 @@ struct parsed_partitions; | |||
93 | 93 | ||
94 | #define OFF_VMDB 17 /* List of partitions. */ | 94 | #define OFF_VMDB 17 /* List of partitions. */ |
95 | 95 | ||
96 | #define WIN2K_DYNAMIC_PARTITION 0x42 /* Formerly SFS (Landis). */ | 96 | #define LDM_PARTITION 0x42 /* Formerly SFS (Landis). */ |
97 | 97 | ||
98 | #define TOC_BITMAP1 "config" /* Names of the two defined */ | 98 | #define TOC_BITMAP1 "config" /* Names of the two defined */ |
99 | #define TOC_BITMAP2 "log" /* bitmaps in the TOCBLOCK. */ | 99 | #define TOC_BITMAP2 "log" /* bitmaps in the TOCBLOCK. */ |
diff --git a/fs/ramfs/inode.c b/fs/ramfs/inode.c index 4ace5d72eae1..d40d22b347b7 100644 --- a/fs/ramfs/inode.c +++ b/fs/ramfs/inode.c | |||
@@ -32,7 +32,7 @@ | |||
32 | #include <linux/string.h> | 32 | #include <linux/string.h> |
33 | #include <linux/backing-dev.h> | 33 | #include <linux/backing-dev.h> |
34 | #include <linux/ramfs.h> | 34 | #include <linux/ramfs.h> |
35 | 35 | #include <linux/sched.h> | |
36 | #include <asm/uaccess.h> | 36 | #include <asm/uaccess.h> |
37 | #include "internal.h" | 37 | #include "internal.h" |
38 | 38 | ||
diff --git a/fs/smbfs/dir.c b/fs/smbfs/dir.c index 50136b1a3eca..48da4fa6b7d4 100644 --- a/fs/smbfs/dir.c +++ b/fs/smbfs/dir.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/smp_lock.h> | 13 | #include <linux/smp_lock.h> |
14 | #include <linux/ctype.h> | 14 | #include <linux/ctype.h> |
15 | #include <linux/net.h> | 15 | #include <linux/net.h> |
16 | #include <linux/sched.h> | ||
16 | 17 | ||
17 | #include <linux/smb_fs.h> | 18 | #include <linux/smb_fs.h> |
18 | #include <linux/smb_mount.h> | 19 | #include <linux/smb_mount.h> |
diff --git a/fs/smbfs/file.c b/fs/smbfs/file.c index f161797160c4..aea3f8aa54c0 100644 --- a/fs/smbfs/file.c +++ b/fs/smbfs/file.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/pagemap.h> | 17 | #include <linux/pagemap.h> |
18 | #include <linux/smp_lock.h> | 18 | #include <linux/smp_lock.h> |
19 | #include <linux/net.h> | 19 | #include <linux/net.h> |
20 | #include <linux/aio.h> | ||
20 | 21 | ||
21 | #include <asm/uaccess.h> | 22 | #include <asm/uaccess.h> |
22 | #include <asm/system.h> | 23 | #include <asm/system.h> |
diff --git a/fs/smbfs/inode.c b/fs/smbfs/inode.c index 5c9243a23b9b..6724a6cf01ff 100644 --- a/fs/smbfs/inode.c +++ b/fs/smbfs/inode.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/net.h> | 25 | #include <linux/net.h> |
26 | #include <linux/vfs.h> | 26 | #include <linux/vfs.h> |
27 | #include <linux/highuid.h> | 27 | #include <linux/highuid.h> |
28 | #include <linux/sched.h> | ||
28 | #include <linux/smb_fs.h> | 29 | #include <linux/smb_fs.h> |
29 | #include <linux/smbno.h> | 30 | #include <linux/smbno.h> |
30 | #include <linux/smb_mount.h> | 31 | #include <linux/smb_mount.h> |
diff --git a/fs/smbfs/request.c b/fs/smbfs/request.c index c288fbe7953d..3f54a0f80fae 100644 --- a/fs/smbfs/request.c +++ b/fs/smbfs/request.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/fs.h> | 11 | #include <linux/fs.h> |
12 | #include <linux/slab.h> | 12 | #include <linux/slab.h> |
13 | #include <linux/net.h> | 13 | #include <linux/net.h> |
14 | #include <linux/sched.h> | ||
14 | 15 | ||
15 | #include <linux/smb_fs.h> | 16 | #include <linux/smb_fs.h> |
16 | #include <linux/smbno.h> | 17 | #include <linux/smbno.h> |
diff --git a/fs/sysfs/inode.c b/fs/sysfs/inode.c index 4de5c6b89918..bdd30e74de6b 100644 --- a/fs/sysfs/inode.c +++ b/fs/sysfs/inode.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/backing-dev.h> | 13 | #include <linux/backing-dev.h> |
14 | #include <linux/capability.h> | 14 | #include <linux/capability.h> |
15 | #include <linux/errno.h> | 15 | #include <linux/errno.h> |
16 | #include <linux/sched.h> | ||
16 | #include <asm/semaphore.h> | 17 | #include <asm/semaphore.h> |
17 | #include "sysfs.h" | 18 | #include "sysfs.h" |
18 | 19 | ||
diff --git a/fs/udf/file.c b/fs/udf/file.c index 40d5047defea..51b5764685e7 100644 --- a/fs/udf/file.c +++ b/fs/udf/file.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <linux/smp_lock.h> | 36 | #include <linux/smp_lock.h> |
37 | #include <linux/pagemap.h> | 37 | #include <linux/pagemap.h> |
38 | #include <linux/buffer_head.h> | 38 | #include <linux/buffer_head.h> |
39 | #include <linux/aio.h> | ||
39 | 40 | ||
40 | #include "udf_i.h" | 41 | #include "udf_i.h" |
41 | #include "udf_sb.h" | 42 | #include "udf_sb.h" |
diff --git a/fs/udf/namei.c b/fs/udf/namei.c index 91df4928651c..51fe307dc0ec 100644 --- a/fs/udf/namei.c +++ b/fs/udf/namei.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/quotaops.h> | 30 | #include <linux/quotaops.h> |
31 | #include <linux/smp_lock.h> | 31 | #include <linux/smp_lock.h> |
32 | #include <linux/buffer_head.h> | 32 | #include <linux/buffer_head.h> |
33 | #include <linux/sched.h> | ||
33 | 34 | ||
34 | static inline int udf_match(int len1, const char *name1, int len2, const char *name2) | 35 | static inline int udf_match(int len1, const char *name1, int len2, const char *name2) |
35 | { | 36 | { |