All of lore.kernel.org
 help / color / mirror / Atom feed
From: John Hsu <KCHSU0@nuvoton.com>
To: Dan Carpenter <dan.carpenter@oracle.com>
Cc: YHCHuang@nuvoton.com,
	AP MS30 Linux ALSA <alsa-devel@alsa-project.org>,
	broonie@kernel.org, CTLIN0@nuvoton.com, lgirdwood@gmail.com
Subject: Re: ASoC: nau8825: cross talk suppression measurement function
Date: Mon, 20 Jun 2016 09:51:28 +0800	[thread overview]
Message-ID: <57674C20.3080707@nuvoton.com> (raw)
In-Reply-To: <20160615123352.GA7136@mwanda>

Hi Dan,

On 6/15/2016 8:33 PM, Dan Carpenter wrote:
> Hello John Hsu,
>
> The patch b50455fab459: "ASoC: nau8825: cross talk suppression
> measurement function" from Jun 7, 2016, leads to the following static
> checker warning:
>
> 	sound/soc/codecs/nau8825.c:265 nau8825_sema_acquire()
> 	warn: 'sem:&nau8825->xtalk_sem' is sometimes locked here and sometimes unlocked.
>
>
> sound/soc/codecs/nau8825.c
>    240  /**
>    241   * nau8825_sema_acquire - acquire the semaphore of nau88l25
>    242   * @nau8825:  component to register the codec private data with
>    243   * @timeout: how long in jiffies to wait before failure or zero to wait
>    244   * until release
>    245   *
>    246   * Attempts to acquire the semaphore with number of jiffies. If no more
>    247   * tasks are allowed to acquire the semaphore, calling this function will
>    248   * put the task to sleep. If the semaphore is not released within the
>    249   * specified number of jiffies, this function returns.
>    250   * Acquires the semaphore without jiffies. If no more tasks are allowed
>    251   * to acquire the semaphore, calling this function will put the task to
>    252   * sleep until the semaphore is released.
>    253   * It returns if the semaphore was acquired.
>
> Sometimes it returns without the lock held.
>
>    254   */
>    255  static void nau8825_sema_acquire(struct nau8825 *nau8825, long timeout)
>    256  {
>    257          int ret;
>    258  
>    259          if (timeout)
>    260                  ret = down_timeout(&nau8825->xtalk_sem, timeout);
>    261          else
>    262                  ret = down_interruptible(&nau8825->xtalk_sem);
>    263  
>    264          if (ret < 0)
>    265                  dev_warn(nau8825->dev, "Acquire semaphone fail\n");
>
> This function makes me sad.  Warn and corrupt is my least favourite
> anti-pattern.
>   

Is it better to separate this function to two case, one locked with
timeout and the other not? Do you have any suggestion about it?
Thank you.

  reply	other threads:[~2016-06-20  1:51 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-15 12:33 ASoC: nau8825: cross talk suppression measurement function Dan Carpenter
2016-06-20  1:51 ` John Hsu [this message]
2016-06-20 10:00   ` Dan Carpenter
2016-06-22  3:09     ` John Hsu

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=57674C20.3080707@nuvoton.com \
    --to=kchsu0@nuvoton.com \
    --cc=CTLIN0@nuvoton.com \
    --cc=YHCHuang@nuvoton.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=dan.carpenter@oracle.com \
    --cc=lgirdwood@gmail.com \
    /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.