]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
kclient: fail con->ops->get() if ref count is zero, and avoid requeueing work
authorSage Weil <sage@newdream.net>
Thu, 27 Aug 2009 16:14:15 +0000 (09:14 -0700)
committerSage Weil <sage@newdream.net>
Thu, 27 Aug 2009 16:14:15 +0000 (09:14 -0700)
commit66efd409dbeee84e613a2511989dc4f1f354910c
treed6c2f6dd4edc072323ce1b8654037396b7d530de
parent475dd60dcd9a8e04f2204c0b02d1268b8598633c
kclient: fail con->ops->get() if ref count is zero, and avoid requeueing work

This fixes a bug where a socket status change races with con_destroy:

ref 1 -> 0
con_destroy()
sock state change, requeue
destroy socket
kfree(con)
...do work and crash...
src/TODO
src/kernel/mds_client.c
src/kernel/messenger.c
src/kernel/messenger.h