* Unhelpful permissions in some /proc files
@ 2005-04-01 21:19 Guillaume Chazarain
2005-04-04 10:32 ` Takashi Iwai
0 siblings, 1 reply; 4+ messages in thread
From: Guillaume Chazarain @ 2005-04-01 21:19 UTC (permalink / raw)
To: alsa-devel
[-- Attachment #1: Type: text/plain, Size: 435 bytes --]
Hello,
Some tunables in /proc have a write() function, but as their
permission does not reflect it, it can be confusing to the user.
So here is a patch that corrects the mode of those files. Note that I
have only tested the "xrun_debug" entry.
Also, there is a little inconsistency in that some code does
'entry->mode = S_IFREG | S_IRUGO | S_IWUSR;' whereas some other does
'entry->mode |= S_IWUSR;'.
Kind regards.
--
Guillaume
[-- Attachment #2: alsa_proc_mode.diff --]
[-- Type: text/x-patch, Size: 4378 bytes --]
--- linux-2.6.12-rc1-bk3/sound/core/pcm.c
+++ linux-2.6.12-rc1-bk3-new/sound/core/pcm.c
@@ -447,6 +447,7 @@ static int snd_pcm_stream_proc_init(snd_
#ifdef CONFIG_SND_DEBUG
if ((entry = snd_info_create_card_entry(pcm->card, "xrun_debug", pstr->proc_root)) != NULL) {
+ entry->mode = S_IFREG | S_IRUGO | S_IWUSR;
entry->c.text.read_size = 64;
entry->c.text.read = snd_pcm_xrun_debug_read;
entry->c.text.write_size = 64;
--- linux-2.6.12-rc1-bk3/sound/core/pcm_memory.c
+++ linux-2.6.12-rc1-bk3-new/sound/core/pcm_memory.c
@@ -200,6 +200,7 @@ static int snd_pcm_lib_preallocate_pages
substream->buffer_bytes_max = substream->dma_buffer.bytes;
substream->dma_max = max;
if ((entry = snd_info_create_card_entry(substream->pcm->card, "prealloc", substream->proc_root)) != NULL) {
+ entry->mode = S_IFREG | S_IRUGO | S_IWUSR;
entry->c.text.read_size = 64;
entry->c.text.read = snd_pcm_lib_preallocate_proc_read;
entry->c.text.write_size = 64;
--- linux-2.6.12-rc1-bk3/sound/drivers/opl4/opl4_proc.c
+++ linux-2.6.12-rc1-bk3-new/sound/drivers/opl4/opl4_proc.c
@@ -145,6 +145,7 @@ int snd_opl4_create_proc(opl4_t *opl4)
entry->size = 1 * 1024 * 1024;
}
entry->content = SNDRV_INFO_CONTENT_DATA;
+ entry->mode = S_IFREG | S_IRUGO | S_IWUSR;
entry->c.ops = &snd_opl4_mem_proc_ops;
entry->module = THIS_MODULE;
entry->private_data = opl4;
--- linux-2.6.12-rc1-bk3/sound/pci/ca0106/ca0106_proc.c
+++ linux-2.6.12-rc1-bk3-new/sound/pci/ca0106/ca0106_proc.c
@@ -416,6 +416,7 @@ int __devinit snd_ca0106_proc_init(ca010
snd_info_set_text_ops(entry, emu, 1024, snd_ca0106_proc_iec958);
if(! snd_card_proc_new(emu->card, "ca0106_reg32", &entry)) {
snd_info_set_text_ops(entry, emu, 1024, snd_ca0106_proc_reg_read32);
+ entry->mode = S_IFREG | S_IRUGO | S_IWUSR;
entry->c.text.write_size = 64;
entry->c.text.write = snd_ca0106_proc_reg_write32;
}
@@ -425,6 +426,7 @@ int __devinit snd_ca0106_proc_init(ca010
snd_info_set_text_ops(entry, emu, 1024, snd_ca0106_proc_reg_read8);
if(! snd_card_proc_new(emu->card, "ca0106_regs1", &entry)) {
snd_info_set_text_ops(entry, emu, 1024, snd_ca0106_proc_reg_read1);
+ entry->mode = S_IFREG | S_IRUGO | S_IWUSR;
entry->c.text.write_size = 64;
entry->c.text.write = snd_ca0106_proc_reg_write;
// entry->private_data = emu;
--- linux-2.6.12-rc1-bk3/sound/pci/emu10k1/emu10k1x.c
+++ linux-2.6.12-rc1-bk3-new/sound/pci/emu10k1/emu10k1x.c
@@ -1073,6 +1073,7 @@ static int __devinit snd_emu10k1x_proc_i
if(! snd_card_proc_new(emu->card, "emu10k1x_regs", &entry)) {
snd_info_set_text_ops(entry, emu, 1024, snd_emu10k1x_proc_reg_read);
+ entry->mode = S_IFREG | S_IRUGO | S_IWUSR;
entry->c.text.write_size = 64;
entry->c.text.write = snd_emu10k1x_proc_reg_write;
entry->private_data = emu;
--- linux-2.6.12-rc1-bk3/sound/pci/emu10k1/emuproc.c
+++ linux-2.6.12-rc1-bk3-new/sound/pci/emu10k1/emuproc.c
@@ -498,26 +498,31 @@ int __devinit snd_emu10k1_proc_init(emu1
#ifdef CONFIG_SND_DEBUG
if (! snd_card_proc_new(emu->card, "io_regs", &entry)) {
snd_info_set_text_ops(entry, emu, 1024, snd_emu_proc_io_reg_read);
+ entry->mode = S_IFREG | S_IRUGO | S_IWUSR;
entry->c.text.write_size = 64;
entry->c.text.write = snd_emu_proc_io_reg_write;
}
if (! snd_card_proc_new(emu->card, "ptr_regs00a", &entry)) {
snd_info_set_text_ops(entry, emu, 65536, snd_emu_proc_ptr_reg_read00a);
+ entry->mode = S_IFREG | S_IRUGO | S_IWUSR;
entry->c.text.write_size = 64;
entry->c.text.write = snd_emu_proc_ptr_reg_write00;
}
if (! snd_card_proc_new(emu->card, "ptr_regs00b", &entry)) {
snd_info_set_text_ops(entry, emu, 65536, snd_emu_proc_ptr_reg_read00b);
+ entry->mode = S_IFREG | S_IRUGO | S_IWUSR;
entry->c.text.write_size = 64;
entry->c.text.write = snd_emu_proc_ptr_reg_write00;
}
if (! snd_card_proc_new(emu->card, "ptr_regs20a", &entry)) {
snd_info_set_text_ops(entry, emu, 65536, snd_emu_proc_ptr_reg_read20a);
+ entry->mode = S_IFREG | S_IRUGO | S_IWUSR;
entry->c.text.write_size = 64;
entry->c.text.write = snd_emu_proc_ptr_reg_write20;
}
if (! snd_card_proc_new(emu->card, "ptr_regs20b", &entry)) {
snd_info_set_text_ops(entry, emu, 65536, snd_emu_proc_ptr_reg_read20b);
+ entry->mode = S_IFREG | S_IRUGO | S_IWUSR;
entry->c.text.write_size = 64;
entry->c.text.write = snd_emu_proc_ptr_reg_write20;
}
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: Unhelpful permissions in some /proc files
2005-04-01 21:19 Unhelpful permissions in some /proc files Guillaume Chazarain
@ 2005-04-04 10:32 ` Takashi Iwai
2005-04-04 12:24 ` Guillaume Chazarain
0 siblings, 1 reply; 4+ messages in thread
From: Takashi Iwai @ 2005-04-04 10:32 UTC (permalink / raw)
To: Guillaume Chazarain; +Cc: alsa-devel
[-- Attachment #1: Type: text/plain, Size: 681 bytes --]
At Fri, 01 Apr 2005 23:19:37 +0200,
Guillaume Chazarain wrote:
>
> Hello,
>
> Some tunables in /proc have a write() function, but as their
> permission does not reflect it, it can be confusing to the user.
>
> So here is a patch that corrects the mode of those files. Note that I
> have only tested the "xrun_debug" entry.
Thanks for the patch.
> Also, there is a little inconsistency in that some code does
> 'entry->mode = S_IFREG | S_IRUGO | S_IWUSR;' whereas some other does
> 'entry->mode |= S_IWUSR;'.
I think the latter form is enough.
BTW, instead of patching each part, checking S_IWUSR in
snd_info_register() may an easier solution. The patch is below.
Takashi
[-- Attachment #2: Type: text/plain, Size: 800 bytes --]
Index: alsa-kernel/core/info.c
===================================================================
RCS file: /home/iwai/cvs/alsa/alsa-kernel/core/info.c,v
retrieving revision 1.48
diff -u -r1.48 info.c
--- alsa-kernel/core/info.c 22 Mar 2005 15:18:27 -0000 1.48
+++ alsa-kernel/core/info.c 4 Apr 2005 10:31:14 -0000
@@ -910,6 +910,12 @@
snd_assert(entry != NULL, return -ENXIO);
root = entry->parent == NULL ? snd_proc_root : entry->parent->p;
+ if ((entry->content == SNDRV_INFO_CONTENT_TEXT && entry->c.text.write_size) ||
+ (entry->content == SNDRV_INFO_CONTENT_DATA && entry->c.ops->write)) {
+ /* fix up write permission */
+ if (! (entry->mode & S_IWUGO))
+ entry->mode |= S_IWUSR;
+ }
down(&info_mutex);
p = snd_create_proc_entry(entry->name, entry->mode, root);
if (!p) {
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: Unhelpful permissions in some /proc files
2005-04-04 10:32 ` Takashi Iwai
@ 2005-04-04 12:24 ` Guillaume Chazarain
2005-04-12 15:34 ` Takashi Iwai
0 siblings, 1 reply; 4+ messages in thread
From: Guillaume Chazarain @ 2005-04-04 12:24 UTC (permalink / raw)
To: Takashi Iwai; +Cc: alsa-devel
Takashi Iwai wrote:
>BTW, instead of patching each part, checking S_IWUSR in
>snd_info_register() may an easier solution. The patch is below.
>
>
Yes, of course, but I didn't like the fact that it looked like a fix
done by the callee.
Either snd_info_register() is passed good permissions and it doesn't
change them,
or its job to set them, then they should not be set before.
The comment in your patch explained exactly what I felt, but anyway, if
you like
it that way, it's fine for me too.
>+ /* fix up write permission */
>
--
Guillaume
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: Unhelpful permissions in some /proc files
2005-04-04 12:24 ` Guillaume Chazarain
@ 2005-04-12 15:34 ` Takashi Iwai
0 siblings, 0 replies; 4+ messages in thread
From: Takashi Iwai @ 2005-04-12 15:34 UTC (permalink / raw)
To: Guillaume Chazarain; +Cc: alsa-devel
At Mon, 04 Apr 2005 14:24:44 +0200,
Guillaume Chazarain wrote:
>
> Takashi Iwai wrote:
>
> >BTW, instead of patching each part, checking S_IWUSR in
> >snd_info_register() may an easier solution. The patch is below.
> >
> >
> Yes, of course, but I didn't like the fact that it looked like a fix
> done by the callee.
> Either snd_info_register() is passed good permissions and it doesn't
> change them,
> or its job to set them, then they should not be set before.
>
> The comment in your patch explained exactly what I felt, but anyway, if
> you like
> it that way, it's fine for me too.
Sorry for the late response. I forgot this one.
Well, since the changes are not in many places anyway, I just added
the permission in each place as you did. Now it's fixed on CVS.
Thanks,
Takashi
-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2005-04-12 15:34 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-04-01 21:19 Unhelpful permissions in some /proc files Guillaume Chazarain
2005-04-04 10:32 ` Takashi Iwai
2005-04-04 12:24 ` Guillaume Chazarain
2005-04-12 15:34 ` 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.