initialize_mountpoint will call _nfs4_pnfs_getdevicelist and then
pnfs_curr_ld->id is accessed. This introduce a NULL pointer reference.
Signed-off-by: Zhang Jingwang <[email protected]>
---
fs/nfs/pnfs.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
index 3739c38..5ad7fc6 100644
--- a/fs/nfs/pnfs.c
+++ b/fs/nfs/pnfs.c
@@ -212,6 +212,7 @@ set_pnfs_layoutdriver(struct nfs_server *server, const struct nfs_fh *mntfh,
return;
if (id > 0 && find_pnfs(id, &mod)) {
+ server->pnfs_curr_ld = mod->pnfs_ld_type;
if (mod->pnfs_ld_type->ld_io_ops->initialize_mountpoint(
server, mntfh)) {
printk(KERN_ERR "%s: Error initializing mount point "
@@ -222,7 +223,6 @@ set_pnfs_layoutdriver(struct nfs_server *server, const struct nfs_fh *mntfh,
* Layout driver succeeded in initializing mountpoint
* and has taken a reference on the nfs_client cl_devid_cache
*/
- server->pnfs_curr_ld = mod->pnfs_ld_type;
server->nfs_client->rpc_ops = &pnfs_v4_clientops;
dprintk("%s: pNFS module for %u set\n", __func__, id);
return;
--
1.6.2.5
2010/5/12 William A. (Andy) Adamson <[email protected]>:
> On Wed, May 12, 2010 at 3:42 AM, Zhang Jingwang
> <[email protected]> wrote:
>> initialize_mountpoint will call _nfs4_pnfs_getdevicelist and then
>> pnfs_curr_ld->id is accessed.
>
> Where is pnfs_curr_ld->ld_policy_ops accessed?
In pnfs_set_ds_iosize after set_pnfs_layoutdriver, pnfs_curr_ld is set
in set_pnfs_layoutdriver so it's OK to access
pnfs_curr_ld->ld_policy_ops.
>
> -->Andy
>
>> This introduce a NULL pointer reference.
>>
>> Signed-off-by: Zhang Jingwang <[email protected]>
>> ---
>> ?fs/nfs/pnfs.c | ? ?2 +-
>> ?1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
>> index 3739c38..5ad7fc6 100644
>> --- a/fs/nfs/pnfs.c
>> +++ b/fs/nfs/pnfs.c
>> @@ -212,6 +212,7 @@ set_pnfs_layoutdriver(struct nfs_server *server, const struct nfs_fh *mntfh,
>> ? ? ? ? ? ? ? ?return;
>>
>> ? ? ? ?if (id > 0 && find_pnfs(id, &mod)) {
>> + ? ? ? ? ? ? ? server->pnfs_curr_ld = mod->pnfs_ld_type;
>> ? ? ? ? ? ? ? ?if (mod->pnfs_ld_type->ld_io_ops->initialize_mountpoint(
>> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?server, mntfh)) {
>> ? ? ? ? ? ? ? ? ? ? ? ?printk(KERN_ERR "%s: Error initializing mount point "
>> @@ -222,7 +223,6 @@ set_pnfs_layoutdriver(struct nfs_server *server, const struct nfs_fh *mntfh,
>> ? ? ? ? ? ? ? ? * Layout driver succeeded in initializing mountpoint
>> ? ? ? ? ? ? ? ? * and has taken a reference on the nfs_client cl_devid_cache
>> ? ? ? ? ? ? ? ? */
>> - ? ? ? ? ? ? ? server->pnfs_curr_ld = mod->pnfs_ld_type;
>> ? ? ? ? ? ? ? ?server->nfs_client->rpc_ops = &pnfs_v4_clientops;
>> ? ? ? ? ? ? ? ?dprintk("%s: pNFS module for %u set\n", __func__, id);
>> ? ? ? ? ? ? ? ?return;
>> --
>> 1.6.2.5
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
>> the body of a message to [email protected]
>> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to [email protected]
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>
--
Zhang Jingwang
National Research Centre for High Performance Computers
Institute of Computing Technology, Chinese Academy of Sciences
No. 6, South Kexueyuan Road, Haidian District
Beijing, China
On Wed, May 12, 2010 at 3:42 AM, Zhang Jingwang
<[email protected]> wrote:
> initialize_mountpoint will call _nfs4_pnfs_getdevicelist and then
> pnfs_curr_ld->id is accessed.
Where is pnfs_curr_ld->ld_policy_ops accessed?
-->Andy
> This introduce a NULL pointer reference.
>
> Signed-off-by: Zhang Jingwang <[email protected]>
> ---
> ?fs/nfs/pnfs.c | ? ?2 +-
> ?1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/fs/nfs/pnfs.c b/fs/nfs/pnfs.c
> index 3739c38..5ad7fc6 100644
> --- a/fs/nfs/pnfs.c
> +++ b/fs/nfs/pnfs.c
> @@ -212,6 +212,7 @@ set_pnfs_layoutdriver(struct nfs_server *server, const struct nfs_fh *mntfh,
> ? ? ? ? ? ? ? ?return;
>
> ? ? ? ?if (id > 0 && find_pnfs(id, &mod)) {
> + ? ? ? ? ? ? ? server->pnfs_curr_ld = mod->pnfs_ld_type;
> ? ? ? ? ? ? ? ?if (mod->pnfs_ld_type->ld_io_ops->initialize_mountpoint(
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?server, mntfh)) {
> ? ? ? ? ? ? ? ? ? ? ? ?printk(KERN_ERR "%s: Error initializing mount point "
> @@ -222,7 +223,6 @@ set_pnfs_layoutdriver(struct nfs_server *server, const struct nfs_fh *mntfh,
> ? ? ? ? ? ? ? ? * Layout driver succeeded in initializing mountpoint
> ? ? ? ? ? ? ? ? * and has taken a reference on the nfs_client cl_devid_cache
> ? ? ? ? ? ? ? ? */
> - ? ? ? ? ? ? ? server->pnfs_curr_ld = mod->pnfs_ld_type;
> ? ? ? ? ? ? ? ?server->nfs_client->rpc_ops = &pnfs_v4_clientops;
> ? ? ? ? ? ? ? ?dprintk("%s: pNFS module for %u set\n", __func__, id);
> ? ? ? ? ? ? ? ?return;
> --
> 1.6.2.5
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to [email protected]
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>