Fixes for an overreaching WARN_ON, two error paths and a switch to
kernel_connect() which recently grown protection against someone using BPF to rewrite the address. All but one marked for stable. -----BEGIN PGP SIGNATURE----- iQFHBAABCAAxFiEEydHwtzie9C7TfviiSn/eOAIR84sFAmUpYoQTHGlkcnlvbW92 QGdtYWlsLmNvbQAKCRBKf944AhHziwvmCACK13dkAaupcHyteYPloBgtJLNixR3X 6++nHCOXGtE7cK6n1snobFQgp/d5BqSKAeymyLqDjJOJVqG/5n8FR1gwcuY/Ogdj Aju2Mkt7R/R/V6kvmCbqGSwiOvxZP1gBFkKcluRNQkFNP3boKw4vmJGq29Rabbyr 66NfZSETsR/H4JhAWvUyVmffrvxIx11THnvmrAnprGVKoK72HwOQFx0H4KLD2Hio aN/yiiR15yDS6hL8dfilt+QGO6o+ZWgvRl1GOzqjwISgfeUUYVknMJXrEf+20kHs kX3tWaLWVZsU1FyVFRO5HPYLAREjALXstFO4K1OHPERM7EipWNinIHoS =wyYP -----END PGP SIGNATURE----- Merge tag 'ceph-for-6.6-rc6' of https://github.com/ceph/ceph-client Pull ceph fixes from Ilya Dryomov: "Fixes for an overreaching WARN_ON, two error paths and a switch to kernel_connect() which recently grown protection against someone using BPF to rewrite the address. All but one marked for stable" * tag 'ceph-for-6.6-rc6' of https://github.com/ceph/ceph-client: ceph: fix type promotion bug on 32bit systems libceph: use kernel_connect() ceph: remove unnecessary IS_ERR() check in ceph_fname_to_usr() ceph: fix incorrect revoked caps assert in ceph_fill_file_size()
This commit is contained in:
commit
a1ef447dee
|
@ -460,7 +460,7 @@ int ceph_fname_to_usr(const struct ceph_fname *fname, struct fscrypt_str *tname,
|
|||
out:
|
||||
fscrypt_fname_free_buffer(&_tname);
|
||||
out_inode:
|
||||
if ((dir != fname->dir) && !IS_ERR(dir)) {
|
||||
if (dir != fname->dir) {
|
||||
if ((dir->i_state & I_NEW))
|
||||
discard_new_inode(dir);
|
||||
else
|
||||
|
|
|
@ -2969,7 +2969,7 @@ static ssize_t __ceph_copy_file_range(struct file *src_file, loff_t src_off,
|
|||
ret = do_splice_direct(src_file, &src_off, dst_file,
|
||||
&dst_off, src_objlen, flags);
|
||||
/* Abort on short copies or on error */
|
||||
if (ret < src_objlen) {
|
||||
if (ret < (long)src_objlen) {
|
||||
dout("Failed partial copy (%zd)\n", ret);
|
||||
goto out;
|
||||
}
|
||||
|
|
|
@ -769,9 +769,7 @@ int ceph_fill_file_size(struct inode *inode, int issued,
|
|||
ci->i_truncate_seq = truncate_seq;
|
||||
|
||||
/* the MDS should have revoked these caps */
|
||||
WARN_ON_ONCE(issued & (CEPH_CAP_FILE_EXCL |
|
||||
CEPH_CAP_FILE_RD |
|
||||
CEPH_CAP_FILE_WR |
|
||||
WARN_ON_ONCE(issued & (CEPH_CAP_FILE_RD |
|
||||
CEPH_CAP_FILE_LAZYIO));
|
||||
/*
|
||||
* If we hold relevant caps, or in the case where we're
|
||||
|
|
|
@ -459,8 +459,8 @@ int ceph_tcp_connect(struct ceph_connection *con)
|
|||
set_sock_callbacks(sock, con);
|
||||
|
||||
con_sock_state_connecting(con);
|
||||
ret = sock->ops->connect(sock, (struct sockaddr *)&ss, sizeof(ss),
|
||||
O_NONBLOCK);
|
||||
ret = kernel_connect(sock, (struct sockaddr *)&ss, sizeof(ss),
|
||||
O_NONBLOCK);
|
||||
if (ret == -EINPROGRESS) {
|
||||
dout("connect %s EINPROGRESS sk_state = %u\n",
|
||||
ceph_pr_addr(&con->peer_addr),
|
||||
|
|
Loading…
Reference in New Issue