Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 31ba4331 authored by Steve French's avatar Steve French
Browse files

SMB3: passthru query info doesn't check for SMB3 FSCTL passthru



The passthrough queries from user space tools like smbinfo can be either
SMB3 QUERY_INFO or SMB3 FSCTL, but we are not checking for the latter.
Temporarily we return EOPNOTSUPP for SMB3 FSCTL passthrough requests
but once compounding fsctls is fixed can enable.

Signed-off-by: default avatarSteve French <stfrench@microsoft.com>
Reviewed-by: default avatarRonnie Sahlberg <lsahlber@redhat.com>
parent 779ede04
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -43,6 +43,9 @@ struct smb_snapshot_array {
	/*	snapshots[]; */
} __packed;

/* query_info flags */
#define PASSTHRU_QUERY_INFO	0x00000000
#define PASSTHRU_FSCTL		0x00000001
struct smb_query_info {
	__u32   info_type;
	__u32   file_info_class;
+19 −7
Original line number Diff line number Diff line
@@ -1390,15 +1390,27 @@ smb2_ioctl_query_info(const unsigned int xid,
	smb2_set_next_command(tcon, &rqst[0]);

	/* Query */
	if (qi.flags & PASSTHRU_FSCTL) {
		/* Can eventually relax perm check since server enforces too */
		if (!capable(CAP_SYS_ADMIN))
			rc = -EPERM;
		else  /* TBD: Add code to compound FSCTL */
			rc = -EOPNOTSUPP;
	} else if (qi.flags == PASSTHRU_QUERY_INFO) {
		memset(&qi_iov, 0, sizeof(qi_iov));
		rqst[1].rq_iov = qi_iov;
		rqst[1].rq_nvec = 1;

	rc = SMB2_query_info_init(tcon, &rqst[1], COMPOUND_FID, COMPOUND_FID,
				  qi.file_info_class, qi.info_type,
				  qi.additional_information,
		rc = SMB2_query_info_init(tcon, &rqst[1], COMPOUND_FID,
				  COMPOUND_FID, qi.file_info_class,
				  qi.info_type, qi.additional_information,
				  qi.input_buffer_length,
				  qi.output_buffer_length, buffer);
	} else { /* unknown flags */
		cifs_dbg(VFS, "invalid passthru query flags: 0x%x\n", qi.flags);
		rc = -EINVAL;
	}

	if (rc)
		goto iqinf_exit;
	smb2_set_next_command(tcon, &rqst[1]);