[patch 1/3] mm: bdi: fix read_ahead_kb_store()

From: Miklos Szeredi
Date: Sat Feb 02 2008 - 18:03:46 EST


From: Miklos Szeredi <mszeredi@xxxxxxx>

This managed to completely evade testing :(

Fix return value to be count or -errno. Also bring the function in
line with the other store functions on this object, which have more
strict input checking.

Also fix bdi_set_max_ratio() to actually return an error, instead of
always zero.

Signed-off-by: Miklos Szeredi <mszeredi@xxxxxxx>
---

Index: linux/mm/backing-dev.c
===================================================================
--- linux.orig/mm/backing-dev.c 2008-02-02 23:21:50.000000000 +0100
+++ linux/mm/backing-dev.c 2008-02-02 23:26:01.000000000 +0100
@@ -16,10 +16,15 @@ static ssize_t read_ahead_kb_store(struc
{
struct backing_dev_info *bdi = dev_get_drvdata(dev);
char *end;
+ unsigned long read_ahead_kb;
+ ssize_t ret = -EINVAL;

- bdi->ra_pages = simple_strtoul(buf, &end, 10) >> (PAGE_SHIFT - 10);
-
- return end - buf;
+ read_ahead_kb = simple_strtoul(buf, &end, 10);
+ if (*buf && (end[0] == '\0' || (end[0] == '\n' && end[1] == '\0'))) {
+ bdi->ra_pages = read_ahead_kb >> (PAGE_SHIFT - 10);
+ ret = count;
+ }
+ return ret;
}

#define K(pages) ((pages) << (PAGE_SHIFT - 10))
Index: linux/mm/page-writeback.c
===================================================================
--- linux.orig/mm/page-writeback.c 2008-02-02 20:51:26.000000000 +0100
+++ linux/mm/page-writeback.c 2008-02-02 23:26:15.000000000 +0100
@@ -288,7 +288,7 @@ int bdi_set_max_ratio(struct backing_dev
}
spin_unlock_irqrestore(&bdi_lock, flags);

- return 0;
+ return ret;
}
EXPORT_SYMBOL(bdi_set_max_ratio);


--
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/