| From 4d89b7b4e4726893453d0fb4ddbb5b3e16353994 Mon Sep 17 00:00:00 2001 |
| From: Milan Broz <mbroz@redhat.com> |
| Date: Mon, 22 Jun 2009 10:12:11 +0100 |
| Subject: dm: sysfs skip output when device is being destroyed |
| |
| From: Milan Broz <mbroz@redhat.com> |
| |
| commit 4d89b7b4e4726893453d0fb4ddbb5b3e16353994 upstream. |
| |
| Do not process sysfs attributes when device is being destroyed. |
| |
| Otherwise code can cause |
| BUG_ON(test_bit(DMF_FREEING, &md->flags)); |
| in dm_put() call. |
| |
| Signed-off-by: Milan Broz <mbroz@redhat.com> |
| Signed-off-by: Alasdair G Kergon <agk@redhat.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| drivers/md/dm.c | 4 ++++ |
| 1 file changed, 4 insertions(+) |
| |
| --- a/drivers/md/dm.c |
| +++ b/drivers/md/dm.c |
| @@ -1728,6 +1728,10 @@ struct mapped_device *dm_get_from_kobjec |
| if (&md->kobj != kobj) |
| return NULL; |
| |
| + if (test_bit(DMF_FREEING, &md->flags) || |
| + test_bit(DMF_DELETING, &md->flags)) |
| + return NULL; |
| + |
| dm_get(md); |
| return md; |
| } |