--- linux-2.5.59/sound/sound_firmware.c 2003-01-16 18:21:34.000000000 -0800 +++ linux/sound/sound_firmware.c 2003-01-17 15:38:38.000000000 -0800 @@ -9,41 +9,35 @@ static int do_mod_firmware_load(const char *fn, char **fp) { - int fd; + struct file *file; long l; char *dp; - fd = open(fn, 0, 0); - if (fd == -1) + file = filp_open(fn, O_RDONLY, 0); + if (!file) { printk(KERN_INFO "Unable to load '%s'.\n", fn); return 0; } - l = lseek(fd, 0L, 2); + l = file->f_dentry->d_inode->i_size; if (l <= 0 || l > 131072) { printk(KERN_INFO "Invalid firmware '%s'\n", fn); - sys_close(fd); + filp_close(file, NULL); return 0; } - lseek(fd, 0L, 0); dp = vmalloc(l); - if (dp == NULL) - { - printk(KERN_INFO "Out of memory loading '%s'.\n", fn); - sys_close(fd); - return 0; - } - if (read(fd, dp, l) != l) - { + if (dp != NULL) { + if (vfs_read(file, dp, l, &file->f_pos) == l) { + filp_close(file, NULL); + *fp = dp; + return (int) l; + } printk(KERN_INFO "Failed to read '%s'.\n", fn); vfree(dp); - sys_close(fd); - return 0; } - close(fd); - *fp = dp; - return (int) l; + filp_close(file, NULL); + return 0; } /**