blob: abad116aaf771a15c2dc9b05a9cc343a75940cb1 [file] [log] [blame]
From f7eb87ddc7787e981e6055c9e6f770fc0cd2359a Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Wed, 9 May 2012 08:45:47 +0200
Subject: [PATCH] alsactl: Do not access other cards than specified for init
When the global state does not exist, alsactl tries to
initialize all soundcards. It is not good when alsactl
is called multiple times from udev. Also, selinux can deny
access to non-existent devices.
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsactl/state.c | 14 ++++++++++++--
1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/alsactl/state.c b/alsactl/state.c
index a8b5bd3..fec000d 100644
--- a/alsactl/state.c
+++ b/alsactl/state.c
@@ -1646,13 +1646,23 @@ int load_state(const char *file, const char *initfile, const char *cardname,
error("Cannot open %s for reading: %s", file, snd_strerror(err));
finalerr = err;
- card = -1;
+ if (cardname) {
+ card = snd_card_get_index(cardname);
+ if (card < 0) {
+ error("Cannot find soundcard '%s'...", cardname);
+ return -ENODEV;
+ }
+ goto single;
+ } else {
+ card = -1;
+ }
/* find each installed soundcards */
- while (1) {
+ while (!cardname) {
if (snd_card_next(&card) < 0)
break;
if (card < 0)
break;
+single:
first = 0;
if (!do_init)
break;
--
1.7.9.rc0