mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
Only call fdclose() on successfully-opened FDs.
Since kern_openat() now uses falloc_noinstall() and finstall() separately, there are cases where we could get to cleanup code without ever creating a file descriptor. In those cases, we should not call fdclose() on FD -1. Approved by: re (kib), mentor (rwatson) Sponsored by: Google Inc
This commit is contained in:
parent
09abcc01cf
commit
d6d2cfa24b
1 changed files with 4 additions and 2 deletions
|
|
@ -1116,7 +1116,8 @@ kern_openat(struct thread *td, int fd, char *path, enum uio_seg pathseg,
|
|||
* Clean up the descriptor, but only if another thread hadn't
|
||||
* replaced or closed it.
|
||||
*/
|
||||
fdclose(fdp, fp, indx, td);
|
||||
if (indx != -1)
|
||||
fdclose(fdp, fp, indx, td);
|
||||
fdrop(fp, td);
|
||||
|
||||
if (error == ERESTART)
|
||||
|
|
@ -1185,7 +1186,8 @@ success:
|
|||
bad:
|
||||
VFS_UNLOCK_GIANT(vfslocked);
|
||||
bad_unlocked:
|
||||
fdclose(fdp, fp, indx, td);
|
||||
if (indx != -1)
|
||||
fdclose(fdp, fp, indx, td);
|
||||
fdrop(fp, td);
|
||||
td->td_retval[0] = -1;
|
||||
return (error);
|
||||
|
|
|
|||
Loading…
Reference in a new issue