diff options
Diffstat (limited to 'fs/cifs/netmisc.c')
| -rw-r--r-- | fs/cifs/netmisc.c | 77 | 
1 files changed, 31 insertions, 46 deletions
diff --git a/fs/cifs/netmisc.c b/fs/cifs/netmisc.c index 9aad47a2d62..6834b9c3bec 100644 --- a/fs/cifs/netmisc.c +++ b/fs/cifs/netmisc.c @@ -51,7 +51,7 @@ static const struct smb_to_posix_error mapping_table_ERRDOS[] = {  	{ERRnoaccess, -EACCES},  	{ERRbadfid, -EBADF},  	{ERRbadmcb, -EIO}, -	{ERRnomem, -ENOMEM}, +	{ERRnomem, -EREMOTEIO},  	{ERRbadmem, -EFAULT},  	{ERRbadenv, -EFAULT},  	{ERRbadformat, -EINVAL}, @@ -62,7 +62,7 @@ static const struct smb_to_posix_error mapping_table_ERRDOS[] = {  	{ERRdiffdevice, -EXDEV},  	{ERRnofiles, -ENOENT},  	{ERRwriteprot, -EROFS}, -	{ERRbadshare, -ETXTBSY}, +	{ERRbadshare, -EBUSY},  	{ERRlock, -EACCES},  	{ERRunsup, -EINVAL},  	{ERRnosuchshare, -ENXIO}, @@ -110,7 +110,7 @@ static const struct smb_to_posix_error mapping_table_ERRSRV[] = {  	{ERRnoroom, -ENOSPC},  	{ERRrmuns, -EUSERS},  	{ERRtimeout, -ETIME}, -	{ERRnoresource, -ENOBUFS}, +	{ERRnoresource, -EREMOTEIO},  	{ERRtoomanyuids, -EUSERS},  	{ERRbaduid, -EACCES},  	{ERRusempx, -EIO}, @@ -150,8 +150,8 @@ cifs_inet_pton(const int address_family, const char *cp, int len, void *dst)  	else if (address_family == AF_INET6)  		ret = in6_pton(cp, len, dst , '\\', NULL); -	cFYI(DBG2, "address conversion returned %d for %*.*s", -	     ret, len, len, cp); +	cifs_dbg(NOISY, "address conversion returned %d for %*.*s\n", +		 ret, len, len, cp);  	if (ret > 0)  		ret = 1;  	return ret; @@ -170,7 +170,7 @@ cifs_convert_address(struct sockaddr *dst, const char *src, int len)  {  	int rc, alen, slen;  	const char *pct; -	char *endp, scope_id[13]; +	char scope_id[13];  	struct sockaddr_in *s4 = (struct sockaddr_in *) dst;  	struct sockaddr_in6 *s6 = (struct sockaddr_in6 *) dst; @@ -197,15 +197,14 @@ cifs_convert_address(struct sockaddr *dst, const char *src, int len)  		memcpy(scope_id, pct + 1, slen);  		scope_id[slen] = '\0'; -		s6->sin6_scope_id = (u32) simple_strtoul(pct, &endp, 0); -		if (endp != scope_id + slen) -			return 0; +		rc = kstrtouint(scope_id, 0, &s6->sin6_scope_id); +		rc = (rc == 0) ? 1 : 0;  	}  	return rc;  } -int +void  cifs_set_port(struct sockaddr *addr, const unsigned short int port)  {  	switch (addr->sa_family) { @@ -215,19 +214,7 @@ cifs_set_port(struct sockaddr *addr, const unsigned short int port)  	case AF_INET6:  		((struct sockaddr_in6 *)addr)->sin6_port = htons(port);  		break; -	default: -		return 0;  	} -	return 1; -} - -int -cifs_fill_sockaddr(struct sockaddr *dst, const char *src, int len, -		   const unsigned short int port) -{ -	if (!cifs_convert_address(dst, src, len)) -		return 0; -	return cifs_set_port(dst, port);  }  /***************************************************************************** @@ -413,7 +400,7 @@ static const struct {  	 from NT_STATUS_INSUFFICIENT_RESOURCES to  	 NT_STATUS_INSUFF_SERVER_RESOURCES during the session setup } */  	{ -	ERRDOS, ERRnomem, NT_STATUS_INSUFFICIENT_RESOURCES}, { +	ERRDOS, ERRnoresource, NT_STATUS_INSUFFICIENT_RESOURCES}, {  	ERRDOS, ERRbadpath, NT_STATUS_DFS_EXIT_PATH_FOUND}, {  	ERRDOS, 23, NT_STATUS_DEVICE_DATA_ERROR}, {  	ERRHRD, ERRgeneral, NT_STATUS_DEVICE_NOT_CONNECTED}, { @@ -683,7 +670,7 @@ static const struct {  	ERRHRD, ERRgeneral, NT_STATUS_NO_USER_SESSION_KEY}, {  	ERRDOS, 59, NT_STATUS_USER_SESSION_DELETED}, {  	ERRHRD, ERRgeneral, NT_STATUS_RESOURCE_LANG_NOT_FOUND}, { -	ERRDOS, ERRnomem, NT_STATUS_INSUFF_SERVER_RESOURCES}, { +	ERRDOS, ERRnoresource, NT_STATUS_INSUFF_SERVER_RESOURCES}, {  	ERRHRD, ERRgeneral, NT_STATUS_INVALID_BUFFER_SIZE}, {  	ERRHRD, ERRgeneral, NT_STATUS_INVALID_ADDRESS_COMPONENT}, {  	ERRHRD, ERRgeneral, NT_STATUS_INVALID_ADDRESS_WILDCARD}, { @@ -793,7 +780,9 @@ static const struct {  	ERRDOS, ERRnoaccess, 0xc0000290}, {  	ERRDOS, ERRbadfunc, 0xc000029c}, {  	ERRDOS, ERRsymlink, NT_STATUS_STOPPED_ON_SYMLINK}, { -	ERRDOS, ERRinvlevel, 0x007c0001}, }; +	ERRDOS, ERRinvlevel, 0x007c0001}, { +	0, 0, 0 } +};  /*****************************************************************************   Print an error message from the status code @@ -806,8 +795,8 @@ cifs_print_status(__u32 status_code)  	while (nt_errs[idx].nt_errstr != NULL) {  		if (((nt_errs[idx].nt_errcode) & 0xFFFFFF) ==  		    (status_code & 0xFFFFFF)) { -			printk(KERN_NOTICE "Status code returned 0x%08x %s\n", -				   status_code, nt_errs[idx].nt_errstr); +			pr_notice("Status code returned 0x%08x %s\n", +				  status_code, nt_errs[idx].nt_errstr);  		}  		idx++;  	} @@ -836,8 +825,9 @@ ntstatus_to_dos(__u32 ntstatus, __u8 *eclass, __u16 *ecode)  }  int -map_smb_to_linux_error(struct smb_hdr *smb, int logErr) +map_smb_to_linux_error(char *buf, bool logErr)  { +	struct smb_hdr *smb = (struct smb_hdr *)buf;  	unsigned int i;  	int rc = -EIO;	/* if transport error smb error may not be set */  	__u8 smberrclass; @@ -899,8 +889,8 @@ map_smb_to_linux_error(struct smb_hdr *smb, int logErr)  	}  	/* else ERRHRD class errors or junk  - return EIO */ -	cFYI(1, "Mapping smb error code %d to POSIX err %d", -		 smberrcode, rc); +	cifs_dbg(FYI, "Mapping smb error code 0x%x to POSIX err %d\n", +		 le32_to_cpu(smb->Status.CifsError), rc);  	/* generic corrective action e.g. reconnect SMB session on  	 * ERRbaduid could be added */ @@ -913,17 +903,11 @@ map_smb_to_linux_error(struct smb_hdr *smb, int logErr)   * portion, the number of word parameters and the data portion of the message   */  unsigned int -smbCalcSize(struct smb_hdr *ptr) +smbCalcSize(void *buf)  { +	struct smb_hdr *ptr = (struct smb_hdr *)buf;  	return (sizeof(struct smb_hdr) + (2 * ptr->WordCount) + -		2 /* size of the bcc field */ + BCC(ptr)); -} - -unsigned int -smbCalcSize_LE(struct smb_hdr *ptr) -{ -	return (sizeof(struct smb_hdr) + (2 * ptr->WordCount) + -		2 /* size of the bcc field */ + le16_to_cpu(BCC_LE(ptr))); +		2 /* size of the bcc field */ + get_bcc(ptr));  }  /* The following are taken from fs/ntfs/util.c */ @@ -957,8 +941,9 @@ cifs_UnixTimeToNT(struct timespec t)  	return (u64) t.tv_sec * 10000000 + t.tv_nsec/100 + NTFS_TIME_OFFSET;  } -static int total_days_of_prev_months[] = -{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334}; +static const int total_days_of_prev_months[] = { +	0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 +};  struct timespec cnvrtDosUnixTm(__le16 le_date, __le16 le_time, int offset)  { @@ -969,20 +954,20 @@ struct timespec cnvrtDosUnixTm(__le16 le_date, __le16 le_time, int offset)  	SMB_TIME *st = (SMB_TIME *)&time;  	SMB_DATE *sd = (SMB_DATE *)&date; -	cFYI(1, "date %d time %d", date, time); +	cifs_dbg(FYI, "date %d time %d\n", date, time);  	sec = 2 * st->TwoSeconds;  	min = st->Minutes;  	if ((sec > 59) || (min > 59)) -		cERROR(1, "illegal time min %d sec %d", min, sec); +		cifs_dbg(VFS, "illegal time min %d sec %d\n", min, sec);  	sec += (min * 60);  	sec += 60 * 60 * st->Hours;  	if (st->Hours > 24) -		cERROR(1, "illegal hours %d", st->Hours); +		cifs_dbg(VFS, "illegal hours %d\n", st->Hours);  	days = sd->Day;  	month = sd->Month;  	if ((days > 31) || (month > 12)) { -		cERROR(1, "illegal date, month %d day: %d", month, days); +		cifs_dbg(VFS, "illegal date, month %d day: %d\n", month, days);  		if (month > 12)  			month = 12;  	} @@ -1008,7 +993,7 @@ struct timespec cnvrtDosUnixTm(__le16 le_date, __le16 le_time, int offset)  	ts.tv_sec = sec + offset; -	/* cFYI(1, "sec after cnvrt dos to unix time %d",sec); */ +	/* cifs_dbg(FYI, "sec after cnvrt dos to unix time %d\n",sec); */  	ts.tv_nsec = 0;  	return ts;  | 
