diff -ruN linux-2.6.18-308.0.0.0.1.el5.x86_64.orig/fs/nfs/read.c linux-2.6.18-308.0.0.0.1.el5.x86_64/fs/nfs/read.c
--- linux-2.6.18-308.0.0.0.1.el5.x86_64.orig/fs/nfs/read.c	2012-02-21 15:54:46.067285621 -0800
+++ linux-2.6.18-308.0.0.0.1.el5.x86_64/fs/nfs/read.c	2012-02-21 15:58:05.903911112 -0800
@@ -83,7 +83,8 @@
 {
 	struct nfs_read_data *rdata = data;
 
-	put_nfs_open_context(rdata->args.context);
+	if (rdata->args.context)
+		put_nfs_open_context(rdata->args.context);
 	nfs_readdata_free(rdata);
 }
 
diff -ruN linux-2.6.18-308.0.0.0.1.el5.x86_64.orig/fs/nfs/write.c linux-2.6.18-308.0.0.0.1.el5.x86_64/fs/nfs/write.c
--- linux-2.6.18-308.0.0.0.1.el5.x86_64.orig/fs/nfs/write.c	2012-02-21 15:54:46.125284900 -0800
+++ linux-2.6.18-308.0.0.0.1.el5.x86_64/fs/nfs/write.c	2012-02-21 16:02:50.089443719 -0800
@@ -149,7 +149,8 @@
 
 static void nfs_writedata_release(struct nfs_write_data *wdata)
 {
-	put_nfs_open_context(wdata->args.context);
+	if (wdata->args.context)
+		put_nfs_open_context(wdata->args.context);
 	nfs_writedata_free(wdata);
 }
 
