summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 17:57:11 -0800
committerLinus Torvalds <torvalds@athlon.transmeta.com>2002-02-04 17:57:11 -0800
commitc8ebfc888f9ee93f2dc7cd62b3be66263755d99a (patch)
treef449a3433c022ed8fd9aaa8f291a1b4e354fd5b9 /fs
parent5d12a58c4049a4839abbbdf87dd189505513b1b6 (diff)
v2.4.1.2 -> v2.4.1.3
- Jens: better ordering of requests when unable to merge - Neil Brown: make md work as a module again (we cannot autodetect in modules, not enough background information) - Neil Brown: raid5 SMP locking cleanups - Neil Brown: nfsd: handle Irix NFS clients named pipe behavior and dentry leak fix - maestro3 shutdown fix - fix dcache hash calculation that could cause bad hashes under certain circumstances (Dean Gaudet) - David Miller: networking and sparc updates - Jeff Garzik: include file cleanups - Andy Grover: ACPI update - Coda-fs error return fixes - rth: alpha Jensen update
Diffstat (limited to 'fs')
-rw-r--r--fs/adfs/super.c2
-rw-r--r--fs/affs/file.c2
-rw-r--r--fs/affs/inode.c2
-rw-r--r--fs/affs/super.c2
-rw-r--r--fs/autofs/autofs_i.h2
-rw-r--r--fs/autofs/inode.c2
-rw-r--r--fs/autofs/waitq.c2
-rw-r--r--fs/autofs4/autofs_i.h2
-rw-r--r--fs/autofs4/inode.c2
-rw-r--r--fs/autofs4/waitq.c2
-rw-r--r--fs/binfmt_aout.c2
-rw-r--r--fs/binfmt_elf.c2
-rw-r--r--fs/binfmt_em86.c2
-rw-r--r--fs/binfmt_misc.c2
-rw-r--r--fs/binfmt_script.c2
-rw-r--r--fs/block_dev.c3
-rw-r--r--fs/buffer.c2
-rw-r--r--fs/coda/cnode.c7
-rw-r--r--fs/coda/psdev.c2
-rw-r--r--fs/coda/sysctl.c2
-rw-r--r--fs/coda/upcall.c8
-rw-r--r--fs/dcache.c8
-rw-r--r--fs/devfs/base.c2
-rw-r--r--fs/devpts/inode.c2
-rw-r--r--fs/dquot.c2
-rw-r--r--fs/fat/buffer.c2
-rw-r--r--fs/fat/inode.c2
-rw-r--r--fs/fifo.c2
-rw-r--r--fs/file.c2
-rw-r--r--fs/hpfs/hpfs_fn.h2
-rw-r--r--fs/inode.c2
-rw-r--r--fs/iobuf.c2
-rw-r--r--fs/ioctl.c1
-rw-r--r--fs/isofs/dir.c2
-rw-r--r--fs/isofs/inode.c2
-rw-r--r--fs/isofs/joliet.c2
-rw-r--r--fs/isofs/namei.c2
-rw-r--r--fs/isofs/rock.c2
-rw-r--r--fs/jffs/inode-v23.c2
-rw-r--r--fs/jffs/intrep.c2
-rw-r--r--fs/jffs/jffs_fm.c2
-rw-r--r--fs/lockd/host.c2
-rw-r--r--fs/lockd/svc.c2
-rw-r--r--fs/lockd/svc4proc.c2
-rw-r--r--fs/lockd/svcproc.c2
-rw-r--r--fs/lockd/svcshare.c2
-rw-r--r--fs/locks.c2
-rw-r--r--fs/minix/inode.c2
-rw-r--r--fs/ncpfs/dir.c2
-rw-r--r--fs/ncpfs/file.c2
-rw-r--r--fs/ncpfs/inode.c2
-rw-r--r--fs/ncpfs/mmap.c2
-rw-r--r--fs/ncpfs/ncplib_kernel.h2
-rw-r--r--fs/nfs/dir.c2
-rw-r--r--fs/nfs/file.c2
-rw-r--r--fs/nfs/flushd.c2
-rw-r--r--fs/nfs/nfs2xdr.c2
-rw-r--r--fs/nfs/nfs3xdr.c2
-rw-r--r--fs/nfs/proc.c2
-rw-r--r--fs/nfs/read.c2
-rw-r--r--fs/nfs/symlink.c2
-rw-r--r--fs/nfs/unlink.c2
-rw-r--r--fs/nfs/write.c2
-rw-r--r--fs/nfsd/export.c2
-rw-r--r--fs/nfsd/nfs3proc.c2
-rw-r--r--fs/nfsd/nfscache.c2
-rw-r--r--fs/nfsd/nfsctl.c2
-rw-r--r--fs/nfsd/nfsfh.c3
-rw-r--r--fs/nfsd/nfsproc.c17
-rw-r--r--fs/nfsd/nfssvc.c2
-rw-r--r--fs/nfsd/nfsxdr.c13
-rw-r--r--fs/nfsd/vfs.c2
-rw-r--r--fs/nls/nls_base.c2
-rw-r--r--fs/open.c1
-rw-r--r--fs/openpromfs/inode.c2
-rw-r--r--fs/pipe.c3
-rw-r--r--fs/qnx4/inode.c2
-rw-r--r--fs/qnx4/truncate.c2
-rw-r--r--fs/read_write.c2
-rw-r--r--fs/romfs/inode.c2
-rw-r--r--fs/select.c2
-rw-r--r--fs/smbfs/file.c2
-rw-r--r--fs/smbfs/inode.c2
-rw-r--r--fs/smbfs/proc.c2
-rw-r--r--fs/super.c3
-rw-r--r--fs/udf/dir.c2
-rw-r--r--fs/udf/namei.c2
-rw-r--r--fs/udf/partition.c2
-rw-r--r--fs/udf/super.c2
-rw-r--r--fs/udf/symlink.c2
-rw-r--r--fs/ufs/super.c2
-rw-r--r--fs/ufs/util.c2
-rw-r--r--fs/umsdos/dir.c2
-rw-r--r--fs/umsdos/namei.c2
-rw-r--r--fs/umsdos/rdir.c2
-rw-r--r--fs/vfat/namei.c2
96 files changed, 132 insertions, 105 deletions
diff --git a/fs/adfs/super.c b/fs/adfs/super.c
index a53c2b8e1775..83ba97166647 100644
--- a/fs/adfs/super.c
+++ b/fs/adfs/super.c
@@ -12,7 +12,7 @@
#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/adfs_fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/stat.h>
#include <linux/string.h>
diff --git a/fs/affs/file.c b/fs/affs/file.c
index fac21f70ba55..848f167014f3 100644
--- a/fs/affs/file.c
+++ b/fs/affs/file.c
@@ -21,7 +21,7 @@
#include <linux/fcntl.h>
#include <linux/kernel.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/locks.h>
#include <linux/smp_lock.h>
diff --git a/fs/affs/inode.c b/fs/affs/inode.c
index fcb7e103a56f..99a81fee8e4a 100644
--- a/fs/affs/inode.c
+++ b/fs/affs/inode.c
@@ -14,7 +14,7 @@
#include <asm/div64.h>
#include <linux/errno.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/sched.h>
#include <linux/affs_fs.h>
diff --git a/fs/affs/super.c b/fs/affs/super.c
index 32ad74eb95ce..c77c3410ca38 100644
--- a/fs/affs/super.c
+++ b/fs/affs/super.c
@@ -14,7 +14,7 @@
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/sched.h>
#include <linux/affs_fs.h>
diff --git a/fs/autofs/autofs_i.h b/fs/autofs/autofs_i.h
index 9dc40922a441..6bad5db45472 100644
--- a/fs/autofs/autofs_i.h
+++ b/fs/autofs/autofs_i.h
@@ -19,7 +19,7 @@
#define AUTOFS_IOC_COUNT 32
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/string.h>
#include <linux/wait.h>
diff --git a/fs/autofs/inode.c b/fs/autofs/inode.c
index 0eb91f3c20b0..1b3ce3edf398 100644
--- a/fs/autofs/inode.c
+++ b/fs/autofs/inode.c
@@ -11,7 +11,7 @@
* ------------------------------------------------------------------------- */
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/file.h>
#include <linux/locks.h>
#include <asm/bitops.h>
diff --git a/fs/autofs/waitq.c b/fs/autofs/waitq.c
index 7c7c8baf2502..c7da7f518f05 100644
--- a/fs/autofs/waitq.c
+++ b/fs/autofs/waitq.c
@@ -10,7 +10,7 @@
*
* ------------------------------------------------------------------------- */
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/signal.h>
#include <linux/file.h>
diff --git a/fs/autofs4/autofs_i.h b/fs/autofs4/autofs_i.h
index 20724eb1c0a3..4dcdcaafcca9 100644
--- a/fs/autofs4/autofs_i.h
+++ b/fs/autofs4/autofs_i.h
@@ -20,7 +20,7 @@
#define AUTOFS_IOC_COUNT 32
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/string.h>
#include <linux/wait.h>
diff --git a/fs/autofs4/inode.c b/fs/autofs4/inode.c
index dd7dd07acc5e..f23705aeb1a8 100644
--- a/fs/autofs4/inode.c
+++ b/fs/autofs4/inode.c
@@ -11,7 +11,7 @@
* ------------------------------------------------------------------------- */
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/file.h>
#include <linux/locks.h>
#include <asm/bitops.h>
diff --git a/fs/autofs4/waitq.c b/fs/autofs4/waitq.c
index a76cde227584..9e5fe900fa4c 100644
--- a/fs/autofs4/waitq.c
+++ b/fs/autofs4/waitq.c
@@ -10,7 +10,7 @@
*
* ------------------------------------------------------------------------- */
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/signal.h>
#include <linux/file.h>
diff --git a/fs/binfmt_aout.c b/fs/binfmt_aout.c
index b16b0db6a258..42f746fb7b85 100644
--- a/fs/binfmt_aout.c
+++ b/fs/binfmt_aout.c
@@ -20,7 +20,7 @@
#include <linux/fcntl.h>
#include <linux/ptrace.h>
#include <linux/user.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/binfmts.h>
#include <linux/personality.h>
#include <linux/init.h>
diff --git a/fs/binfmt_elf.c b/fs/binfmt_elf.c
index c84164fc4570..6841b4acb1f3 100644
--- a/fs/binfmt_elf.c
+++ b/fs/binfmt_elf.c
@@ -24,7 +24,7 @@
#include <linux/file.h>
#include <linux/fcntl.h>
#include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/shm.h>
#include <linux/personality.h>
#include <linux/elfcore.h>
diff --git a/fs/binfmt_em86.c b/fs/binfmt_em86.c
index 95c24a70a3d9..dfe8df28172b 100644
--- a/fs/binfmt_em86.c
+++ b/fs/binfmt_em86.c
@@ -11,7 +11,7 @@
#include <linux/module.h>
#include <linux/string.h>
#include <linux/stat.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/locks.h>
#include <linux/smp_lock.h>
#include <linux/binfmts.h>
diff --git a/fs/binfmt_misc.c b/fs/binfmt_misc.c
index c1653647946a..5ad853910b69 100644
--- a/fs/binfmt_misc.c
+++ b/fs/binfmt_misc.c
@@ -21,7 +21,7 @@
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/binfmts.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
diff --git a/fs/binfmt_script.c b/fs/binfmt_script.c
index ae7de4c24663..2348332e4880 100644
--- a/fs/binfmt_script.c
+++ b/fs/binfmt_script.c
@@ -8,7 +8,7 @@
#include <linux/module.h>
#include <linux/string.h>
#include <linux/stat.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/binfmts.h>
#include <linux/init.h>
#include <linux/file.h>
diff --git a/fs/block_dev.c b/fs/block_dev.c
index 103332fc437b..8761603667a0 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -9,8 +9,9 @@
#include <linux/mm.h>
#include <linux/locks.h>
#include <linux/fcntl.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/kmod.h>
+#include <linux/major.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/smp_lock.h>
diff --git a/fs/buffer.c b/fs/buffer.c
index bea5f09e50ad..6ca6f166bbf6 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -31,7 +31,7 @@
#include <linux/config.h>
#include <linux/sched.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/locks.h>
#include <linux/errno.h>
#include <linux/swap.h>
diff --git a/fs/coda/cnode.c b/fs/coda/cnode.c
index 12de14e7b0c5..53208881d9c4 100644
--- a/fs/coda/cnode.c
+++ b/fs/coda/cnode.c
@@ -194,9 +194,14 @@ struct inode *coda_fid_to_inode(ViceFid *fid, struct super_block *sb)
return NULL;
}
- /* check if this inode is linked to a cnode */
cii = ITOC(inode);
+ /* The inode might already be purged due to memory pressure */
+ if ( coda_fideq(&cii->c_fid, &NullFID) ) {
+ iput(inode);
+ return NULL;
+ }
+
/* we shouldn't have inode collisions anymore */
if ( !coda_fideq(fid, &cii->c_fid) ) BUG();
diff --git a/fs/coda/psdev.c b/fs/coda/psdev.c
index ef05ac2fbb35..ed88f70cd492 100644
--- a/fs/coda/psdev.c
+++ b/fs/coda/psdev.c
@@ -23,7 +23,7 @@
#include <linux/major.h>
#include <linux/sched.h>
#include <linux/lp.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/fcntl.h>
#include <linux/delay.h>
diff --git a/fs/coda/sysctl.c b/fs/coda/sysctl.c
index 4215c3b41506..4bde88515373 100644
--- a/fs/coda/sysctl.c
+++ b/fs/coda/sysctl.c
@@ -17,7 +17,7 @@
#include <linux/sysctl.h>
#include <linux/swapctl.h>
#include <linux/proc_fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/ctype.h>
#include <asm/bitops.h>
diff --git a/fs/coda/upcall.c b/fs/coda/upcall.c
index 6eb6f2e71c20..2fee47e4cc3d 100644
--- a/fs/coda/upcall.c
+++ b/fs/coda/upcall.c
@@ -519,7 +519,7 @@ int venus_pioctl(struct super_block *sb, struct ViceFid *fid,
/* build packet for Venus */
if (data->vi.in_size > VC_MAXDATASIZE) {
- error = EINVAL;
+ error = -EINVAL;
goto exit;
}
@@ -539,7 +539,7 @@ int venus_pioctl(struct super_block *sb, struct ViceFid *fid,
/* get the data out of user space */
if ( copy_from_user((char*)inp + (long)inp->coda_ioctl.data,
data->vi.in, data->vi.in_size) ) {
- error = EINVAL;
+ error = -EINVAL;
goto exit;
}
@@ -557,7 +557,7 @@ int venus_pioctl(struct super_block *sb, struct ViceFid *fid,
CDEBUG(D_FILE, "return len %d <= request len %d\n",
outp->coda_ioctl.len,
data->vi.out_size);
- error = EINVAL;
+ error = -EINVAL;
} else {
error = verify_area(VERIFY_WRITE, data->vi.out,
data->vi.out_size);
@@ -566,7 +566,7 @@ int venus_pioctl(struct super_block *sb, struct ViceFid *fid,
if (copy_to_user(data->vi.out,
(char *)outp + (long)outp->coda_ioctl.data,
data->vi.out_size)) {
- error = EINVAL;
+ error = -EINVAL;
goto exit;
}
}
diff --git a/fs/dcache.c b/fs/dcache.c
index dae4ea7c0060..3b7851216d6d 100644
--- a/fs/dcache.c
+++ b/fs/dcache.c
@@ -18,7 +18,7 @@
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/slab.h>
#include <linux/init.h>
#include <linux/smp_lock.h>
@@ -341,8 +341,7 @@ void prune_dcache(int count)
if (dentry->d_flags & DCACHE_REFERENCED) {
dentry->d_flags &= ~DCACHE_REFERENCED;
list_add(&dentry->d_lru, &dentry_unused);
- count--;
- continue;
+ goto next;
}
dentry_stat.nr_unused--;
@@ -351,6 +350,7 @@ void prune_dcache(int count)
BUG();
prune_one_dentry(dentry);
+ next:
if (!--count)
break;
}
@@ -691,7 +691,7 @@ struct dentry * d_alloc_root(struct inode * root_inode)
static inline struct list_head * d_hash(struct dentry * parent, unsigned long hash)
{
hash += (unsigned long) parent / L1_CACHE_BYTES;
- hash = hash ^ (hash >> D_HASHBITS) ^ (hash >> D_HASHBITS*2);
+ hash = hash ^ (hash >> D_HASHBITS);
return dentry_hashtable + (hash & D_HASHMASK);
}
diff --git a/fs/devfs/base.c b/fs/devfs/base.c
index 5c412e301f99..b26854355a70 100644
--- a/fs/devfs/base.c
+++ b/fs/devfs/base.c
@@ -491,7 +491,7 @@
#include <linux/kernel.h>
#include <linux/wait.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/ioport.h>
#include <linux/delay.h>
#include <linux/ctype.h>
diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c
index 0bb8826d8eff..175a40792fb3 100644
--- a/fs/devpts/inode.c
+++ b/fs/devpts/inode.c
@@ -19,7 +19,7 @@
#include <linux/kernel.h>
#include <linux/locks.h>
#include <linux/major.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/tty.h>
#include <asm/bitops.h>
diff --git a/fs/dquot.c b/fs/dquot.c
index a63685d34fdd..fd1c6b67bdb3 100644
--- a/fs/dquot.c
+++ b/fs/dquot.c
@@ -47,7 +47,7 @@
#include <linux/stat.h>
#include <linux/tty.h>
#include <linux/file.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mount.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
diff --git a/fs/fat/buffer.c b/fs/fat/buffer.c
index 6e8716b1e190..373dcee839a9 100644
--- a/fs/fat/buffer.c
+++ b/fs/fat/buffer.c
@@ -5,7 +5,7 @@
*/
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/fs.h>
#include <linux/msdos_fs.h>
diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index f13260966e26..b559bbe47083 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -27,7 +27,7 @@
#include <linux/stat.h>
#include <linux/locks.h>
#include <linux/fat_cvf.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
#include "msbuffer.h"
diff --git a/fs/fifo.c b/fs/fifo.c
index ee048ac02c02..f5738c126bce 100644
--- a/fs/fifo.c
+++ b/fs/fifo.c
@@ -10,7 +10,7 @@
*/
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
static void wait_for_partner(struct inode* inode, unsigned int* cnt)
diff --git a/fs/file.c b/fs/file.c
index 84d0275cdeb3..51d9f7a2588a 100644
--- a/fs/file.c
+++ b/fs/file.c
@@ -9,7 +9,7 @@
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <asm/bitops.h>
diff --git a/fs/hpfs/hpfs_fn.h b/fs/hpfs/hpfs_fn.h
index 78341ca16e54..e30e6137e143 100644
--- a/fs/hpfs/hpfs_fn.h
+++ b/fs/hpfs/hpfs_fn.h
@@ -12,7 +12,7 @@
#include <linux/fs.h>
#include <linux/hpfs_fs.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/locks.h>
diff --git a/fs/inode.c b/fs/inode.c
index ed8b98018247..822e5187a52c 100644
--- a/fs/inode.c
+++ b/fs/inode.c
@@ -725,7 +725,7 @@ static struct inode * get_new_inode(struct super_block *sb, unsigned long ino, s
static inline unsigned long hash(struct super_block *sb, unsigned long i_ino)
{
unsigned long tmp = i_ino + ((unsigned long) sb / L1_CACHE_BYTES);
- tmp = tmp + (tmp >> I_HASHBITS) + (tmp >> I_HASHBITS*2);
+ tmp = tmp + (tmp >> I_HASHBITS);
return tmp & I_HASHMASK;
}
diff --git a/fs/iobuf.c b/fs/iobuf.c
index 4be2258702d3..88507441d407 100644
--- a/fs/iobuf.c
+++ b/fs/iobuf.c
@@ -7,7 +7,7 @@
*/
#include <linux/iobuf.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/slab.h>
static kmem_cache_t *kiobuf_cachep;
diff --git a/fs/ioctl.c b/fs/ioctl.c
index 21af77a3a168..f46bdb1edb0f 100644
--- a/fs/ioctl.c
+++ b/fs/ioctl.c
@@ -9,6 +9,7 @@
#include <linux/file.h>
#include <asm/uaccess.h>
+#include <asm/ioctls.h>
static int file_ioctl(struct file *filp,unsigned int cmd,unsigned long arg)
{
diff --git a/fs/isofs/dir.c b/fs/isofs/dir.c
index 6f0957dce489..48a358de8417 100644
--- a/fs/isofs/dir.c
+++ b/fs/isofs/dir.c
@@ -17,7 +17,7 @@
#include <linux/stat.h>
#include <linux/string.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/locks.h>
#include <linux/config.h>
diff --git a/fs/isofs/inode.c b/fs/isofs/inode.c
index 757a870701ff..90f511bdadb6 100644
--- a/fs/isofs/inode.c
+++ b/fs/isofs/inode.c
@@ -20,7 +20,7 @@
#include <linux/mm.h>
#include <linux/string.h>
#include <linux/locks.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/cdrom.h>
#include <linux/init.h>
diff --git a/fs/isofs/joliet.c b/fs/isofs/joliet.c
index 5b93f458154b..2aac3a8bc3ea 100644
--- a/fs/isofs/joliet.c
+++ b/fs/isofs/joliet.c
@@ -8,7 +8,7 @@
#include <linux/string.h>
#include <linux/nls.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/iso_fs.h>
/*
diff --git a/fs/isofs/namei.c b/fs/isofs/namei.c
index 3f44d90335fa..87fe121f8bbc 100644
--- a/fs/isofs/namei.c
+++ b/fs/isofs/namei.c
@@ -12,7 +12,7 @@
#include <linux/string.h>
#include <linux/stat.h>
#include <linux/fcntl.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#include <linux/config.h> /* Joliet? */
diff --git a/fs/isofs/rock.c b/fs/isofs/rock.c
index e20f3ad61c75..c351f7af081c 100644
--- a/fs/isofs/rock.c
+++ b/fs/isofs/rock.c
@@ -11,7 +11,7 @@
#include <linux/iso_fs.h>
#include <linux/string.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#include <linux/smp_lock.h>
diff --git a/fs/jffs/inode-v23.c b/fs/jffs/inode-v23.c
index 94fd0797d148..d044ef3a377a 100644
--- a/fs/jffs/inode-v23.c
+++ b/fs/jffs/inode-v23.c
@@ -39,7 +39,7 @@
#include <linux/init.h>
#include <linux/types.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/jffs.h>
#include <linux/fs.h>
#include <linux/locks.h>
diff --git a/fs/jffs/intrep.c b/fs/jffs/intrep.c
index 09e88d7bad77..3af256303517 100644
--- a/fs/jffs/intrep.c
+++ b/fs/jffs/intrep.c
@@ -58,7 +58,7 @@
#define __NO_VERSION__
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/jffs.h>
#include <linux/fs.h>
#include <linux/stat.h>
diff --git a/fs/jffs/jffs_fm.c b/fs/jffs/jffs_fm.c
index b9bbeb4a9386..7ae964ab828e 100644
--- a/fs/jffs/jffs_fm.c
+++ b/fs/jffs/jffs_fm.c
@@ -17,7 +17,7 @@
*
*/
#define __NO_VERSION__
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/blkdev.h>
#include <linux/jffs.h>
#include "jffs_fm.h"
diff --git a/fs/lockd/host.c b/fs/lockd/host.c
index f14c9fcdfd05..02be5d927532 100644
--- a/fs/lockd/host.c
+++ b/fs/lockd/host.c
@@ -10,7 +10,7 @@
#include <linux/types.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/in.h>
#include <linux/sunrpc/clnt.h>
#include <linux/sunrpc/svc.h>
diff --git a/fs/lockd/svc.c b/fs/lockd/svc.c
index 924741f9e96b..02e7115fe19b 100644
--- a/fs/lockd/svc.c
+++ b/fs/lockd/svc.c
@@ -22,7 +22,7 @@
#include <linux/uio.h>
#include <linux/version.h>
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
diff --git a/fs/lockd/svc4proc.c b/fs/lockd/svc4proc.c
index a1e30454eed2..bb72c629ed5b 100644
--- a/fs/lockd/svc4proc.c
+++ b/fs/lockd/svc4proc.c
@@ -9,7 +9,7 @@
#include <linux/types.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/in.h>
#include <linux/sunrpc/svc.h>
#include <linux/sunrpc/clnt.h>
diff --git a/fs/lockd/svcproc.c b/fs/lockd/svcproc.c
index b0cbd4a5097d..5002972ec0f6 100644
--- a/fs/lockd/svcproc.c
+++ b/fs/lockd/svcproc.c
@@ -10,7 +10,7 @@
#include <linux/config.h>
#include <linux/types.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/in.h>
#include <linux/sunrpc/svc.h>
#include <linux/sunrpc/clnt.h>
diff --git a/fs/lockd/svcshare.c b/fs/lockd/svcshare.c
index ab06a5d31c52..73fbb1ba414b 100644
--- a/fs/lockd/svcshare.c
+++ b/fs/lockd/svcshare.c
@@ -9,7 +9,7 @@
#include <linux/sched.h>
#include <linux/unistd.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sunrpc/clnt.h>
#include <linux/sunrpc/svc.h>
diff --git a/fs/locks.c b/fs/locks.c
index e65b593946c6..7eed30fec934 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -115,7 +115,7 @@
* Stephen Rothwell <sfr@linuxcare.com>, June, 2000.
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/file.h>
#include <linux/smp_lock.h>
#include <linux/init.h>
diff --git a/fs/minix/inode.c b/fs/minix/inode.c
index 7ff0b7bd9ee7..d30699826368 100644
--- a/fs/minix/inode.c
+++ b/fs/minix/inode.c
@@ -14,7 +14,7 @@
#include <linux/sched.h>
#include <linux/kernel.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/stat.h>
#include <linux/locks.h>
diff --git a/fs/ncpfs/dir.c b/fs/ncpfs/dir.c
index c16d93614d55..92d0aaba15e2 100644
--- a/fs/ncpfs/dir.c
+++ b/fs/ncpfs/dir.c
@@ -15,7 +15,7 @@
#include <linux/errno.h>
#include <linux/stat.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/mm.h>
#include <asm/uaccess.h>
diff --git a/fs/ncpfs/file.c b/fs/ncpfs/file.c
index ac4de2b832b3..3bb051f28510 100644
--- a/fs/ncpfs/file.c
+++ b/fs/ncpfs/file.c
@@ -16,7 +16,7 @@
#include <linux/stat.h>
#include <linux/mm.h>
#include <linux/locks.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/ncp_fs.h>
diff --git a/fs/ncpfs/inode.c b/fs/ncpfs/inode.c
index badfc7817430..6cb6e863f2e1 100644
--- a/fs/ncpfs/inode.c
+++ b/fs/ncpfs/inode.c
@@ -24,7 +24,7 @@
#include <linux/locks.h>
#include <linux/file.h>
#include <linux/fcntl.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/vmalloc.h>
#include <linux/init.h>
diff --git a/fs/ncpfs/mmap.c b/fs/ncpfs/mmap.c
index 9261eb453ca8..50f52119de7c 100644
--- a/fs/ncpfs/mmap.c
+++ b/fs/ncpfs/mmap.c
@@ -14,7 +14,7 @@
#include <linux/errno.h>
#include <linux/mman.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fcntl.h>
#include <linux/ncp_fs.h>
diff --git a/fs/ncpfs/ncplib_kernel.h b/fs/ncpfs/ncplib_kernel.h
index 162c89b4b4f4..43c1306ac903 100644
--- a/fs/ncpfs/ncplib_kernel.h
+++ b/fs/ncpfs/ncplib_kernel.h
@@ -17,7 +17,7 @@
#include <linux/fs.h>
#include <linux/types.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/fcntl.h>
#include <linux/pagemap.h>
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 564a47b321eb..c3a3a913e02f 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -23,7 +23,7 @@
#include <linux/fcntl.h>
#include <linux/string.h>
#include <linux/kernel.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/mm.h>
#include <linux/sunrpc/clnt.h>
#include <linux/nfs_fs.h>
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index 2b3f22777b0f..6f9b324e01cf 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -24,7 +24,7 @@
#include <linux/nfs_fs.h>
#include <linux/nfs_mount.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#include <linux/lockd/bind.h>
#include <linux/smp_lock.h>
diff --git a/fs/nfs/flushd.c b/fs/nfs/flushd.c
index 502b490b8d78..601425cffba9 100644
--- a/fs/nfs/flushd.c
+++ b/fs/nfs/flushd.c
@@ -24,7 +24,7 @@
#include <linux/config.h>
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#include <linux/file.h>
diff --git a/fs/nfs/nfs2xdr.c b/fs/nfs/nfs2xdr.c
index 7fef7da99b81..c24021a6d81a 100644
--- a/fs/nfs/nfs2xdr.c
+++ b/fs/nfs/nfs2xdr.c
@@ -12,7 +12,7 @@
#include <linux/param.h>
#include <linux/sched.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/utsname.h>
#include <linux/errno.h>
#include <linux/string.h>
diff --git a/fs/nfs/nfs3xdr.c b/fs/nfs/nfs3xdr.c
index f6260a552059..ab1110227c55 100644
--- a/fs/nfs/nfs3xdr.c
+++ b/fs/nfs/nfs3xdr.c
@@ -9,7 +9,7 @@
#include <linux/param.h>
#include <linux/sched.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/utsname.h>
#include <linux/errno.h>
#include <linux/string.h>
diff --git a/fs/nfs/proc.c b/fs/nfs/proc.c
index 17bb39f36ca8..e19009ea7e30 100644
--- a/fs/nfs/proc.c
+++ b/fs/nfs/proc.c
@@ -29,7 +29,7 @@
#include <linux/types.h>
#include <linux/param.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/utsname.h>
diff --git a/fs/nfs/read.c b/fs/nfs/read.c
index 211d3a3db0a3..beb7bd8ddda9 100644
--- a/fs/nfs/read.c
+++ b/fs/nfs/read.c
@@ -22,7 +22,7 @@
#include <linux/fcntl.h>
#include <linux/stat.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#include <linux/sunrpc/clnt.h>
#include <linux/nfs_fs.h>
diff --git a/fs/nfs/symlink.c b/fs/nfs/symlink.c
index eba7a859a750..4350cf8e73e8 100644
--- a/fs/nfs/symlink.c
+++ b/fs/nfs/symlink.c
@@ -20,7 +20,7 @@
#include <linux/pagemap.h>
#include <linux/stat.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/smp_lock.h>
diff --git a/fs/nfs/unlink.c b/fs/nfs/unlink.c
index f4abfe7b3796..51150971478c 100644
--- a/fs/nfs/unlink.c
+++ b/fs/nfs/unlink.c
@@ -6,7 +6,7 @@
* NOTE: we rely on holding the BKL for list manipulation protection.
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/dcache.h>
#include <linux/sunrpc/sched.h>
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 8b9a28556905..ac7fe27695c9 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -48,7 +48,7 @@
#include <linux/config.h>
#include <linux/types.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/swap.h>
#include <linux/pagemap.h>
#include <linux/file.h>
diff --git a/fs/nfsd/export.c b/fs/nfsd/export.c
index 2beed5cf91b3..3db60bcc2d8a 100644
--- a/fs/nfsd/export.c
+++ b/fs/nfsd/export.c
@@ -15,7 +15,7 @@
*/
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/in.h>
diff --git a/fs/nfsd/nfs3proc.c b/fs/nfsd/nfs3proc.c
index a513bfbe052e..8051b15f8c90 100644
--- a/fs/nfsd/nfs3proc.c
+++ b/fs/nfsd/nfs3proc.c
@@ -18,7 +18,7 @@
#include <linux/in.h>
#include <linux/version.h>
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/major.h>
#include <linux/sunrpc/svc.h>
diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
index 8a061ebcbed4..b13a8a3a725d 100644
--- a/fs/nfsd/nfscache.c
+++ b/fs/nfsd/nfscache.c
@@ -12,7 +12,7 @@
#include <linux/kernel.h>
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/string.h>
#include <linux/sunrpc/svc.h>
diff --git a/fs/nfsd/nfsctl.c b/fs/nfsd/nfsctl.c
index 7a80fe990e01..7641c5b5252c 100644
--- a/fs/nfsd/nfsctl.c
+++ b/fs/nfsd/nfsctl.c
@@ -18,7 +18,7 @@
#include <linux/net.h>
#include <linux/in.h>
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/proc_fs.h>
#include <linux/nfs.h>
diff --git a/fs/nfsd/nfsfh.c b/fs/nfsd/nfsfh.c
index 78c729c0941e..6e2c98a557a4 100644
--- a/fs/nfsd/nfsfh.c
+++ b/fs/nfsd/nfsfh.c
@@ -9,7 +9,7 @@
*/
#include <linux/sched.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fs.h>
#include <linux/unistd.h>
#include <linux/string.h>
@@ -454,6 +454,7 @@ find_fh_dentry(struct super_block *sb, ino_t ino, int generation, ino_t dirino,
if (tmp != dentry) {
/* we lost a race, try again
*/
+ dput(pdentry);
dput(tmp);
dput(dentry);
dput(result); /* this will discard the whole free path, so we can up the semaphore */
diff --git a/fs/nfsd/nfsproc.c b/fs/nfsd/nfsproc.c
index b5057d57b5f4..303792b58536 100644
--- a/fs/nfsd/nfsproc.c
+++ b/fs/nfsd/nfsproc.c
@@ -18,7 +18,7 @@
#include <linux/in.h>
#include <linux/version.h>
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sunrpc/svc.h>
#include <linux/nfsd/nfsd.h>
@@ -252,8 +252,19 @@ nfsd_proc_create(struct svc_rqst *rqstp, struct nfsd_createargs *argp,
if (attr->ia_valid & ATTR_MODE) {
type = attr->ia_mode & S_IFMT;
mode = attr->ia_mode & ~S_IFMT;
- if (!type) /* HP weirdness */
- type = S_IFREG;
+ if (!type) {
+ /* no type, so if target exists, assume same as that,
+ * else assume a file */
+ if (inode) {
+ type = inode->i_mode & S_IFMT;
+ if (type == S_IFCHR || type == S_IFBLK) {
+ /* reserve rdev for later checking */
+ attr->ia_size = inode->i_rdev;
+ attr->ia_valid |= ATTR_SIZE;
+ }
+ } else
+ type = S_IFREG;
+ }
} else if (inode) {
type = inode->i_mode & S_IFMT;
mode = inode->i_mode & ~S_IFMT;
diff --git a/fs/nfsd/nfssvc.c b/fs/nfsd/nfssvc.c
index a4a642c447dc..0537c06d7af6 100644
--- a/fs/nfsd/nfssvc.c
+++ b/fs/nfsd/nfssvc.c
@@ -19,7 +19,7 @@
#include <linux/uio.h>
#include <linux/version.h>
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp.h>
#include <linux/smp_lock.h>
diff --git a/fs/nfsd/nfsxdr.c b/fs/nfsd/nfsxdr.c
index fcbddc5ed776..7bcc37c413f3 100644
--- a/fs/nfsd/nfsxdr.c
+++ b/fs/nfsd/nfsxdr.c
@@ -26,7 +26,7 @@
* Mapping of S_IF* types to NFS file types
*/
static u32 nfs_ftypes[] = {
- NFNON, NFFIFO, NFCHR, NFBAD,
+ NFNON, NFCHR, NFCHR, NFBAD,
NFDIR, NFBAD, NFBLK, NFBAD,
NFREG, NFBAD, NFLNK, NFBAD,
NFSOCK, NFBAD, NFLNK, NFBAD,
@@ -136,20 +136,25 @@ decode_sattr(u32 *p, struct iattr *iap)
static inline u32 *
encode_fattr(struct svc_rqst *rqstp, u32 *p, struct inode *inode)
{
+ int type = (inode->i_mode & S_IFMT);
if (!inode)
return 0;
- *p++ = htonl(nfs_ftypes[(inode->i_mode & S_IFMT) >> 12]);
+ *p++ = htonl(nfs_ftypes[type >> 12]);
*p++ = htonl((u32) inode->i_mode);
*p++ = htonl((u32) inode->i_nlink);
*p++ = htonl((u32) nfsd_ruid(rqstp, inode->i_uid));
*p++ = htonl((u32) nfsd_rgid(rqstp, inode->i_gid));
- if (S_ISLNK(inode->i_mode) && inode->i_size > NFS_MAXPATHLEN) {
+
+ if (S_ISLNK(type) && inode->i_size > NFS_MAXPATHLEN) {
*p++ = htonl(NFS_MAXPATHLEN);
} else {
*p++ = htonl((u32) inode->i_size);
}
*p++ = htonl((u32) inode->i_blksize);
- *p++ = htonl((u32) inode->i_rdev);
+ if (S_ISCHR(type) || S_ISBLK(type))
+ *p++ = htonl((u32) inode->i_rdev);
+ else
+ *p++ = htonl(0xffffffff);
*p++ = htonl((u32) inode->i_blocks);
*p++ = htonl((u32) inode->i_dev);
*p++ = htonl((u32) inode->i_ino);
diff --git a/fs/nfsd/vfs.c b/fs/nfsd/vfs.c
index bd01b57f5c0c..43fc14a4fcbf 100644
--- a/fs/nfsd/vfs.c
+++ b/fs/nfsd/vfs.c
@@ -29,7 +29,7 @@
#include <linux/fcntl.h>
#include <linux/net.h>
#include <linux/unistd.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/in.h>
#define __NO_VERSION__
#include <linux/module.h>
diff --git a/fs/nls/nls_base.c b/fs/nls/nls_base.c
index e98d8490c6f0..1db7ffd824b3 100644
--- a/fs/nls/nls_base.c
+++ b/fs/nls/nls_base.c
@@ -13,7 +13,7 @@
#include <linux/string.h>
#include <linux/config.h>
#include <linux/nls.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/errno.h>
#ifdef CONFIG_KMOD
#include <linux/kmod.h>
diff --git a/fs/open.c b/fs/open.c
index 309aa0667994..c6b8f7b89c58 100644
--- a/fs/open.c
+++ b/fs/open.c
@@ -13,6 +13,7 @@
#include <linux/dnotify.h>
#include <linux/module.h>
#include <linux/slab.h>
+#include <linux/tty.h>
#include <asm/uaccess.h>
diff --git a/fs/openpromfs/inode.c b/fs/openpromfs/inode.c
index e264dd3d3a28..6c8912cb194d 100644
--- a/fs/openpromfs/inode.c
+++ b/fs/openpromfs/inode.c
@@ -12,7 +12,7 @@
#include <linux/openprom_fs.h>
#include <linux/locks.h>
#include <linux/init.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <asm/openprom.h>
diff --git a/fs/pipe.c b/fs/pipe.c
index c7f27a520a2f..94aa78853268 100644
--- a/fs/pipe.c
+++ b/fs/pipe.c
@@ -7,11 +7,12 @@
#include <linux/mm.h>
#include <linux/file.h>
#include <linux/poll.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/module.h>
#include <linux/init.h>
#include <asm/uaccess.h>
+#include <asm/ioctls.h>
/*
* We use a start+len construction, which provides full use of the
diff --git a/fs/qnx4/inode.c b/fs/qnx4/inode.c
index c40f488e5704..490c3d047ed0 100644
--- a/fs/qnx4/inode.c
+++ b/fs/qnx4/inode.c
@@ -17,7 +17,7 @@
#include <linux/types.h>
#include <linux/string.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/qnx4_fs.h>
#include <linux/fs.h>
#include <linux/locks.h>
diff --git a/fs/qnx4/truncate.c b/fs/qnx4/truncate.c
index a25bf1daff7d..9dad91a173ad 100644
--- a/fs/qnx4/truncate.c
+++ b/fs/qnx4/truncate.c
@@ -13,7 +13,7 @@
#include <linux/config.h>
#include <linux/types.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/qnx4_fs.h>
#include <linux/fs.h>
#include <linux/locks.h>
diff --git a/fs/read_write.c b/fs/read_write.c
index 00b0daf7e4b2..2d264640c901 100644
--- a/fs/read_write.c
+++ b/fs/read_write.c
@@ -4,7 +4,7 @@
* Copyright (C) 1991, 1992 Linus Torvalds
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/stat.h>
#include <linux/fcntl.h>
#include <linux/file.h>
diff --git a/fs/romfs/inode.c b/fs/romfs/inode.c
index 76c811852d98..7edadf2aca24 100644
--- a/fs/romfs/inode.c
+++ b/fs/romfs/inode.c
@@ -67,7 +67,7 @@
#include <linux/module.h>
#include <linux/types.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/romfs_fs.h>
#include <linux/fs.h>
#include <linux/locks.h>
diff --git a/fs/select.c b/fs/select.c
index 975013e7f809..cf7459d3edfd 100644
--- a/fs/select.c
+++ b/fs/select.c
@@ -14,7 +14,7 @@
* of fds to overcome nfds < 16390 descriptors limit (Tigran Aivazian).
*/
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/smp_lock.h>
#include <linux/poll.h>
#include <linux/file.h>
diff --git a/fs/smbfs/file.c b/fs/smbfs/file.c
index 0a95735fddc3..ac48abc8e9f1 100644
--- a/fs/smbfs/file.c
+++ b/fs/smbfs/file.c
@@ -13,7 +13,7 @@
#include <linux/fcntl.h>
#include <linux/stat.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#include <linux/smp_lock.h>
diff --git a/fs/smbfs/inode.c b/fs/smbfs/inode.c
index e502fb60b0e6..ac5f498088de 100644
--- a/fs/smbfs/inode.c
+++ b/fs/smbfs/inode.c
@@ -16,7 +16,7 @@
#include <linux/stat.h>
#include <linux/errno.h>
#include <linux/locks.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/init.h>
#include <linux/file.h>
#include <linux/dcache.h>
diff --git a/fs/smbfs/proc.c b/fs/smbfs/proc.c
index f0444f97d7d4..3f21086fc73e 100644
--- a/fs/smbfs/proc.c
+++ b/fs/smbfs/proc.c
@@ -9,7 +9,7 @@
#include <linux/types.h>
#include <linux/errno.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/fs.h>
#include <linux/file.h>
#include <linux/stat.h>
diff --git a/fs/super.c b/fs/super.c
index 6262c76754a9..6482259ce233 100644
--- a/fs/super.c
+++ b/fs/super.c
@@ -22,12 +22,13 @@
#include <linux/config.h>
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/locks.h>
#include <linux/smp_lock.h>
#include <linux/devfs_fs_kernel.h>
#include <linux/fd.h>
#include <linux/init.h>
+#include <linux/major.h>
#include <linux/quotaops.h>
#include <linux/acct.h>
diff --git a/fs/udf/dir.c b/fs/udf/dir.c
index 9ec279e47a62..bf6d9988de48 100644
--- a/fs/udf/dir.c
+++ b/fs/udf/dir.c
@@ -38,7 +38,7 @@
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/udf_fs.h>
#endif
diff --git a/fs/udf/namei.c b/fs/udf/namei.c
index 9cc2f3d29760..c37d298fe372 100644
--- a/fs/udf/namei.c
+++ b/fs/udf/namei.c
@@ -31,7 +31,7 @@
#include <linux/string.h>
#include <linux/errno.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/quotaops.h>
#include <linux/udf_fs.h>
diff --git a/fs/udf/partition.c b/fs/udf/partition.c
index dcdf7666c022..a2c34d518b15 100644
--- a/fs/udf/partition.c
+++ b/fs/udf/partition.c
@@ -30,7 +30,7 @@
#include <linux/fs.h>
#include <linux/string.h>
#include <linux/udf_fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
inline Uint32 udf_get_pblock(struct super_block *sb, Uint32 block, Uint16 partition, Uint32 offset)
{
diff --git a/fs/udf/super.c b/fs/udf/super.c
index f5e9b0b446d8..1e089c0b1271 100644
--- a/fs/udf/super.c
+++ b/fs/udf/super.c
@@ -48,7 +48,7 @@
#include <linux/config.h>
#include <linux/version.h>
#include <linux/blkdev.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/kernel.h>
#include <linux/locks.h>
#include <linux/module.h>
diff --git a/fs/udf/symlink.c b/fs/udf/symlink.c
index be4e80165eb0..caa2b72664f1 100644
--- a/fs/udf/symlink.c
+++ b/fs/udf/symlink.c
@@ -32,7 +32,7 @@
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/stat.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#include <linux/smp_lock.h>
#include "udf_i.h"
diff --git a/fs/ufs/super.c b/fs/ufs/super.c
index 6d83d7c51863..3602915135d3 100644
--- a/fs/ufs/super.c
+++ b/fs/ufs/super.c
@@ -73,7 +73,7 @@
#include <linux/errno.h>
#include <linux/fs.h>
#include <linux/ufs_fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/sched.h>
#include <linux/stat.h>
#include <linux/string.h>
diff --git a/fs/ufs/util.c b/fs/ufs/util.c
index 334e0efdb4ea..54a0ab80f59a 100644
--- a/fs/ufs/util.c
+++ b/fs/ufs/util.c
@@ -7,7 +7,7 @@
*/
#include <linux/string.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/locks.h>
#include "swab.h"
diff --git a/fs/umsdos/dir.c b/fs/umsdos/dir.c
index 2e0b7bb14767..c4f28da7770d 100644
--- a/fs/umsdos/dir.c
+++ b/fs/umsdos/dir.c
@@ -15,7 +15,7 @@
#include <linux/stat.h>
#include <linux/limits.h>
#include <linux/umsdos_fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <linux/pagemap.h>
#define UMSDOS_SPECIAL_DIRFPOS 3
diff --git a/fs/umsdos/namei.c b/fs/umsdos/namei.c
index c29387f3c759..560d3f5cd4e5 100644
--- a/fs/umsdos/namei.c
+++ b/fs/umsdos/namei.c
@@ -20,7 +20,7 @@
#include <linux/string.h>
#include <linux/msdos_fs.h>
#include <linux/umsdos_fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#define UMSDOS_DIR_LOCK
diff --git a/fs/umsdos/rdir.c b/fs/umsdos/rdir.c
index ff208e6ac253..e107a95f5002 100644
--- a/fs/umsdos/rdir.c
+++ b/fs/umsdos/rdir.c
@@ -14,7 +14,7 @@
#include <linux/stat.h>
#include <linux/limits.h>
#include <linux/umsdos_fs.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include <asm/uaccess.h>
diff --git a/fs/vfat/namei.c b/fs/vfat/namei.c
index 35c6529bec11..b8f8d6e1b11f 100644
--- a/fs/vfat/namei.c
+++ b/fs/vfat/namei.c
@@ -24,7 +24,7 @@
#include <linux/ctype.h>
#include <linux/stat.h>
#include <linux/mm.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
#include "../fat/msbuffer.h"