From: "Michael S. Tsirkin" <mst@redhat.com>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: Jonathan Corbet <corbet@lwn.net>,
linux-kernel@vger.kernel.org, Julia Lawall <julia.lawall@lip6.fr>,
Jason Wang <jasowang@redhat.com>,
linux-doc@vger.kernel.org,
virtualization@lists.linux-foundation.org
Subject: Re: [PATCH] CodingStyle: add some more error handling guidelines
Date: Mon, 22 Aug 2016 21:39:35 +0300 [thread overview]
Message-ID: <20160822213743-mutt-send-email-mst@kernel.org> (raw)
In-Reply-To: <20160822183140.GE4129@mwanda>
On Mon, Aug 22, 2016 at 09:31:40PM +0300, Dan Carpenter wrote:
>
> vhost_dev_set_owner() is an example of why come-from labels are
> bad style.
>
> devel/drivers/vhost/vhost.c
> 473 /* Caller should have device mutex */
> 474 long vhost_dev_set_owner(struct vhost_dev *dev)
> 475 {
> 476 struct task_struct *worker;
> 477 int err;
> 478
> 479 /* Is there an owner already? */
> 480 if (vhost_dev_has_owner(dev)) {
> 481 err = -EBUSY;
> 482 goto err_mm;
>
> What does goto err_mm do? It's actually a do-nothing goto. It would
> be easier to read as a direct return. Why is it called err_mm? Because
> originally the condition was:
>
> if (dev->mm) {
> err = -EBUSY;
> goto err_mm;
> }
>
> We've changed the code but didn't update the label so it's slightly
> confusing unless you know how vhost_dev_has_owner() is implemented.
>
> 483 }
> 484
> 485 /* No owner, become one */
> 486 dev->mm = get_task_mm(current);
> 487 worker = kthread_create(vhost_worker, dev, "vhost-%d", current->pid);
> 488 if (IS_ERR(worker)) {
> 489 err = PTR_ERR(worker);
> 490 goto err_worker;
> 491 }
> 492
> 493 dev->worker = worker;
> 494 wake_up_process(worker); /* avoid contributing to loadavg */
> 495
> 496 err = vhost_attach_cgroups(dev);
> 497 if (err)
> 498 goto err_cgroup;
> 499
> 500 err = vhost_dev_alloc_iovecs(dev);
> 501 if (err)
> 502 goto err_cgroup;
>
> This name doesn't make sense because it's a come-from label which is
> used twice. Some people do:
>
> if (err)
> goto err_iovecs;
>
> 503
> 504 return 0;
Right and the current CodingStyle text seems to discourage this.
> Then they add two labels here:
>
> err_iovecs:
> err_cgroup:
> kthread_stop(worker);
Definitely good points above, I'll fix them up.
> But if you base the label name on the label location then it makes
> sense. goto stop_kthread; goto err_mmput;.
>
> 505 err_cgroup:
> 506 kthread_stop(worker);
> 507 dev->worker = NULL;
> 508 err_worker:
> 509 if (dev->mm)
> 510 mmput(dev->mm);
> 511 dev->mm = NULL;
> 512 err_mm:
> 513 return err;
> 514 }
>
> regards,
> dan carpenter
OK, I'll consider this, thanks!
--
MST
next prev parent reply other threads:[~2016-08-22 18:39 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-22 13:57 [PATCH] CodingStyle: add some more error handling guidelines Michael S. Tsirkin
2016-08-22 13:57 ` Michael S. Tsirkin
2016-08-22 14:16 ` Jonathan Corbet
2016-08-22 14:53 ` Michael S. Tsirkin
2016-08-22 14:53 ` Michael S. Tsirkin
2016-08-22 18:31 ` Dan Carpenter
2016-08-22 18:31 ` Dan Carpenter
2016-08-22 18:39 ` Michael S. Tsirkin
2016-08-22 18:39 ` Michael S. Tsirkin [this message]
2016-08-22 18:50 ` Dan Carpenter
2016-08-22 18:50 ` Dan Carpenter
2016-08-22 19:31 ` Michael S. Tsirkin
2016-08-22 19:31 ` Michael S. Tsirkin
2016-08-22 14:16 ` Jonathan Corbet
2016-08-22 14:23 ` Dan Carpenter
2016-08-22 14:23 ` Dan Carpenter
2016-08-23 11:03 ` Bjørn Mork
2016-08-23 11:03 ` Bjørn Mork
2016-08-23 11:58 ` Dan Carpenter
2016-08-23 11:58 ` Dan Carpenter
2016-08-23 12:46 ` Bjørn Mork
2016-08-23 12:46 ` Bjørn Mork
2016-08-23 14:05 ` Dan Carpenter
2016-08-23 14:05 ` Dan Carpenter
-- strict thread matches above, loose matches on Subject: below --
2014-12-02 7:37 [Cocci] [PATCH v2] fs-fat: Less function calls in fat_fill_super() after error detection Julia Lawall
2014-12-02 8:59 ` [patch] CodingStyle: add some more error handling guidelines Dan Carpenter
2014-12-02 8:59 ` Dan Carpenter
2014-12-02 9:09 ` Julia Lawall
2014-12-02 9:09 ` Julia Lawall
2014-12-02 13:56 ` Jonathan Corbet
2014-12-02 13:56 ` Jonathan Corbet
2014-12-03 12:31 ` SF Markus Elfring
2014-12-03 12:31 ` SF Markus Elfring
2014-12-03 12:39 ` Arend van Spriel
2014-12-03 12:39 ` Arend van Spriel
2014-12-03 12:51 ` SF Markus Elfring
2014-12-03 12:51 ` SF Markus Elfring
2014-12-03 12:45 ` Dan Carpenter
2014-12-03 12:45 ` Dan Carpenter
2014-12-03 12:52 ` Julia Lawall
2014-12-03 12:52 ` Julia Lawall
2014-12-03 13:15 ` Dan Carpenter
2014-12-03 13:15 ` Dan Carpenter
2014-12-03 13:00 ` SF Markus Elfring
2014-12-03 13:00 ` SF Markus Elfring
2014-12-03 13:20 ` Dan Carpenter
2014-12-03 13:20 ` Dan Carpenter
2014-12-03 13:24 ` SF Markus Elfring
2014-12-03 13:24 ` SF Markus Elfring
2014-12-03 14:08 ` Arend van Spriel
2014-12-03 14:08 ` Arend van Spriel
2014-12-03 16:00 ` SF Markus Elfring
2014-12-03 16:00 ` SF Markus Elfring
2014-12-03 19:13 ` Arend van Spriel
2014-12-03 19:13 ` Arend van Spriel
2014-12-03 23:11 ` SF Markus Elfring
2014-12-03 23:11 ` SF Markus Elfring
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=20160822213743-mutt-send-email-mst@kernel.org \
--to=mst@redhat.com \
--cc=corbet@lwn.net \
--cc=dan.carpenter@oracle.com \
--cc=jasowang@redhat.com \
--cc=julia.lawall@lip6.fr \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=virtualization@lists.linux-foundation.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 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.