diff --git a/lustre/ChangeLog b/lustre/ChangeLog
index f5107a5303aa28d9cb87c23c0959aa29ac1d2924..23f9ea5a8a572c83fd8bdfd49e3edf02ddcd0835 100644
--- a/lustre/ChangeLog
+++ b/lustre/ChangeLog
@@ -4,6 +4,7 @@ tbd  Cluster File Systems, Inc. <info@clusterfs.com>
 	- fixes for glimpse AST timeouts / incorrectly 0-sized files (2818)
 	- don't overwrite extent policy data in reply if lock was blocked (2901)
 	- drop filter export grants atomically with removal from device (2663)
+	- del obd_self_export from work_list in class_disconnect_exports (2908)
 
 2004-03-04  Cluster File Systems, Inc. <info@clusterfs.com>
        * version 1.2.0
diff --git a/lustre/obdclass/genops.c b/lustre/obdclass/genops.c
index 5088abbc09b39d1f80b5e1453bf1bb86f51a49cb..98ae3b5c7fa5e68ba3b187352eca141f921661fd 100644
--- a/lustre/obdclass/genops.c
+++ b/lustre/obdclass/genops.c
@@ -630,6 +630,9 @@ void class_disconnect_exports(struct obd_device *obd, int flags)
                         CDEBUG(D_HA,
                                "exp %p export uuid == obd uuid, don't discon\n",
                                exp);
+                        /* Need to delete this now so we don't end up pointing
+                         * to work_list later when this export is cleaned up. */
+                        list_del_init(&exp->exp_obd_chain);
                         class_export_put(exp);
                         continue;
                 }