This is a note to let you know that I've just added the patch titled

    ALSA: bits vs bytes bug in snd_card_create()

to the 3.12-stable tree which can be found at:
    
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     alsa-bits-vs-bytes-bug-in-snd_card_create.patch
and it can be found in the queue-3.12 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.


>From 4c3773eda49c872a3034382f8ec3080002e715bf Mon Sep 17 00:00:00 2001
From: Dan Carpenter <[email protected]>
Date: Thu, 23 Jan 2014 11:21:28 +0300
Subject: ALSA: bits vs bytes bug in snd_card_create()

From: Dan Carpenter <[email protected]>

commit 4c3773eda49c872a3034382f8ec3080002e715bf upstream.

The test here is intended intended to prevent shift wrapping bugs when
we do "1U << idx2".  We should consider the number of bits in a u32
instead of the number of bytes.

[fix another chunk similarly by tiwai]

Fixes: 7bb2491b35a2 ('ALSA: Add kconfig to specify the max card numbers')
Signed-off-by: Dan Carpenter <[email protected]>
Signed-off-by: Takashi Iwai <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>

---
 sound/core/init.c |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

--- a/sound/core/init.c
+++ b/sound/core/init.c
@@ -170,7 +170,7 @@ int snd_card_create(int idx, const char
        if (idx < 0) {
                for (idx2 = 0; idx2 < SNDRV_CARDS; idx2++) {
                        /* idx == -1 == 0xffff means: take any free slot */
-                       if (idx2 < sizeof(int) && !(idx & (1U << idx2)))
+                       if (idx2 < 32 && !(idx & (1U << idx2)))
                                continue;
                        if (!test_bit(idx2, snd_cards_lock)) {
                                if (module_slot_match(module, idx2)) {
@@ -183,7 +183,7 @@ int snd_card_create(int idx, const char
        if (idx < 0) {
                for (idx2 = 0; idx2 < SNDRV_CARDS; idx2++) {
                        /* idx == -1 == 0xffff means: take any free slot */
-                       if (idx2 < sizeof(int) && !(idx & (1U << idx2)))
+                       if (idx2 < 32 && !(idx & (1U << idx2)))
                                continue;
                        if (!test_bit(idx2, snd_cards_lock)) {
                                if (!slots[idx2] || !*slots[idx2]) {


Patches currently in stable-queue which might be from [email protected] 
are

queue-3.12/zram-fix-race-between-reset-and-flushing-pending-work.patch
queue-3.12/alsa-bits-vs-bytes-bug-in-snd_card_create.patch
--
To unsubscribe from this list: send the line "unsubscribe stable" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to