Commit 858743c2 authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

[PATCH] soundcore.c referenced non-existent errno variable

Patch from: Petr Vandrovec <vandrove@vc.cvut.cz>

soundcore is trying to perform kernel syscalls to load firmware, but falls
afoul of missing `errno'.  Convert it to use VFS API functions.
parent 7bb503fc
#include <linux/vmalloc.h>
#define __KERNEL_SYSCALLS__
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/mm.h>
#include <linux/slab.h>
#include <linux/unistd.h>
#include <asm/uaccess.h>
static int do_mod_firmware_load(const char *fn, char **fp)
{
int fd;
struct file* filp;
long l;
char *dp;
loff_t pos;
fd = open(fn, 0, 0);
if (fd == -1)
filp = filp_open(fn, 0, 0);
if (IS_ERR(filp))
{
printk(KERN_INFO "Unable to load '%s'.\n", fn);
return 0;
}
l = lseek(fd, 0L, 2);
l = filp->f_dentry->d_inode->i_size;
if (l <= 0 || l > 131072)
{
printk(KERN_INFO "Invalid firmware '%s'\n", fn);
sys_close(fd);
filp_close(filp, 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);
filp_close(filp, NULL);
return 0;
}
if (read(fd, dp, l) != l)
pos = 0;
if (vfs_read(filp, dp, l, &pos) != l)
{
printk(KERN_INFO "Failed to read '%s'.\n", fn);
vfree(dp);
sys_close(fd);
filp_close(filp, NULL);
return 0;
}
close(fd);
filp_close(filp, NULL);
*fp = dp;
return (int) l;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment