Skip to content

Commit 49b2868

Browse files
neilbrownJ. Bruce Fields
authored and
J. Bruce Fields
committed
nfsd: Remove deprecated nfsctl system call and related code.
As promised in feature-removal-schedule.txt it is time to remove the nfsctl system call. Userspace has perferred to not use this call throughout 2.6 and it has been excluded in the default configuration since 2.6.36 (9 months ago). So this patch removes all the code that was being compiled out. There are still references to sys_nfsctl in various arch systemcall tables and related code. These should be cleaned out too, probably in the next merge window. Signed-off-by: NeilBrown <[email protected]> Signed-off-by: J. Bruce Fields <[email protected]>
1 parent 094b5d7 commit 49b2868

File tree

14 files changed

+0
-1238
lines changed

14 files changed

+0
-1238
lines changed

Documentation/feature-removal-schedule.txt

-10
Original file line numberDiff line numberDiff line change
@@ -491,16 +491,6 @@ Who: Wey-Yi Guy <[email protected]>
491491

492492
----------------------------
493493

494-
What: access to nfsd auth cache through sys_nfsservctl or '.' files
495-
in the 'nfsd' filesystem.
496-
When: 2.6.40
497-
Why: This is a legacy interface which have been replaced by a more
498-
dynamic cache. Continuing to maintain this interface is an
499-
unnecessary burden.
500-
Who: NeilBrown <[email protected]>
501-
502-
----------------------------
503-
504494
What: cancel_rearming_delayed_work[queue]()
505495
When: 2.6.39
506496

arch/tile/configs/tilegx_defconfig

-1
Original file line numberDiff line numberDiff line change
@@ -1479,7 +1479,6 @@ CONFIG_NFS_FSCACHE=y
14791479
CONFIG_NFS_USE_KERNEL_DNS=y
14801480
# CONFIG_NFS_USE_NEW_IDMAPPER is not set
14811481
CONFIG_NFSD=m
1482-
CONFIG_NFSD_DEPRECATED=y
14831482
CONFIG_NFSD_V2_ACL=y
14841483
CONFIG_NFSD_V3=y
14851484
CONFIG_NFSD_V3_ACL=y

fs/Makefile

-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ obj-$(CONFIG_EVENTFD) += eventfd.o
2929
obj-$(CONFIG_AIO) += aio.o
3030
obj-$(CONFIG_FILE_LOCKING) += locks.o
3131
obj-$(CONFIG_COMPAT) += compat.o compat_ioctl.o
32-
obj-$(CONFIG_NFSD_DEPRECATED) += nfsctl.o
3332
obj-$(CONFIG_BINFMT_AOUT) += binfmt_aout.o
3433
obj-$(CONFIG_BINFMT_EM86) += binfmt_em86.o
3534
obj-$(CONFIG_BINFMT_MISC) += binfmt_misc.o

fs/compat.c

-246
Original file line numberDiff line numberDiff line change
@@ -1675,256 +1675,10 @@ asmlinkage long compat_sys_ppoll(struct pollfd __user *ufds,
16751675
}
16761676
#endif /* HAVE_SET_RESTORE_SIGMASK */
16771677

1678-
#if (defined(CONFIG_NFSD) || defined(CONFIG_NFSD_MODULE)) && !defined(CONFIG_NFSD_DEPRECATED)
1679-
/* Stuff for NFS server syscalls... */
1680-
struct compat_nfsctl_svc {
1681-
u16 svc32_port;
1682-
s32 svc32_nthreads;
1683-
};
1684-
1685-
struct compat_nfsctl_client {
1686-
s8 cl32_ident[NFSCLNT_IDMAX+1];
1687-
s32 cl32_naddr;
1688-
struct in_addr cl32_addrlist[NFSCLNT_ADDRMAX];
1689-
s32 cl32_fhkeytype;
1690-
s32 cl32_fhkeylen;
1691-
u8 cl32_fhkey[NFSCLNT_KEYMAX];
1692-
};
1693-
1694-
struct compat_nfsctl_export {
1695-
char ex32_client[NFSCLNT_IDMAX+1];
1696-
char ex32_path[NFS_MAXPATHLEN+1];
1697-
compat_dev_t ex32_dev;
1698-
compat_ino_t ex32_ino;
1699-
compat_int_t ex32_flags;
1700-
__compat_uid_t ex32_anon_uid;
1701-
__compat_gid_t ex32_anon_gid;
1702-
};
1703-
1704-
struct compat_nfsctl_fdparm {
1705-
struct sockaddr gd32_addr;
1706-
s8 gd32_path[NFS_MAXPATHLEN+1];
1707-
compat_int_t gd32_version;
1708-
};
1709-
1710-
struct compat_nfsctl_fsparm {
1711-
struct sockaddr gd32_addr;
1712-
s8 gd32_path[NFS_MAXPATHLEN+1];
1713-
compat_int_t gd32_maxlen;
1714-
};
1715-
1716-
struct compat_nfsctl_arg {
1717-
compat_int_t ca32_version; /* safeguard */
1718-
union {
1719-
struct compat_nfsctl_svc u32_svc;
1720-
struct compat_nfsctl_client u32_client;
1721-
struct compat_nfsctl_export u32_export;
1722-
struct compat_nfsctl_fdparm u32_getfd;
1723-
struct compat_nfsctl_fsparm u32_getfs;
1724-
} u;
1725-
#define ca32_svc u.u32_svc
1726-
#define ca32_client u.u32_client
1727-
#define ca32_export u.u32_export
1728-
#define ca32_getfd u.u32_getfd
1729-
#define ca32_getfs u.u32_getfs
1730-
};
1731-
1732-
union compat_nfsctl_res {
1733-
__u8 cr32_getfh[NFS_FHSIZE];
1734-
struct knfsd_fh cr32_getfs;
1735-
};
1736-
1737-
static int compat_nfs_svc_trans(struct nfsctl_arg *karg,
1738-
struct compat_nfsctl_arg __user *arg)
1739-
{
1740-
if (!access_ok(VERIFY_READ, &arg->ca32_svc, sizeof(arg->ca32_svc)) ||
1741-
get_user(karg->ca_version, &arg->ca32_version) ||
1742-
__get_user(karg->ca_svc.svc_port, &arg->ca32_svc.svc32_port) ||
1743-
__get_user(karg->ca_svc.svc_nthreads,
1744-
&arg->ca32_svc.svc32_nthreads))
1745-
return -EFAULT;
1746-
return 0;
1747-
}
1748-
1749-
static int compat_nfs_clnt_trans(struct nfsctl_arg *karg,
1750-
struct compat_nfsctl_arg __user *arg)
1751-
{
1752-
if (!access_ok(VERIFY_READ, &arg->ca32_client,
1753-
sizeof(arg->ca32_client)) ||
1754-
get_user(karg->ca_version, &arg->ca32_version) ||
1755-
__copy_from_user(&karg->ca_client.cl_ident[0],
1756-
&arg->ca32_client.cl32_ident[0],
1757-
NFSCLNT_IDMAX) ||
1758-
__get_user(karg->ca_client.cl_naddr,
1759-
&arg->ca32_client.cl32_naddr) ||
1760-
__copy_from_user(&karg->ca_client.cl_addrlist[0],
1761-
&arg->ca32_client.cl32_addrlist[0],
1762-
(sizeof(struct in_addr) * NFSCLNT_ADDRMAX)) ||
1763-
__get_user(karg->ca_client.cl_fhkeytype,
1764-
&arg->ca32_client.cl32_fhkeytype) ||
1765-
__get_user(karg->ca_client.cl_fhkeylen,
1766-
&arg->ca32_client.cl32_fhkeylen) ||
1767-
__copy_from_user(&karg->ca_client.cl_fhkey[0],
1768-
&arg->ca32_client.cl32_fhkey[0],
1769-
NFSCLNT_KEYMAX))
1770-
return -EFAULT;
1771-
1772-
return 0;
1773-
}
1774-
1775-
static int compat_nfs_exp_trans(struct nfsctl_arg *karg,
1776-
struct compat_nfsctl_arg __user *arg)
1777-
{
1778-
if (!access_ok(VERIFY_READ, &arg->ca32_export,
1779-
sizeof(arg->ca32_export)) ||
1780-
get_user(karg->ca_version, &arg->ca32_version) ||
1781-
__copy_from_user(&karg->ca_export.ex_client[0],
1782-
&arg->ca32_export.ex32_client[0],
1783-
NFSCLNT_IDMAX) ||
1784-
__copy_from_user(&karg->ca_export.ex_path[0],
1785-
&arg->ca32_export.ex32_path[0],
1786-
NFS_MAXPATHLEN) ||
1787-
__get_user(karg->ca_export.ex_dev,
1788-
&arg->ca32_export.ex32_dev) ||
1789-
__get_user(karg->ca_export.ex_ino,
1790-
&arg->ca32_export.ex32_ino) ||
1791-
__get_user(karg->ca_export.ex_flags,
1792-
&arg->ca32_export.ex32_flags) ||
1793-
__get_user(karg->ca_export.ex_anon_uid,
1794-
&arg->ca32_export.ex32_anon_uid) ||
1795-
__get_user(karg->ca_export.ex_anon_gid,
1796-
&arg->ca32_export.ex32_anon_gid))
1797-
return -EFAULT;
1798-
SET_UID(karg->ca_export.ex_anon_uid, karg->ca_export.ex_anon_uid);
1799-
SET_GID(karg->ca_export.ex_anon_gid, karg->ca_export.ex_anon_gid);
1800-
1801-
return 0;
1802-
}
1803-
1804-
static int compat_nfs_getfd_trans(struct nfsctl_arg *karg,
1805-
struct compat_nfsctl_arg __user *arg)
1806-
{
1807-
if (!access_ok(VERIFY_READ, &arg->ca32_getfd,
1808-
sizeof(arg->ca32_getfd)) ||
1809-
get_user(karg->ca_version, &arg->ca32_version) ||
1810-
__copy_from_user(&karg->ca_getfd.gd_addr,
1811-
&arg->ca32_getfd.gd32_addr,
1812-
(sizeof(struct sockaddr))) ||
1813-
__copy_from_user(&karg->ca_getfd.gd_path,
1814-
&arg->ca32_getfd.gd32_path,
1815-
(NFS_MAXPATHLEN+1)) ||
1816-
__get_user(karg->ca_getfd.gd_version,
1817-
&arg->ca32_getfd.gd32_version))
1818-
return -EFAULT;
1819-
1820-
return 0;
1821-
}
1822-
1823-
static int compat_nfs_getfs_trans(struct nfsctl_arg *karg,
1824-
struct compat_nfsctl_arg __user *arg)
1825-
{
1826-
if (!access_ok(VERIFY_READ,&arg->ca32_getfs,sizeof(arg->ca32_getfs)) ||
1827-
get_user(karg->ca_version, &arg->ca32_version) ||
1828-
__copy_from_user(&karg->ca_getfs.gd_addr,
1829-
&arg->ca32_getfs.gd32_addr,
1830-
(sizeof(struct sockaddr))) ||
1831-
__copy_from_user(&karg->ca_getfs.gd_path,
1832-
&arg->ca32_getfs.gd32_path,
1833-
(NFS_MAXPATHLEN+1)) ||
1834-
__get_user(karg->ca_getfs.gd_maxlen,
1835-
&arg->ca32_getfs.gd32_maxlen))
1836-
return -EFAULT;
1837-
1838-
return 0;
1839-
}
1840-
1841-
/* This really doesn't need translations, we are only passing
1842-
* back a union which contains opaque nfs file handle data.
1843-
*/
1844-
static int compat_nfs_getfh_res_trans(union nfsctl_res *kres,
1845-
union compat_nfsctl_res __user *res)
1846-
{
1847-
int err;
1848-
1849-
err = copy_to_user(res, kres, sizeof(*res));
1850-
1851-
return (err) ? -EFAULT : 0;
1852-
}
1853-
1854-
asmlinkage long compat_sys_nfsservctl(int cmd,
1855-
struct compat_nfsctl_arg __user *arg,
1856-
union compat_nfsctl_res __user *res)
1857-
{
1858-
struct nfsctl_arg *karg;
1859-
union nfsctl_res *kres;
1860-
mm_segment_t oldfs;
1861-
int err;
1862-
1863-
karg = kmalloc(sizeof(*karg), GFP_USER);
1864-
kres = kmalloc(sizeof(*kres), GFP_USER);
1865-
if(!karg || !kres) {
1866-
err = -ENOMEM;
1867-
goto done;
1868-
}
1869-
1870-
switch(cmd) {
1871-
case NFSCTL_SVC:
1872-
err = compat_nfs_svc_trans(karg, arg);
1873-
break;
1874-
1875-
case NFSCTL_ADDCLIENT:
1876-
err = compat_nfs_clnt_trans(karg, arg);
1877-
break;
1878-
1879-
case NFSCTL_DELCLIENT:
1880-
err = compat_nfs_clnt_trans(karg, arg);
1881-
break;
1882-
1883-
case NFSCTL_EXPORT:
1884-
case NFSCTL_UNEXPORT:
1885-
err = compat_nfs_exp_trans(karg, arg);
1886-
break;
1887-
1888-
case NFSCTL_GETFD:
1889-
err = compat_nfs_getfd_trans(karg, arg);
1890-
break;
1891-
1892-
case NFSCTL_GETFS:
1893-
err = compat_nfs_getfs_trans(karg, arg);
1894-
break;
1895-
1896-
default:
1897-
err = -EINVAL;
1898-
break;
1899-
}
1900-
1901-
if (err)
1902-
goto done;
1903-
1904-
oldfs = get_fs();
1905-
set_fs(KERNEL_DS);
1906-
/* The __user pointer casts are valid because of the set_fs() */
1907-
err = sys_nfsservctl(cmd, (void __user *) karg, (void __user *) kres);
1908-
set_fs(oldfs);
1909-
1910-
if (err)
1911-
goto done;
1912-
1913-
if((cmd == NFSCTL_GETFD) ||
1914-
(cmd == NFSCTL_GETFS))
1915-
err = compat_nfs_getfh_res_trans(kres, res);
1916-
1917-
done:
1918-
kfree(karg);
1919-
kfree(kres);
1920-
return err;
1921-
}
1922-
#else /* !NFSD */
19231678
long asmlinkage compat_sys_nfsservctl(int cmd, void *notused, void *notused2)
19241679
{
19251680
return sys_ni_syscall();
19261681
}
1927-
#endif
19281682

19291683
#ifdef CONFIG_EPOLL
19301684

fs/nfsctl.c

-100
This file was deleted.

0 commit comments

Comments
 (0)