forked from luck/tmp_suning_uos_patched
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client
Pull Ceph fixes form Sage Weil: "There are two fixes in the messenger code, one that can trigger a NULL dereference, and one that error in refcounting (extra put). There is also a trivial fix that in the fs client code that is triggered by NFS reexport." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client: ceph: fix dentry reference leak in encode_fh() libceph: avoid NULL kref_put when osd reset races with alloc_msg rbd: reset BACKOFF if unable to re-queue
This commit is contained in:
commit
35fd3dc58d
|
@ -90,6 +90,8 @@ static int ceph_encode_fh(struct inode *inode, u32 *rawfh, int *max_len,
|
|||
*max_len = handle_length;
|
||||
type = 255;
|
||||
}
|
||||
if (dentry)
|
||||
dput(dentry);
|
||||
return type;
|
||||
}
|
||||
|
||||
|
|
|
@ -2300,10 +2300,11 @@ static void con_work(struct work_struct *work)
|
|||
mutex_unlock(&con->mutex);
|
||||
return;
|
||||
} else {
|
||||
con->ops->put(con);
|
||||
dout("con_work %p FAILED to back off %lu\n", con,
|
||||
con->delay);
|
||||
set_bit(CON_FLAG_BACKOFF, &con->flags);
|
||||
}
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (con->state == CON_STATE_STANDBY) {
|
||||
|
@ -2749,7 +2750,8 @@ static int ceph_con_in_msg_alloc(struct ceph_connection *con, int *skip)
|
|||
msg = con->ops->alloc_msg(con, hdr, skip);
|
||||
mutex_lock(&con->mutex);
|
||||
if (con->state != CON_STATE_OPEN) {
|
||||
ceph_msg_put(msg);
|
||||
if (msg)
|
||||
ceph_msg_put(msg);
|
||||
return -EAGAIN;
|
||||
}
|
||||
con->in_msg = msg;
|
||||
|
|
Loading…
Reference in New Issue
Block a user