Commit a1ef447d authored by Linus Torvalds's avatar Linus Torvalds

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()
parents ad7f1bae 07bb00ef
...@@ -460,7 +460,7 @@ int ceph_fname_to_usr(const struct ceph_fname *fname, struct fscrypt_str *tname, ...@@ -460,7 +460,7 @@ int ceph_fname_to_usr(const struct ceph_fname *fname, struct fscrypt_str *tname,
out: out:
fscrypt_fname_free_buffer(&_tname); fscrypt_fname_free_buffer(&_tname);
out_inode: out_inode:
if ((dir != fname->dir) && !IS_ERR(dir)) { if (dir != fname->dir) {
if ((dir->i_state & I_NEW)) if ((dir->i_state & I_NEW))
discard_new_inode(dir); discard_new_inode(dir);
else else
......
...@@ -2969,7 +2969,7 @@ static ssize_t __ceph_copy_file_range(struct file *src_file, loff_t src_off, ...@@ -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, ret = do_splice_direct(src_file, &src_off, dst_file,
&dst_off, src_objlen, flags); &dst_off, src_objlen, flags);
/* Abort on short copies or on error */ /* Abort on short copies or on error */
if (ret < src_objlen) { if (ret < (long)src_objlen) {
dout("Failed partial copy (%zd)\n", ret); dout("Failed partial copy (%zd)\n", ret);
goto out; goto out;
} }
......
...@@ -769,9 +769,7 @@ int ceph_fill_file_size(struct inode *inode, int issued, ...@@ -769,9 +769,7 @@ int ceph_fill_file_size(struct inode *inode, int issued,
ci->i_truncate_seq = truncate_seq; ci->i_truncate_seq = truncate_seq;
/* the MDS should have revoked these caps */ /* the MDS should have revoked these caps */
WARN_ON_ONCE(issued & (CEPH_CAP_FILE_EXCL | WARN_ON_ONCE(issued & (CEPH_CAP_FILE_RD |
CEPH_CAP_FILE_RD |
CEPH_CAP_FILE_WR |
CEPH_CAP_FILE_LAZYIO)); CEPH_CAP_FILE_LAZYIO));
/* /*
* If we hold relevant caps, or in the case where we're * If we hold relevant caps, or in the case where we're
......
...@@ -459,8 +459,8 @@ int ceph_tcp_connect(struct ceph_connection *con) ...@@ -459,8 +459,8 @@ int ceph_tcp_connect(struct ceph_connection *con)
set_sock_callbacks(sock, con); set_sock_callbacks(sock, con);
con_sock_state_connecting(con); con_sock_state_connecting(con);
ret = sock->ops->connect(sock, (struct sockaddr *)&ss, sizeof(ss), ret = kernel_connect(sock, (struct sockaddr *)&ss, sizeof(ss),
O_NONBLOCK); O_NONBLOCK);
if (ret == -EINPROGRESS) { if (ret == -EINPROGRESS) {
dout("connect %s EINPROGRESS sk_state = %u\n", dout("connect %s EINPROGRESS sk_state = %u\n",
ceph_pr_addr(&con->peer_addr), ceph_pr_addr(&con->peer_addr),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment