Details
-
Bug
-
Resolution: Fixed
-
Critical
-
None
-
3
-
13320
Description
If __osd_object_create() fails, references to the new DMU object and its dmu_buf_t are both lost. For example, in osd_mksym() and osd_mknod(), when __osd_object_create() returns error, the callers simply return ERR_PTR(rc); without doing anything else, then both the new DMU object and its dmu_buf_t are leaked.
So __osd_object_create() should clean it up before returning error. There's a similar problem in __osd_zap_create().