Bug 1007626 - [exportfs] Validate export entry fail. And when start nfs server, should not export the invalid entry;
[exportfs] Validate export entry fail. And when start nfs server, should not ...
Status: CLOSED WONTFIX
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: nfs-utils (Show other bugs)
5.10
All Linux
unspecified Severity unspecified
: rc
: ---
Assigned To: Steve Dickson
Red Hat Kernel QE team
:
Depends On:
Blocks: 1007627 1007628
  Show dependency treegraph
 
Reported: 2013-09-12 22:14 EDT by Yin.JianHong
Modified: 2014-02-05 17:16 EST (History)
2 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1007627 1007628 (view as bug list)
Environment:
Last Closed: 2014-02-05 17:16:39 EST
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)

  None (edit)
Description Yin.JianHong 2013-09-12 22:14:47 EDT
Description of problem:
when start nfs server, we should verify the export entries:
  -when I export an directory in tmpfs without fsid= specified,
  -I can export successfuly, * but can not mount it from client.
  --the server log indicate: "Cannot export $dir, possibly unsupported filesystem or fsid= required"
  -We think that, exportfs should verify the export entries, if invalid then tell user that's invalid, cannot export

Version-Release number of selected component (if applicable):
all version in RHEL5.9 5.10 6.x 7.0

How reproducible:
100%

Steps to Reproduce:
0. backup your /etc/exports
1. echo "/dev/shm  *(ro)" >/etc/exports
2. service nfs restart
3. exportfs   or  showmount -e

Actual results:
service nfs restart           ok
exportfs output:
/dev/shm      <world>

Expected results:
service nfs restart           should output error/warn: 
and should not export success, exportfs no output

Additional info:
Comment 1 Yin.JianHong 2013-09-13 08:28:48 EDT
Debug, and review the code of exportfs,
find that: this is a bug of exportfs(also about kernel):

static int test_export(char *path, int with_fsid)
{
        char buf[1024];
        int fd, n;

        sprintf(buf, "-test-client- %s 3 %d -1 -1 0\n",
                path,
                with_fsid ? NFSEXP_FSID : 0);
        fd = open("/proc/net/rpc/nfsd.export/channel", O_WRONLY);
        if (fd < 0)
                return 0;
        n = write(fd, buf, strlen(buf));
        close(fd);
        if (n < 0)
                return 0;
        return 1;
}

1. if the path is an tmpfs(no uuid), and with_fsid==0,
this function test_export still return 1 (write success). that's wrong.

2. and another problem: validate_export() just generate log and return void.
We think that validate_export() should return an int value to indicate whether the path can export. And in export_all(), should not export the path if invalid;

static void
export_all(int verbose)
{
        nfs_export      *exp;
        int             i;

        for (i = 0; i < MCL_MAXTYPES; i++) {
                for (exp = exportlist[i].p_head; exp; exp = exp->m_next) {
                        if (verbose)
                                printf("exporting %s:%s\n",
                                       exp->m_client->m_hostname,
                                       exp->m_export.e_path);
                        exp->m_xtabent = 1;
                        exp->m_mayexport = 1;
                        exp->m_changed = 1;
                        exp->m_warned = 0;
                        validate_export(exp);
                }
        }
}


static void <<<- should return int value to indicate whether the path can export
validate_export(nfs_export *exp)
{
Comment 2 Yin.JianHong 2013-09-14 02:52:40 EDT
#BEGIN
--- exportfs.c	2013-06-06 15:12:58.881567360 +0800
+++ exportfs.c.new	2013-09-14 14:50:56.719877598 +0800
@@ -475,6 +475,9 @@ validate_export(nfs_export *exp)
 			xlog(L_ERROR, "%s does not support NFS export", path);
 		return;
 
+	} else {
+		xlog(L_ERROR, "Assert: test_export() %s fail", path);
+		return;
 	}
 }

#END

this patch could avoid the test_export work fail.
Comment 3 RHEL Product and Program Management 2014-01-29 05:34:12 EST
This request was evaluated by Red Hat Product Management for inclusion
in a Red Hat Enterprise Linux release.  Product Management has
requested further review of this request by Red Hat Engineering, for
potential inclusion in a Red Hat Enterprise Linux release for currently
deployed products.  This request is not yet committed for inclusion in
a release.
Comment 4 RHEL Product and Program Management 2014-02-05 17:16:39 EST
Development Management has reviewed and declined this request.
You may appeal this decision by reopening this request.

Note You need to log in before you can comment on or make changes to this bug.