[alsa-devel] sound/pci/hda/hda_hwdep.c:487 parse_hints() warn: inconsistent returns mutex:&codec->user_mutex: locked (478) unlocked (447, 449, 452, 457, 487)
Fengguang Wu
fengguang.wu at intel.com
Sat Jan 12 03:17:57 CET 2013
Hi Takashi,
FYI, there are new smatch warnings show up in
tree: git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-unstable.git master
head: 02e5aa7b459f69538d4ec88658d064816a7692d6
commit: bea06a147981e88465f566acd6c6e98b297f7712 ALSA: hda - Protect user-defined arrays via mutex
date: 3 hours ago
sound/pci/hda/hda_hwdep.c:487 parse_hints() warn: inconsistent returns mutex:&codec->user_mutex: locked (478) unlocked (447,449,452,457,487)
vim +487 sound/pci/hda/hda_hwdep.c
43b62713 Takashi Iwai 2009-03-02 441 char *key, *val;
43b62713 Takashi Iwai 2009-03-02 442 struct hda_hint *hint;
bea06a14 Takashi Iwai 2013-01-10 443 int err = 0;
1e1be432 Takashi Iwai 2008-07-30 444
e7d2860b André Goddard Rosa 2009-12-14 445 buf = skip_spaces(buf);
43b62713 Takashi Iwai 2009-03-02 446 if (!*buf || *buf == '#' || *buf == '\n')
4ea6fbc8 Takashi Iwai 2009-06-17 @447 return 0;
43b62713 Takashi Iwai 2009-03-02 448 if (*buf == '=')
43b62713 Takashi Iwai 2009-03-02 @449 return -EINVAL;
43b62713 Takashi Iwai 2009-03-02 450 key = kstrndup_noeol(buf, 1024);
43b62713 Takashi Iwai 2009-03-02 451 if (!key)
1e1be432 Takashi Iwai 2008-07-30 @452 return -ENOMEM;
43b62713 Takashi Iwai 2009-03-02 453 /* extract key and val */
43b62713 Takashi Iwai 2009-03-02 454 val = strchr(key, '=');
43b62713 Takashi Iwai 2009-03-02 455 if (!val) {
43b62713 Takashi Iwai 2009-03-02 456 kfree(key);
43b62713 Takashi Iwai 2009-03-02 @457 return -EINVAL;
43b62713 Takashi Iwai 2009-03-02 458 }
43b62713 Takashi Iwai 2009-03-02 459 *val++ = 0;
e7d2860b André Goddard Rosa 2009-12-14 460 val = skip_spaces(val);
43b62713 Takashi Iwai 2009-03-02 461 remove_trail_spaces(key);
43b62713 Takashi Iwai 2009-03-02 462 remove_trail_spaces(val);
bea06a14 Takashi Iwai 2013-01-10 463 mutex_lock(&codec->user_mutex);
43b62713 Takashi Iwai 2009-03-02 464 hint = get_hint(codec, key);
43b62713 Takashi Iwai 2009-03-02 465 if (hint) {
43b62713 Takashi Iwai 2009-03-02 466 /* replace */
43b62713 Takashi Iwai 2009-03-02 467 kfree(hint->key);
43b62713 Takashi Iwai 2009-03-02 468 hint->key = key;
43b62713 Takashi Iwai 2009-03-02 469 hint->val = val;
bea06a14 Takashi Iwai 2013-01-10 470 goto unlock;
43b62713 Takashi Iwai 2009-03-02 471 }
43b62713 Takashi Iwai 2009-03-02 472 /* allocate a new hint entry */
43b62713 Takashi Iwai 2009-03-02 473 if (codec->hints.used >= MAX_HINTS)
43b62713 Takashi Iwai 2009-03-02 474 hint = NULL;
43b62713 Takashi Iwai 2009-03-02 475 else
43b62713 Takashi Iwai 2009-03-02 476 hint = snd_array_new(&codec->hints);
1e1be432 Takashi Iwai 2008-07-30 477 if (!hint) {
1e1be432 Takashi Iwai 2008-07-30 @478 return -ENOMEM;
bea06a14 Takashi Iwai 2013-01-10 479 goto unlock;
1e1be432 Takashi Iwai 2008-07-30 480 }
43b62713 Takashi Iwai 2009-03-02 481 hint->key = key;
43b62713 Takashi Iwai 2009-03-02 482 hint->val = val;
bea06a14 Takashi Iwai 2013-01-10 483 unlock:
bea06a14 Takashi Iwai 2013-01-10 484 mutex_unlock(&codec->user_mutex);
bea06a14 Takashi Iwai 2013-01-10 485 if (err)
bea06a14 Takashi Iwai 2013-01-10 486 kfree(key);
bea06a14 Takashi Iwai 2013-01-10 @487 return err;
4ea6fbc8 Takashi Iwai 2009-06-17 488 }
4ea6fbc8 Takashi Iwai 2009-06-17 489
4ea6fbc8 Takashi Iwai 2009-06-17 490 static ssize_t hints_store(struct device *dev,
---
0-DAY kernel build testing backend Open Source Technology Center
Fengguang Wu, Yuanhan Liu Intel Corporation
More information about the Alsa-devel
mailing list