* [PATCH] memory-hotplug: add 0x prefix to HEX block_size_bytes
@ 2010-01-14 11:59 Wu Fengguang
2010-01-14 12:04 ` [PATCH] sysdev: fix prototype for memory_sysdev_class show/store functions Wu Fengguang
2010-01-14 23:29 ` [PATCH] memory-hotplug: add 0x prefix to HEX block_size_bytes Andrew Morton
0 siblings, 2 replies; 8+ messages in thread
From: Wu Fengguang @ 2010-01-14 11:59 UTC (permalink / raw)
To: Andrew Morton
Cc: Andi Kleen, KAMEZAWA Hiroyuki, Zheng, Shaohui,
Linux Memory Management List
CC: Andi Kleen <andi@firstfloor.org>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
drivers/base/memory.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- linux-mm.orig/drivers/base/memory.c 2010-01-14 19:55:40.000000000 +0800
+++ linux-mm/drivers/base/memory.c 2010-01-14 19:55:47.000000000 +0800
@@ -311,7 +311,7 @@ static SYSDEV_ATTR(removable, 0444, show
static ssize_t
print_block_size(struct class *class, char *buf)
{
- return sprintf(buf, "%lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE);
+ return sprintf(buf, "%#lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE);
}
static CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL);
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH] sysdev: fix prototype for memory_sysdev_class show/store functions
2010-01-14 11:59 [PATCH] memory-hotplug: add 0x prefix to HEX block_size_bytes Wu Fengguang
@ 2010-01-14 12:04 ` Wu Fengguang
2010-01-14 12:32 ` Andi Kleen
2010-01-14 23:29 ` [PATCH] memory-hotplug: add 0x prefix to HEX block_size_bytes Andrew Morton
1 sibling, 1 reply; 8+ messages in thread
From: Wu Fengguang @ 2010-01-14 12:04 UTC (permalink / raw)
To: Andrew Morton
Cc: Andi Kleen, KAMEZAWA Hiroyuki, Zheng, Shaohui,
Linux Memory Management List
The function prototype mismatches in call stack:
[<ffffffff81494268>] print_block_size+0x58/0x60
[<ffffffff81487e3f>] sysdev_class_show+0x1f/0x30
[<ffffffff811d629b>] sysfs_read_file+0xcb/0x1f0
[<ffffffff81176328>] vfs_read+0xc8/0x180
Due to prototype mismatch, print_block_size() will sprintf() into
*attribute instead of *buf, hence user space will read the initial
zeros from *buf:
$ hexdump /sys/devices/system/memory/block_size_bytes
0000000 0000 0000 0000 0000
0000008
After patch:
cat /sys/devices/system/memory/block_size_bytes
0x8000000
This complements commits c29af9636 and 4a0b2b4dbe.
CC: Andi Kleen <andi@firstfloor.org>
CC: Greg Kroah-Hartman <gregkh@suse.de>
CC: "Zheng, Shaohui" <shaohui.zheng@intel.com>
Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
---
drivers/base/memory.c | 32 ++++++++++++++++++++------------
1 file changed, 20 insertions(+), 12 deletions(-)
--- linux-mm.orig/drivers/base/memory.c 2010-01-14 20:03:00.000000000 +0800
+++ linux-mm/drivers/base/memory.c 2010-01-14 20:03:01.000000000 +0800
@@ -309,17 +309,19 @@ static SYSDEV_ATTR(removable, 0444, show
* Block size attribute stuff
*/
static ssize_t
-print_block_size(struct class *class, char *buf)
+print_block_size(struct sysdev_class *class,
+ struct sysdev_class_attribute *class_attr,
+ char *buf)
{
return sprintf(buf, "%#lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE);
}
-static CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL);
+static SYSDEV_CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL);
static int block_size_init(void)
{
return sysfs_create_file(&memory_sysdev_class.kset.kobj,
- &class_attr_block_size_bytes.attr);
+ &attr_block_size_bytes.attr);
}
/*
@@ -330,7 +332,9 @@ static int block_size_init(void)
*/
#ifdef CONFIG_ARCH_MEMORY_PROBE
static ssize_t
-memory_probe_store(struct class *class, const char *buf, size_t count)
+memory_probe_store(struct sysdev_class *class,
+ struct sysdev_class_attribute *class_attr,
+ const char *buf, size_t count)
{
u64 phys_addr;
int nid;
@@ -346,12 +350,12 @@ memory_probe_store(struct class *class,
return count;
}
-static CLASS_ATTR(probe, S_IWUSR, NULL, memory_probe_store);
+static SYSDEV_CLASS_ATTR(probe, S_IWUSR, NULL, memory_probe_store);
static int memory_probe_init(void)
{
return sysfs_create_file(&memory_sysdev_class.kset.kobj,
- &class_attr_probe.attr);
+ &attr_probe.attr);
}
#else
static inline int memory_probe_init(void)
@@ -367,7 +371,9 @@ static inline int memory_probe_init(void
/* Soft offline a page */
static ssize_t
-store_soft_offline_page(struct class *class, const char *buf, size_t count)
+store_soft_offline_page(struct sysdev_class *class,
+ struct sysdev_class_attribute *class_attr,
+ const char *buf, size_t count)
{
int ret;
u64 pfn;
@@ -384,7 +390,9 @@ store_soft_offline_page(struct class *cl
/* Forcibly offline a page, including killing processes. */
static ssize_t
-store_hard_offline_page(struct class *class, const char *buf, size_t count)
+store_hard_offline_page(struct sysdev_class *class,
+ struct sysdev_class_attribute *class_attr,
+ const char *buf, size_t count)
{
int ret;
u64 pfn;
@@ -397,18 +405,18 @@ store_hard_offline_page(struct class *cl
return ret ? ret : count;
}
-static CLASS_ATTR(soft_offline_page, 0644, NULL, store_soft_offline_page);
-static CLASS_ATTR(hard_offline_page, 0644, NULL, store_hard_offline_page);
+static SYSDEV_CLASS_ATTR(soft_offline_page, 0644, NULL, store_soft_offline_page);
+static SYSDEV_CLASS_ATTR(hard_offline_page, 0644, NULL, store_hard_offline_page);
static __init int memory_fail_init(void)
{
int err;
err = sysfs_create_file(&memory_sysdev_class.kset.kobj,
- &class_attr_soft_offline_page.attr);
+ &attr_soft_offline_page.attr);
if (!err)
err = sysfs_create_file(&memory_sysdev_class.kset.kobj,
- &class_attr_hard_offline_page.attr);
+ &attr_hard_offline_page.attr);
return err;
}
#else
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] sysdev: fix prototype for memory_sysdev_class show/store functions
2010-01-14 12:04 ` [PATCH] sysdev: fix prototype for memory_sysdev_class show/store functions Wu Fengguang
@ 2010-01-14 12:32 ` Andi Kleen
2010-01-18 13:07 ` Wu Fengguang
0 siblings, 1 reply; 8+ messages in thread
From: Andi Kleen @ 2010-01-14 12:32 UTC (permalink / raw)
To: Wu Fengguang
Cc: Andrew Morton, Andi Kleen, KAMEZAWA Hiroyuki, Zheng, Shaohui,
Linux Memory Management List
On Thu, Jan 14, 2010 at 08:04:19PM +0800, Wu Fengguang wrote:
> The function prototype mismatches in call stack:
>
> [<ffffffff81494268>] print_block_size+0x58/0x60
> [<ffffffff81487e3f>] sysdev_class_show+0x1f/0x30
> [<ffffffff811d629b>] sysfs_read_file+0xcb/0x1f0
> [<ffffffff81176328>] vfs_read+0xc8/0x180
>
> Due to prototype mismatch, print_block_size() will sprintf() into
> *attribute instead of *buf, hence user space will read the initial
> zeros from *buf:
> $ hexdump /sys/devices/system/memory/block_size_bytes
> 0000000 0000 0000 0000 0000
> 0000008
>
> After patch:
> cat /sys/devices/system/memory/block_size_bytes
> 0x8000000
>
> This complements commits c29af9636 and 4a0b2b4dbe.
Hmm, this was already fixed in my patch in the original series
SYSFS: Fix type of sysdev class attribute in memory driver
This attribute is really a sysdev_class attribute, not a plain class attribute.
They are identical in layout currently, but this might not always be
the case.
And with the final patches they were identical in layout again anyways.
I don't know why Greg didn't merge that one. Greg, did you forget
some patches?
For the record the full series was:
SYSFS: Pass attribute in sysdev_class attributes show/store
SYSFS: Convert node driver class attributes to be data driven
SYSDEV: Convert cpu driver sysdev class attributes
SYSFS: Add sysfs_add/remove_files utility functions
SYSFS: Add attribute array to sysdev classes
SYSDEV: Convert node driver
SYSDEV: Use sysdev_class attribute arrays in node driver
SYSFS: Add sysdev_create/remove_files
SYSFS: Fix type of sysdev class attribute in memory driver
SYSDEV: Add attribute argument to class_attribute show/store
SYSFS: Add class_attr_string for simple read-only string
SYSFS: Convert some drivers to CLASS_ATTR_STRING
-Andi
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] memory-hotplug: add 0x prefix to HEX block_size_bytes
2010-01-14 11:59 [PATCH] memory-hotplug: add 0x prefix to HEX block_size_bytes Wu Fengguang
2010-01-14 12:04 ` [PATCH] sysdev: fix prototype for memory_sysdev_class show/store functions Wu Fengguang
@ 2010-01-14 23:29 ` Andrew Morton
2010-01-18 13:44 ` Wu Fengguang
1 sibling, 1 reply; 8+ messages in thread
From: Andrew Morton @ 2010-01-14 23:29 UTC (permalink / raw)
To: Wu Fengguang
Cc: Andi Kleen, KAMEZAWA Hiroyuki, Zheng, Shaohui,
Linux Memory Management List
On Thu, 14 Jan 2010 19:59:56 +0800
Wu Fengguang <fengguang.wu@intel.com> wrote:
> CC: Andi Kleen <andi@firstfloor.org>
> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com>
> ---
> drivers/base/memory.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> --- linux-mm.orig/drivers/base/memory.c 2010-01-14 19:55:40.000000000 +0800
> +++ linux-mm/drivers/base/memory.c 2010-01-14 19:55:47.000000000 +0800
> @@ -311,7 +311,7 @@ static SYSDEV_ATTR(removable, 0444, show
> static ssize_t
> print_block_size(struct class *class, char *buf)
> {
> - return sprintf(buf, "%lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE);
> + return sprintf(buf, "%#lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE);
> }
>
> static CLASS_ATTR(block_size_bytes, 0444, print_block_size, NULL);
crappy changelog!
Why this change? Perhaps showing us an example of the before-and-after
output would help us see what is being fixed, and why.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] sysdev: fix prototype for memory_sysdev_class show/store functions
2010-01-14 12:32 ` Andi Kleen
@ 2010-01-18 13:07 ` Wu Fengguang
2010-01-20 2:23 ` Greg KH
0 siblings, 1 reply; 8+ messages in thread
From: Wu Fengguang @ 2010-01-18 13:07 UTC (permalink / raw)
To: Andi Kleen
Cc: Andrew Morton, KAMEZAWA Hiroyuki, Zheng, Shaohui,
Linux Memory Management List, Greg Kroah-Hartman
> I don't know why Greg didn't merge that one. Greg, did you forget
> some patches?
I guess yes - more than one.
> For the record the full series was:
>
> SYSFS: Pass attribute in sysdev_class attributes show/store
> SYSFS: Convert node driver class attributes to be data driven
> SYSDEV: Convert cpu driver sysdev class attributes
> SYSFS: Add sysfs_add/remove_files utility functions
> SYSFS: Add attribute array to sysdev classes
> SYSDEV: Convert node driver
> SYSDEV: Use sysdev_class attribute arrays in node driver
> SYSFS: Add sysdev_create/remove_files
> SYSFS: Fix type of sysdev class attribute in memory driver
> SYSDEV: Add attribute argument to class_attribute show/store
> SYSFS: Add class_attr_string for simple read-only string
> SYSFS: Convert some drivers to CLASS_ATTR_STRING
Only the first 3 of them reach linux-next-20100114:
commit 86950fd010b72acf3c7d4ae8c1df440fef09c2b5
Author: Andi Kleen <andi@firstfloor.org>
Date: Tue Jan 5 12:48:00 2010 +0100
sysdev: Convert cpu driver sysdev class attributes
commit c314abcfb978695949f9314ea9f1b6eea5dbd225
Author: Andi Kleen <andi@firstfloor.org>
Date: Tue Jan 5 12:47:59 2010 +0100
sysdev: Convert node driver class attributes to be data driven
commit c29af9636774ea95c795b2ddb71e7dc6e50861bf
Author: Andi Kleen <andi@firstfloor.org>
Date: Tue Jan 5 12:47:58 2010 +0100
sysdev: Pass attribute in sysdev_class attributes show/store
Others may need resubmission.
Thanks,
Fengguang
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] memory-hotplug: add 0x prefix to HEX block_size_bytes
2010-01-14 23:29 ` [PATCH] memory-hotplug: add 0x prefix to HEX block_size_bytes Andrew Morton
@ 2010-01-18 13:44 ` Wu Fengguang
2010-01-19 0:38 ` KOSAKI Motohiro
0 siblings, 1 reply; 8+ messages in thread
From: Wu Fengguang @ 2010-01-18 13:44 UTC (permalink / raw)
To: Andrew Morton
Cc: Andi Kleen, KAMEZAWA Hiroyuki, Zheng, Shaohui,
Linux Memory Management List
> > - return sprintf(buf, "%lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE);
> > + return sprintf(buf, "%#lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE);
> crappy changelog!
>
> Why this change? Perhaps showing us an example of the before-and-after
> output would help us see what is being fixed, and why.
Sorry for being late (some SMTP problem).
# cat /sys/devices/system/memory/block_size_bytes
before patch: 8000000
after patch: 0x8000000
This is a good fix because someone is very likely to mistake 8000000
as a decimal number. 0x8000000 looks much better.
Thanks,
Fengguang
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] memory-hotplug: add 0x prefix to HEX block_size_bytes
2010-01-18 13:44 ` Wu Fengguang
@ 2010-01-19 0:38 ` KOSAKI Motohiro
0 siblings, 0 replies; 8+ messages in thread
From: KOSAKI Motohiro @ 2010-01-19 0:38 UTC (permalink / raw)
To: Wu Fengguang
Cc: kosaki.motohiro, Andrew Morton, Andi Kleen, KAMEZAWA Hiroyuki,
Zheng, Shaohui, Linux Memory Management List
> > > - return sprintf(buf, "%lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE);
> > > + return sprintf(buf, "%#lx\n", (unsigned long)PAGES_PER_SECTION * PAGE_SIZE);
>
> > crappy changelog!
> >
> > Why this change? Perhaps showing us an example of the before-and-after
> > output would help us see what is being fixed, and why.
>
> Sorry for being late (some SMTP problem).
>
> # cat /sys/devices/system/memory/block_size_bytes
> before patch: 8000000
> after patch: 0x8000000
>
> This is a good fix because someone is very likely to mistake 8000000
> as a decimal number. 0x8000000 looks much better.
I'm sorry. NAK.
print_block_size() was introduced at 2005. So, we can't assume any
programs don't use it.
Your patch is good, but too late...
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] sysdev: fix prototype for memory_sysdev_class show/store functions
2010-01-18 13:07 ` Wu Fengguang
@ 2010-01-20 2:23 ` Greg KH
0 siblings, 0 replies; 8+ messages in thread
From: Greg KH @ 2010-01-20 2:23 UTC (permalink / raw)
To: Wu Fengguang
Cc: Andi Kleen, Andrew Morton, KAMEZAWA Hiroyuki, Zheng, Shaohui,
Linux Memory Management List
On Mon, Jan 18, 2010 at 09:07:02PM +0800, Wu Fengguang wrote:
> > I don't know why Greg didn't merge that one. Greg, did you forget
> > some patches?
>
> I guess yes - more than one.
They are all now in my tree.
thanks,
greg k-h
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2010-01-20 3:18 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-14 11:59 [PATCH] memory-hotplug: add 0x prefix to HEX block_size_bytes Wu Fengguang
2010-01-14 12:04 ` [PATCH] sysdev: fix prototype for memory_sysdev_class show/store functions Wu Fengguang
2010-01-14 12:32 ` Andi Kleen
2010-01-18 13:07 ` Wu Fengguang
2010-01-20 2:23 ` Greg KH
2010-01-14 23:29 ` [PATCH] memory-hotplug: add 0x prefix to HEX block_size_bytes Andrew Morton
2010-01-18 13:44 ` Wu Fengguang
2010-01-19 0:38 ` KOSAKI Motohiro
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).