All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dan Carpenter <dan.carpenter@oracle.com>
To: hui.wang@canonical.com
Cc: alsa-devel@alsa-project.org
Subject: [bug report] ALSA: hda - Don't register a cb func if it is registered already
Date: Wed, 21 Oct 2020 15:19:04 +0300	[thread overview]
Message-ID: <20201021121904.GA1126544@mwanda> (raw)

Hello Hui Wang,

The patch f4794c6064a8: "ALSA: hda - Don't register a cb func if it
is registered already" from Sep 30, 2020, leads to the following
static checker warning:

	sound/pci/hda/patch_sigmatel.c:3075 stac92hd71bxx_fixup_hp_m4()
	warn: 'jack' can also be NULL

sound/pci/hda/patch_sigmatel.c
  3069          /* Enable VREF power saving on GPIO1 detect */
  3070          snd_hda_codec_write_cache(codec, codec->core.afg, 0,
  3071                                    AC_VERB_SET_GPIO_UNSOLICITED_RSP_MASK, 0x02);
  3072          jack = snd_hda_jack_detect_enable_callback(codec, codec->core.afg,
  3073                                                     stac_vref_event);

Originally snd_hda_jack_detect_enable_callback() would not return NULL
here.

  3074          if (!IS_ERR(jack))
  3075                  jack->private_data = 0x02;
  3076  
  3077          spec->gpio_mask |= 0x02;

But now we have this:

sound/pci/hda/hda_jack.c
   301  struct hda_jack_callback *
   302  snd_hda_jack_detect_enable_callback_mst(struct hda_codec *codec, hda_nid_t nid,
   303                                          int dev_id, hda_jack_callback_fn func)
   304  {
   305          struct hda_jack_tbl *jack;
   306          struct hda_jack_callback *callback = NULL;
   307          int err;
   308  
   309          jack = snd_hda_jack_tbl_new(codec, nid, dev_id);
   310          if (!jack)
   311                  return ERR_PTR(-ENOMEM);
   312          if (func && !func_is_already_in_callback_list(jack, func)) {
                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
We only allocate callback if there isn't one already.

   313                  callback = kzalloc(sizeof(*callback), GFP_KERNEL);
   314                  if (!callback)
   315                          return ERR_PTR(-ENOMEM);
   316                  callback->func = func;
   317                  callback->nid = jack->nid;
   318                  callback->dev_id = jack->dev_id;
   319                  callback->next = jack->callback;
   320                  jack->callback = callback;
   321          }
   322  
   323          if (jack->jack_detect)
   324                  return callback; /* already registered */
                        ^^^^^^^^^^^^^^^
So presumably this should be jack->callback


   325          jack->jack_detect = 1;
   326          if (codec->jackpoll_interval > 0)
   327                  return callback; /* No unsol if we're polling instead */
                        ^^^^^^^^^^^^^^^^

   328          err = snd_hda_codec_write_cache(codec, nid, 0,
   329                                           AC_VERB_SET_UNSOLICITED_ENABLE,
   330                                           AC_USRSP_EN | jack->tag);
   331          if (err < 0)
   332                  return ERR_PTR(err);
   333          return callback;
                ^^^^^^^^^^^^^^^^
And these as well.

   334  }

regards,
dan carpenter

             reply	other threads:[~2020-10-21 12:22 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-21 12:19 Dan Carpenter [this message]
2020-10-21 14:21 ` [bug report] ALSA: hda - Don't register a cb func if it is registered already Hui Wang
2020-10-21 15:03   ` Hui Wang
2020-10-21 15:59     ` Takashi Iwai
2020-10-22  1:45       ` Hui Wang
2020-10-21 17:27     ` Dan Carpenter
2020-10-22  1:42       ` Hui Wang

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=20201021121904.GA1126544@mwanda \
    --to=dan.carpenter@oracle.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=hui.wang@canonical.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.