* Re: + zram-rework-reset-and-destroy-path-fix.patch added to -mm tree
[not found] <54d155bf.k9GCVwDVqT17beYC%akpm@linux-foundation.org>
@ 2015-02-04 1:07 ` Sergey Senozhatsky
2015-02-04 22:29 ` Andrew Morton
0 siblings, 1 reply; 4+ messages in thread
From: Sergey Senozhatsky @ 2015-02-04 1:07 UTC (permalink / raw)
To: linux-kernel
Cc: akpm, jmarchan, minchan, ngupta, opensource.ganesh,
sergey.senozhatsky, mm-commits
On (02/03/15 15:11), akpm@linux-foundation.org wrote:
> tweak comment
>
Thank you, sir.
Andrew, can you please squash the following patch?
---
>From 22f0be96df55513a3d764ea880d5b3e99669f8f7 Mon Sep 17 00:00:00 2001
From: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
Date: Wed, 4 Feb 2015 09:59:06 +0900
Subject: [PATCH] zram: set default dev_id value to zero in zram_init()
Set dev_id to zero and fix zram_devices allocation error handling
path, can pass uninit dev_id to destroy_devices().
cosmetic:
change destroy_devices() message from pr_debug() to pr_info(), as
proposed by Minchan Kim.
Signed-off-by: Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
---
drivers/block/zram/zram_drv.c | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/drivers/block/zram/zram_drv.c b/drivers/block/zram/zram_drv.c
index 79c5da9..0bb4fa0 100644
--- a/drivers/block/zram/zram_drv.c
+++ b/drivers/block/zram/zram_drv.c
@@ -1138,12 +1138,12 @@ static void destroy_devices(unsigned int nr)
kfree(zram_devices);
unregister_blkdev(zram_major, "zram");
- pr_debug("Destroyed %u device(s)\n", nr);
+ pr_info("Destroyed %u device(s)\n", nr);
}
static int __init zram_init(void)
{
- int ret, dev_id;
+ int ret = -ENOMEM, dev_id = 0;
if (num_devices > max_num_devices) {
pr_warn("Invalid value for num_devices: %u\n",
@@ -1159,10 +1159,8 @@ static int __init zram_init(void)
/* Allocate the device array and initialize each one */
zram_devices = kzalloc(num_devices * sizeof(struct zram), GFP_KERNEL);
- if (!zram_devices) {
- ret = -ENOMEM;
+ if (!zram_devices)
goto out_error;
- }
for (dev_id = 0; dev_id < num_devices; dev_id++) {
ret = create_device(&zram_devices[dev_id], dev_id);
--
2.3.0.rc2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: + zram-rework-reset-and-destroy-path-fix.patch added to -mm tree
2015-02-04 1:07 ` + zram-rework-reset-and-destroy-path-fix.patch added to -mm tree Sergey Senozhatsky
@ 2015-02-04 22:29 ` Andrew Morton
2015-02-05 0:20 ` Sergey Senozhatsky
2015-02-05 0:36 ` Sergey Senozhatsky
0 siblings, 2 replies; 4+ messages in thread
From: Andrew Morton @ 2015-02-04 22:29 UTC (permalink / raw)
To: Sergey Senozhatsky
Cc: linux-kernel, jmarchan, minchan, ngupta, opensource.ganesh,
sergey.senozhatsky, mm-commits
On Wed, 4 Feb 2015 10:07:20 +0900 Sergey Senozhatsky <sergey.senozhatsky.work@gmail.com> wrote:
> Set dev_id to zero and fix zram_devices allocation error handling
> path, can pass uninit dev_id to destroy_devices().
>
> cosmetic:
> change destroy_devices() message from pr_debug() to pr_info(), as
> proposed by Minchan Kim.
>
Seems unnecessarily complicated. What about
--- a/drivers/block/zram/zram_drv.c~zram-rework-reset-and-destroy-path-fix-2-fix
+++ a/drivers/block/zram/zram_drv.c
@@ -1141,7 +1141,8 @@ static void destroy_devices(unsigned int
static int __init zram_init(void)
{
- int ret = -ENOMEM, dev_id = 0;
+ int ret;
+ int dev_id;
if (num_devices > max_num_devices) {
pr_warn("Invalid value for num_devices: %u\n",
@@ -1157,20 +1158,23 @@ static int __init zram_init(void)
/* Allocate the device array and initialize each one */
zram_devices = kzalloc(num_devices * sizeof(struct zram), GFP_KERNEL);
- if (!zram_devices)
- goto out_error;
+ if (!zram_devices) {
+ ret = -ENOMEM;
+ goto out;
+ }
for (dev_id = 0; dev_id < num_devices; dev_id++) {
ret = create_device(&zram_devices[dev_id], dev_id);
if (ret)
- goto out_error;
+ goto out_devices;
}
pr_info("Created %u device(s)\n", num_devices);
return 0;
-out_error:
+out_devices:
destroy_devices(dev_id);
+out:
return ret;
}
which yields
static int __init zram_init(void)
{
int ret;
int dev_id;
if (num_devices > max_num_devices) {
pr_warn("Invalid value for num_devices: %u\n",
num_devices);
return -EINVAL;
}
zram_major = register_blkdev(0, "zram");
if (zram_major <= 0) {
pr_warn("Unable to get major number\n");
return -EBUSY;
}
/* Allocate the device array and initialize each one */
zram_devices = kzalloc(num_devices * sizeof(struct zram), GFP_KERNEL);
if (!zram_devices) {
ret = -ENOMEM;
goto out;
}
for (dev_id = 0; dev_id < num_devices; dev_id++) {
ret = create_device(&zram_devices[dev_id], dev_id);
if (ret)
goto out_devices;
}
pr_info("Created %u device(s)\n", num_devices);
return 0;
out_devices:
destroy_devices(dev_id);
out:
return ret;
}
_
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: + zram-rework-reset-and-destroy-path-fix.patch added to -mm tree
2015-02-04 22:29 ` Andrew Morton
@ 2015-02-05 0:20 ` Sergey Senozhatsky
2015-02-05 0:36 ` Sergey Senozhatsky
1 sibling, 0 replies; 4+ messages in thread
From: Sergey Senozhatsky @ 2015-02-05 0:20 UTC (permalink / raw)
To: Andrew Morton
Cc: Sergey Senozhatsky, linux-kernel, jmarchan, minchan, ngupta,
opensource.ganesh, sergey.senozhatsky, mm-commits
Hello,
sorry for late response
On (02/04/15 14:29), Andrew Morton wrote:
> Seems unnecessarily complicated. What about
>
> --- a/drivers/block/zram/zram_drv.c~zram-rework-reset-and-destroy-path-fix-2-fix
> +++ a/drivers/block/zram/zram_drv.c
> @@ -1141,7 +1141,8 @@ static void destroy_devices(unsigned int
>
> static int __init zram_init(void)
> {
> - int ret = -ENOMEM, dev_id = 0;
> + int ret;
> + int dev_id;
>
> if (num_devices > max_num_devices) {
> pr_warn("Invalid value for num_devices: %u\n",
> @@ -1157,20 +1158,23 @@ static int __init zram_init(void)
>
> /* Allocate the device array and initialize each one */
> zram_devices = kzalloc(num_devices * sizeof(struct zram), GFP_KERNEL);
> - if (!zram_devices)
> - goto out_error;
> + if (!zram_devices) {
> + ret = -ENOMEM;
we need to rollback `zram_major = register_blkdev(0, "zram");'
which is done in destroy_devices().
-ss
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: + zram-rework-reset-and-destroy-path-fix.patch added to -mm tree
2015-02-04 22:29 ` Andrew Morton
2015-02-05 0:20 ` Sergey Senozhatsky
@ 2015-02-05 0:36 ` Sergey Senozhatsky
1 sibling, 0 replies; 4+ messages in thread
From: Sergey Senozhatsky @ 2015-02-05 0:36 UTC (permalink / raw)
To: Andrew Morton
Cc: Sergey Senozhatsky, linux-kernel, jmarchan, minchan, ngupta,
opensource.ganesh, sergey.senozhatsky, mm-commits
On (02/04/15 14:29), Andrew Morton wrote:
> which yields
>
/* not sure if my previous email has been delived, seems there are some
connectivity problems on my side */
we need to unregister_blkdev(), 'out' label does not do it.
how about the following one (looks simple):
> static int __init zram_init(void)
> {
> int ret;
> int dev_id;
>
> if (num_devices > max_num_devices) {
> pr_warn("Invalid value for num_devices: %u\n",
> num_devices);
> return -EINVAL;
> }
>
> zram_major = register_blkdev(0, "zram");
> if (zram_major <= 0) {
> pr_warn("Unable to get major number\n");
> return -EBUSY;
> }
>
> /* Allocate the device array and initialize each one */
> zram_devices = kzalloc(num_devices * sizeof(struct zram), GFP_KERNEL);
> if (!zram_devices) {
- ret = -ENOMEM;
- goto out_error;
+ unregister_blkdev(zram_major, "zram");
+ return -ENOMEM;
> }
>
> for (dev_id = 0; dev_id < num_devices; dev_id++) {
> ret = create_device(&zram_devices[dev_id], dev_id);
> if (ret)
> goto out_devices;
> }
>
> pr_info("Created %u device(s)\n", num_devices);
> return 0;
>
> out_devices:
> destroy_devices(dev_id);
- out:
> return ret;
> }
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-02-05 0:36 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <54d155bf.k9GCVwDVqT17beYC%akpm@linux-foundation.org>
2015-02-04 1:07 ` + zram-rework-reset-and-destroy-path-fix.patch added to -mm tree Sergey Senozhatsky
2015-02-04 22:29 ` Andrew Morton
2015-02-05 0:20 ` Sergey Senozhatsky
2015-02-05 0:36 ` Sergey Senozhatsky
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).