Alsa-Devel Archive on 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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox