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
next 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.