Răsfoiți Sursa

NFS: dprintks in directio code were referencing task after put

Signed-off-by: Fred Isaman <iisaman@netapp.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Fred Isaman 13 ani în urmă
părinte
comite
31f6852a4c
1 a modificat fișierele cu 4 adăugiri și 4 ștergeri
  1. 4 4
      fs/nfs/direct.c

+ 4 - 4
fs/nfs/direct.c

@@ -357,15 +357,15 @@ static ssize_t nfs_direct_read_schedule_segment(struct nfs_direct_req *dreq,
 		task = rpc_run_task(&task_setup_data);
 		task = rpc_run_task(&task_setup_data);
 		if (IS_ERR(task))
 		if (IS_ERR(task))
 			break;
 			break;
-		rpc_put_task(task);
 
 
 		dprintk("NFS: %5u initiated direct read call "
 		dprintk("NFS: %5u initiated direct read call "
 			"(req %s/%Ld, %zu bytes @ offset %Lu)\n",
 			"(req %s/%Ld, %zu bytes @ offset %Lu)\n",
-				data->task.tk_pid,
+				task->tk_pid,
 				inode->i_sb->s_id,
 				inode->i_sb->s_id,
 				(long long)NFS_FILEID(inode),
 				(long long)NFS_FILEID(inode),
 				bytes,
 				bytes,
 				(unsigned long long)data->args.offset);
 				(unsigned long long)data->args.offset);
+		rpc_put_task(task);
 
 
 		started += bytes;
 		started += bytes;
 		user_addr += bytes;
 		user_addr += bytes;
@@ -784,15 +784,15 @@ static ssize_t nfs_direct_write_schedule_segment(struct nfs_direct_req *dreq,
 		task = rpc_run_task(&task_setup_data);
 		task = rpc_run_task(&task_setup_data);
 		if (IS_ERR(task))
 		if (IS_ERR(task))
 			break;
 			break;
-		rpc_put_task(task);
 
 
 		dprintk("NFS: %5u initiated direct write call "
 		dprintk("NFS: %5u initiated direct write call "
 			"(req %s/%Ld, %zu bytes @ offset %Lu)\n",
 			"(req %s/%Ld, %zu bytes @ offset %Lu)\n",
-				data->task.tk_pid,
+				task->tk_pid,
 				inode->i_sb->s_id,
 				inode->i_sb->s_id,
 				(long long)NFS_FILEID(inode),
 				(long long)NFS_FILEID(inode),
 				bytes,
 				bytes,
 				(unsigned long long)data->args.offset);
 				(unsigned long long)data->args.offset);
+		rpc_put_task(task);
 
 
 		started += bytes;
 		started += bytes;
 		user_addr += bytes;
 		user_addr += bytes;