Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6

* 'bugfixes' of git://git.linux-nfs.org/projects/trondmy/nfs-2.6:
NFSv4: Kill nfs4_renewd_prepare_shutdown()
NFSv4: Fix the referral mount code
nfs: Avoid overrun when copying client IP address string
NFS: Fix port initialisation in nfs_remount()
NFS: Fix port and mountport display in /proc/self/mountinfo
NFS: Fix a default mount regression...

+24 -32
+1 -1
fs/nfs/client.c
··· 1180 1180 1, flags & NFS_MOUNT_NORESVPORT); 1181 1181 if (error < 0) 1182 1182 goto error; 1183 - memcpy(clp->cl_ipaddr, ip_addr, sizeof(clp->cl_ipaddr)); 1183 + strlcpy(clp->cl_ipaddr, ip_addr, sizeof(clp->cl_ipaddr)); 1184 1184 1185 1185 error = nfs_idmap_new(clp); 1186 1186 if (error < 0) {
+6 -6
fs/nfs/nfs4namespace.c
··· 121 121 122 122 mnt_path = nfs4_pathname_string(&location->rootpath, page2, PAGE_SIZE); 123 123 if (IS_ERR(mnt_path)) 124 - return mnt; 124 + return ERR_CAST(mnt_path); 125 125 mountdata->mnt_path = mnt_path; 126 126 maxbuflen = mnt_path - 1 - page2; 127 127 ··· 132 132 if (buf->len <= 0 || buf->len >= maxbuflen) 133 133 continue; 134 134 135 - mountdata->addr = (struct sockaddr *)&addr; 136 - 137 135 if (memchr(buf->data, IPV6_SCOPE_DELIMITER, buf->len)) 138 136 continue; 139 - mountdata->addrlen = nfs_parse_server_name(buf->data, 140 - buf->len, 141 - mountdata->addr, mountdata->addrlen); 137 + 138 + mountdata->addrlen = nfs_parse_server_name(buf->data, buf->len, 139 + (struct sockaddr *)&addr, sizeof(addr)); 142 140 if (mountdata->addrlen == 0) 143 141 continue; 142 + 143 + mountdata->addr = (struct sockaddr *)&addr; 144 144 rpc_set_port(mountdata->addr, NFS_PORT); 145 145 146 146 memcpy(page2, buf->data, buf->len);
-6
fs/nfs/nfs4renewd.c
··· 127 127 } 128 128 129 129 void 130 - nfs4_renewd_prepare_shutdown(struct nfs_server *server) 131 - { 132 - cancel_delayed_work(&server->nfs_client->cl_renewd); 133 - } 134 - 135 - void 136 130 nfs4_kill_renewd(struct nfs_client *clp) 137 131 { 138 132 cancel_delayed_work_sync(&clp->cl_renewd);
+17 -19
fs/nfs/super.c
··· 728 728 unlock_kernel(); 729 729 } 730 730 731 - static struct nfs_parsed_mount_data *nfs_alloc_parsed_mount_data(int flags) 731 + static struct nfs_parsed_mount_data *nfs_alloc_parsed_mount_data(unsigned int version) 732 732 { 733 733 struct nfs_parsed_mount_data *data; 734 734 735 735 data = kzalloc(sizeof(*data), GFP_KERNEL); 736 736 if (data) { 737 - data->flags = flags; 738 737 data->rsize = NFS_MAX_FILE_IO_SIZE; 739 738 data->wsize = NFS_MAX_FILE_IO_SIZE; 740 739 data->acregmin = NFS_DEF_ACREGMIN; 741 740 data->acregmax = NFS_DEF_ACREGMAX; 742 741 data->acdirmin = NFS_DEF_ACDIRMIN; 743 742 data->acdirmax = NFS_DEF_ACDIRMAX; 743 + data->mount_server.port = NFS_UNSPEC_PORT; 744 744 data->nfs_server.port = NFS_UNSPEC_PORT; 745 + data->nfs_server.protocol = XPRT_TRANSPORT_TCP; 745 746 data->auth_flavors[0] = RPC_AUTH_UNIX; 746 747 data->auth_flavor_len = 1; 748 + data->version = version; 747 749 data->minorversion = 0; 748 750 } 749 751 return data; ··· 778 776 * Select between a default port value and a user-specified port value. 779 777 * If a zero value is set, then autobind will be used. 780 778 */ 781 - static void nfs_set_default_port(struct sockaddr *sap, const int parsed_port, 779 + static void nfs_set_port(struct sockaddr *sap, int *port, 782 780 const unsigned short default_port) 783 781 { 784 - unsigned short port = default_port; 782 + if (*port == NFS_UNSPEC_PORT) 783 + *port = default_port; 785 784 786 - if (parsed_port != NFS_UNSPEC_PORT) 787 - port = parsed_port; 788 - 789 - rpc_set_port(sap, port); 785 + rpc_set_port(sap, *port); 790 786 } 791 787 792 788 /* ··· 1475 1475 args->mount_server.addrlen = args->nfs_server.addrlen; 1476 1476 } 1477 1477 request.salen = args->mount_server.addrlen; 1478 - nfs_set_default_port(request.sap, args->mount_server.port, 0); 1478 + nfs_set_port(request.sap, &args->mount_server.port, 0); 1479 1479 1480 1480 /* 1481 1481 * Now ask the mount server to map our export path ··· 1711 1711 1712 1712 if (!(data->flags & NFS_MOUNT_TCP)) 1713 1713 args->nfs_server.protocol = XPRT_TRANSPORT_UDP; 1714 - else 1715 - args->nfs_server.protocol = XPRT_TRANSPORT_TCP; 1716 1714 /* N.B. caller will free nfs_server.hostname in all cases */ 1717 1715 args->nfs_server.hostname = kstrdup(data->hostname, GFP_KERNEL); 1718 1716 args->namlen = data->namlen; ··· 1765 1767 goto out_v4_not_compiled; 1766 1768 #endif 1767 1769 1768 - nfs_set_default_port(sap, args->nfs_server.port, 0); 1770 + nfs_set_port(sap, &args->nfs_server.port, 0); 1769 1771 1770 1772 nfs_set_mount_transport_protocol(args); 1771 1773 ··· 1846 1848 data->acdirmin != nfss->acdirmin / HZ || 1847 1849 data->acdirmax != nfss->acdirmax / HZ || 1848 1850 data->timeo != (10U * nfss->client->cl_timeout->to_initval / HZ) || 1851 + data->nfs_server.port != nfss->port || 1849 1852 data->nfs_server.addrlen != nfss->nfs_client->cl_addrlen || 1850 - memcmp(&data->nfs_server.address, &nfss->nfs_client->cl_addr, 1851 - data->nfs_server.addrlen) != 0) 1853 + !rpc_cmp_addr(&data->nfs_server.address, 1854 + &nfss->nfs_client->cl_addr)) 1852 1855 return -EINVAL; 1853 1856 1854 1857 return 0; ··· 1892 1893 data->acdirmin = nfss->acdirmin / HZ; 1893 1894 data->acdirmax = nfss->acdirmax / HZ; 1894 1895 data->timeo = 10U * nfss->client->cl_timeout->to_initval / HZ; 1896 + data->nfs_server.port = nfss->port; 1895 1897 data->nfs_server.addrlen = nfss->nfs_client->cl_addrlen; 1896 1898 memcpy(&data->nfs_server.address, &nfss->nfs_client->cl_addr, 1897 1899 data->nfs_server.addrlen); ··· 2106 2106 }; 2107 2107 int error = -ENOMEM; 2108 2108 2109 - data = nfs_alloc_parsed_mount_data(NFS_MOUNT_VER3 | NFS_MOUNT_TCP); 2109 + data = nfs_alloc_parsed_mount_data(3); 2110 2110 mntfh = kzalloc(sizeof(*mntfh), GFP_KERNEL); 2111 2111 if (data == NULL || mntfh == NULL) 2112 2112 goto out_free_fh; ··· 2331 2331 { 2332 2332 struct sockaddr *sap = (struct sockaddr *)&args->nfs_server.address; 2333 2333 2334 - nfs_set_default_port(sap, args->nfs_server.port, NFS_PORT); 2334 + nfs_set_port(sap, &args->nfs_server.port, NFS_PORT); 2335 2335 2336 2336 nfs_validate_transport_protocol(args); 2337 2337 ··· 2376 2376 if (data == NULL) 2377 2377 goto out_no_data; 2378 2378 2379 - args->version = 4; 2380 2379 switch (data->version) { 2381 2380 case 1: 2382 2381 if (data->host_addrlen > sizeof(args->nfs_server.address)) ··· 2659 2660 struct nfs_parsed_mount_data *data; 2660 2661 int error = -ENOMEM; 2661 2662 2662 - data = nfs_alloc_parsed_mount_data(0); 2663 + data = nfs_alloc_parsed_mount_data(4); 2663 2664 if (data == NULL) 2664 2665 goto out_free_data; 2665 2666 ··· 2689 2690 dprintk("--> %s\n", __func__); 2690 2691 nfs_super_return_all_delegations(sb); 2691 2692 kill_anon_super(sb); 2692 - nfs4_renewd_prepare_shutdown(server); 2693 2693 nfs_fscache_release_super_cookie(sb); 2694 2694 nfs_free_server(server); 2695 2695 dprintk("<-- %s\n", __func__);