[DRBD-cvs] svn commit by lars - r2397 - trunk/drbd - don't dereference after free :-/

drbd-cvs at lists.linbit.com drbd-cvs at lists.linbit.com
Mon Sep 11 12:23:04 CEST 2006


Author: lars
Date: 2006-09-11 12:23:03 +0200 (Mon, 11 Sep 2006)
New Revision: 2397

Modified:
   trunk/drbd/drbd_req.h
Log:
don't dereference after free :-/

Modified: trunk/drbd/drbd_req.h
===================================================================
--- trunk/drbd/drbd_req.h	2006-09-11 09:54:54 UTC (rev 2396)
+++ trunk/drbd/drbd_req.h	2006-09-11 10:23:03 UTC (rev 2397)
@@ -562,17 +562,17 @@
 	 * can probably be merged with some if (what == xy) */
 
 	case completed_ok:
-		req->rq_state |= (RQ_LOCAL_COMPLETED|RQ_LOCAL_OK);
-		req->rq_state &= ~RQ_LOCAL_PENDING;
+		if (bio_data_dir(req->private_bio) == WRITE)
+			mdev->writ_cnt += req->size>>9;
+		else
+			mdev->read_cnt += req->size>>9;
 
 		bio_put(req->private_bio);
 		req->private_bio = NULL;
 		dec_local(mdev);
 
-		if (bio_data_dir(req->private_bio) == WRITE)
-			mdev->writ_cnt += req->size>>9;
-		else
-			mdev->read_cnt += req->size>>9;
+		req->rq_state |= (RQ_LOCAL_COMPLETED|RQ_LOCAL_OK);
+		req->rq_state &= ~RQ_LOCAL_PENDING;
 
 		_req_may_be_done(req);
 		break;



More information about the drbd-cvs mailing list