Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
libvmod-file
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
uplex-varnish
libvmod-file
Commits
eb807d58
Commit
eb807d58
authored
Oct 17, 2024
by
Geoff Simmons
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Encapsulate munmap() calls in a single function.
parent
33f3bd64
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
22 additions
and
25 deletions
+22
-25
vmod_file.c
src/vmod_file.c
+22
-25
No files found.
src/vmod_file.c
View file @
eb807d58
...
@@ -121,6 +121,24 @@ struct obj_entry {
...
@@ -121,6 +121,24 @@ struct obj_entry {
VSLIST_HEAD
(
obj_head
,
obj_entry
);
VSLIST_HEAD
(
obj_head
,
obj_entry
);
static
int
unmap
(
struct
VPFX
(
file_reader
)
*
rdr
,
void
*
addr
)
{
CHECK_OBJ_NOTNULL
(
rdr
,
FILE_READER_MAGIC
);
CHECK_OBJ_NOTNULL
(
rdr
->
info
,
FILE_INFO_MAGIC
);
AN
(
rdr
->
obj_name
);
AN
(
rdr
->
vcl_name
);
AN
(
addr
);
errno
=
0
;
if
(
munmap
(
addr
,
rdr
->
info
->
len
)
!=
0
)
{
VSL
(
SLT_Error
,
NO_VXID
,
"vmod file: %s.%s: unmap failed: %s"
,
rdr
->
vcl_name
,
rdr
->
obj_name
,
VAS_errtxt
(
errno
));
return
(
-
1
);
}
return
(
0
);
}
static
void
static
void
check
(
union
sigval
val
)
check
(
union
sigval
val
)
{
{
...
@@ -272,13 +290,10 @@ check(union sigval val)
...
@@ -272,13 +290,10 @@ check(union sigval val)
flags
|=
RDR_MAPPED
;
flags
|=
RDR_MAPPED
;
if
(
rdr
->
flags
&
RDR_MAPPED
)
{
if
(
rdr
->
flags
&
RDR_MAPPED
)
{
AN
(
prev
);
if
(
unmap
(
rdr
,
prev
)
!=
0
)
{
errno
=
0
;
if
(
munmap
(
prev
,
rdr
->
info
->
len
)
!=
0
)
{
VERRMSG
(
rdr
,
errbuf
,
"%s.%s: unmap failed: %s"
,
VERRMSG
(
rdr
,
errbuf
,
"%s.%s: unmap failed: %s"
,
rdr
->
vcl_name
,
rdr
->
obj_name
,
rdr
->
vcl_name
,
rdr
->
obj_name
,
VAS_errtxt
(
errno
));
VAS_errtxt
(
errno
));
VSL
(
SLT_Error
,
NO_VXID
,
"%s"
,
errbuf
);
flags
|=
RDR_ERROR
;
flags
|=
RDR_ERROR
;
}
}
}
}
...
@@ -544,18 +559,8 @@ vmod_reader__fini(struct VPFX(file_reader) **rdrp)
...
@@ -544,18 +559,8 @@ vmod_reader__fini(struct VPFX(file_reader) **rdrp)
rdr
->
obj_name
,
VAS_errtxt
(
errno
));
rdr
->
obj_name
,
VAS_errtxt
(
errno
));
}
}
if
(
rdr
->
flags
&
RDR_MAPPED
)
{
if
(
rdr
->
flags
&
RDR_MAPPED
)
CHECK_OBJ_NOTNULL
(
rdr
->
info
,
FILE_INFO_MAGIC
);
(
void
)
unmap
(
rdr
,
rdr
->
addr
);
AN
(
rdr
->
addr
);
AN
(
rdr
->
obj_name
);
AN
(
rdr
->
vcl_name
);
errno
=
0
;
if
(
munmap
(
rdr
->
addr
,
rdr
->
info
->
len
)
!=
0
)
VSL
(
SLT_Error
,
NO_VXID
,
"vmod file %s.%s finalization: "
"unmap failed: %s"
,
rdr
->
vcl_name
,
rdr
->
obj_name
,
VAS_errtxt
(
errno
));
}
if
(
rdr
->
info
!=
NULL
)
{
if
(
rdr
->
info
!=
NULL
)
{
CHECK_OBJ
(
rdr
->
info
,
FILE_INFO_MAGIC
);
CHECK_OBJ
(
rdr
->
info
,
FILE_INFO_MAGIC
);
...
@@ -951,16 +956,8 @@ VPFX(event)(VRT_CTX, struct vmod_priv *priv, enum vcl_event_e e)
...
@@ -951,16 +956,8 @@ VPFX(event)(VRT_CTX, struct vmod_priv *priv, enum vcl_event_e e)
if
((
rdr
->
flags
&
RDR_MAPPED
)
==
0
)
if
((
rdr
->
flags
&
RDR_MAPPED
)
==
0
)
continue
;
continue
;
CHECK_OBJ_NOTNULL
(
rdr
->
info
,
FILE_INFO_MAGIC
);
if
(
unmap
(
rdr
,
rdr
->
addr
)
!=
0
)
AN
(
rdr
->
addr
);
errno
=
0
;
if
(
munmap
(
rdr
->
addr
,
rdr
->
info
->
len
)
!=
0
)
{
VSL
(
SLT_Error
,
NO_VXID
,
"vmod file: %s.%s: unmap failed: %s"
,
rdr
->
vcl_name
,
rdr
->
obj_name
,
VAS_errtxt
(
errno
));
continue
;
continue
;
}
rdr
->
flags
&=
~
RDR_MAPPED
;
rdr
->
flags
&=
~
RDR_MAPPED
;
rdr
->
addr
=
NULL
;
rdr
->
addr
=
NULL
;
VSL
(
SLT_Debug
,
NO_VXID
,
"vmod file: %s.%s: unmapped"
,
VSL
(
SLT_Debug
,
NO_VXID
,
"vmod file: %s.%s: unmapped"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment