forked from luck/tmp_suning_uos_patched
Three filesystem endianness fixes (one goes back to the 2.6 era, all
marked for stable) and two fixups for this merge window's patches. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQEcBAABCAAGBQJYghs8AAoJEEp/3jgCEfOLOz0IAI/xNUMO121S57GEhzkKDdWC 5PCHjg9itU+2eMCCZ2Nyuikj2NVwEFh9HLpMz5jtFa3oWCIhljh9wT8zlKDgpn5R Q1GCT4LkHGhV+HA2sM04aynKBmC90ZVAHfDt/BTs5mLzW7neSpxFOQEPdS4FG6Zg NxUGcI/GhqmfpcLnm5IqXxI1cc0bXf6BmEzlGrPAkvzJBhHXWKCVpr1Q/nBW96Q5 ko1EpP16wZoeRvsr1ztXmBTNURUrCi7S6PyK4M5MAro381U3a7zwQuFq9uuREahO nJtCjWD3bd6U3ENDe/Gacz3czXQyjOjE2/w42jL1dA84UMQbz+wv1SyNCkQgiyI= =1LTx -----END PGP SIGNATURE----- Merge tag 'ceph-for-4.10-rc5' of git://github.com/ceph/ceph-client Pull ceph fixes from Ilya Dryomov: "Three filesystem endianness fixes (one goes back to the 2.6 era, all marked for stable) and two fixups for this merge window's patches" * tag 'ceph-for-4.10-rc5' of git://github.com/ceph/ceph-client: ceph: fix bad endianness handling in parse_reply_info_extra ceph: fix endianness bug in frag_tree_split_cmp ceph: fix endianness of getattr mask in ceph_d_revalidate libceph: make sure ceph_aes_crypt() IV is aligned ceph: fix ceph_get_caps() interruption
This commit is contained in:
commit
e90665a5d3
|
@ -2591,8 +2591,13 @@ int ceph_get_caps(struct ceph_inode_info *ci, int need, int want,
|
|||
add_wait_queue(&ci->i_cap_wq, &wait);
|
||||
|
||||
while (!try_get_cap_refs(ci, need, want, endoff,
|
||||
true, &_got, &err))
|
||||
true, &_got, &err)) {
|
||||
if (signal_pending(current)) {
|
||||
ret = -ERESTARTSYS;
|
||||
break;
|
||||
}
|
||||
wait_woken(&wait, TASK_INTERRUPTIBLE, MAX_SCHEDULE_TIMEOUT);
|
||||
}
|
||||
|
||||
remove_wait_queue(&ci->i_cap_wq, &wait);
|
||||
|
||||
|
|
|
@ -1230,7 +1230,8 @@ static int ceph_d_revalidate(struct dentry *dentry, unsigned int flags)
|
|||
struct ceph_mds_client *mdsc =
|
||||
ceph_sb_to_client(dir->i_sb)->mdsc;
|
||||
struct ceph_mds_request *req;
|
||||
int op, mask, err;
|
||||
int op, err;
|
||||
u32 mask;
|
||||
|
||||
if (flags & LOOKUP_RCU)
|
||||
return -ECHILD;
|
||||
|
@ -1245,7 +1246,7 @@ static int ceph_d_revalidate(struct dentry *dentry, unsigned int flags)
|
|||
mask = CEPH_STAT_CAP_INODE | CEPH_CAP_AUTH_SHARED;
|
||||
if (ceph_security_xattr_wanted(dir))
|
||||
mask |= CEPH_CAP_XATTR_SHARED;
|
||||
req->r_args.getattr.mask = mask;
|
||||
req->r_args.getattr.mask = cpu_to_le32(mask);
|
||||
|
||||
err = ceph_mdsc_do_request(mdsc, NULL, req);
|
||||
switch (err) {
|
||||
|
|
|
@ -305,7 +305,8 @@ static int frag_tree_split_cmp(const void *l, const void *r)
|
|||
{
|
||||
struct ceph_frag_tree_split *ls = (struct ceph_frag_tree_split*)l;
|
||||
struct ceph_frag_tree_split *rs = (struct ceph_frag_tree_split*)r;
|
||||
return ceph_frag_compare(ls->frag, rs->frag);
|
||||
return ceph_frag_compare(le32_to_cpu(ls->frag),
|
||||
le32_to_cpu(rs->frag));
|
||||
}
|
||||
|
||||
static bool is_frag_child(u32 f, struct ceph_inode_frag *frag)
|
||||
|
|
|
@ -288,12 +288,13 @@ static int parse_reply_info_extra(void **p, void *end,
|
|||
struct ceph_mds_reply_info_parsed *info,
|
||||
u64 features)
|
||||
{
|
||||
if (info->head->op == CEPH_MDS_OP_GETFILELOCK)
|
||||
u32 op = le32_to_cpu(info->head->op);
|
||||
|
||||
if (op == CEPH_MDS_OP_GETFILELOCK)
|
||||
return parse_reply_info_filelock(p, end, info, features);
|
||||
else if (info->head->op == CEPH_MDS_OP_READDIR ||
|
||||
info->head->op == CEPH_MDS_OP_LSSNAP)
|
||||
else if (op == CEPH_MDS_OP_READDIR || op == CEPH_MDS_OP_LSSNAP)
|
||||
return parse_reply_info_dir(p, end, info, features);
|
||||
else if (info->head->op == CEPH_MDS_OP_CREATE)
|
||||
else if (op == CEPH_MDS_OP_CREATE)
|
||||
return parse_reply_info_create(p, end, info, features);
|
||||
else
|
||||
return -EIO;
|
||||
|
|
|
@ -214,7 +214,7 @@ static int ceph_aes_crypt(const struct ceph_crypto_key *key, bool encrypt,
|
|||
SKCIPHER_REQUEST_ON_STACK(req, key->tfm);
|
||||
struct sg_table sgt;
|
||||
struct scatterlist prealloc_sg;
|
||||
char iv[AES_BLOCK_SIZE];
|
||||
char iv[AES_BLOCK_SIZE] __aligned(8);
|
||||
int pad_byte = AES_BLOCK_SIZE - (in_len & (AES_BLOCK_SIZE - 1));
|
||||
int crypt_len = encrypt ? in_len + pad_byte : in_len;
|
||||
int ret;
|
||||
|
|
Loading…
Reference in New Issue
Block a user