rem: err = user_memcpy(buf, cookie->s->u.file.start + pos, *len); if(err < 0) {
add: err = user_memcpy(buffer, cookie->s->u.file.start + pos, *_length); if (err < 0)
context: bootfs_read(fs_volume _fs, fs_vnode _v, fs_cookie _cookie, off_t pos, void *buf, size_t *len){	struct bootfs *fs = _fs;	struct bootfs_vnode *v = _v;	struct bootfs_cookie *cookie = _cookie;	ssize_t err = 0;	TRACE(("bootfs_read: vnode %p, cookie %p, pos 0x%Lx, len 0x%lx\n", v, cookie, pos, *len));	mutex_lock(&fs->lock);	switch(cookie->s->type) {		case STREAM_TYPE_FILE:			if(*len <= 0) {				err = 0;				break;			}			if(pos < 0) {				// we'll read where the cookie is at				pos = cookie->u.file.pos;			}			if(pos >= cookie->s->u.file.len) {				*len = 0;				err = ESPIPE;				break;			}			if(pos + *len > cookie->s->u.file.len) {				// trim the read				*len = cookie->s->u.file.len - pos;			}			err = user_memcpy(buf, cookie->s->u.file.start + pos, *len);			if(err < 0) {				goto err;			}			cookie->u.file.pos = pos + *len;			err = 0;			break;		default:			*len = 0;			err = EINVAL;	}err:	mutex_unlock(&fs->lock);	return err;}