We should return the errno that was set before po_destroy, rather than the errno that was set at po_destroy. Because the po_destroy function don't affect the return value, this patch just revert the saved errno after po_destroy. Signed-off-by: Bian Naimeng <biannm@xxxxxxxxxxxxxx> Signed-off-by: Mi Jinlong <mijinlong@xxxxxxxxxxxxxx> --- utils/mount/stropts.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-) diff --git a/utils/mount/stropts.c b/utils/mount/stropts.c index 50a1a2a..d554877 100644 --- a/utils/mount/stropts.c +++ b/utils/mount/stropts.c @@ -592,7 +592,7 @@ static int nfs_do_mount_v3v2(struct nfsmount_info *mi, struct sockaddr *sap, socklen_t salen) { struct mount_options *options = po_dup(mi->options); - int result = 0; + int result = 0, save = 0; if (!options) { errno = ENOMEM; @@ -637,7 +637,9 @@ static int nfs_do_mount_v3v2(struct nfsmount_info *mi, result = nfs_sys_mount(mi, options); out_fail: + save = errno; po_destroy(options); + errno = save; return result; } @@ -673,7 +675,7 @@ static int nfs_do_mount_v4(struct nfsmount_info *mi, struct sockaddr *sap, socklen_t salen) { struct mount_options *options = po_dup(mi->options); - int result = 0; + int result = 0, save = 0; if (!options) { errno = ENOMEM; @@ -724,7 +726,9 @@ static int nfs_do_mount_v4(struct nfsmount_info *mi, result = nfs_sys_mount(mi, options); out_fail: + save = errno; po_destroy(options); + errno = save; return result; } -- 1.7.3.2 -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html