[SCSI] transport_class: BUG if we can't release the attribute container
authorJames Bottomley <James.Bottomley@HansenPartnership.com>
Wed, 2 Apr 2008 15:05:48 +0000 (10:05 -0500)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Mon, 7 Apr 2008 17:19:10 +0000 (12:19 -0500)
commit2f3edc6936e3f6be3f1df1e89c141ae028fa605e
tree14198ea135c600b42e4c7416db44967a6517a2db
parentfa8e36c39b00a219d2c37250e493c3421e0e67e9
[SCSI] transport_class: BUG if we can't release the attribute container

Every current transport class calls transport_container_release but
ignores the return value.  This is catastrophic if it returns an error
because the containers are part of a global list and the next action of
almost every transport class is to free the memory used by the
container.

Fix this by making transport_container_release a void, but making it BUG
if attribute_container_release returns an error ... this catches the
root cause of a system panic much earlier.  If we don't do this, we get
an eventual BUG when the attribute container list notices the corruption
caused by the freed memory it's still referencing.

Also made attribute_container_release __must_check as a reminder.

Cc: Greg KH <greg@kroah.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/base/transport_class.c
drivers/scsi/raid_class.c
include/linux/attribute_container.h
include/linux/transport_class.h