1
0
Files
linux/net
Alex Elder 685a7555ca libceph: avoid using freed osd in __kick_osd_requests()
If an osd has no requests and no linger requests, __reset_osd()
will just remove it with a call to __remove_osd().  That drops
a reference to the osd, and therefore the osd may have been free
by the time __reset_osd() returns.  That function offers no
indication this may have occurred, and as a result the osd will
continue to be used even when it's no longer valid.

Change__reset_osd() so it returns an error (ENODEV) when it
deletes the osd being reset.  And change __kick_osd_requests() so it
returns immediately (before referencing osd again) if __reset_osd()
returns *any* error.

Signed-off-by: Alex Elder <elder@inktank.com>
Reviewed-by: Sage Weil <sage@inktank.com>
2012-12-17 08:37:23 -06:00
..
2012-08-15 21:36:30 -07:00
2012-07-10 22:36:17 +02:00
2012-07-19 10:48:00 -07:00
2012-09-27 19:27:39 -04:00
2012-09-25 16:04:44 -04:00
2012-07-19 10:48:00 -07:00
2012-07-16 23:23:52 -07:00
2012-06-15 15:30:15 -07:00
2012-09-27 13:18:19 -04:00
2012-05-17 18:45:20 -04:00
2012-08-15 21:36:31 -07:00
2012-07-23 01:01:44 -07:00