mirror of https://github.com/torvalds/linux.git
Misc set of fixes for 9p in 6.5
Most of these clean up warnings we've gotten out of compilation tools, but several of them were from inspection while hunting down a couple of regressions. The most important one to pull is75b396821c(fs/9p: remove unnecessary and overrestrictive check) which caused a regression for some folks by restricting mmap in any case where writeback caches weren't enabled. Most of the other bugs caught via inspection were type mismatches. Signed-off-by: Eric Van Hensbergen <ericvh@kernel.org> -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEElpbw0ZalkJikytFRiP/V+0pf/5gFAmTDH8cACgkQiP/V+0pf /5hSJQ//b59cDliC7Knf9B2Of1UsLJ2wYIbxWVYKLwYarKFn3tmtO5dPtWZrQzjB Kz6fif5z1c0WdjNFLifs/XNqUq5znX/TY8bV/NmOg8VlaoJqmUQSSYnNQOWZCFKT zwxC6BO6gPNNIkJN2xQ8oOq11Qon/nbZbuN9P2VDcT5Yr2KmFx6FHRcrBNRYAm3E UzFdjkLrLef3VrvegJNGM3Wv2HqyNBA6QhifZBjDkydtDPMd9fRNns7Q60AARR9K aqXV6SihE/Ox7sSmVNjTzYF67eq5Xjt+sSzo2SdfOaZxVIa6wf0UXQuFqmHts6Zs QUCdXS5YbQAwQfdkm22rnTIxAwsbEpFOGGweUvMBXzZbl/sq/PK4Nt6DpCS8ZFi3 81Z5Ey+Q4yaxwdirP521M4ao2Ae2Fzg12bqDTNssZdOYGcXBqBfWiR5IfMbbkgWq WzCVI3V/LshQ75pXQyS4BtW/29C2nN7g3jLrF3Q5OTe7XmHMCZFvtP4lKvY0piQy ++XoDs1LCJWSZebfkNa05L5nhQ1mYhwiZutHTtF3ejTTiJvcJXQ4xHYLzjOON+4i blLTpgWLO0rIRAmX0I8GwPi6q0xL4rFP4XGGz/LDppRQkRa13vtzFtMvuldPyEq7 g4pcLkI3SPbL982qYbg8UO+GjO/Q9M/DafXQVlUyDw04TQbT8Jg= =TAC1 -----END PGP SIGNATURE----- Merge tag '9p-fixes-6.5-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs Pull 9p fixes from Eric Van Hensbergen: "Misc set of fixes for 9p. Most of these clean up warnings we've gotten out of compilation tools, but several of them were from inspection while hunting down a couple of regressions. The most important one is75b396821c("fs/9p: remove unnecessary and overrestrictive check") which caused a regression for some folks by restricting mmap in any case where writeback caches weren't enabled. Most of the other bugs caught via inspection were type mismatches" * tag '9p-fixes-6.5-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs: fs/9p: Remove unused extern declaration 9p: remove dead stores (variable set again without being read) 9p: virtio: skip incrementing unused variable 9p: virtio: make sure 'offs' is initialized in zc_request 9p: virtio: fix unlikely null pointer deref in handle_rerror 9p: fix ignored return value in v9fs_dir_release fs/9p: remove unnecessary invalidate_inode_pages2 fs/9p: fix type mismatch in file cache mode helper fs/9p: fix typo in comparison logic for cache mode fs/9p: remove unnecessary and overrestrictive check fs/9p: Fix a datatype used with V9FS_DIRECT_IO
This commit is contained in:
commit
28d79b746c
|
|
@ -46,8 +46,8 @@ static inline struct p9_fid *v9fs_fid_clone(struct dentry *dentry)
|
|||
* NOTE: these are set after open so only reflect 9p client not
|
||||
* underlying file system on server.
|
||||
*/
|
||||
static inline void v9fs_fid_add_modes(struct p9_fid *fid, int s_flags,
|
||||
int s_cache, unsigned int f_flags)
|
||||
static inline void v9fs_fid_add_modes(struct p9_fid *fid, unsigned int s_flags,
|
||||
unsigned int s_cache, unsigned int f_flags)
|
||||
{
|
||||
if (fid->qid.type != P9_QTFILE)
|
||||
return;
|
||||
|
|
@ -57,7 +57,7 @@ static inline void v9fs_fid_add_modes(struct p9_fid *fid, int s_flags,
|
|||
(s_flags & V9FS_DIRECT_IO) || (f_flags & O_DIRECT)) {
|
||||
fid->mode |= P9L_DIRECT; /* no read or write cache */
|
||||
} else if ((!(s_cache & CACHE_WRITEBACK)) ||
|
||||
(f_flags & O_DSYNC) | (s_flags & V9FS_SYNC)) {
|
||||
(f_flags & O_DSYNC) || (s_flags & V9FS_SYNC)) {
|
||||
fid->mode |= P9L_NOWRITECACHE;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -545,8 +545,6 @@ void v9fs_session_begin_cancel(struct v9fs_session_info *v9ses)
|
|||
p9_client_begin_disconnect(v9ses->clnt);
|
||||
}
|
||||
|
||||
extern int v9fs_error_init(void);
|
||||
|
||||
static struct kobject *v9fs_kobj;
|
||||
|
||||
#ifdef CONFIG_9P_FSCACHE
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ enum p9_cache_bits {
|
|||
|
||||
struct v9fs_session_info {
|
||||
/* options */
|
||||
unsigned char flags;
|
||||
unsigned int flags;
|
||||
unsigned char nodev;
|
||||
unsigned short debug;
|
||||
unsigned int afid;
|
||||
|
|
|
|||
|
|
@ -208,7 +208,7 @@ int v9fs_dir_release(struct inode *inode, struct file *filp)
|
|||
struct p9_fid *fid;
|
||||
__le32 version;
|
||||
loff_t i_size;
|
||||
int retval = 0;
|
||||
int retval = 0, put_err;
|
||||
|
||||
fid = filp->private_data;
|
||||
p9_debug(P9_DEBUG_VFS, "inode: %p filp: %p fid: %d\n",
|
||||
|
|
@ -221,7 +221,8 @@ int v9fs_dir_release(struct inode *inode, struct file *filp)
|
|||
spin_lock(&inode->i_lock);
|
||||
hlist_del(&fid->ilist);
|
||||
spin_unlock(&inode->i_lock);
|
||||
retval = p9_fid_put(fid);
|
||||
put_err = p9_fid_put(fid);
|
||||
retval = retval < 0 ? retval : put_err;
|
||||
}
|
||||
|
||||
if ((filp->f_mode & FMODE_WRITE)) {
|
||||
|
|
|
|||
|
|
@ -505,10 +505,7 @@ v9fs_file_mmap(struct file *filp, struct vm_area_struct *vma)
|
|||
p9_debug(P9_DEBUG_MMAP, "filp :%p\n", filp);
|
||||
|
||||
if (!(v9ses->cache & CACHE_WRITEBACK)) {
|
||||
p9_debug(P9_DEBUG_CACHE, "(no mmap mode)");
|
||||
if (vma->vm_flags & VM_MAYSHARE)
|
||||
return -ENODEV;
|
||||
invalidate_inode_pages2(filp->f_mapping);
|
||||
p9_debug(P9_DEBUG_CACHE, "(read-only mmap mode)");
|
||||
return generic_file_readonly_mmap(filp, vma);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -163,7 +163,6 @@ int v9fs_uflags2omode(int uflags, int extended)
|
|||
{
|
||||
int ret;
|
||||
|
||||
ret = 0;
|
||||
switch (uflags&3) {
|
||||
default:
|
||||
case O_RDONLY:
|
||||
|
|
@ -603,7 +602,6 @@ v9fs_create(struct v9fs_session_info *v9ses, struct inode *dir,
|
|||
|
||||
p9_debug(P9_DEBUG_VFS, "name %pd\n", dentry);
|
||||
|
||||
err = 0;
|
||||
name = dentry->d_name.name;
|
||||
dfid = v9fs_parent_fid(dentry);
|
||||
if (IS_ERR(dfid)) {
|
||||
|
|
@ -815,8 +813,6 @@ v9fs_vfs_atomic_open(struct inode *dir, struct dentry *dentry,
|
|||
if (!(flags & O_CREAT) || d_really_is_positive(dentry))
|
||||
return finish_no_open(file, res);
|
||||
|
||||
err = 0;
|
||||
|
||||
v9ses = v9fs_inode2v9ses(dir);
|
||||
perm = unixmode2p9mode(v9ses, mode);
|
||||
p9_omode = v9fs_uflags2omode(flags, v9fs_proto_dotu(v9ses));
|
||||
|
|
@ -912,7 +908,6 @@ v9fs_vfs_rename(struct mnt_idmap *idmap, struct inode *old_dir,
|
|||
return -EINVAL;
|
||||
|
||||
p9_debug(P9_DEBUG_VFS, "\n");
|
||||
retval = 0;
|
||||
old_inode = d_inode(old_dentry);
|
||||
new_inode = d_inode(new_dentry);
|
||||
v9ses = v9fs_inode2v9ses(old_inode);
|
||||
|
|
@ -1066,7 +1061,6 @@ static int v9fs_vfs_setattr(struct mnt_idmap *idmap,
|
|||
if (retval)
|
||||
return retval;
|
||||
|
||||
retval = -EPERM;
|
||||
v9ses = v9fs_dentry2v9ses(dentry);
|
||||
if (iattr->ia_valid & ATTR_FILE) {
|
||||
fid = iattr->ia_file->private_data;
|
||||
|
|
|
|||
|
|
@ -366,7 +366,6 @@ static int v9fs_vfs_mkdir_dotl(struct mnt_idmap *idmap,
|
|||
struct posix_acl *dacl = NULL, *pacl = NULL;
|
||||
|
||||
p9_debug(P9_DEBUG_VFS, "name %pd\n", dentry);
|
||||
err = 0;
|
||||
v9ses = v9fs_inode2v9ses(dir);
|
||||
|
||||
omode |= S_IFDIR;
|
||||
|
|
|
|||
|
|
@ -904,7 +904,7 @@ EXPORT_SYMBOL(do_trace_9p_fid_put);
|
|||
|
||||
static int p9_client_version(struct p9_client *c)
|
||||
{
|
||||
int err = 0;
|
||||
int err;
|
||||
struct p9_req_t *req;
|
||||
char *version = NULL;
|
||||
int msize;
|
||||
|
|
@ -975,7 +975,6 @@ struct p9_client *p9_client_create(const char *dev_name, char *options)
|
|||
struct p9_client *clnt;
|
||||
char *client_id;
|
||||
|
||||
err = 0;
|
||||
clnt = kmalloc(sizeof(*clnt), GFP_KERNEL);
|
||||
if (!clnt)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
|
@ -1094,7 +1093,7 @@ struct p9_fid *p9_client_attach(struct p9_client *clnt, struct p9_fid *afid,
|
|||
const char *uname, kuid_t n_uname,
|
||||
const char *aname)
|
||||
{
|
||||
int err = 0;
|
||||
int err;
|
||||
struct p9_req_t *req;
|
||||
struct p9_fid *fid;
|
||||
struct p9_qid qid;
|
||||
|
|
@ -1147,7 +1146,6 @@ struct p9_fid *p9_client_walk(struct p9_fid *oldfid, uint16_t nwname,
|
|||
struct p9_req_t *req;
|
||||
u16 nwqids, count;
|
||||
|
||||
err = 0;
|
||||
wqids = NULL;
|
||||
clnt = oldfid->clnt;
|
||||
if (clone) {
|
||||
|
|
@ -1224,7 +1222,6 @@ int p9_client_open(struct p9_fid *fid, int mode)
|
|||
clnt = fid->clnt;
|
||||
p9_debug(P9_DEBUG_9P, ">>> %s fid %d mode %d\n",
|
||||
p9_is_proto_dotl(clnt) ? "TLOPEN" : "TOPEN", fid->fid, mode);
|
||||
err = 0;
|
||||
|
||||
if (fid->mode != -1)
|
||||
return -EINVAL;
|
||||
|
|
@ -1262,7 +1259,7 @@ EXPORT_SYMBOL(p9_client_open);
|
|||
int p9_client_create_dotl(struct p9_fid *ofid, const char *name, u32 flags,
|
||||
u32 mode, kgid_t gid, struct p9_qid *qid)
|
||||
{
|
||||
int err = 0;
|
||||
int err;
|
||||
struct p9_client *clnt;
|
||||
struct p9_req_t *req;
|
||||
int iounit;
|
||||
|
|
@ -1314,7 +1311,6 @@ int p9_client_fcreate(struct p9_fid *fid, const char *name, u32 perm, int mode,
|
|||
|
||||
p9_debug(P9_DEBUG_9P, ">>> TCREATE fid %d name %s perm %d mode %d\n",
|
||||
fid->fid, name, perm, mode);
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
|
||||
if (fid->mode != -1)
|
||||
|
|
@ -1350,7 +1346,7 @@ EXPORT_SYMBOL(p9_client_fcreate);
|
|||
int p9_client_symlink(struct p9_fid *dfid, const char *name,
|
||||
const char *symtgt, kgid_t gid, struct p9_qid *qid)
|
||||
{
|
||||
int err = 0;
|
||||
int err;
|
||||
struct p9_client *clnt;
|
||||
struct p9_req_t *req;
|
||||
|
||||
|
|
@ -1402,13 +1398,12 @@ EXPORT_SYMBOL(p9_client_link);
|
|||
|
||||
int p9_client_fsync(struct p9_fid *fid, int datasync)
|
||||
{
|
||||
int err;
|
||||
int err = 0;
|
||||
struct p9_client *clnt;
|
||||
struct p9_req_t *req;
|
||||
|
||||
p9_debug(P9_DEBUG_9P, ">>> TFSYNC fid %d datasync:%d\n",
|
||||
fid->fid, datasync);
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
|
||||
req = p9_client_rpc(clnt, P9_TFSYNC, "dd", fid->fid, datasync);
|
||||
|
|
@ -1428,7 +1423,7 @@ EXPORT_SYMBOL(p9_client_fsync);
|
|||
|
||||
int p9_client_clunk(struct p9_fid *fid)
|
||||
{
|
||||
int err;
|
||||
int err = 0;
|
||||
struct p9_client *clnt;
|
||||
struct p9_req_t *req;
|
||||
int retries = 0;
|
||||
|
|
@ -1436,7 +1431,6 @@ int p9_client_clunk(struct p9_fid *fid)
|
|||
again:
|
||||
p9_debug(P9_DEBUG_9P, ">>> TCLUNK fid %d (try %d)\n",
|
||||
fid->fid, retries);
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
|
||||
req = p9_client_rpc(clnt, P9_TCLUNK, "d", fid->fid);
|
||||
|
|
@ -1465,12 +1459,11 @@ EXPORT_SYMBOL(p9_client_clunk);
|
|||
|
||||
int p9_client_remove(struct p9_fid *fid)
|
||||
{
|
||||
int err;
|
||||
int err = 0;
|
||||
struct p9_client *clnt;
|
||||
struct p9_req_t *req;
|
||||
|
||||
p9_debug(P9_DEBUG_9P, ">>> TREMOVE fid %d\n", fid->fid);
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
|
||||
req = p9_client_rpc(clnt, P9_TREMOVE, "d", fid->fid);
|
||||
|
|
@ -1680,7 +1673,6 @@ struct p9_wstat *p9_client_stat(struct p9_fid *fid)
|
|||
if (!ret)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
|
||||
req = p9_client_rpc(clnt, P9_TSTAT, "d", fid->fid);
|
||||
|
|
@ -1733,7 +1725,6 @@ struct p9_stat_dotl *p9_client_getattr_dotl(struct p9_fid *fid,
|
|||
if (!ret)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
|
||||
req = p9_client_rpc(clnt, P9_TGETATTR, "dq", fid->fid, request_mask);
|
||||
|
|
@ -1812,11 +1803,10 @@ static int p9_client_statsize(struct p9_wstat *wst, int proto_version)
|
|||
|
||||
int p9_client_wstat(struct p9_fid *fid, struct p9_wstat *wst)
|
||||
{
|
||||
int err;
|
||||
int err = 0;
|
||||
struct p9_req_t *req;
|
||||
struct p9_client *clnt;
|
||||
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
wst->size = p9_client_statsize(wst, clnt->proto_version);
|
||||
p9_debug(P9_DEBUG_9P, ">>> TWSTAT fid %d\n",
|
||||
|
|
@ -1851,11 +1841,10 @@ EXPORT_SYMBOL(p9_client_wstat);
|
|||
|
||||
int p9_client_setattr(struct p9_fid *fid, struct p9_iattr_dotl *p9attr)
|
||||
{
|
||||
int err;
|
||||
int err = 0;
|
||||
struct p9_req_t *req;
|
||||
struct p9_client *clnt;
|
||||
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
p9_debug(P9_DEBUG_9P, ">>> TSETATTR fid %d\n", fid->fid);
|
||||
p9_debug(P9_DEBUG_9P, " valid=%x mode=%x uid=%d gid=%d size=%lld\n",
|
||||
|
|
@ -1887,7 +1876,6 @@ int p9_client_statfs(struct p9_fid *fid, struct p9_rstatfs *sb)
|
|||
struct p9_req_t *req;
|
||||
struct p9_client *clnt;
|
||||
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
|
||||
p9_debug(P9_DEBUG_9P, ">>> TSTATFS fid %d\n", fid->fid);
|
||||
|
|
@ -1921,11 +1909,10 @@ EXPORT_SYMBOL(p9_client_statfs);
|
|||
int p9_client_rename(struct p9_fid *fid,
|
||||
struct p9_fid *newdirfid, const char *name)
|
||||
{
|
||||
int err;
|
||||
int err = 0;
|
||||
struct p9_req_t *req;
|
||||
struct p9_client *clnt;
|
||||
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
|
||||
p9_debug(P9_DEBUG_9P, ">>> TRENAME fid %d newdirfid %d name %s\n",
|
||||
|
|
@ -1949,11 +1936,10 @@ EXPORT_SYMBOL(p9_client_rename);
|
|||
int p9_client_renameat(struct p9_fid *olddirfid, const char *old_name,
|
||||
struct p9_fid *newdirfid, const char *new_name)
|
||||
{
|
||||
int err;
|
||||
int err = 0;
|
||||
struct p9_req_t *req;
|
||||
struct p9_client *clnt;
|
||||
|
||||
err = 0;
|
||||
clnt = olddirfid->clnt;
|
||||
|
||||
p9_debug(P9_DEBUG_9P,
|
||||
|
|
@ -1986,7 +1972,6 @@ struct p9_fid *p9_client_xattrwalk(struct p9_fid *file_fid,
|
|||
struct p9_client *clnt;
|
||||
struct p9_fid *attr_fid;
|
||||
|
||||
err = 0;
|
||||
clnt = file_fid->clnt;
|
||||
attr_fid = p9_fid_create(clnt);
|
||||
if (!attr_fid) {
|
||||
|
|
@ -2027,14 +2012,13 @@ EXPORT_SYMBOL_GPL(p9_client_xattrwalk);
|
|||
int p9_client_xattrcreate(struct p9_fid *fid, const char *name,
|
||||
u64 attr_size, int flags)
|
||||
{
|
||||
int err;
|
||||
int err = 0;
|
||||
struct p9_req_t *req;
|
||||
struct p9_client *clnt;
|
||||
|
||||
p9_debug(P9_DEBUG_9P,
|
||||
">>> TXATTRCREATE fid %d name %s size %llu flag %d\n",
|
||||
fid->fid, name, attr_size, flags);
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
req = p9_client_rpc(clnt, P9_TXATTRCREATE, "dsqd",
|
||||
fid->fid, name, attr_size, flags);
|
||||
|
|
@ -2063,7 +2047,6 @@ int p9_client_readdir(struct p9_fid *fid, char *data, u32 count, u64 offset)
|
|||
p9_debug(P9_DEBUG_9P, ">>> TREADDIR fid %d offset %llu count %d\n",
|
||||
fid->fid, offset, count);
|
||||
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
|
||||
rsize = fid->iounit;
|
||||
|
|
@ -2122,7 +2105,6 @@ int p9_client_mknod_dotl(struct p9_fid *fid, const char *name, int mode,
|
|||
struct p9_client *clnt;
|
||||
struct p9_req_t *req;
|
||||
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
p9_debug(P9_DEBUG_9P,
|
||||
">>> TMKNOD fid %d name %s mode %d major %d minor %d\n",
|
||||
|
|
@ -2153,7 +2135,6 @@ int p9_client_mkdir_dotl(struct p9_fid *fid, const char *name, int mode,
|
|||
struct p9_client *clnt;
|
||||
struct p9_req_t *req;
|
||||
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
p9_debug(P9_DEBUG_9P, ">>> TMKDIR fid %d name %s mode %d gid %d\n",
|
||||
fid->fid, name, mode, from_kgid(&init_user_ns, gid));
|
||||
|
|
@ -2182,7 +2163,6 @@ int p9_client_lock_dotl(struct p9_fid *fid, struct p9_flock *flock, u8 *status)
|
|||
struct p9_client *clnt;
|
||||
struct p9_req_t *req;
|
||||
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
p9_debug(P9_DEBUG_9P,
|
||||
">>> TLOCK fid %d type %i flags %d start %lld length %lld proc_id %d client_id %s\n",
|
||||
|
|
@ -2214,7 +2194,6 @@ int p9_client_getlock_dotl(struct p9_fid *fid, struct p9_getlock *glock)
|
|||
struct p9_client *clnt;
|
||||
struct p9_req_t *req;
|
||||
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
p9_debug(P9_DEBUG_9P,
|
||||
">>> TGETLOCK fid %d, type %i start %lld length %lld proc_id %d client_id %s\n",
|
||||
|
|
@ -2251,7 +2230,6 @@ int p9_client_readlink(struct p9_fid *fid, char **target)
|
|||
struct p9_client *clnt;
|
||||
struct p9_req_t *req;
|
||||
|
||||
err = 0;
|
||||
clnt = fid->clnt;
|
||||
p9_debug(P9_DEBUG_9P, ">>> TREADLINK fid %d\n", fid->fid);
|
||||
|
||||
|
|
|
|||
|
|
@ -384,7 +384,7 @@ static void handle_rerror(struct p9_req_t *req, int in_hdr_len,
|
|||
void *to = req->rc.sdata + in_hdr_len;
|
||||
|
||||
// Fits entirely into the static data? Nothing to do.
|
||||
if (req->rc.size < in_hdr_len)
|
||||
if (req->rc.size < in_hdr_len || !pages)
|
||||
return;
|
||||
|
||||
// Really long error message? Tough, truncate the reply. Might get
|
||||
|
|
@ -428,7 +428,7 @@ p9_virtio_zc_request(struct p9_client *client, struct p9_req_t *req,
|
|||
struct page **in_pages = NULL, **out_pages = NULL;
|
||||
struct virtio_chan *chan = client->trans;
|
||||
struct scatterlist *sgs[4];
|
||||
size_t offs;
|
||||
size_t offs = 0;
|
||||
int need_drop = 0;
|
||||
int kicked = 0;
|
||||
|
||||
|
|
@ -501,8 +501,8 @@ p9_virtio_zc_request(struct p9_client *client, struct p9_req_t *req,
|
|||
|
||||
if (in_pages) {
|
||||
sgs[out_sgs + in_sgs++] = chan->sg + out + in;
|
||||
in += pack_sg_list_p(chan->sg, out + in, VIRTQUEUE_NUM,
|
||||
in_pages, in_nr_pages, offs, inlen);
|
||||
pack_sg_list_p(chan->sg, out + in, VIRTQUEUE_NUM,
|
||||
in_pages, in_nr_pages, offs, inlen);
|
||||
}
|
||||
|
||||
BUG_ON(out_sgs + in_sgs > ARRAY_SIZE(sgs));
|
||||
|
|
|
|||
Loading…
Reference in New Issue