On the first try this should look like
if (!file->f_op && !file->f_op->read)
shouldn't it?
> goto out;
> error = 0;
> if (count <= 0)
> goto out;
>
> The Oops occures at the !file->f_op->read test, i.e. file->f_op is invalid!
Werner