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

Commit b2a3ad9c authored by Jeff Layton's avatar Jeff Layton Committed by Steve French
Browse files

cifs: silence compiler warnings showing up with gcc-4.7.0



gcc-4.7.0 has started throwing these warnings when building cifs.ko.

  CC [M]  fs/cifs/cifssmb.o
fs/cifs/cifssmb.c: In function ‘CIFSSMBSetCIFSACL’:
fs/cifs/cifssmb.c:3905:9: warning: array subscript is above array bounds [-Warray-bounds]
fs/cifs/cifssmb.c: In function ‘CIFSSMBSetFileInfo’:
fs/cifs/cifssmb.c:5711:8: warning: array subscript is above array bounds [-Warray-bounds]
fs/cifs/cifssmb.c: In function ‘CIFSSMBUnixSetFileInfo’:
fs/cifs/cifssmb.c:6001:25: warning: array subscript is above array bounds [-Warray-bounds]

This patch cleans up the code a bit by using the offsetof macro instead
of the funky "&pSMB->hdr.Protocol" construct.

Signed-off-by: default avatarJeff Layton <jlayton@redhat.com>
Signed-off-by: default avatarSteve French <sfrench@us.ibm.com>
parent b5efb978
Loading
Loading
Loading
Loading
+12 −12
Original line number Original line Diff line number Diff line
@@ -3892,13 +3892,12 @@ CIFSSMBSetCIFSACL(const int xid, struct cifs_tcon *tcon, __u16 fid,
	int rc = 0;
	int rc = 0;
	int bytes_returned = 0;
	int bytes_returned = 0;
	SET_SEC_DESC_REQ *pSMB = NULL;
	SET_SEC_DESC_REQ *pSMB = NULL;
	NTRANSACT_RSP *pSMBr = NULL;
	void *pSMBr;


setCifsAclRetry:
setCifsAclRetry:
	rc = smb_init(SMB_COM_NT_TRANSACT, 19, tcon, (void **) &pSMB,
	rc = smb_init(SMB_COM_NT_TRANSACT, 19, tcon, (void **) &pSMB, &pSMBr);
			(void **) &pSMBr);
	if (rc)
	if (rc)
			return (rc);
		return rc;


	pSMB->MaxSetupCount = 0;
	pSMB->MaxSetupCount = 0;
	pSMB->Reserved = 0;
	pSMB->Reserved = 0;
@@ -3926,9 +3925,8 @@ setCifsAclRetry:
	pSMB->AclFlags = cpu_to_le32(aclflag);
	pSMB->AclFlags = cpu_to_le32(aclflag);


	if (pntsd && acllen) {
	if (pntsd && acllen) {
		memcpy((char *) &pSMBr->hdr.Protocol + data_offset,
		memcpy((char *)pSMBr + offsetof(struct smb_hdr, Protocol) +
			(char *) pntsd,
				data_offset, pntsd, acllen);
			acllen);
		inc_rfc1001_len(pSMB, byte_count + data_count);
		inc_rfc1001_len(pSMB, byte_count + data_count);
	} else
	} else
		inc_rfc1001_len(pSMB, byte_count);
		inc_rfc1001_len(pSMB, byte_count);
@@ -5708,7 +5706,8 @@ CIFSSMBSetFileInfo(const int xid, struct cifs_tcon *tcon,
	param_offset = offsetof(struct smb_com_transaction2_sfi_req, Fid) - 4;
	param_offset = offsetof(struct smb_com_transaction2_sfi_req, Fid) - 4;
	offset = param_offset + params;
	offset = param_offset + params;


	data_offset = (char *) (&pSMB->hdr.Protocol) + offset;
	data_offset = (char *)pSMB +
			offsetof(struct smb_hdr, Protocol) + offset;


	count = sizeof(FILE_BASIC_INFO);
	count = sizeof(FILE_BASIC_INFO);
	pSMB->MaxParameterCount = cpu_to_le16(2);
	pSMB->MaxParameterCount = cpu_to_le16(2);
@@ -5977,7 +5976,7 @@ CIFSSMBUnixSetFileInfo(const int xid, struct cifs_tcon *tcon,
		       u16 fid, u32 pid_of_opener)
		       u16 fid, u32 pid_of_opener)
{
{
	struct smb_com_transaction2_sfi_req *pSMB  = NULL;
	struct smb_com_transaction2_sfi_req *pSMB  = NULL;
	FILE_UNIX_BASIC_INFO *data_offset;
	char *data_offset;
	int rc = 0;
	int rc = 0;
	u16 params, param_offset, offset, byte_count, count;
	u16 params, param_offset, offset, byte_count, count;


@@ -5999,8 +5998,9 @@ CIFSSMBUnixSetFileInfo(const int xid, struct cifs_tcon *tcon,
	param_offset = offsetof(struct smb_com_transaction2_sfi_req, Fid) - 4;
	param_offset = offsetof(struct smb_com_transaction2_sfi_req, Fid) - 4;
	offset = param_offset + params;
	offset = param_offset + params;


	data_offset = (FILE_UNIX_BASIC_INFO *)
	data_offset = (char *)pSMB +
				((char *)(&pSMB->hdr.Protocol) + offset);
			offsetof(struct smb_hdr, Protocol) + offset;

	count = sizeof(FILE_UNIX_BASIC_INFO);
	count = sizeof(FILE_UNIX_BASIC_INFO);


	pSMB->MaxParameterCount = cpu_to_le16(2);
	pSMB->MaxParameterCount = cpu_to_le16(2);
@@ -6022,7 +6022,7 @@ CIFSSMBUnixSetFileInfo(const int xid, struct cifs_tcon *tcon,
	inc_rfc1001_len(pSMB, byte_count);
	inc_rfc1001_len(pSMB, byte_count);
	pSMB->ByteCount = cpu_to_le16(byte_count);
	pSMB->ByteCount = cpu_to_le16(byte_count);


	cifs_fill_unix_set_info(data_offset, args);
	cifs_fill_unix_set_info((FILE_UNIX_BASIC_INFO *)data_offset, args);


	rc = SendReceiveNoRsp(xid, tcon->ses, (char *) pSMB, 0);
	rc = SendReceiveNoRsp(xid, tcon->ses, (char *) pSMB, 0);
	if (rc)
	if (rc)