]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/usb/core/inode.c
usbcore: make usb_generic a usb_device_driver
[linux-2.6-omap-h63xx.git] / drivers / usb / core / inode.c
index e47e3a8ed6e4b62cd2f81fbd590c1fd9515638fb..58b4b1012120ae5b13c4d9685cda210cf340c3d2 100644 (file)
@@ -200,7 +200,7 @@ static void update_sb(struct super_block *sb)
        if (!root)
                return;
 
-       mutex_lock(&root->d_inode->i_mutex);
+       mutex_lock_nested(&root->d_inode->i_mutex, I_MUTEX_PARENT);
 
        list_for_each_entry(bus, &root->d_subdirs, d_u.d_child) {
                if (bus->d_inode) {
@@ -249,7 +249,6 @@ static struct inode *usbfs_get_inode (struct super_block *sb, int mode, dev_t de
                inode->i_mode = mode;
                inode->i_uid = current->fsuid;
                inode->i_gid = current->fsgid;
-               inode->i_blksize = PAGE_CACHE_SIZE;
                inode->i_blocks = 0;
                inode->i_atime = inode->i_mtime = inode->i_ctime = CURRENT_TIME;
                switch (mode & S_IFMT) {
@@ -402,8 +401,8 @@ static loff_t default_file_lseek (struct file *file, loff_t offset, int orig)
 
 static int default_open (struct inode *inode, struct file *file)
 {
-       if (inode->u.generic_ip)
-               file->private_data = inode->u.generic_ip;
+       if (inode->i_private)
+               file->private_data = inode->i_private;
 
        return 0;
 }
@@ -509,7 +508,7 @@ static struct dentry *fs_create_file (const char *name, mode_t mode,
        } else {
                if (dentry->d_inode) {
                        if (data)
-                               dentry->d_inode->u.generic_ip = data;
+                               dentry->d_inode->i_private = data;
                        if (fops)
                                dentry->d_inode->i_fop = fops;
                        dentry->d_inode->i_uid = uid;
@@ -527,7 +526,7 @@ static void fs_remove_file (struct dentry *dentry)
        if (!parent || !parent->d_inode)
                return;
 
-       mutex_lock(&parent->d_inode->i_mutex);
+       mutex_lock_nested(&parent->d_inode->i_mutex, I_MUTEX_PARENT);
        if (usbfs_positive(dentry)) {
                if (dentry->d_inode) {
                        if (S_ISDIR(dentry->d_inode->i_mode))
@@ -695,7 +694,7 @@ static void usbfs_remove_device(struct usb_device *dev)
                wake_up_all(&ds->wait);
                list_del_init(&ds->list);
                if (ds->discsignr) {
-                       sinfo.si_signo = SIGPIPE;
+                       sinfo.si_signo = ds->discsignr;
                        sinfo.si_errno = EPIPE;
                        sinfo.si_code = SI_ASYNCIO;
                        sinfo.si_addr = ds->disccontext;