Patch "staging: bcm2835-audio: Fix memory corruption" has been added to the 4.13-stable tree
Subsystems (4)
This is a note to let you know that I've just added the patch titled
staging: bcm2835-audio: Fix memory corruption
to the 4.13-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:
staging-bcm2835-audio-fix-memory-corruption.patch
and it can be found in the queue-4.13 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
c97d96b4e612c7dc1b37d7afc61b598a9a25994dMon Sep 17 00:00:00 2001
From: Phil Elwell <[email protected]>
Date: Sun, 24 Sep 2017 15:20:49 +0100
Subject: staging: bcm2835-audio: Fix memory corruption
From: Phil Elwell <[email protected]>
commit c97d96b4e612c7dc1b37d7afc61b598a9a25994d upstream.
The previous commit (0adbfd46) fixed a memory leak but also freed a block in the success case, causing a stale pointer to be used with potentially fatal results. Only free the vchi_instance block in the case that vchi_connect fails; once connected, the instance is retained for subsequent connections.
Simplifying the code by removing a bunch of gotos and returning errors directly.
--- drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c | 19 ++++-------- 1 file changed, 7 insertions(+), 12 deletions(-)
drivers/staging/vc04_services/bcm2835-audio/bcm2835-vchiq.c +7 -12
@@ -390,8 +390,7 @@ static int bcm2835_audio_open_connection __func__, instance); instance->alsa_stream = alsa_stream; alsa_stream->instance = instance; - ret =0 ;// xxx todo -1; - goto err_free_mem; +return 0 ; }/* Initialize and create a VCHI connection */
@@ -401,16 +400,15 @@ static int bcm2835_audio_open_connectionLOG_ERR ("%s: failed to initialise VCHI instance (ret=%d)\n" , __func__, ret); - ret = -EIO ; - goto err_free_mem; +return -EIO ; } ret =vchi_connect (NULL ,0 , vchi_instance);if (ret) {LOG_ERR ("%s: failed to connect VCHI instance (ret=%d)\n" , __func__, ret); - ret = -EIO ; - goto err_free_mem; +kfree (vchi_instance); +return -EIO ; } initted =1 ; }
@@ -421,19 +419,16 @@ static int bcm2835_audio_open_connectionif (IS_ERR (instance)) {LOG_ERR ("%s: failed to initialize audio service\n" , __func__); - ret =PTR_ERR (instance); - goto err_free_mem; +/* vchi_instance is retained for use the next time. */ +return PTR_ERR (instance); } instance->alsa_stream = alsa_stream; alsa_stream->instance = instance;LOG_DBG (" success !\n" ); - ret =0 ; -err_free_mem: -kfree (vchi_instance); -return ret; +return 0 ; }int bcm2835_audio_open (struct bcm2835_alsa_stream *alsa_stream)
Patches currently in stable-queue which might be from [email protected] are
queue-4.13/staging-bcm2835-audio-fix-memory-corruption.patch