From: Andrew Morton <akpm@linux-foundation.org>
To: Evgeniy Polyakov <zbr@ioremap.net>
Cc: linux-kernel@vger.kernel.org
Subject: Re: [w1] Allow master IO commands.
Date: Wed, 17 Dec 2008 15:14:18 -0800 [thread overview]
Message-ID: <20081217151418.f17cee7c.akpm@linux-foundation.org> (raw)
In-Reply-To: <20081217223352.GA28283@ioremap.net>
On Thu, 18 Dec 2008 01:33:52 +0300
Evgeniy Polyakov <zbr@ioremap.net> wrote:
> Hi Andrew.
>
> On Wed, Dec 17, 2008 at 02:22:41PM -0800, Andrew Morton (akpm@linux-foundation.org) wrote:
> > > +static int w1_process_command_master(struct w1_master *dev, struct cn_msg *req_msg,
> > > + struct w1_netlink_msg *req_hdr, struct w1_netlink_cmd *req_cmd)
> > > +{
> > > + int err = -EINVAL;
> > > + struct cn_msg *msg;
> > > + struct w1_netlink_msg *hdr;
> > > + struct w1_netlink_cmd *cmd;
> > > +
> > > + msg = kzalloc(PAGE_SIZE, GFP_KERNEL);
> >
> > The use of PAGE_SIZE is odd. It's either too large (inefficient) or
> > too small (disaster).
> >
> > Is it not practical to calculate this precisely?
>
> It is not possible to calculate it in advance for the search commands,
> since we do not know how many slave devices are attached to the bus.
> This buffer is used as temporal area where IDs are stored and when
> number of IDs is large enough message is emmitted to the userspace and
> buffer becomes empty again. Sending one message per slave ID is a too
> big overhead, so this could be half of a page or one third or whatever
> else, I selected a page, which is the maximum guaranteed allocation
> buffer size.
OK.
Do we have checks in there to ensure that we can't run off the end of
the buffer?
> > > + if (!msg)
> > > + return -ENOMEM;
> > > +
> > > + msg->id = req_msg->id;
> > > + msg->seq = req_msg->seq;
> > > + msg->ack = 0;
> > > + msg->len = sizeof(struct w1_netlink_msg) + sizeof(struct w1_netlink_cmd);
> > > +
> > > + hdr = (struct w1_netlink_msg *)(msg + 1);
> > > + cmd = (struct w1_netlink_cmd *)(hdr + 1);
> > > +
> > > + hdr->type = W1_MASTER_CMD;
> > > + hdr->id = req_hdr->id;
> > > + hdr->len = sizeof(struct w1_netlink_cmd);
> > > +
> > > + cmd->cmd = req_cmd->cmd;
> > > + cmd->len = 0;
> > > +
> > > + switch (cmd->cmd) {
> > > + case W1_CMD_SEARCH:
> >
> > checkpatch correctly points out that the body of the switch statement
> > should be indented one tabstop less than this.
> >
> > > + case W1_CMD_ALARM_SEARCH:
> > > + err = w1_process_search_command(dev, msg,
> > > + PAGE_SIZE - msg->len - sizeof(struct cn_msg));
> >
> > which would give more room for cleaning this up.
>
> Ok, I will space it to the left. Should I sent patch on top of it or
> instead of?
Is OK, I'll fix it. That change messes up the following patches so I
fixed them as well.
next prev parent reply other threads:[~2008-12-17 23:14 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-16 18:07 [w1] userspace commands extensions Evgeniy Polyakov
2008-12-16 18:07 ` [w1] Allow master IO commands Evgeniy Polyakov
2008-12-16 18:08 ` [w1] Move w1 commands from defines to enum Evgeniy Polyakov
2008-12-16 18:08 ` [w1] Added w1 reset command Evgeniy Polyakov
2008-12-16 18:08 ` [w1] Send status messages after command processing Evgeniy Polyakov
2008-12-17 22:22 ` [w1] Allow master IO commands Andrew Morton
2008-12-17 22:33 ` Evgeniy Polyakov
2008-12-17 23:14 ` Andrew Morton [this message]
2008-12-17 23:19 ` Evgeniy Polyakov
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=20081217151418.f17cee7c.akpm@linux-foundation.org \
--to=akpm@linux-foundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=zbr@ioremap.net \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.