On Mon, 2002-02-18 at 15:12, Jaroslav Kysela wrote:

> Sorry to reply too late, but I've not received this email before. It seems
> that LKML has some trouble. Only the part of patch for sound/core/info.c
> is valid, because llseek in gus_mem_proc.c is called from snd_info_entry_llseek(),
> thus the function is already protected.

Ah, the lseek in sound/isa/gus/gus_mem_proc.c :: snd_gf1_mem_proc_llseek
is _only_ called from info.c's lseek?  Then, indeed, we can remove it.

Attached patch below only adds the BKL to info.c's lseek.  Thanks,

        Robert Love

--- linux-2.5.5-pre1/sound/core/info.c  Wed Feb 13 18:18:59 2002
+++ linux/sound/core/info.c     Sat Feb 16 18:17:39 2002
@@ -160,31 +160,41 @@
 {
        snd_info_private_data_t *data;
        struct snd_info_entry *entry;
+       int ret;
 
        data = snd_magic_cast(snd_info_private_data_t, file->private_data, return 
-ENXIO);
        entry = data->entry;
+       lock_kernel();
        switch (entry->content) {
        case SNDRV_INFO_CONTENT_TEXT:
                switch (orig) {
                case 0: /* SEEK_SET */
                        file->f_pos = offset;
-                       return file->f_pos;
+                       ret = file->f_pos;
+                       goto out;
                case 1: /* SEEK_CUR */
                        file->f_pos += offset;
-                       return file->f_pos;
+                       ret = file->f_pos;
+                       goto out;
                case 2: /* SEEK_END */
                default:
-                       return -EINVAL;
+                       ret = -EINVAL;
+                       goto out;
                }
                break;
        case SNDRV_INFO_CONTENT_DATA:
-               if (entry->c.ops->llseek)
-                       return entry->c.ops->llseek(entry,
+               if (entry->c.ops->llseek) {
+                       ret = entry->c.ops->llseek(entry,
                                                    data->file_private_data,
                                                    file, offset, orig);
+                       goto out;
+               }
                break;
        }
-       return -ENXIO;
+       ret = -ENXIO;
+out:
+       unlock_kernel();
+       return ret;
 }
 
 static ssize_t snd_info_entry_read(struct file *file, char *buffer,


_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to