Re: [KJ] kmalloc to kzalloc patches for drivers/block [sane version]

From: Paulo Marques
Date: Fri Sep 22 2006 - 07:29:19 EST


Jiri Slaby wrote:
Om Narasimhan wrote:
Thanks for the comments.
>
> Signed off by Om Narasimhan <om.turyx@xxxxxxxxx>

This is not the canonical format, per SubmittingPatches. It should be:

Signed-off-by: Random J Developer <random@xxxxxxxxxxxxxxxxxxxxx>
OK. I would take care of it.

> drivers/block/cciss.c | 4 +--
> drivers/block/cpqarray.c | 72 +++++++++++++++-------------------------------
> drivers/block/loop.c | 4 +--
> 3 files changed, 25 insertions(+), 55 deletions(-)

Your diffstat should have indicated to you that this should be split up
better. Please (re-)read SubmittingPatches. *One* logical change per
patch, most importantly.
OK. I would resubmit.
>
> diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c
> index 2cd3391..a800a69 100644
> --- a/drivers/block/cciss.c
> +++ b/drivers/block/cciss.c
> @@ -900,7 +900,7 @@ #if 0 /* 'buf_size' member is 16-bits
> return -EINVAL;
> #endif
> if (iocommand.buf_size > 0) {
> - buff = kmalloc(iocommand.buf_size, GFP_KERNEL);
> + buff = kzalloc(iocommand.buf_size, GFP_KERNEL);
> if (buff == NULL)
> return -EFAULT;
> }
> @@ -911,8 +911,6 @@ #endif
> kfree(buff);
> return -EFAULT;
> }
> - } else {
> - memset(buff, 0, iocommand.buf_size);
> }
> if ((c = cmd_alloc(host, 0)) == NULL) {
> kfree(buff);

This changes performance potentially, no? The memset before was
conditional upon (iocommand.Request.Type.Direction == XFER_WRITE) and
now the memory will always be zero'd.
Yes, but not the functionality.
if (iocommand.buf_size > 0), code allocates using kmalloc. if
direction is XFER_WRITE, it does a copy_from_user(), and free()s the
allocated buffer, not really caring what data came in from userspace.

You really misread that code. It frees the buffer and returns -EFAULT if the copy_from_user _failed_. This is standard procedure and that code doesn't need to be changed to kzalloc.

Please only do kmalloc to k[zc]alloc changes that are really trivial. There is no point in risking inserting new bugs (or performance regressions) for some micro-space-optimization such as this.

--
Paulo Marques - www.grupopie.com

"The face of a child can say it all, especially the
mouth part of the face."
-
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/