lkml.org 
[lkml]   [2005]   [Jul]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: Realtime Preemption, 2.6.12, Beginners Guide?

> (gdb) ####################################
> (gdb) # c0169503, stack size: 408 bytes #
> (gdb) ####################################
> (gdb) 0xc0169503 is in blkdev_get (fs/block_dev.c:663).

----
this patch reduces the stack footprint of blkdev_get() from 408 bytes to
28 bytes. Build and boot-tested.

Signed-off-by: Ingo Molnar <mingo@elte.hu>

Index: linux/fs/block_dev.c
===================================================================
--- linux.orig/fs/block_dev.c
+++ linux/fs/block_dev.c
@@ -667,14 +667,32 @@ int blkdev_get(struct block_device *bdev
* For now, block device ->open() routine must _not_
* examine anything in 'inode' argument except ->i_rdev.
*/
- struct file fake_file = {};
- struct dentry fake_dentry = {};
- fake_file.f_mode = mode;
- fake_file.f_flags = flags;
- fake_file.f_dentry = &fake_dentry;
- fake_dentry.d_inode = bdev->bd_inode;
-
- return do_open(bdev, &fake_file);
+ struct file *fake_file;
+ struct dentry *fake_dentry;
+ int err = -ENOMEM;
+
+ fake_file = kmalloc(sizeof(*fake_file), GFP_KERNEL);
+ if (!fake_file)
+ goto out;
+ memset(fake_file, 0, sizeof(*fake_file));
+
+ fake_dentry = kmalloc(sizeof(*fake_dentry), GFP_KERNEL);
+ if (!fake_dentry)
+ goto out_free_file;
+ memset(fake_dentry, 0, sizeof(*fake_dentry));
+
+ fake_file->f_mode = mode;
+ fake_file->f_flags = flags;
+ fake_file->f_dentry = fake_dentry;
+ fake_dentry->d_inode = bdev->bd_inode;
+
+ err = do_open(bdev, fake_file);
+
+ kfree(fake_dentry);
+out_free_file:
+ kfree(fake_file);
+out:
+ return err;
}

EXPORT_SYMBOL(blkdev_get);
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
\
 
 \ /
  Last update: 2005-07-09 15:40    [W:0.189 / U:0.284 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site