On Fri, 15 Feb 2002, Duncan Sands wrote:

> Actually, the problem is deeper: even if I compile everything as
> modules, I still get "no such device" when trying to read from
> /proc/asound entries.  I will look into this further myself.

It's problem with recent 2.5 kernel. Try the attached patch.

                                                Jaroslav

-----
Jaroslav Kysela <[EMAIL PROTECTED]>
Linux Kernel Sound Maintainer
ALSA Project  http://www.alsa-project.org
SuSE Linux    http://www.suse.com
Index: info.c
===================================================================
RCS file: /cvsroot/alsa/alsa-kernel/core/info.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- info.c      14 Feb 2002 17:40:30 -0000      1.7
+++ info.c      15 Feb 2002 12:10:26 -0000      1.8
@@ -278,7 +278,7 @@
        int mode, err;
 
        down(&info_mutex);
-       p = (struct proc_dir_entry *) inode->u.generic_ip;
+       p = PDE(inode);
        entry = p == NULL ? NULL : (snd_info_entry_t *)p->data;
        if (entry == NULL) {
                up(&info_mutex);
@@ -541,7 +541,7 @@
 static int snd_info_card_readlink(struct dentry *dentry,
                                  char *buffer, int buflen)
 {
-        char *s = ((struct proc_dir_entry *) dentry->d_inode->u.generic_ip)->data;
+        char *s = PDE(dentry->d_inode)->data;
 #ifndef LINUX_2_2
        return vfs_readlink(dentry, buffer, buflen, s);
 #else
@@ -562,7 +562,7 @@
 static int snd_info_card_followlink(struct dentry *dentry,
                                    struct nameidata *nd)
 {
-        char *s = ((struct proc_dir_entry *) dentry->d_inode->u.generic_ip)->data;
+        char *s = PDE(dentry->d_inode)->data;
         return vfs_follow_link(nd, s);
 }
 #else
@@ -570,7 +570,7 @@
                                               struct dentry *base,
                                               unsigned int follow)
 {
-       char *s = ((struct proc_dir_entry *) dentry->d_inode->u.generic_ip)->data;
+       char *s = PDE(dentry->d_inode)->data;
        return lookup_dentry(s, base, follow);
 }
 #endif
@@ -845,7 +845,7 @@
                return;
        }
        MOD_INC_USE_COUNT;
-       de = (struct proc_dir_entry *) inode->u.generic_ip;
+       de = PDE(inode);
        if (de == NULL)
                return;
        entry = (snd_info_entry_t *) de->data;

Reply via email to