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.
|
# Use this spot to avoid future merge conflicts.
|
||||||
# Do not trim this comment.
|
# Do not trim this comment.
|
||||||
RHEL_RELEASE = 553.77.1
|
RHEL_RELEASE = 553.78.1
|
||||||
|
|
||||||
#
|
#
|
||||||
# ZSTREAM
|
# ZSTREAM
|
||||||
|
@ -4767,12 +4767,19 @@ void cifs_oplock_break(struct work_struct *work)
|
|||||||
struct cifsFileInfo *cfile = container_of(work, struct cifsFileInfo,
|
struct cifsFileInfo *cfile = container_of(work, struct cifsFileInfo,
|
||||||
oplock_break);
|
oplock_break);
|
||||||
struct inode *inode = d_inode(cfile->dentry);
|
struct inode *inode = d_inode(cfile->dentry);
|
||||||
|
struct super_block *sb = inode->i_sb;
|
||||||
struct cifsInodeInfo *cinode = CIFS_I(inode);
|
struct cifsInodeInfo *cinode = CIFS_I(inode);
|
||||||
struct cifs_tcon *tcon = tlink_tcon(cfile->tlink);
|
struct cifs_tcon *tcon = tlink_tcon(cfile->tlink);
|
||||||
struct TCP_Server_Info *server = tcon->ses->server;
|
struct TCP_Server_Info *server = tcon->ses->server;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
bool purge_cache = false;
|
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,
|
wait_on_bit(&cinode->flags, CIFS_INODE_PENDING_WRITERS,
|
||||||
TASK_UNINTERRUPTIBLE);
|
TASK_UNINTERRUPTIBLE);
|
||||||
|
|
||||||
@ -4820,6 +4827,7 @@ oplock_break_ack:
|
|||||||
}
|
}
|
||||||
_cifsFileInfo_put(cfile, false /* do not wait for ourself */, false);
|
_cifsFileInfo_put(cfile, false /* do not wait for ourself */, false);
|
||||||
cifs_done_oplock_break(cinode);
|
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_fattr *fattr = NULL;
|
||||||
struct nfs_fh *server_fh = nfs_exp_embedfh(fid->raw);
|
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;
|
const struct nfs_rpc_ops *rpc_ops;
|
||||||
struct dentry *dentry;
|
struct dentry *dentry;
|
||||||
struct inode *inode;
|
struct inode *inode;
|
||||||
int len = EMBED_FH_OFF + XDR_QUADLEN(fh_size);
|
int len = EMBED_FH_OFF;
|
||||||
u32 *p = fid->raw;
|
u32 *p = fid->raw;
|
||||||
int ret;
|
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 */
|
/* NULL translates to ESTALE */
|
||||||
if (fh_len < len || fh_type != len)
|
if (fh_len < len || fh_type != len)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -441,8 +441,12 @@ int migrate_page_move_mapping(struct address_space *mapping,
|
|||||||
if (PageSwapBacked(page)) {
|
if (PageSwapBacked(page)) {
|
||||||
__SetPageSwapBacked(newpage);
|
__SetPageSwapBacked(newpage);
|
||||||
if (PageSwapCache(page)) {
|
if (PageSwapCache(page)) {
|
||||||
|
int i;
|
||||||
|
|
||||||
SetPageSwapCache(newpage);
|
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 {
|
} else {
|
||||||
VM_BUG_ON_PAGE(PageSwapCache(page), page);
|
VM_BUG_ON_PAGE(PageSwapCache(page), page);
|
||||||
|
Loading…
Reference in New Issue
Block a user