How to best return errors on follow_link
Steve French <[email protected]>
| Newsgroups | gmane.linux.file-systems,gmane.linux.file-systems.cifs |
|---|---|
| Message-ID | <[email protected]> |
Jeff noticed a problem with the error handling in cifs_follow_link
that brought up a question about how follow_link is supposed to be
handling errors. His change has a sideeffect of now returning NULL
instead of an ENOMEM on memory allocation errors in cifs_follow_link.
The caller of follow_link in the VFS (__do_follow_link) seems to
expect errors to be returned (see below piece of fs/namei.c) not a
NULL ptr:
cookie = dentry->d_inode->i_op->follow_link(dentry, nd);
error = PTR_ERR(cookie);
if (!IS_ERR(cookie)) {
char *s = nd_get_link(nd);
error = 0;
if (s)
error = __vfs_follow_link(nd, s);
if (dentry->d_inode->i_op->put_link)
dentry->d_inode->i_op->put_link(dentry, nd, cookie);
}
path_put(path);
return error;
Some file systems rather than returning an error to the caller will
call nd_set_link while will set: nd->saved_names[nd->depth] =
to the error;
Is it ok to return errors on follow_link - seems strange to return
them indicectly via set_link?
--
Thanks,
Steve
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html