Import of kernel-4.18.0-553.78.1.el8_10
This commit is contained in:
parent
d912a08f76
commit
b1b30a8f37
@ -12,7 +12,7 @@ RHEL_MINOR = 10
|
||||
#
|
||||
# Use this spot to avoid future merge conflicts.
|
||||
# Do not trim this comment.
|
||||
RHEL_RELEASE = 553.77.1
|
||||
RHEL_RELEASE = 553.78.1
|
||||
|
||||
#
|
||||
# ZSTREAM
|
||||
|
@ -4767,12 +4767,19 @@ void cifs_oplock_break(struct work_struct *work)
|
||||
struct cifsFileInfo *cfile = container_of(work, struct cifsFileInfo,
|
||||
oplock_break);
|
||||
struct inode *inode = d_inode(cfile->dentry);
|
||||
struct super_block *sb = inode->i_sb;
|
||||
struct cifsInodeInfo *cinode = CIFS_I(inode);
|
||||
struct cifs_tcon *tcon = tlink_tcon(cfile->tlink);
|
||||
struct TCP_Server_Info *server = tcon->ses->server;
|
||||
int rc = 0;
|
||||
bool purge_cache = false;
|
||||
|
||||
/*
|
||||
* Hold a reference to the superblock to prevent it and its inodes from
|
||||
* being freed while we are accessing cinode. Otherwise, _cifsFileInfo_put()
|
||||
* may release the last reference to the sb and trigger inode eviction.
|
||||
*/
|
||||
cifs_sb_active(sb);
|
||||
wait_on_bit(&cinode->flags, CIFS_INODE_PENDING_WRITERS,
|
||||
TASK_UNINTERRUPTIBLE);
|
||||
|
||||
@ -4820,6 +4827,7 @@ oplock_break_ack:
|
||||
}
|
||||
_cifsFileInfo_put(cfile, false /* do not wait for ourself */, false);
|
||||
cifs_done_oplock_break(cinode);
|
||||
cifs_sb_deactive(sb);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -66,14 +66,21 @@ nfs_fh_to_dentry(struct super_block *sb, struct fid *fid,
|
||||
{
|
||||
struct nfs_fattr *fattr = NULL;
|
||||
struct nfs_fh *server_fh = nfs_exp_embedfh(fid->raw);
|
||||
size_t fh_size = offsetof(struct nfs_fh, data) + server_fh->size;
|
||||
size_t fh_size = offsetof(struct nfs_fh, data);
|
||||
const struct nfs_rpc_ops *rpc_ops;
|
||||
struct dentry *dentry;
|
||||
struct inode *inode;
|
||||
int len = EMBED_FH_OFF + XDR_QUADLEN(fh_size);
|
||||
int len = EMBED_FH_OFF;
|
||||
u32 *p = fid->raw;
|
||||
int ret;
|
||||
|
||||
/* Initial check of bounds */
|
||||
if (fh_len < len + XDR_QUADLEN(fh_size) ||
|
||||
fh_len > XDR_QUADLEN(NFS_MAXFHSIZE))
|
||||
return NULL;
|
||||
/* Calculate embedded filehandle size */
|
||||
fh_size += server_fh->size;
|
||||
len += XDR_QUADLEN(fh_size);
|
||||
/* NULL translates to ESTALE */
|
||||
if (fh_len < len || fh_type != len)
|
||||
return NULL;
|
||||
|
@ -441,8 +441,12 @@ int migrate_page_move_mapping(struct address_space *mapping,
|
||||
if (PageSwapBacked(page)) {
|
||||
__SetPageSwapBacked(newpage);
|
||||
if (PageSwapCache(page)) {
|
||||
int i;
|
||||
|
||||
SetPageSwapCache(newpage);
|
||||
set_page_private(newpage, page_private(page));
|
||||
for (i = 0; i < (1 << compound_order(page)); i++)
|
||||
set_page_private(newpage + i,
|
||||
page_private(page + i));
|
||||
}
|
||||
} else {
|
||||
VM_BUG_ON_PAGE(PageSwapCache(page), page);
|
||||
|
Loading…
Reference in New Issue
Block a user