All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: Patch to fix Pax/Grsecurity Problems
@ 2004-01-23  9:40 Stephen Cook
  2004-01-23 18:25 ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: Stephen Cook @ 2004-01-23  9:40 UTC (permalink / raw)
  To: alsa-devel

I hope I don't sound to persistent but I am just wondering when this patch is going to be merged or if there is anything I can do to help speed it up.  Such as any changes to the patch etc.

Thanks
Stephen
--

--------- Original Message ---------

DATE: Mon, 12 Jan 2004 15:03:54
From: Takashi Iwai <tiwai@suse.de>
To: alsa-devel@lists.sourceforge.net
Cc: 

>At Mon, 12 Jan 2004 12:27:23 +1100,
>Stephen Cook wrote:
>> 
>> [1  <text/plain; us-ascii (7bit)>]
>> As you may be currently aware alsa-lib (libasound) does not work very well when using it under a kernel that has the Pax (http://pax.grsecurity.net) or Grsecurity (http://www.grsecurity.net) Patch.
>> 
>> The problem is because there is a function in a function (trampoline) - So gcc generates code that conflicts with pax.  Also there is a text-relocation problem.
>> 
>> So I helped create patch that will fix these problems so alsa will be more usable on a Pax/Grsecurity machine (no chpax work arounds and more security).  Currently this patch is included in alsa-lib-1.0.1 in Gentoo so it is undergoing large scale testing.  For my part I have 2 machines running with Pax and this alsa-lib patch and I have had no problems :)
>> 
>> The code is a work around so if you know of a better way to do it please tell me.
>
>i think this funciton-in-function is too dependent on gcc, too, and
>would like to get rid of it.  the patch looks fine for me.
>or, we can add ifdef if someone still wants to keep the original
>style.
>
>comments?
>
>
>Takashi
>
>
>> 
>> 
>> 
>> 
>> 
>> ____________________________________________________________
>> Get advanced SPAM filtering on Webmail or POP Mail ... Get Lycos Mail!
>> http://login.mail.lycos.com/r/referral?aid=27005
>> [2 alsa-lib-1.0.1-notextrel-notrampoline.patch <text/plain; us-ascii (7bit)>]
>> diff -Nru alsa-lib-1.0.0rc2-original/src/control/hcontrol.c alsa-lib-1.0.0rc2/src/control/hcontrol.c
>> --- alsa-lib-1.0.0rc2-original/src/control/hcontrol.c	Mon Oct 13 08:06:46 2003
>> +++ alsa-lib-1.0.0rc2/src/control/hcontrol.c	Sat Dec 20 13:48:32 2003
>> @@ -48,6 +48,7 @@
>>  #include <string.h>
>>  #include <fcntl.h>
>>  #include <sys/ioctl.h>
>> +#include <pthread.h>
>>  #ifndef DOC_HIDDEN
>>  #define __USE_GNU
>>  #endif
>> @@ -409,17 +410,26 @@
>>  	return 0;
>>  }
>>  
>> +static snd_hctl_t *compare_hctl;
>> +static int hctl_compare(const void *a, const void *b) {
>> +	return compare_hctl->compare(*(const snd_hctl_elem_t * const *) a,
>> +			     *(const snd_hctl_elem_t * const *) b);
>> +}
>> +
>>  static void snd_hctl_sort(snd_hctl_t *hctl)
>>  {
>>  	unsigned int k;
>> -	int compar(const void *a, const void *b) {
>> -		return hctl->compare(*(const snd_hctl_elem_t * const *) a,
>> -				     *(const snd_hctl_elem_t * const *) b);
>> -	}
>> +	static pthread_mutex_t sync_lock = PTHREAD_MUTEX_INITIALIZER;
>> +
>>  	assert(hctl);
>>  	assert(hctl->compare);
>>  	INIT_LIST_HEAD(&hctl->elems);
>> -	qsort(hctl->pelems, hctl->count, sizeof(*hctl->pelems), compar);
>> +
>> +	pthread_mutex_lock(&sync_lock);
>> +	compare_hctl = hctl;
>> +	qsort(hctl->pelems, hctl->count, sizeof(*hctl->pelems), hctl_compare);
>> +	pthread_mutex_unlock(&sync_lock);
>> +
>>  	for (k = 0; k < hctl->count; k++)
>>  		list_add_tail(&hctl->pelems[k]->list, &hctl->elems);
>>  }
>> diff -Nru alsa-lib-1.0.0rc2-original/src/pcm/pcm_direct.c alsa-lib-1.0.0rc2/src/pcm/pcm_direct.c
>> --- alsa-lib-1.0.0rc2-original/src/pcm/pcm_direct.c	Fri Oct 17 09:53:06 2003
>> +++ alsa-lib-1.0.0rc2/src/pcm/pcm_direct.c	Sat Dec 20 13:49:22 2003
>> @@ -98,7 +98,6 @@
>>  
>>  int snd_pcm_direct_shm_create_or_connect(snd_pcm_direct_t *dmix)
>>  {
>> -	static int snd_pcm_direct_shm_discard(snd_pcm_direct_t *dmix);
>>  	struct shmid_ds buf;
>>  	int ret = 0;
>>  	
>
>
>-------------------------------------------------------
>This SF.net email is sponsored by: Perforce Software.
>Perforce is the Fast Software Configuration Management System offering
>advanced branching capabilities and atomic changes on 50+ platforms.
>Free Eval! http://www.perforce.com/perforce/loadprog.html
>_______________________________________________
>Alsa-devel mailing list
>Alsa-devel@lists.sourceforge.net
>https://lists.sourceforge.net/lists/listinfo/alsa-devel
>



____________________________________________________________
Get advanced SPAM filtering on Webmail or POP Mail ... Get Lycos Mail!
http://login.mail.lycos.com/r/referral?aid=27005


-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn

^ permalink raw reply	[flat|nested] 6+ messages in thread
* Patch to fix Pax/Grsecurity Problems
@ 2004-01-12  1:27 Stephen Cook
  2004-01-12 14:03 ` Takashi Iwai
  0 siblings, 1 reply; 6+ messages in thread
From: Stephen Cook @ 2004-01-12  1:27 UTC (permalink / raw)
  To: alsa-devel

[-- Attachment #1: Type: text/plain, Size: 987 bytes --]

As you may be currently aware alsa-lib (libasound) does not work very well when using it under a kernel that has the Pax (http://pax.grsecurity.net) or Grsecurity (http://www.grsecurity.net) Patch.

The problem is because there is a function in a function (trampoline) - So gcc generates code that conflicts with pax.  Also there is a text-relocation problem.

So I helped create patch that will fix these problems so alsa will be more usable on a Pax/Grsecurity machine (no chpax work arounds and more security).  Currently this patch is included in alsa-lib-1.0.1 in Gentoo so it is undergoing large scale testing.  For my part I have 2 machines running with Pax and this alsa-lib patch and I have had no problems :)

The code is a work around so if you know of a better way to do it please tell me.





____________________________________________________________
Get advanced SPAM filtering on Webmail or POP Mail ... Get Lycos Mail!
http://login.mail.lycos.com/r/referral?aid=27005

[-- Attachment #2: alsa-lib-1.0.1-notextrel-notrampoline.patch --]
[-- Type: text/plain, Size: 1787 bytes --]

diff -Nru alsa-lib-1.0.0rc2-original/src/control/hcontrol.c alsa-lib-1.0.0rc2/src/control/hcontrol.c
--- alsa-lib-1.0.0rc2-original/src/control/hcontrol.c	Mon Oct 13 08:06:46 2003
+++ alsa-lib-1.0.0rc2/src/control/hcontrol.c	Sat Dec 20 13:48:32 2003
@@ -48,6 +48,7 @@
 #include <string.h>
 #include <fcntl.h>
 #include <sys/ioctl.h>
+#include <pthread.h>
 #ifndef DOC_HIDDEN
 #define __USE_GNU
 #endif
@@ -409,17 +410,26 @@
 	return 0;
 }
 
+static snd_hctl_t *compare_hctl;
+static int hctl_compare(const void *a, const void *b) {
+	return compare_hctl->compare(*(const snd_hctl_elem_t * const *) a,
+			     *(const snd_hctl_elem_t * const *) b);
+}
+
 static void snd_hctl_sort(snd_hctl_t *hctl)
 {
 	unsigned int k;
-	int compar(const void *a, const void *b) {
-		return hctl->compare(*(const snd_hctl_elem_t * const *) a,
-				     *(const snd_hctl_elem_t * const *) b);
-	}
+	static pthread_mutex_t sync_lock = PTHREAD_MUTEX_INITIALIZER;
+
 	assert(hctl);
 	assert(hctl->compare);
 	INIT_LIST_HEAD(&hctl->elems);
-	qsort(hctl->pelems, hctl->count, sizeof(*hctl->pelems), compar);
+
+	pthread_mutex_lock(&sync_lock);
+	compare_hctl = hctl;
+	qsort(hctl->pelems, hctl->count, sizeof(*hctl->pelems), hctl_compare);
+	pthread_mutex_unlock(&sync_lock);
+
 	for (k = 0; k < hctl->count; k++)
 		list_add_tail(&hctl->pelems[k]->list, &hctl->elems);
 }
diff -Nru alsa-lib-1.0.0rc2-original/src/pcm/pcm_direct.c alsa-lib-1.0.0rc2/src/pcm/pcm_direct.c
--- alsa-lib-1.0.0rc2-original/src/pcm/pcm_direct.c	Fri Oct 17 09:53:06 2003
+++ alsa-lib-1.0.0rc2/src/pcm/pcm_direct.c	Sat Dec 20 13:49:22 2003
@@ -98,7 +98,6 @@
 
 int snd_pcm_direct_shm_create_or_connect(snd_pcm_direct_t *dmix)
 {
-	static int snd_pcm_direct_shm_discard(snd_pcm_direct_t *dmix);
 	struct shmid_ds buf;
 	int ret = 0;
 	

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2004-01-26 15:58 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-01-23  9:40 Patch to fix Pax/Grsecurity Problems Stephen Cook
2004-01-23 18:25 ` Takashi Iwai
2004-01-26 13:45   ` Clemens Ladisch
2004-01-26 15:58     ` Takashi Iwai
  -- strict thread matches above, loose matches on Subject: below --
2004-01-12  1:27 Stephen Cook
2004-01-12 14:03 ` Takashi Iwai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.