[PATCH] cifs: remove a few redundant null pointer checks, and cleanup misc source...
authorSteve French <smfrench@austin.rr.com>
Fri, 29 Apr 2005 05:41:05 +0000 (22:41 -0700)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Fri, 29 Apr 2005 05:41:05 +0000 (22:41 -0700)
Mostly suggested by Jesper Juhl

Signed-off-by: Steve French (sfrench@us.ibm.com)
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
fs/cifs/dir.c
fs/cifs/smberr.h

index f54e1866f0f4407ecda76e810ec953f2209d16a0..12ba81d7b07f6d1baefc380a43fb24261a583991 100644 (file)
@@ -284,51 +284,48 @@ cifs_create(struct inode *inode, struct dentry *direntry, int mode,
                        /* mknod case - do not leave file open */
                        CIFSSMBClose(xid, pTcon, fileHandle);
                } else if(newinode) {
-                       pCifsFile = (struct cifsFileInfo *)
+                       pCifsFile =
                           kmalloc(sizeof (struct cifsFileInfo), GFP_KERNEL);
-               
-                       if (pCifsFile) {
-                               memset((char *)pCifsFile, 0,
-                                      sizeof (struct cifsFileInfo));
-                               pCifsFile->netfid = fileHandle;
-                               pCifsFile->pid = current->tgid;
-                               pCifsFile->pInode = newinode;
-                               pCifsFile->invalidHandle = FALSE;
-                               pCifsFile->closePend     = FALSE;
-                               init_MUTEX(&pCifsFile->fh_sem);
-                               /* put the following in at open now */
-                               /* pCifsFile->pfile = file; */ 
-                               write_lock(&GlobalSMBSeslock);
-                               list_add(&pCifsFile->tlist,&pTcon->openFileList);
-                               pCifsInode = CIFS_I(newinode);
-                               if(pCifsInode) {
+                       
+                       if(pCifsFile == NULL)
+                               goto cifs_create_out;
+                       memset((char *)pCifsFile, 0,
+                              sizeof (struct cifsFileInfo));
+                       pCifsFile->netfid = fileHandle;
+                       pCifsFile->pid = current->tgid;
+                       pCifsFile->pInode = newinode;
+                       pCifsFile->invalidHandle = FALSE;
+                       pCifsFile->closePend     = FALSE;
+                       init_MUTEX(&pCifsFile->fh_sem);
+                       /* set the following in open now 
+                               pCifsFile->pfile = file; */
+                       write_lock(&GlobalSMBSeslock);
+                       list_add(&pCifsFile->tlist,&pTcon->openFileList);
+                       pCifsInode = CIFS_I(newinode);
+                       if(pCifsInode) {
                                /* if readable file instance put first in list*/
-                                       if (write_only == TRUE) {
-                                               list_add_tail(&pCifsFile->flist,
-                                                       &pCifsInode->openFileList);
-                                       } else {
-                                               list_add(&pCifsFile->flist,
-                                                       &pCifsInode->openFileList);
-                                       }
-                                       if((oplock & 0xF) == OPLOCK_EXCLUSIVE) {
-                                               pCifsInode->clientCanCacheAll = TRUE;
-                                               pCifsInode->clientCanCacheRead = TRUE;
-                                               cFYI(1,("Exclusive Oplock granted on inode %p",
-                                                       newinode));
-                                       } else if((oplock & 0xF) == OPLOCK_READ)
-                                               pCifsInode->clientCanCacheRead = TRUE;
+                               if (write_only == TRUE) {
+                                               list_add_tail(&pCifsFile->flist,
+                                               &pCifsInode->openFileList);
+                               } else {
+                                       list_add(&pCifsFile->flist,
+                                               &pCifsInode->openFileList);
                                }
-                               write_unlock(&GlobalSMBSeslock);
+                               if((oplock & 0xF) == OPLOCK_EXCLUSIVE) {
+                                       pCifsInode->clientCanCacheAll = TRUE;
+                                       pCifsInode->clientCanCacheRead = TRUE;
+                                       cFYI(1,("Exclusive Oplock for inode %p",
+                                               newinode));
+                               } else if((oplock & 0xF) == OPLOCK_READ)
+                                       pCifsInode->clientCanCacheRead = TRUE;
                        }
+                       write_unlock(&GlobalSMBSeslock);
                }
        } 
-
-       if (buf)
-           kfree(buf);
-       if (full_path)
-           kfree(full_path);
+cifs_create_out:
+       kfree(buf);
+       kfree(full_path);
        FreeXid(xid);
-
        return rc;
 }
 
@@ -375,10 +372,8 @@ int cifs_mknod(struct inode *inode, struct dentry *direntry, int mode, dev_t dev
                }
        }
 
-       if (full_path)
-               kfree(full_path);
+       kfree(full_path);
        FreeXid(xid);
-
        return rc;
 }
 
@@ -447,8 +442,7 @@ cifs_lookup(struct inode *parent_dir_inode, struct dentry *direntry, struct name
                if file exists or not but no access BB */
        }
 
-       if (full_path)
-               kfree(full_path);
+       kfree(full_path);
        FreeXid(xid);
        return ERR_PTR(rc);
 }
@@ -478,8 +472,7 @@ cifs_dir_open(struct inode *inode, struct file *file)
 
        cFYI(1, ("inode = 0x%p and full path is %s", inode, full_path));
 
-       if (full_path)
-               kfree(full_path);
+       kfree(full_path);
        FreeXid(xid);
        return rc;
 }
index e21f1384661f3e4e6fc42c574cdb047c8689a066..1b53dcd0f2ebc3e13f9f30bb3170692009b3cdc7 100644 (file)
  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 
  */
 
-#define SUCCESS 0              /* The request was successful. */
-#define ERRDOS 0x01            /* Error is from the core DOS operating system set */
-#define ERRSRV 0x02            /* Error is generated by the file server daemon */
-#define ERRHRD 0x03            /* Error is a hardware error. */
-#define ERRCMD 0xFF            /*  Command was not in the "SMB" format. */
+#define SUCCESS        0x00    /* The request was successful. */
+#define ERRDOS 0x01    /* Error is from the core DOS operating system set */
+#define ERRSRV 0x02    /* Error is generated by the file server daemon */
+#define ERRHRD 0x03    /* Error is a hardware error. */
+#define ERRCMD 0xFF    /* Command was not in the "SMB" format. */
 
 /* The following error codes may be generated with the SUCCESS error class.*/
 
-#define SUCCESS 0              /* The request was successful. */
+/*#define SUCCESS      0       The request was successful. */
 
 /* The following error codes may be generated with the ERRDOS error class.*/
 
-#define ERRbadfunc 1           /* 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 ERRbadfile 2           /*File not found. The last component of a file's pathname could not be found. */
-#define ERRbadpath 3           /* Directory invalid. A directory component in a pathname could not be found. */
-#define ERRnofids 4            /* Too many open files. The server has no file handles available. */
-#define ERRnoaccess 5          /* 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 ERRbadfid 6            /* Invalid file handle. The file handle specified was not recognized by the server. */
-#define ERRbadmcb 7            /* Memory control blocks destroyed. */
-#define ERRnomem 8             /* Insufficient server memory to perform the requested function. */
-#define ERRbadmem 9            /* Invalid memory block address. */
-#define ERRbadenv 10           /* Invalid environment. */
-#define ERRbadformat 11                /* Invalid format. */
-#define ERRbadaccess 12                /* Invalid open mode. */
-#define ERRbaddata 13          /* Invalid data (generated only by IOCTL calls within the server). */
-#define ERRbaddrive 15         /* Invalid drive specified. */
-#define ERRremcd 16            /* A Delete Directory request attempted to remove the server's current directory. */
-#define ERRdiffdevice 17       /* Not same device (e.g., a cross volume rename was attempted */
-#define ERRnofiles 18          /* A File Search command can find no more files matching the specified criteria. */
-#define ERRgeneral 31
-#define ERRbadshare 32         /* The sharing mode specified for an Open conflicts with existing FIDs on the file. */
-#define ERRlock 33             /* 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 ERRunsup     50
-#define ERRnosuchshare 67
-#define ERRfilexists 80                /* The file named in the request already exists. */
-#define ERRinvparm   87
-#define ERRdiskfull  112
-#define ERRinvname   123
-#define ERRinvlevel  124
-#define ERRdirnotempty 145
-#define ERRnotlocked   158
-#define ERRalreadyexists 183
-#define ERRbadpipe 230
-#define ERRpipebusy 231
-#define ERRpipeclosing 232
-#define ERRnotconnected 233
-#define ERRmoredata    234
-#define ERReasnotsupported 282
-#define ErrQuota 0x200         /* The operation would cause a quota limit to be exceeded. */
-#define ErrNotALink 0x201      /* A link operation was performed on a pathname that
-                                  was not a link. */
+#define ERRbadfunc             1       /* 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 ERRbadfile             2       /* File not found. The last component
+                                          of a file's pathname could not be
+                                          found. */
+#define ERRbadpath             3       /* Directory invalid. A directory
+                                          component in a pathname could not be
+                                          found. */
+#define ERRnofids              4       /* Too many open files. The server has
+                                          no file handles available. */
+#define ERRnoaccess            5       /* 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 ERRbadfid              6       /* Invalid file handle. The file handle
+                                          specified was not recognized by the
+                                          server. */
+#define ERRbadmcb              7       /* Memory control blocks destroyed. */
+#define ERRnomem               8       /* Insufficient server memory to
+                                          perform the requested function. */
+#define ERRbadmem              9       /* Invalid memory block address. */
+#define ERRbadenv              10      /* Invalid environment. */
+#define ERRbadformat           11      /* Invalid format. */
+#define ERRbadaccess           12      /* Invalid open mode. */
+#define ERRbaddata             13      /* Invalid data (generated only by
+                                          IOCTL calls within the server). */
+#define ERRbaddrive            15      /* Invalid drive specified. */
+#define ERRremcd               16      /* A Delete Directory request attempted
+                                          to remove the server's current
+                                          directory. */
+#define ERRdiffdevice          17      /* Not same device (e.g., a cross
+                                          volume rename was attempted */
+#define ERRnofiles             18      /* A File Search command can find no
+                                          more files matching the specified
+                                          criteria. */
+#define ERRgeneral             31
+#define ERRbadshare            32      /* The sharing mode specified for an
+                                          Open conflicts with existing FIDs on
+                                          the file. */
+#define ERRlock                        33      /* 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 ERRunsup               50
+#define ERRnosuchshare         67
+#define ERRfilexists           80      /* The file named in the request
+                                          already exists. */
+#define ERRinvparm             87
+#define ERRdiskfull            112
+#define ERRinvname             123
+#define ERRinvlevel            124
+#define ERRdirnotempty         145
+#define ERRnotlocked           158
+#define ERRalreadyexists       183
+#define ERRbadpipe             230
+#define ERRpipebusy            231
+#define ERRpipeclosing         232
+#define ERRnotconnected                233
+#define ERRmoredata            234
+#define ERReasnotsupported     282
+#define ErrQuota               0x200   /* The operation would cause a quota
+                                          limit to be exceeded. */
+#define ErrNotALink            0x201   /* A link operation was performed on a
+                                          pathname that was not a link. */
 
-/* Following error codes may be generated with the ERRSRV error
-class.*/
+/* Following error codes may be generated with the ERRSRV error class.*/
 
-#define ERRerror 1             /* 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 ERRbadpw 2             /* Bad password - name/password pair in a TreeConnect or Session Setup are invalid. */
-#define ERRbadtype 3           /* used for indicating DFS referral needed */
-#define ERRaccess 4            /* The client does not have the necessary access rights within the specified context for requested function. */
-#define ERRinvtid 5            /* The Tid specified in a command was invalid. */
-#define ERRinvnetname 6                /* Invalid network name in tree connect. */
-#define ERRinvdevice 7         /* Invalid device - printer request made to non-printer connection or non-printer request made to printer connection. */
-#define ERRqfull 49            /* Print queue full (files) -- returned by open print file. */
-#define ERRqtoobig 50          /* Print queue full -- no space. */
-#define ERRqeof         51     /* EOF on print queue dump */
-#define ERRinvpfid      52     /* Invalid print file FID. */
-#define ERRsmbcmd       64     /* The server did not recognize the command received. */
-#define ERRsrverror     65     /* The server encountered an internal error, e.g., system file unavailable. */
-#define ERRbadBID       66     /* (obsolete) */
-#define ERRfilespecs    67     /* The Fid and pathname parameters contained an invalid combination of values. */
-#define ERRbadLink      68     /* (obsolete) */
-#define ERRbadpermits   69     /* The access permissions specified for a file or directory are not a valid combination. */
-#define ERRbadPID       70
-#define ERRsetattrmode  71     /* attribute (mode) is invalid */
-#define ERRpaused       81     /* Server is paused */
-#define ERRmsgoff      82      /* reserved - messaging off */
-#define ERRnoroom       83     /* reserved - no room for message */
-#define ERRrmuns        87     /* reserved - too many remote names */
-#define ERRtimeout      88     /* operation timed out */
-#define ERRnoresource   89     /* No resources available for request */
-#define ERRtoomanyuids  90     /* Too many UIDs active on this session */
-#define ERRbaduid       91     /* The UID is not known as a valid user */
-#define ERRusempx      250     /* temporarily unable to use raw */
-#define ERRusestd      251     /* temporarily unable to use either raw or mpx */
-#define ERR_NOTIFY_ENUM_DIR 1024
-#define ERRaccountexpired 2239
-#define ERRbadclient      2240
-#define ERRbadLogonTime   2241
-#define ERRpasswordExpired 2242
-#define ERRnetlogonNotStarted 2455
-#define ERRnosupport       0xFFFF
+#define ERRerror               1       /* 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 ERRbadpw               2       /* Bad password - name/password pair in
+                                          a TreeConnect or Session Setup are
+                                          invalid. */
+#define ERRbadtype             3       /* used for indicating DFS referral
+                                          needed */
+#define ERRaccess              4       /* The client does not have the
+                                          necessary access rights within the
+                                          specified context for requested
+                                          function. */
+#define ERRinvtid              5       /* The Tid specified in a command was
+                                          invalid. */
+#define ERRinvnetname          6       /* Invalid network name in tree
+                                          connect. */
+#define ERRinvdevice           7       /* Invalid device - printer request
+                                          made to non-printer connection or
+                                          non-printer request made to printer
+                                          connection. */
+#define ERRqfull               49      /* Print queue full (files) -- returned
+                                          by open print file. */
+#define ERRqtoobig             50      /* Print queue full -- no space. */
+#define ERRqeof                        51      /* EOF on print queue dump */
+#define ERRinvpfid             52      /* Invalid print file FID. */
+#define ERRsmbcmd              64      /* The server did not recognize the
+                                          command received. */
+#define ERRsrverror            65      /* The server encountered an internal
+                                          error, e.g., system file
+                                          unavailable. */
+#define ERRbadBID              66      /* (obsolete) */
+#define ERRfilespecs           67      /* The Fid and pathname parameters
+                                          contained an invalid combination of
+                                          values. */
+#define ERRbadLink             68      /* (obsolete) */
+#define ERRbadpermits          69      /* The access permissions specified for
+                                          a file or directory are not a valid
+                                          combination. */
+#define ERRbadPID              70
+#define ERRsetattrmode         71      /* attribute (mode) is invalid */
+#define ERRpaused              81      /* Server is paused */
+#define ERRmsgoff              82      /* reserved - messaging off */
+#define ERRnoroom              83      /* reserved - no room for message */
+#define ERRrmuns               87      /* reserved - too many remote names */
+#define ERRtimeout             88      /* operation timed out */
+#define ERRnoresource          89      /* No resources available for request
+                                          */
+#define ERRtoomanyuids         90      /* Too many UIDs active on this session
+                                          */
+#define ERRbaduid              91      /* The UID is not known as a valid user
+                                          */
+#define ERRusempx              250     /* temporarily unable to use raw */
+#define ERRusestd              251     /* temporarily unable to use either raw
+                                          or mpx */
+#define ERR_NOTIFY_ENUM_DIR    1024
+#define ERRaccountexpired      2239
+#define ERRbadclient           2240
+#define ERRbadLogonTime                2241
+#define ERRpasswordExpired     2242
+#define ERRnetlogonNotStarted  2455
+#define ERRnosupport           0xFFFF