mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-08-09 06:14:34 +02:00
Check whether all elements can be correctly found in the arrays. Signed-off-by: Youling Tang <tangyouling@kylinos.cn> Reviewed-by: ChenXiaoSong <chenxiaosong@kylinos.cn> Signed-off-by: Steve French <stfrench@microsoft.com>
299 lines
7.7 KiB
C
299 lines
7.7 KiB
C
/* SPDX-License-Identifier: LGPL-2.1 */
|
|
/*
|
|
*
|
|
* Copyright (c) International Business Machines Corp., 2002,2004
|
|
* Author(s): Steve French (sfrench@us.ibm.com)
|
|
*
|
|
* See Error Codes section of the SNIA CIFS Specification
|
|
* for more information
|
|
*
|
|
*/
|
|
|
|
struct smb_to_posix_error {
|
|
__u16 smb_err;
|
|
int posix_code;
|
|
};
|
|
|
|
/* The request was successful. */
|
|
#define SUCCESS 0x00
|
|
/* Error is from the core DOS operating system set */
|
|
#define ERRDOS 0x01
|
|
/* Error is generated by the file server daemon */
|
|
#define ERRSRV 0x02
|
|
/* Error is a hardware error. */
|
|
#define ERRHRD 0x03
|
|
/* Command was not in the "SMB" format. */
|
|
#define ERRCMD 0xFF
|
|
|
|
/* The following error codes may be generated with the SUCCESS error class.*/
|
|
|
|
/*#define SUCCESS 0 The request was successful. */
|
|
|
|
/*
|
|
* The following error codes may be generated with the ERRDOS error class.
|
|
* The comment at the end of each definition indicates the POSIX error
|
|
* code; it is used to generate the `mapping_table_ERRDOS` array.
|
|
*/
|
|
|
|
/*
|
|
* Invalid function. The server did not
|
|
* recognize or could not perform a
|
|
* system call generated by the server,
|
|
* e.g., set the DIRECTORY attribute on
|
|
* a data file, invalid seek mode.
|
|
*/
|
|
#define ERRbadfunc 1 // -EINVAL
|
|
/*
|
|
* File not found. The last component
|
|
* of a file's pathname could not be
|
|
* found.
|
|
*/
|
|
#define ERRbadfile 2 // -ENOENT
|
|
/*
|
|
* Directory invalid. A directory
|
|
* component in a pathname could not be
|
|
* found.
|
|
*/
|
|
#define ERRbadpath 3 // -ENOTDIR
|
|
/*
|
|
* Too many open files. The server has
|
|
* no file handles available.
|
|
*/
|
|
#define ERRnofids 4 // -EMFILE
|
|
/*
|
|
* Access denied, the client's context
|
|
* does not permit the requested
|
|
* function. This includes the
|
|
* following conditions: invalid rename
|
|
* command, write to Fid open for read
|
|
* only, read on Fid open for write
|
|
* only, attempt to delete a non-empty
|
|
* directory
|
|
*/
|
|
#define ERRnoaccess 5 // -EACCES
|
|
/*
|
|
* Invalid file handle. The file handle
|
|
* specified was not recognized by the
|
|
* server.
|
|
*/
|
|
#define ERRbadfid 6 // -EBADF
|
|
/* Memory control blocks destroyed. */
|
|
#define ERRbadmcb 7 // -EIO
|
|
/*
|
|
* Insufficient server memory to
|
|
* perform the requested function.
|
|
*/
|
|
#define ERRnomem 8 // -EREMOTEIO
|
|
/* Invalid memory block address. */
|
|
#define ERRbadmem 9 // -EFAULT
|
|
/* Invalid environment. */
|
|
#define ERRbadenv 10 // -EFAULT
|
|
/* Invalid format. */
|
|
#define ERRbadformat 11 // -EINVAL
|
|
/* Invalid open mode. */
|
|
#define ERRbadaccess 12 // -EACCES
|
|
/*
|
|
* Invalid data (generated only by
|
|
* IOCTL calls within the server).
|
|
*/
|
|
#define ERRbaddata 13 // -EIO
|
|
/* Invalid drive specified. */
|
|
#define ERRbaddrive 15 // -ENXIO
|
|
/*
|
|
* A Delete Directory request attempted
|
|
* to remove the server's current
|
|
* directory.
|
|
*/
|
|
#define ERRremcd 16 // -EACCES
|
|
/*
|
|
* Not same device (e.g., a cross
|
|
* volume rename was attempted
|
|
*/
|
|
#define ERRdiffdevice 17 // -EXDEV
|
|
/*
|
|
* A File Search command can find no
|
|
* more files matching the specified
|
|
* criteria.
|
|
*/
|
|
#define ERRnofiles 18 // -ENOENT
|
|
/* media is write protected */
|
|
#define ERRwriteprot 19 // -EROFS
|
|
#define ERRgeneral 31
|
|
/*
|
|
* The sharing mode specified for an
|
|
* Open conflicts with existing FIDs on
|
|
* the file.
|
|
*/
|
|
#define ERRbadshare 32 // -EBUSY
|
|
/*
|
|
* A Lock request conflicted with an
|
|
* existing lock or specified an
|
|
* invalid mode, or an Unlock requested
|
|
* attempted to remove a lock held by
|
|
* another process.
|
|
*/
|
|
#define ERRlock 33 // -EACCES
|
|
#define ERRunsup 50 // -EINVAL
|
|
#define ERRnosuchshare 67 // -ENXIO
|
|
/*
|
|
* The file named in the request
|
|
* already exists.
|
|
*/
|
|
#define ERRfilexists 80 // -EEXIST
|
|
#define ERRinvparm 87 // -EINVAL
|
|
#define ERRdiskfull 112 // -ENOSPC
|
|
#define ERRinvname 123 // -ENOENT
|
|
#define ERRunknownlevel 124 // -EOPNOTSUPP
|
|
#define ERRdirnotempty 145 // -ENOTEMPTY
|
|
#define ERRnotlocked 158 // -ENOLCK
|
|
#define ERRcancelviolation 173 // -ENOLCK
|
|
#define ERRalreadyexists 183 // -EEXIST
|
|
#define ERRbadpipe 230
|
|
#define ERRpipebusy 231
|
|
#define ERRpipeclosing 232
|
|
#define ERRnotconnected 233
|
|
#define ERRmoredata 234 // -EOVERFLOW
|
|
#define ERReasnotsupported 282 // -EOPNOTSUPP
|
|
/*
|
|
* The operation would cause a quota
|
|
* limit to be exceeded.
|
|
*/
|
|
#define ErrQuota 0x200 // -EDQUOT
|
|
/*
|
|
* A link operation was performed on a
|
|
* pathname that was not a link.
|
|
*/
|
|
#define ErrNotALink 0x201 // -ENOLINK
|
|
#define ERRnetlogonNotStarted 2455 // -ENOPROTOOPT
|
|
|
|
/* Below errors are used internally (do not come over the wire) for passthrough
|
|
from STATUS codes to POSIX only */
|
|
#define ERRsymlink 0xFFFD // -EOPNOTSUPP
|
|
#define ErrTooManyLinks 0xFFFE // -EMLINK
|
|
|
|
/*
|
|
* The following error codes may be generated with the ERRSRV error class.
|
|
* The comment at the end of each definition indicates the POSIX error
|
|
* code; it is used to generate the `mapping_table_ERRSRV` array.
|
|
*/
|
|
|
|
/*
|
|
* Non-specific error code. It is
|
|
* returned under the following
|
|
* conditions: resource other than disk
|
|
* space exhausted (e.g. TIDs), first
|
|
* SMB command was not negotiate,
|
|
* multiple negotiates attempted, and
|
|
* internal server error.
|
|
*/
|
|
#define ERRerror 1 // -EIO
|
|
/*
|
|
* Bad password - name/password pair in
|
|
* a TreeConnect or Session Setup are
|
|
* invalid.
|
|
*/
|
|
#define ERRbadpw 2 // -EACCES
|
|
/*
|
|
* used for indicating DFS referral
|
|
* needed
|
|
*/
|
|
#define ERRbadtype 3 // -EREMOTE
|
|
/*
|
|
* The client does not have the
|
|
* necessary access rights within the
|
|
* specified context for requested
|
|
* function.
|
|
*/
|
|
#define ERRaccess 4 // -EACCES
|
|
/*
|
|
* The Tid specified in a command was
|
|
* invalid.
|
|
*/
|
|
#define ERRinvtid 5 // -ENXIO
|
|
/*
|
|
* Invalid network name in tree
|
|
* connect.
|
|
*/
|
|
#define ERRinvnetname 6 // -ENXIO
|
|
/*
|
|
* Invalid device - printer request
|
|
* made to non-printer connection or
|
|
* non-printer request made to printer
|
|
* connection.
|
|
*/
|
|
#define ERRinvdevice 7 // -ENXIO
|
|
/*
|
|
* Print queue full (files) -- returned
|
|
* by open print file.
|
|
*/
|
|
#define ERRqfull 49 // -ENOSPC
|
|
/* Print queue full -- no space. */
|
|
#define ERRqtoobig 50 // -ENOSPC
|
|
/* EOF on print queue dump */
|
|
#define ERRqeof 51 // -EIO
|
|
/* Invalid print file FID. */
|
|
#define ERRinvpfid 52 // -EBADF
|
|
/*
|
|
* The server did not recognize the
|
|
* command received.
|
|
*/
|
|
#define ERRsmbcmd 64 // -EBADRQC
|
|
/*
|
|
* The server encountered an internal
|
|
* error, e.g., system file
|
|
* unavailable.
|
|
*/
|
|
#define ERRsrverror 65 // -EIO
|
|
/* (obsolete) */
|
|
#define ERRbadBID 66 // -EIO
|
|
/*
|
|
* The Fid and pathname parameters
|
|
* contained an invalid combination of
|
|
* values.
|
|
*/
|
|
#define ERRfilespecs 67 // -EINVAL
|
|
/* (obsolete) */
|
|
#define ERRbadLink 68 // -EIO
|
|
/*
|
|
* The access permissions specified for
|
|
* a file or directory are not a valid
|
|
* combination.
|
|
*/
|
|
#define ERRbadpermits 69 // -EINVAL
|
|
#define ERRbadPID 70 // -ESRCH
|
|
/* attribute (mode) is invalid */
|
|
#define ERRsetattrmode 71 // -EINVAL
|
|
/* Server is paused */
|
|
#define ERRpaused 81 // -EHOSTDOWN
|
|
/* reserved - messaging off */
|
|
#define ERRmsgoff 82 // -EHOSTDOWN
|
|
/* reserved - no room for message */
|
|
#define ERRnoroom 83 // -ENOSPC
|
|
/* reserved - too many remote names */
|
|
#define ERRrmuns 87 // -EUSERS
|
|
/* operation timed out */
|
|
#define ERRtimeout 88 // -ETIME
|
|
/* No resources available for request */
|
|
#define ERRnoresource 89 // -EREMOTEIO
|
|
/* Too many UIDs active on this session */
|
|
#define ERRtoomanyuids 90 // -EUSERS
|
|
/* The UID is not known as a valid user */
|
|
#define ERRbaduid 91 // -EACCES
|
|
/* temporarily unable to use raw */
|
|
#define ERRusempx 250 // -EIO
|
|
/*
|
|
* temporarily unable to use either raw
|
|
* or mpx
|
|
*/
|
|
#define ERRusestd 251 // -EIO
|
|
#define ERR_NOTIFY_ENUM_DIR 1024 // -ENOBUFS
|
|
/* user account does not exist */
|
|
#define ERRnoSuchUser 2238 // -EACCES
|
|
#define ERRaccountexpired 2239 // -EKEYEXPIRED
|
|
/* can not logon from this client */
|
|
#define ERRbadclient 2240 // -EACCES
|
|
/* logon hours do not allow this */
|
|
#define ERRbadLogonTime 2241 // -EACCES
|
|
#define ERRpasswordExpired 2242 // -EKEYEXPIRED
|
|
#define ERRnosupport 0xFFFF // -EINVAL
|