import alsa-utils-1.2.5-2.el8
This commit is contained in:
parent
cd9058ff58
commit
cc8af08219
@ -1 +1 @@
|
||||
84b2c5e8f0c345844e03e8e4ae73b761c3ae8829 SOURCES/alsa-utils-1.2.4.tar.bz2
|
||||
51ed4a6a5d151f4c3b580464460c3788ee1e90fb SOURCES/alsa-utils-1.2.5.tar.bz2
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
||||
SOURCES/alsa-utils-1.2.4.tar.bz2
|
||||
SOURCES/alsa-utils-1.2.5.tar.bz2
|
||||
|
@ -1,441 +1,462 @@
|
||||
From 737b64e1940b29c575be3942cd9f87aa390d93b2 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?=E7=A9=8D=E4=B8=B9=E5=B0=BC=20Dan=20Jacobson?=
|
||||
<jidanni@jidanni.org>
|
||||
Date: Sun, 18 Oct 2020 18:33:54 +0800
|
||||
Subject: [PATCH 02/14] alsamixer: Fix the mixer views description in man page
|
||||
From 78212445de4c8e07873cbc7dff2abcacd031f151 Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Tue, 1 Jun 2021 17:47:42 +0200
|
||||
Subject: [PATCH 1/9] alsactl: fix the nested iteration
|
||||
|
||||
Fix grammar mess.
|
||||
There may be nested iterations for hw: card names.
|
||||
Handle this card name in snd_card_iterator_sinit().
|
||||
|
||||
From: Dan Jacobson <jidanni@jidanni.org>
|
||||
BugLink: https://github.com/alsa-project/alsa-lib/issues/142
|
||||
Fixes: eefc2c6 ("alsactl: use card iterator functions for all card loops")
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
alsamixer/alsamixer.1 | 2 +-
|
||||
alsactl/utils.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/alsactl/utils.c b/alsactl/utils.c
|
||||
index c79fd95..881b505 100644
|
||||
--- a/alsactl/utils.c
|
||||
+++ b/alsactl/utils.c
|
||||
@@ -247,6 +247,8 @@ int snd_card_iterator_sinit(struct snd_card_iterator *iter, const char *cardname
|
||||
int cardno = -1;
|
||||
|
||||
if (cardname) {
|
||||
+ if (strncmp(cardname, "hw:", 3) == 0)
|
||||
+ cardname += 3;
|
||||
cardno = snd_card_get_index(cardname);
|
||||
if (cardno < 0) {
|
||||
error("Cannot find soundcard '%s'...", cardname);
|
||||
--
|
||||
2.30.2
|
||||
|
||||
|
||||
From 3d7a6facd9e1f962eef6c4ba3aa4cdc22477a6ac Mon Sep 17 00:00:00 2001
|
||||
From: Chao Song <chao.song@linux.intel.com>
|
||||
Date: Mon, 31 May 2021 10:29:57 +0800
|
||||
Subject: [PATCH 2/9] topology: fix potential null pointer from strchr
|
||||
|
||||
This patch adds check to the return pointer from strchr,
|
||||
because it may be null and cause segment fault, if component
|
||||
is not properly constructed.
|
||||
|
||||
Fixes: https://github.com/alsa-project/alsa-utils/pull/91
|
||||
Signed-off-by: Chao Song <chao.song@linux.intel.com>
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
topology/pre-process-dapm.c | 5 +++++
|
||||
topology/pre-process-object.c | 5 +++++
|
||||
2 files changed, 10 insertions(+)
|
||||
|
||||
diff --git a/topology/pre-process-dapm.c b/topology/pre-process-dapm.c
|
||||
index 450ca71..dbaf2f1 100644
|
||||
--- a/topology/pre-process-dapm.c
|
||||
+++ b/topology/pre-process-dapm.c
|
||||
@@ -146,6 +146,11 @@ static int tplg_pp_get_widget_name(struct tplg_pre_processor *tplg_pp,
|
||||
|
||||
/* get class name */
|
||||
args = strchr(string, '.');
|
||||
+ if (!args) {
|
||||
+ SNDERR("Error getting class name for %s\n", string);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
class_name = calloc(1, strlen(string) - strlen(args) + 1);
|
||||
if (!class_name)
|
||||
return -ENOMEM;
|
||||
diff --git a/topology/pre-process-object.c b/topology/pre-process-object.c
|
||||
index 09aa375..ac8caec 100644
|
||||
--- a/topology/pre-process-object.c
|
||||
+++ b/topology/pre-process-object.c
|
||||
@@ -492,6 +492,11 @@ static int tplg_pp_add_object_tuple_section(struct tplg_pre_processor *tplg_pp,
|
||||
}
|
||||
|
||||
type = strchr(token_ref, '.');
|
||||
+ if(!type) {
|
||||
+ SNDERR("Error getting type for %s\n", token_ref);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
token = calloc(1, strlen(token_ref) - strlen(type) + 1);
|
||||
if (!token)
|
||||
return -ENOMEM;
|
||||
--
|
||||
2.30.2
|
||||
|
||||
|
||||
From d6d566a9eebb63dd9d1351b07d385d39cdc33beb Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Fri, 4 Jun 2021 09:53:56 +0200
|
||||
Subject: [PATCH 3/9] alsactl: return error value in dump_config_tree()
|
||||
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
alsactl/alsactl.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/alsamixer/alsamixer.1 b/alsamixer/alsamixer.1
|
||||
index 8d34680..2d711cf 100644
|
||||
--- a/alsamixer/alsamixer.1
|
||||
+++ b/alsamixer/alsamixer.1
|
||||
@@ -34,7 +34,7 @@ Toggle the using of colors.
|
||||
|
||||
.SH MIXER VIEWS
|
||||
|
||||
-The top-left corner of \fBalsamixer\fP is the are to show some basic
|
||||
+The top-left corner of \fBalsamixer\fP shows some basic
|
||||
information: the card name, the mixer chip name, the current view
|
||||
mode and the currently selected mixer item.
|
||||
When the mixer item is switched off, \fI[Off]\fP is displayed in its
|
||||
--
|
||||
2.29.2
|
||||
|
||||
From 986a1bd3d2eebd41a2925969826fca870b2cd330 Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Fri, 23 Oct 2020 12:05:56 +0200
|
||||
Subject: [PATCH 06/14] aplay: cosmetic code fix in xrun()
|
||||
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
aplay/aplay.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
||||
index a27220d..ae60988 100644
|
||||
--- a/aplay/aplay.c
|
||||
+++ b/aplay/aplay.c
|
||||
@@ -1676,7 +1676,8 @@ static void xrun(void)
|
||||
prg_exit(EXIT_FAILURE);
|
||||
}
|
||||
return; /* ok, data should be accepted again */
|
||||
- } if (snd_pcm_status_get_state(status) == SND_PCM_STATE_DRAINING) {
|
||||
+ }
|
||||
+ if (snd_pcm_status_get_state(status) == SND_PCM_STATE_DRAINING) {
|
||||
if (verbose) {
|
||||
fprintf(stderr, _("Status(DRAINING):\n"));
|
||||
snd_pcm_status_dump(status, log);
|
||||
--
|
||||
2.29.2
|
||||
|
||||
|
||||
From c1b92db5ef01311e5fc983f3134caa00826d0c2d Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Sun, 8 Nov 2020 19:11:12 +0100
|
||||
Subject: [PATCH 07/14] aplay: fix the CPU busy loop in the pause handler
|
||||
|
||||
Use the standard poll mechanism to ensure that there's
|
||||
something in the input to avoid busy loop on the file
|
||||
descriptor with the non-block mode set.
|
||||
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
aplay/aplay.c | 17 +++++++++++++++--
|
||||
1 file changed, 15 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
||||
index ae60988..d385da2 100644
|
||||
--- a/aplay/aplay.c
|
||||
+++ b/aplay/aplay.c
|
||||
@@ -1553,6 +1553,19 @@ static void done_stdin(void)
|
||||
tcsetattr(fileno(stdin), TCSANOW, &term);
|
||||
diff --git a/alsactl/alsactl.c b/alsactl/alsactl.c
|
||||
index a011284..05738fb 100644
|
||||
--- a/alsactl/alsactl.c
|
||||
+++ b/alsactl/alsactl.c
|
||||
@@ -170,7 +170,7 @@ static int dump_config_tree(snd_config_t *top)
|
||||
return err;
|
||||
err = snd_config_save(top, out);
|
||||
snd_output_close(out);
|
||||
- return 0;
|
||||
+ return err;
|
||||
}
|
||||
|
||||
+static char wait_for_input(void)
|
||||
+{
|
||||
+ struct pollfd pfd;
|
||||
+ unsigned char b;
|
||||
+
|
||||
+ do {
|
||||
+ pfd.fd = fileno(stdin);
|
||||
+ pfd.events = POLLIN;
|
||||
+ poll(&pfd, 1, -1);
|
||||
+ } while (read(fileno(stdin), &b, 1) != 1);
|
||||
+ return b;
|
||||
+}
|
||||
+
|
||||
static void do_pause(void)
|
||||
{
|
||||
int err;
|
||||
@@ -1571,7 +1584,7 @@ static void do_pause(void)
|
||||
return;
|
||||
}
|
||||
while (1) {
|
||||
- while (read(fileno(stdin), &b, 1) != 1);
|
||||
+ b = wait_for_input();
|
||||
if (b == ' ' || b == '\r') {
|
||||
while (read(fileno(stdin), &b, 1) == 1);
|
||||
if (snd_pcm_state(handle) == SND_PCM_STATE_SUSPENDED)
|
||||
@@ -1596,7 +1609,7 @@ static void check_stdin(void)
|
||||
while (read(fileno(stdin), &b, 1) == 1);
|
||||
fprintf(stderr, _("\r=== PAUSE === "));
|
||||
fflush(stderr);
|
||||
- do_pause();
|
||||
+ do_pause();
|
||||
fprintf(stderr, " \r");
|
||||
fflush(stderr);
|
||||
}
|
||||
static int dump_state(const char *file)
|
||||
--
|
||||
2.29.2
|
||||
2.30.2
|
||||
|
||||
|
||||
From 5812f37d877c12bc594b9ffddc493d305991963a Mon Sep 17 00:00:00 2001
|
||||
From: Takashi Iwai <tiwai@suse.de>
|
||||
Date: Wed, 9 Dec 2020 18:35:49 +0100
|
||||
Subject: [PATCH 08/14] alsa-info: Add lsusb and stream outputs
|
||||
|
||||
We need more detailed information for USB-audio devices, at least the
|
||||
lsusb -v output and the contents of stream* proc files.
|
||||
Let's add them to alsa-info.sh output.
|
||||
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
---
|
||||
alsa-info/alsa-info.sh | 33 +++++++++++++++++++++++++++++++++
|
||||
1 file changed, 33 insertions(+)
|
||||
|
||||
diff --git a/alsa-info/alsa-info.sh b/alsa-info/alsa-info.sh
|
||||
index f179bfa..3871b97 100755
|
||||
--- a/alsa-info/alsa-info.sh
|
||||
+++ b/alsa-info/alsa-info.sh
|
||||
@@ -476,6 +476,18 @@ cat /proc/asound/card*/codec\#* > $TEMPDIR/alsa-hda-intel.tmp 2> /dev/null
|
||||
cat /proc/asound/card*/codec97\#0/ac97\#0-0 > $TEMPDIR/alsa-ac97.tmp 2> /dev/null
|
||||
cat /proc/asound/card*/codec97\#0/ac97\#0-0+regs > $TEMPDIR/alsa-ac97-regs.tmp 2> /dev/null
|
||||
|
||||
+#Check for USB descriptors
|
||||
+if [ -x /usr/bin/lsusb ]; then
|
||||
+ for f in /proc/asound/card[0-9]*/usbbus; do
|
||||
+ test -f "$f" || continue
|
||||
+ id=$(sed 's@/@:@' $f)
|
||||
+ lsusb -v -s $id >> $TEMPDIR/lsusb.tmp 2> /dev/null
|
||||
+ done
|
||||
+fi
|
||||
+
|
||||
+#Check for USB stream setup
|
||||
+cat /proc/asound/card*/stream[0-9]* > $TEMPDIR/alsa-usbstream.tmp 2> /dev/null
|
||||
+
|
||||
#Check for USB mixer setup
|
||||
cat /proc/asound/card*/usbmixer > $TEMPDIR/alsa-usbmixer.tmp 2> /dev/null
|
||||
|
||||
@@ -649,6 +661,27 @@ if [ -s "$TEMPDIR/alsa-ac97.tmp" ]; then
|
||||
echo "" >> $FILE
|
||||
fi
|
||||
|
||||
+if [ -s "$TEMPDIR/lsusb.tmp" ]; then
|
||||
+ echo "!!USB Descriptors" >> $FILE
|
||||
+ echo "!!---------------" >> $FILE
|
||||
+ echo "--startcollapse--" >> $FILE
|
||||
+ cat $TEMPDIR/lsusb.tmp >> $FILE
|
||||
+ echo "--endcollapse--" >> $FILE
|
||||
+ echo "" >> $FILE
|
||||
+ echo "" >> $FILE
|
||||
+fi
|
||||
+
|
||||
+if [ -s "$TEMPDIR/lsusb.tmp" ]; then
|
||||
+ echo "!!USB Stream information" >> $FILE
|
||||
+ echo "!!----------------------" >> $FILE
|
||||
+ echo "--startcollapse--" >> $FILE
|
||||
+ echo "" >> $FILE
|
||||
+ cat $TEMPDIR/alsa-usbstream.tmp >> $FILE
|
||||
+ echo "--endcollapse--" >> $FILE
|
||||
+ echo "" >> $FILE
|
||||
+ echo "" >> $FILE
|
||||
+fi
|
||||
+
|
||||
if [ -s "$TEMPDIR/alsa-usbmixer.tmp" ]; then
|
||||
echo "!!USB Mixer information" >> $FILE
|
||||
echo "!!---------------------" >> $FILE
|
||||
--
|
||||
2.29.2
|
||||
|
||||
|
||||
From 878e1a7c0f03233530e7675ae015aced069c971d Mon Sep 17 00:00:00 2001
|
||||
From: Takashi Iwai <tiwai@suse.de>
|
||||
Date: Fri, 11 Dec 2020 23:41:59 +0100
|
||||
Subject: [PATCH 10/14] alsactl: Fix double decrease of lock timeout
|
||||
|
||||
The state_lock() has a loop to wait for the lock file creation, and
|
||||
the timeout value gets decremented twice mistakenly, which leads to a
|
||||
half timeout (5 seconds) than expected 10 seconds. Fix it.
|
||||
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
---
|
||||
alsactl/lock.c | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/alsactl/lock.c b/alsactl/lock.c
|
||||
index 4a48539..05f6e4d 100644
|
||||
--- a/alsactl/lock.c
|
||||
+++ b/alsactl/lock.c
|
||||
@@ -63,7 +63,6 @@ static int state_lock_(const char *file, int lock, int timeout, int _fd)
|
||||
if (fd < 0) {
|
||||
if (errno == EBUSY || errno == EAGAIN) {
|
||||
sleep(1);
|
||||
- timeout--;
|
||||
} else {
|
||||
err = -errno;
|
||||
goto out;
|
||||
--
|
||||
2.29.2
|
||||
|
||||
|
||||
From c53f7cd03881092d5a61505d23ab8f920b7faf12 Mon Sep 17 00:00:00 2001
|
||||
From: Takashi Iwai <tiwai@suse.de>
|
||||
Date: Fri, 11 Dec 2020 23:46:23 +0100
|
||||
Subject: [PATCH 11/14] alsactl: Fix race at creating a lock file
|
||||
|
||||
A race at creating a lock file in state_lock() was discovered
|
||||
recently: namely, between the first open(O_RDWR) and the second
|
||||
open(O_RDWR|O_CREAT|O_EXCL) calls, another alsactl invocation may
|
||||
already create a lock file, then the second open() will return EEXIST,
|
||||
which isn't handled properly and treated as a fatal error.
|
||||
|
||||
In this patch, we check EEXIST case and try again open() with O_RDWR.
|
||||
This must succeed usually, and if it fails, handle finally as the
|
||||
fatal error.
|
||||
|
||||
BugLink: https://bugzilla.opensuse.org/show_bug.cgi?id=1179904
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
---
|
||||
alsactl/lock.c | 11 ++++++++---
|
||||
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/alsactl/lock.c b/alsactl/lock.c
|
||||
index 05f6e4d..5b47462 100644
|
||||
--- a/alsactl/lock.c
|
||||
+++ b/alsactl/lock.c
|
||||
@@ -63,10 +63,15 @@ static int state_lock_(const char *file, int lock, int timeout, int _fd)
|
||||
if (fd < 0) {
|
||||
if (errno == EBUSY || errno == EAGAIN) {
|
||||
sleep(1);
|
||||
- } else {
|
||||
- err = -errno;
|
||||
- goto out;
|
||||
+ continue;
|
||||
}
|
||||
+ if (errno == EEXIST) {
|
||||
+ fd = open(nfile, O_RDWR);
|
||||
+ if (fd >= 0)
|
||||
+ break;
|
||||
+ }
|
||||
+ err = -errno;
|
||||
+ goto out;
|
||||
}
|
||||
}
|
||||
}
|
||||
--
|
||||
2.29.2
|
||||
|
||||
|
||||
From 12487b40b6e7230a003eb6e4333ee820d8578592 Mon Sep 17 00:00:00 2001
|
||||
From: Takashi Iwai <tiwai@suse.de>
|
||||
Date: Fri, 11 Dec 2020 23:55:34 +0100
|
||||
Subject: [PATCH 12/14] alsactl: Remove asound.state file check from
|
||||
alsa-restore.service again
|
||||
|
||||
We added the check of asound.state file presence some time ago to
|
||||
assure that alsactl gets called only if the state file is already
|
||||
present. Since then, the situation has changed significantly:
|
||||
e.g. now alsactl does initialize if the state file isn't present, and
|
||||
the same alsa-restore.service is used to save the state. This means
|
||||
that we should start this service no matter the state file exists at
|
||||
the boot time or not. So, revert the old change again.
|
||||
|
||||
Signed-off-by: Takashi Iwai <tiwai@suse.de>
|
||||
---
|
||||
alsactl/alsa-restore.service.in | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/alsactl/alsa-restore.service.in b/alsactl/alsa-restore.service.in
|
||||
index a84c2e8..80fd5fd 100644
|
||||
--- a/alsactl/alsa-restore.service.in
|
||||
+++ b/alsactl/alsa-restore.service.in
|
||||
@@ -7,7 +7,6 @@
|
||||
Description=Save/Restore Sound Card State
|
||||
ConditionPathExists=!@daemonswitch@
|
||||
ConditionPathExistsGlob=/dev/snd/control*
|
||||
-ConditionPathExists=@asoundrcfile@
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
--
|
||||
2.29.2
|
||||
|
||||
|
||||
From 76bc37aeb77d51f995e223582d25335cd98b2eea Mon Sep 17 00:00:00 2001
|
||||
From 511dd7a597735048f3883ef7883adf853ac2de4a Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Sun, 3 Jan 2021 17:19:03 +0100
|
||||
Subject: [PATCH 13/14] aplay: add test code for snd_pcm_status() to
|
||||
--test-position
|
||||
|
||||
We need to test also snd_pcm_status() values.
|
||||
Date: Fri, 4 Jun 2021 09:56:20 +0200
|
||||
Subject: [PATCH 4/9] alsactl: init() - return error value from
|
||||
snd_card_iterator_sinit() call
|
||||
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
aplay/aplay.c | 48 ++++++++++++++++++++++++++++++++++++++----------
|
||||
1 file changed, 38 insertions(+), 10 deletions(-)
|
||||
alsactl/init_parse.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
||||
index d385da2..5a6d5c3 100644
|
||||
--- a/aplay/aplay.c
|
||||
+++ b/aplay/aplay.c
|
||||
@@ -1953,22 +1953,38 @@ static void do_test_position(void)
|
||||
static snd_pcm_sframes_t minavail, mindelay;
|
||||
static snd_pcm_sframes_t badavail = 0, baddelay = 0;
|
||||
snd_pcm_sframes_t outofrange;
|
||||
- snd_pcm_sframes_t avail, delay;
|
||||
+ snd_pcm_sframes_t avail, delay, savail, sdelay;
|
||||
+ snd_pcm_status_t *status;
|
||||
int err;
|
||||
|
||||
+ snd_pcm_status_alloca(&status);
|
||||
err = snd_pcm_avail_delay(handle, &avail, &delay);
|
||||
if (err < 0)
|
||||
return;
|
||||
+ err = snd_pcm_status(handle, status);
|
||||
diff --git a/alsactl/init_parse.c b/alsactl/init_parse.c
|
||||
index 9d0f473..e439de7 100644
|
||||
--- a/alsactl/init_parse.c
|
||||
+++ b/alsactl/init_parse.c
|
||||
@@ -1751,6 +1751,8 @@ int init(const char *cfgdir, const char *filename, int flags, const char *cardna
|
||||
|
||||
sysfs_init();
|
||||
err = snd_card_iterator_sinit(&iter, cardname);
|
||||
+ if (err < 0)
|
||||
+ return;
|
||||
+ savail = snd_pcm_status_get_avail(status);
|
||||
+ sdelay = snd_pcm_status_get_delay(status);
|
||||
outofrange = (test_coef * (snd_pcm_sframes_t)buffer_frames) / 2;
|
||||
if (avail > outofrange || avail < -outofrange ||
|
||||
delay > outofrange || delay < -outofrange) {
|
||||
- badavail = avail; baddelay = delay;
|
||||
- availsum = delaysum = samples = 0;
|
||||
- maxavail = maxdelay = 0;
|
||||
- minavail = mindelay = buffer_frames * 16;
|
||||
- fprintf(stderr, _("Suspicious buffer position (%li total): "
|
||||
- "avail = %li, delay = %li, buffer = %li\n"),
|
||||
- ++counter, (long)avail, (long)delay, (long)buffer_frames);
|
||||
+ badavail = avail; baddelay = delay;
|
||||
+ availsum = delaysum = samples = 0;
|
||||
+ maxavail = maxdelay = 0;
|
||||
+ minavail = mindelay = buffer_frames * 16;
|
||||
+ fprintf(stderr, _("Suspicious buffer position (%li total): "
|
||||
+ "avail = %li, delay = %li, buffer = %li\n"),
|
||||
+ ++counter, (long)avail, (long)delay, (long)buffer_frames);
|
||||
+ } else if (savail > outofrange || savail < -outofrange ||
|
||||
+ sdelay > outofrange || sdelay < -outofrange) {
|
||||
+ badavail = savail; baddelay = sdelay;
|
||||
+ availsum = delaysum = samples = 0;
|
||||
+ maxavail = maxdelay = 0;
|
||||
+ minavail = mindelay = buffer_frames * 16;
|
||||
+ fprintf(stderr, _("Suspicious status buffer position (%li total): "
|
||||
+ "avail = %li, delay = %li, buffer = %li\n"),
|
||||
+ ++counter, (long)savail, (long)sdelay, (long)buffer_frames);
|
||||
} else if (verbose) {
|
||||
time(&now);
|
||||
if (tmr == (time_t) -1) {
|
||||
@@ -1979,19 +1995,27 @@ static void do_test_position(void)
|
||||
}
|
||||
if (avail > maxavail)
|
||||
maxavail = avail;
|
||||
+ if (savail > maxavail)
|
||||
+ maxavail = savail;
|
||||
if (delay > maxdelay)
|
||||
maxdelay = delay;
|
||||
+ if (sdelay > maxdelay)
|
||||
+ maxdelay = sdelay;
|
||||
if (avail < minavail)
|
||||
minavail = avail;
|
||||
+ if (savail < minavail)
|
||||
+ minavail = savail;
|
||||
if (delay < mindelay)
|
||||
mindelay = delay;
|
||||
+ if (sdelay < mindelay)
|
||||
+ mindelay = sdelay;
|
||||
availsum += avail;
|
||||
delaysum += delay;
|
||||
samples++;
|
||||
- if (avail != 0 && now != tmr) {
|
||||
+ if ((maxavail != 0 || maxdelay != 0) && now != tmr) {
|
||||
fprintf(stderr, "BUFPOS: avg%li/%li "
|
||||
"min%li/%li max%li/%li (%li) (%li:%li/%li)\n",
|
||||
- (long)(availsum / samples),
|
||||
+ (long)(availsum / samples),
|
||||
(long)(delaysum / samples),
|
||||
(long)minavail, (long)mindelay,
|
||||
(long)maxavail, (long)maxdelay,
|
||||
@@ -2000,6 +2024,10 @@ static void do_test_position(void)
|
||||
tmr = now;
|
||||
}
|
||||
}
|
||||
+ if (verbose == 1) {
|
||||
+ fprintf(stderr, _("Status(R/W) (standalone avail=%li delay=%li):\n"), (long)avail, (long)delay);
|
||||
+ snd_pcm_status_dump(status, log);
|
||||
+ }
|
||||
}
|
||||
|
||||
/*
|
||||
+ goto out;
|
||||
while (snd_card_iterator_next(&iter)) {
|
||||
err = snd_card_clean_cfgdir(cfgdir, iter.card);
|
||||
if (err < 0) {
|
||||
--
|
||||
2.29.2
|
||||
2.30.2
|
||||
|
||||
|
||||
From 3980fe71c9795271639239ad8fa982a59de8ff1f Mon Sep 17 00:00:00 2001
|
||||
From 2bc595e7bd9a9b8f8605104cfdb8f40a07c2655b Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Mon, 4 Jan 2021 12:13:03 +0100
|
||||
Subject: [PATCH 14/14] aplay: add avail > delay checks to --test-position
|
||||
Date: Fri, 4 Jun 2021 09:58:46 +0200
|
||||
Subject: [PATCH 5/9] alsactl: check for error values from snd_config_get...()
|
||||
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
aplay/aplay.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
alsactl/state.c | 41 ++++++++++++++++++++++++++++-------------
|
||||
1 file changed, 28 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/aplay/aplay.c b/aplay/aplay.c
|
||||
index 5a6d5c3..b75be6c 100644
|
||||
--- a/aplay/aplay.c
|
||||
+++ b/aplay/aplay.c
|
||||
@@ -1985,6 +1985,14 @@ static void do_test_position(void)
|
||||
fprintf(stderr, _("Suspicious status buffer position (%li total): "
|
||||
"avail = %li, delay = %li, buffer = %li\n"),
|
||||
++counter, (long)savail, (long)sdelay, (long)buffer_frames);
|
||||
+ } else if (avail > delay) {
|
||||
+ fprintf(stderr, _("Suspicious buffer position avail > delay (%li total): "
|
||||
+ "avail = %li, delay = %li\n"),
|
||||
+ ++counter, (long)avail, (long)delay);
|
||||
+ } else if (savail > sdelay) {
|
||||
+ fprintf(stderr, _("Suspicious status buffer position avail > delay (%li total): "
|
||||
+ "avail = %li, delay = %li\n"),
|
||||
+ ++counter, (long)savail, (long)sdelay);
|
||||
} else if (verbose) {
|
||||
time(&now);
|
||||
if (tmr == (time_t) -1) {
|
||||
diff --git a/alsactl/state.c b/alsactl/state.c
|
||||
index 44fda3f..b3a3f4d 100644
|
||||
--- a/alsactl/state.c
|
||||
+++ b/alsactl/state.c
|
||||
@@ -655,13 +655,16 @@ static long config_iface(snd_config_t *n)
|
||||
const char *str;
|
||||
switch (snd_config_get_type(n)) {
|
||||
case SND_CONFIG_TYPE_INTEGER:
|
||||
- snd_config_get_integer(n, &i);
|
||||
+ if (snd_config_get_integer(n, &i) < 0)
|
||||
+ return -1;
|
||||
return i;
|
||||
case SND_CONFIG_TYPE_INTEGER64:
|
||||
- snd_config_get_integer64(n, &li);
|
||||
+ if (snd_config_get_integer64(n, &li) < 0)
|
||||
+ return -1;
|
||||
return li;
|
||||
case SND_CONFIG_TYPE_STRING:
|
||||
- snd_config_get_string(n, &str);
|
||||
+ if (snd_config_get_string(n, &str) < 0)
|
||||
+ return -1;
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
@@ -681,17 +684,20 @@ static int config_bool(snd_config_t *n, int doit)
|
||||
|
||||
switch (snd_config_get_type(n)) {
|
||||
case SND_CONFIG_TYPE_INTEGER:
|
||||
- snd_config_get_integer(n, &val);
|
||||
+ if (snd_config_get_integer(n, &val) < 0)
|
||||
+ return -1;
|
||||
if (val < 0 || val > 1)
|
||||
return -1;
|
||||
return val;
|
||||
case SND_CONFIG_TYPE_INTEGER64:
|
||||
- snd_config_get_integer64(n, &lval);
|
||||
+ if (snd_config_get_integer64(n, &lval) < 0)
|
||||
+ return -1;
|
||||
if (lval < 0 || lval > 1)
|
||||
return -1;
|
||||
return (int) lval;
|
||||
case SND_CONFIG_TYPE_STRING:
|
||||
- snd_config_get_string(n, &str);
|
||||
+ if (snd_config_get_string(n, &str) < 0)
|
||||
+ return -1;
|
||||
break;
|
||||
case SND_CONFIG_TYPE_COMPOUND:
|
||||
if (!force_restore || !doit)
|
||||
@@ -718,13 +724,16 @@ static int config_enumerated(snd_config_t *n, snd_ctl_t *handle,
|
||||
|
||||
switch (snd_config_get_type(n)) {
|
||||
case SND_CONFIG_TYPE_INTEGER:
|
||||
- snd_config_get_integer(n, &val);
|
||||
+ if (snd_config_get_integer(n, &val) < 0)
|
||||
+ return -1;
|
||||
return val;
|
||||
case SND_CONFIG_TYPE_INTEGER64:
|
||||
- snd_config_get_integer64(n, &lval);
|
||||
+ if (snd_config_get_integer64(n, &lval) < 0)
|
||||
+ return -1;
|
||||
return (int) lval;
|
||||
case SND_CONFIG_TYPE_STRING:
|
||||
- snd_config_get_string(n, &str);
|
||||
+ if (snd_config_get_string(n, &str) < 0)
|
||||
+ return -1;
|
||||
break;
|
||||
case SND_CONFIG_TYPE_COMPOUND:
|
||||
if (!force_restore || !doit)
|
||||
@@ -1247,6 +1256,8 @@ static int set_control(snd_ctl_t *handle, snd_config_t *control,
|
||||
}
|
||||
if (strcmp(fld, "iface") == 0) {
|
||||
iface = (snd_ctl_elem_iface_t)config_iface(n);
|
||||
+ if (iface < 0)
|
||||
+ return -EINVAL;
|
||||
continue;
|
||||
}
|
||||
if (strcmp(fld, "device") == 0) {
|
||||
@@ -1254,7 +1265,8 @@ static int set_control(snd_ctl_t *handle, snd_config_t *control,
|
||||
cerror(doit, "control.%d.%s is invalid", numid, fld);
|
||||
return -EINVAL;
|
||||
}
|
||||
- snd_config_get_integer(n, &device);
|
||||
+ if (snd_config_get_integer(n, &device) < 0)
|
||||
+ return -EINVAL;
|
||||
continue;
|
||||
}
|
||||
if (strcmp(fld, "subdevice") == 0) {
|
||||
@@ -1262,7 +1274,8 @@ static int set_control(snd_ctl_t *handle, snd_config_t *control,
|
||||
cerror(doit, "control.%d.%s is invalid", numid, fld);
|
||||
return -EINVAL;
|
||||
}
|
||||
- snd_config_get_integer(n, &subdevice);
|
||||
+ if (snd_config_get_integer(n, &subdevice) < 0)
|
||||
+ return -EINVAL;
|
||||
continue;
|
||||
}
|
||||
if (strcmp(fld, "name") == 0) {
|
||||
@@ -1270,7 +1283,8 @@ static int set_control(snd_ctl_t *handle, snd_config_t *control,
|
||||
cerror(doit, "control.%d.%s is invalid", numid, fld);
|
||||
return -EINVAL;
|
||||
}
|
||||
- snd_config_get_string(n, &name);
|
||||
+ if (snd_config_get_string(n, &name) < 0)
|
||||
+ return -EINVAL;
|
||||
continue;
|
||||
}
|
||||
if (strcmp(fld, "index") == 0) {
|
||||
@@ -1278,7 +1292,8 @@ static int set_control(snd_ctl_t *handle, snd_config_t *control,
|
||||
cerror(doit, "control.%d.%s is invalid", numid, fld);
|
||||
return -EINVAL;
|
||||
}
|
||||
- snd_config_get_integer(n, &index);
|
||||
+ if (snd_config_get_integer(n, &index) < 0)
|
||||
+ return -EINVAL;
|
||||
continue;
|
||||
}
|
||||
if (strcmp(fld, "value") == 0) {
|
||||
--
|
||||
2.29.2
|
||||
2.30.2
|
||||
|
||||
|
||||
From 646d6ff094a82153db49af176cba3aacbde46cf6 Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Fri, 4 Jun 2021 10:04:50 +0200
|
||||
Subject: [PATCH 6/9] =?UTF-8?q?alsactl:=20state=20-=20fix=20=E2=80=98item?=
|
||||
=?UTF-8?q?=E2=80=99=20may=20be=20used=20uninitialized=20gcc=20warning?=
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
alsactl/state.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/alsactl/state.c b/alsactl/state.c
|
||||
index b3a3f4d..9c75688 100644
|
||||
--- a/alsactl/state.c
|
||||
+++ b/alsactl/state.c
|
||||
@@ -229,7 +229,7 @@ static int get_control(snd_ctl_t *handle, snd_ctl_elem_id_t *id, snd_config_t *t
|
||||
{
|
||||
snd_ctl_elem_value_t *ctl;
|
||||
snd_ctl_elem_info_t *info;
|
||||
- snd_config_t *control, *comment, *item, *value;
|
||||
+ snd_config_t *control, *comment, *item = NULL, *value;
|
||||
const char *s;
|
||||
char buf[256];
|
||||
unsigned int idx;
|
||||
--
|
||||
2.30.2
|
||||
|
||||
|
||||
From cd2f779b8d6439479b9802e9fd2c8af86f8702fb Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Fri, 4 Jun 2021 10:08:18 +0200
|
||||
Subject: [PATCH 7/9] alsactl: fix lock_fd unlock in load_configuration() -
|
||||
error path
|
||||
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
alsactl/utils.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/alsactl/utils.c b/alsactl/utils.c
|
||||
index 881b505..fd4a108 100644
|
||||
--- a/alsactl/utils.c
|
||||
+++ b/alsactl/utils.c
|
||||
@@ -220,15 +220,17 @@ int load_configuration(const char *file, snd_config_t **top, int *open_failed)
|
||||
}
|
||||
err = snd_config_load(config, in);
|
||||
snd_input_close(in);
|
||||
- if (lock_fd >= 0)
|
||||
- state_unlock(lock_fd, file);
|
||||
if (err < 0) {
|
||||
error("snd_config_load error: %s", snd_strerror(err));
|
||||
out:
|
||||
+ if (lock_fd >= 0)
|
||||
+ state_unlock(lock_fd, file);
|
||||
snd_config_delete(config);
|
||||
snd_config_update_free_global();
|
||||
return err;
|
||||
} else {
|
||||
+ if (lock_fd >= 0)
|
||||
+ state_unlock(lock_fd, file);
|
||||
*top = config;
|
||||
return 0;
|
||||
}
|
||||
--
|
||||
2.30.2
|
||||
|
||||
|
||||
From 74ad91245f8257e242cf5b5b6b809f94321f197a Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Fri, 4 Jun 2021 10:12:06 +0200
|
||||
Subject: [PATCH 8/9] axfer: fix wrong calloc() item size in
|
||||
allocate_containers()
|
||||
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
axfer/subcmd-transfer.c | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/axfer/subcmd-transfer.c b/axfer/subcmd-transfer.c
|
||||
index 27d2cc5..839215a 100644
|
||||
--- a/axfer/subcmd-transfer.c
|
||||
+++ b/axfer/subcmd-transfer.c
|
||||
@@ -155,7 +155,7 @@ static int allocate_containers(struct context *ctx, unsigned int count)
|
||||
return -ENOMEM;
|
||||
ctx->cntr_count = count;
|
||||
|
||||
- ctx->cntr_fds = calloc(count, sizeof(*ctx->cntrs));
|
||||
+ ctx->cntr_fds = calloc(count, sizeof(*ctx->cntr_fds));
|
||||
if (ctx->cntr_fds == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
--
|
||||
2.30.2
|
||||
|
||||
|
||||
From c58f981e1530557835461b17b92eac6c475e5f68 Mon Sep 17 00:00:00 2001
|
||||
From: Jaroslav Kysela <perex@perex.cz>
|
||||
Date: Fri, 4 Jun 2021 10:19:22 +0200
|
||||
Subject: [PATCH 9/9] topology: fix few coverity detected defects
|
||||
|
||||
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
|
||||
---
|
||||
topology/pre-process-dapm.c | 3 ++-
|
||||
topology/pre-process-object.c | 15 ++++++++++-----
|
||||
topology/pre-processor.c | 2 +-
|
||||
3 files changed, 13 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/topology/pre-process-dapm.c b/topology/pre-process-dapm.c
|
||||
index dbaf2f1..dc510e1 100644
|
||||
--- a/topology/pre-process-dapm.c
|
||||
+++ b/topology/pre-process-dapm.c
|
||||
@@ -203,7 +203,8 @@ static int tplg_pp_get_widget_name(struct tplg_pre_processor *tplg_pp,
|
||||
|
||||
if (!args) {
|
||||
SNDERR("insufficient arugments for widget %s\n", string);
|
||||
- return -EINVAL;
|
||||
+ ret = -EINVAL;
|
||||
+ goto err;
|
||||
}
|
||||
|
||||
remaining = strchr(args + 1, '.');
|
||||
diff --git a/topology/pre-process-object.c b/topology/pre-process-object.c
|
||||
index ac8caec..7565091 100644
|
||||
--- a/topology/pre-process-object.c
|
||||
+++ b/topology/pre-process-object.c
|
||||
@@ -463,7 +463,8 @@ static snd_config_t *tplg_object_lookup_in_config(struct tplg_pre_processor *tpl
|
||||
if (!config_id)
|
||||
return NULL;
|
||||
|
||||
- snd_config_search(class, config_id, &obj_cfg);
|
||||
+ if (snd_config_search(class, config_id, &obj_cfg) < 0)
|
||||
+ return NULL;
|
||||
free(config_id);
|
||||
return obj_cfg;
|
||||
}
|
||||
@@ -704,11 +705,12 @@ static int tplg_add_object_data(struct tplg_pre_processor *tplg_pp, snd_config_t
|
||||
|
||||
ret = tplg_pp_add_object_tuple_section(tplg_pp, class_cfg, n, data_cfg_name,
|
||||
token);
|
||||
- free(data_cfg_name);
|
||||
if (ret < 0) {
|
||||
SNDERR("Failed to add data section %s\n", data_cfg_name);
|
||||
+ free(data_cfg_name);
|
||||
return ret;
|
||||
}
|
||||
+ free(data_cfg_name);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -1215,8 +1217,10 @@ static int tplg_construct_object_name(struct tplg_pre_processor *tplg_pp, snd_co
|
||||
return 0;
|
||||
|
||||
/* set class name as the name prefix for the object */
|
||||
- snd_config_get_id(obj, &obj_id);
|
||||
- snd_config_get_id(class_cfg, &class_id);
|
||||
+ if (snd_config_get_id(obj, &obj_id) < 0)
|
||||
+ return -EINVAL;
|
||||
+ if (snd_config_get_id(class_cfg, &class_id) < 0)
|
||||
+ return -EINVAL;
|
||||
new_name = strdup(class_id);
|
||||
if (!new_name)
|
||||
return -ENOMEM;
|
||||
@@ -1280,7 +1284,8 @@ static int tplg_construct_object_name(struct tplg_pre_processor *tplg_pp, snd_co
|
||||
default:
|
||||
SNDERR("Argument '%s' in object '%s.%s' is not an integer or a string\n",
|
||||
s, class_id, obj_id);
|
||||
- return -EINVAL;
|
||||
+ ret = -EINVAL;
|
||||
+ goto err;
|
||||
}
|
||||
|
||||
/* alloc and concat arg value to the name */
|
||||
diff --git a/topology/pre-processor.c b/topology/pre-processor.c
|
||||
index 0458c3c..442dcc4 100644
|
||||
--- a/topology/pre-processor.c
|
||||
+++ b/topology/pre-processor.c
|
||||
@@ -183,7 +183,7 @@ int init_pre_precessor(struct tplg_pre_processor **tplg_pp, snd_output_type_t ty
|
||||
|
||||
_tplg_pp = calloc(1, sizeof(struct tplg_pre_processor));
|
||||
if (!_tplg_pp)
|
||||
- ret = -ENOMEM;
|
||||
+ return -ENOMEM;
|
||||
|
||||
*tplg_pp = _tplg_pp;
|
||||
|
||||
--
|
||||
2.30.2
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
%define baseversion 1.2.4
|
||||
%define baseversion 1.2.5
|
||||
#define fixversion .2
|
||||
%global _hardened_build 1
|
||||
|
||||
@ -192,6 +192,9 @@ fi
|
||||
%systemd_postun_with_restart alsa-state.service
|
||||
|
||||
%changelog
|
||||
* Thu Jun 3 2021 Jaroslav Kysela <perex@perex.cz> - 1.2.5-2
|
||||
- Updated to 1.2.5
|
||||
|
||||
* Mon Jun 8 2020 Jaroslav Kysela <perex@perex.cz> - 1.2.4-2
|
||||
- Updated to 1.2.4
|
||||
- Apply fixes from recent upstream
|
||||
|
Loading…
Reference in New Issue
Block a user