From: "Thiago Galesi" <thiagogalesi@gmail.com>
To: "David Woodhouse" <dwmw2@infradead.org>,
linux-kernel@vger.kernel.org, linux-mtd@lists.infradead.org
Subject: [PATCH] Remove unnecessary kmalloc/kfree calls in mtdchar
Date: Fri, 14 Apr 2006 23:38:29 -0300 [thread overview]
Message-ID: <82ecf08e0604141938w4b29259av797e3115b79042a0@mail.gmail.com> (raw)
This patch removes the use of repeated calls to kmalloc / kfree when
writing / reading from a MTD char device. Not the ideal solution
mentioned in the driver, but nonetheless better.
Signed-off by Thiago Galesi <thiagogalesi@gmail.com>
---
(Please CC me as I'm not subscribed to linux-mtd)
Index: linux-2.6.16.2/drivers/mtd/mtdchar.c
===================================================================
--- linux-2.6.16.2.orig/drivers/mtd/mtdchar.c
+++ linux-2.6.16.2/drivers/mtd/mtdchar.c
@@ -170,15 +170,18 @@ static ssize_t mtd_read(struct file *fil
/* FIXME: Use kiovec in 2.5 to lock down the user's buffers
and pass them directly to the MTD functions */
- while (count) {
- if (count > MAX_KMALLOC_SIZE)
- len = MAX_KMALLOC_SIZE;
- else
- len = count;
- kbuf=kmalloc(len,GFP_KERNEL);
- if (!kbuf)
- return -ENOMEM;
+ if (count > MAX_KMALLOC_SIZE)
+ len = MAX_KMALLOC_SIZE;
+ else
+ len = count;
+
+ kbuf=kmalloc(len,GFP_KERNEL);
+
+ if (!kbuf)
+ return -ENOMEM;
+
+ while (count) {
switch (MTD_MODE(file)) {
case MTD_MODE_OTP_FACT:
@@ -215,9 +218,9 @@ static ssize_t mtd_read(struct file *fil
return ret;
}
- kfree(kbuf);
}
+ kfree(kbuf);
return total_retlen;
} /* mtd_read */
@@ -241,17 +244,18 @@ static ssize_t mtd_write(struct file *fi
if (!count)
return 0;
- while (count) {
- if (count > MAX_KMALLOC_SIZE)
- len = MAX_KMALLOC_SIZE;
- else
- len = count;
+ if (count > MAX_KMALLOC_SIZE)
+ len = MAX_KMALLOC_SIZE;
+ else
+ len = count;
+
+ kbuf=kmalloc(len,GFP_KERNEL);
+ if (!kbuf) {
+ printk("kmalloc is null\n");
+ return -ENOMEM;
+ }
- kbuf=kmalloc(len,GFP_KERNEL);
- if (!kbuf) {
- printk("kmalloc is null\n");
- return -ENOMEM;
- }
+ while (count) {
if (copy_from_user(kbuf, buf, len)) {
kfree(kbuf);
@@ -282,10 +286,9 @@ static ssize_t mtd_write(struct file *fi
kfree(kbuf);
return ret;
}
-
- kfree(kbuf);
}
+ kfree(kbuf);
return total_retlen;
} /* mtd_write */
next reply other threads:[~2006-04-15 2:38 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-15 2:38 Thiago Galesi [this message]
2006-04-17 12:06 ` Josh Boyer
2006-04-17 13:19 ` Thiago Galesi
2006-04-17 14:50 ` David Woodhouse
2006-04-17 15:03 ` Thiago Galesi
[not found] ` <1145290249.13200.17.camel@pmac.infradead.org>
2006-04-17 16:24 ` Thiago Galesi
2006-04-18 2:06 ` Josh Boyer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=82ecf08e0604141938w4b29259av797e3115b79042a0@mail.gmail.com \
--to=thiagogalesi@gmail.com \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®