]> git.ipfire.org Git - thirdparty/libcgroup.git/log
thirdparty/libcgroup.git
23 months agotools/tools-common.c: fix spellings across the file
Kamalesh Babulal [Mon, 14 Aug 2023 07:55:35 +0000 (13:25 +0530)] 
tools/tools-common.c: fix spellings across the file

Fix the spelling mistakes across the file and also fix word case.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agotools/lssubsys: fix spellings across the file
Kamalesh Babulal [Mon, 14 Aug 2023 07:55:35 +0000 (13:25 +0530)] 
tools/lssubsys: fix spellings across the file

Fix the spelling mistakes across the file and also fix word case.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agotools/lscgroup: fix spellings across the file
Kamalesh Babulal [Mon, 14 Aug 2023 07:55:35 +0000 (13:25 +0530)] 
tools/lscgroup: fix spellings across the file

Fix the spelling mistakes across the file and also fix word case.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agotools/cgxset: fix spellings across the file
Kamalesh Babulal [Mon, 14 Aug 2023 07:55:35 +0000 (13:25 +0530)] 
tools/cgxset: fix spellings across the file

Fix the spelling mistakes across the file and also fix word case.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agotools/cgcreate: fix spellings across the file
Kamalesh Babulal [Mon, 14 Aug 2023 07:55:35 +0000 (13:25 +0530)] 
tools/cgcreate: fix spellings across the file

Fix the spelling mistakes across the file and also fix word case.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agopam/pam_cgroup.c: fix spellings across the file
Kamalesh Babulal [Mon, 14 Aug 2023 07:55:35 +0000 (13:25 +0530)] 
pam/pam_cgroup.c: fix spellings across the file

Fix the spelling mistakes across the file and also fix word case.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agodaemon/cgrulesengd: fix spellings across the file
Kamalesh Babulal [Mon, 14 Aug 2023 07:55:35 +0000 (13:25 +0530)] 
daemon/cgrulesengd: fix spellings across the file

Fix the spelling mistakes across the file and also fix word case.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agodaemon/cgrulesengd: fix spellings across the file
Kamalesh Babulal [Mon, 14 Aug 2023 07:55:35 +0000 (13:25 +0530)] 
daemon/cgrulesengd: fix spellings across the file

Fix the spelling mistakes across the file and also fix word case.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/libcgroup-internal.h: fix spellings across the file
Kamalesh Babulal [Mon, 14 Aug 2023 07:55:35 +0000 (13:25 +0530)] 
src/libcgroup-internal.h: fix spellings across the file

Fix the spelling mistakes across the file and also fix word case.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/config.c: fix spellings across the file
Kamalesh Babulal [Mon, 14 Aug 2023 07:55:35 +0000 (13:25 +0530)] 
src/config.c: fix spellings across the file

Fix the spelling mistakes across the file and also fix word case.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/abstraction-common.h: fix spellings across the file
Kamalesh Babulal [Mon, 14 Aug 2023 07:55:35 +0000 (13:25 +0530)] 
src/abstraction-common.h: fix spellings across the file

Fix the spelling mistakes across the file and also fix word case.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/api.c: fix spellings across the file
Kamalesh Babulal [Mon, 14 Aug 2023 07:53:49 +0000 (13:23 +0530)] 
src/api.c: fix spellings across the file

Fix the spelling mistakes across the file and also fix word case.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agotests/gunit/001-path.cpp: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
tests/gunit/001-path.cpp: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosamples/c/get_setup_mode.c: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
samples/c/get_setup_mode.c: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosamples/c/create_systemd_scope.c: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
samples/c/create_systemd_scope.c: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agotools/cgget: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
tools/cgget: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agotools/cgconfig.c: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
tools/cgconfig.c: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agotools/tools-common.c: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
tools/tools-common.c: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agotools/cgsnapshot.c fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
tools/cgsnapshot.c fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agotools/cgcreate.c: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
tools/cgcreate.c: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agotools/cgclassify: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
tools/cgclassify: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/daemon/cgrulesengd.c: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
src/daemon/cgrulesengd.c: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/libcgroup_systemd_idle_thread.c: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
src/libcgroup_systemd_idle_thread.c: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/libcgroup-internal.h: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
src/libcgroup-internal.h: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/abstraction-common.c: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
src/abstraction-common.c: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/systemd.c: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
src/systemd.c: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/wrapper.c: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
src/wrapper.c: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/config.c: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
src/config.c: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/api.c: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
src/api.c: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agoinclude/libcgroup/systemd.h: fix coding style complaint
Kamalesh Babulal [Fri, 11 Aug 2023 06:55:04 +0000 (12:25 +0530)] 
include/libcgroup/systemd.h: fix coding style complaint

Fix the checkpatch.pl warnings, making it coding style complaint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agogunit/015: use ARRAY_SIZE() macro
Kamalesh Babulal [Tue, 8 Aug 2023 10:56:58 +0000 (16:26 +0530)] 
gunit/015: use ARRAY_SIZE() macro

Use ARRAY_SIZE() macro to calculate the length of the array, across the
file.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agogunit/012: use ARRAY_SIZE() macro
Kamalesh Babulal [Tue, 8 Aug 2023 10:56:53 +0000 (16:26 +0530)] 
gunit/012: use ARRAY_SIZE() macro

Use ARRAY_SIZE() macro to calculate the length of the array, across the
file.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agogunit/009: use ARRAY_SIZE() macro
Kamalesh Babulal [Tue, 8 Aug 2023 10:56:49 +0000 (16:26 +0530)] 
gunit/009: use ARRAY_SIZE() macro

Use ARRAY_SIZE() macro to calculate the length of the array, across the
file.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agogunit/008: use ARRAY_SIZE() macro
Kamalesh Babulal [Tue, 8 Aug 2023 10:56:45 +0000 (16:26 +0530)] 
gunit/008: use ARRAY_SIZE() macro

Use ARRAY_SIZE() macro to calculate the length of the array, across the
file.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agogunit/006: use ARRAY_SIZE() macro
Kamalesh Babulal [Tue, 8 Aug 2023 10:56:40 +0000 (16:26 +0530)] 
gunit/006: use ARRAY_SIZE() macro

Use ARRAY_SIZE() macro to calculate the length of the array, across the
file.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/systemd.c: use ARRAY_SIZE() macro
Kamalesh Babulal [Tue, 8 Aug 2023 10:16:10 +0000 (15:46 +0530)] 
src/systemd.c: use ARRAY_SIZE() macro

Use ARRAY_SIZE() macro to calculate the length of the array, across the
file.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/api.c: use ARRAY_SIZE() macro
Kamalesh Babulal [Tue, 8 Aug 2023 10:16:03 +0000 (15:46 +0530)] 
src/api.c: use ARRAY_SIZE() macro

Use ARRAY_SIZE() macro to calculate the length of the array, across the
file.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agosrc/abstraction-map.c: use ARRAY_SIZE() macro
Kamalesh Babulal [Tue, 8 Aug 2023 10:15:56 +0000 (15:45 +0530)] 
src/abstraction-map.c: use ARRAY_SIZE() macro

Use ARRAY_SIZE() macro to calculate the length of the array, across the
file.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agolibcgroup-internal.h: add ARRAY_SIZE macro
Kamalesh Babulal [Mon, 7 Aug 2023 09:26:36 +0000 (14:56 +0530)] 
libcgroup-internal.h: add ARRAY_SIZE macro

Add ARRAY_SIZE macro to calculate the size of an array, this helper
macro improves readability.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agocheckpatch.conf: add more ignore types for str*()
Kamalesh Babulal [Mon, 7 Aug 2023 09:25:42 +0000 (14:55 +0530)] 
checkpatch.conf: add more ignore types for str*()

Teach checkpatch.conf to ignore str*() warnings, the checkpatch.pl warns
about the replacement, functions are specific to Kernel land.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
23 months agoworkflows/ci: add checkpatch action
Kamalesh Babulal [Sat, 5 Aug 2023 07:07:47 +0000 (12:37 +0530)] 
workflows/ci: add checkpatch action

Add checkpatch action from https://github.com/webispy/checkpatch-action
to workflow CI, this project uses the Linux kernel tree's checkpatch.pl
to review the Pull Request, C code changes for the coding style issues.

We try to follow the coding standards that of the Linux Kernel, with some
exceptions recorded in the .checkpatch.conf file, asking checkpatch.pl
to ignore those. Integrating this action will make every change
complaint with Linux Kernel coding standards. As per their GitHub page
[1] the project uses GPL-2.0 license.

[1] https://github.com/webispy/checkpatch-action#license

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
TJH: Since the action requires info embedded in the Github pull request,
     only run it on pull requests.  Don't run it on pushes as it will
     produce a false positive

2 years agogithub: Add a job to build libcgroup w/ systemd disabled
Tom Hromatka [Mon, 31 Jul 2023 17:12:49 +0000 (11:12 -0600)] 
github: Add a job to build libcgroup w/ systemd disabled

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agopython: Surround systemd code with m4 conditionals
Tom Hromatka [Tue, 1 Aug 2023 21:17:35 +0000 (15:17 -0600)] 
python: Surround systemd code with m4 conditionals

Surround the systemd python logic with m4 ifdef(`WITH_SYSTEMD'...).
This will conditionally add the systemd code iff systemd is enabled
in configure.ac

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agosamples: Wrap systemd samples with WITH_SYSTEMD automake variable
Tom Hromatka [Wed, 2 Aug 2023 18:40:47 +0000 (12:40 -0600)] 
samples: Wrap systemd samples with WITH_SYSTEMD automake variable

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agoftests: Fix erroneous calls to log_error()
Tom Hromatka [Wed, 2 Aug 2023 18:39:06 +0000 (12:39 -0600)] 
ftests: Fix erroneous calls to log_error()

Two places in the functional tests were calling a nonexistent
logging function - log_error().  Replace these erroneous calls
with calls to log_critical().

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agoconfigure.ac: add check for systemd library and header files
Kamalesh Babulal [Mon, 31 Jul 2023 10:27:37 +0000 (15:57 +0530)] 
configure.ac: add check for systemd library and header files

systemd support is now enabled by default, unless explicitly disabled
during the ./configure by passing --enable-systemd=no. The make may
fail with:
systemd.c:9:10: fatal error: systemd/sd-bus.h: No such file or directory
    9 | #include <systemd/sd-bus.h>
      |          ^~~~~~~~~~~~~~~~~~
compilation terminated.

if the host system is missing the systemd library and development files,
due to missing checks for their existence in ./configure.ac. This patch
add them.

Fixes: https://github.com/libcgroup/libcgroup/issues/387
Reported-by: Tomasz Kłoczko <kloczek@github.com>
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agodoc: Update internal Github release process
Tom Hromatka [Fri, 28 Jul 2023 22:51:54 +0000 (16:51 -0600)] 
doc: Update internal Github release process

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agotests: Delete test 066's config file
Tom Hromatka [Fri, 28 Jul 2023 15:04:50 +0000 (09:04 -0600)] 
tests: Delete test 066's config file

After the test has run, delete the config file that
was created in test 066-sudo-systemd_cgclassify-v2.py

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agodoc: update release-github.md
Tom Hromatka [Fri, 28 Jul 2023 14:39:25 +0000 (08:39 -0600)] 
doc: update release-github.md

Fix a typo, and clarify the coverity steps

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agocgsnapshot: Fix compiler truncation warning
Tom Hromatka [Thu, 20 Jul 2023 14:24:16 +0000 (19:54 +0530)] 
cgsnapshot: Fix compiler truncation warning

Fix the following warning when running make distcheck

../../../../src/tools/cgsnapshot.c: In function ‘is_ctlr_on_list’:
../../../../src/tools/cgsnapshot.c:532:57: warning: ‘%s’ directive output may be truncated writing up to 409599 bytes into a region of size 4096 [-Wformat-truncation=]
532 |                 snprintf(controllers[i], FILENAME_MAX, "%s", tmp_controllers[i]);
    |                                                         ^~

Suggested-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agoman/cgred.conf: fix spelling of --nodaemon option
Kamalesh Babulal [Wed, 19 Jul 2023 05:11:45 +0000 (10:41 +0530)] 
man/cgred.conf: fix spelling of --nodaemon option

Fix the spelling '--nodamon' -> '--nodaemon'

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agoapi.c: fix unused variable in cgroup_parse_rules_file()
Kamalesh Babulal [Wed, 19 Jul 2023 04:35:44 +0000 (10:05 +0530)] 
api.c: fix unused variable in cgroup_parse_rules_file()

Fix an unused variable warning, reported by the Coverity tool:

CID 320877 (#1 of 1): Unused value (UNUSED_VALUE) assigned_pointer:
Assigning value NULL to pwd here, but that stored value is overwritten
before it can be used.

Move the grp, pwd variables assignment to beginning of the while loop in
the cgroup_parse_rules_file().

Tested with following cgrules
-----------------------------
$ cat /etc/cgrules.conf
student         devices         /usergroup/students
@admin          *               admingroup/
peter           cpu             test1/
%               memory          test2/
*               *               default/

$ sudo CGROUP_LOGLEVEL=DEBUG ./src/daemon/cgrulesengd -d -n
Parsing configuration file /etc/cgrules.conf.
Added rule student (UID: 1001, GID: -1) -> /usergroup/students for
controllers: devices
Added rule @admin (UID: -1, GID: 1004) -> admingroup/ for controllers: *
Added rule peter (UID: 1003, GID: -1) -> test1/ for controllers: cpu
Added rule % (UID: 1003, GID: -1) -> test2/ for controllers: memory
Added rule * (UID: -2, GID: -2) -> default/ for controllers: *
Parsing of configuration file complete.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agotools/cgsnapshot: fix string null terminate in parse_controllers()
Kamalesh Babulal [Wed, 19 Jul 2023 07:05:50 +0000 (12:35 +0530)] 
tools/cgsnapshot: fix string null terminate in parse_controllers()

Fix string not null terminated warning, reported by the Coverity tool:

CID 258299 (#2 of 2): String not null terminated (STRING_NULL)18.
string_null: Passing unterminated string *controllers to
display_controller_data, which expects a null-terminated string.

use snprintf() instead of strncpy() and manually terminate the string to
keep Coverity happy.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agopython: Rename __set_default_systemd_cgroup()
Tom Hromatka [Tue, 18 Jul 2023 13:59:56 +0000 (07:59 -0600)] 
python: Rename __set_default_systemd_cgroup()

Rename __set_default_systemd_cgroup() to _set_default_systemd_cgroup()
to avoid Python name mangling

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agosrc/api.c fix TOCTOU in cg_mkdir_p()
Kamalesh Babulal [Mon, 17 Jul 2023 09:08:19 +0000 (14:38 +0530)] 
src/api.c fix TOCTOU in cg_mkdir_p()

Fix a TOCTOU issue, reported by Coverity tool:

CID 258294 (#1 of 1): Time of check time of use (TOCTOU)42.
fs_check_call: Calling function stat to perform check on real_path

Add new switch for EROFS, to explicitly check if the file exist on
mkdir()'s error path, using a new char pointer.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agosrc/api.c: fix TOCTOU in cg_get_procname_from_proc_cmdline()
Kamalesh Babulal [Sat, 15 Jul 2023 06:34:11 +0000 (12:04 +0530)] 
src/api.c: fix TOCTOU in cg_get_procname_from_proc_cmdline()

Fix a TOCTOU issue, reported by Coverity tool:

CID 258283 (#1 of 1): Time of check time of use (TOCTOU)1.
fs_check_call: Calling function readlink to perform check on path

Coverity gets confused when a char array is re-used for constructing
different paths and complains about TOCTOU for unrelated paths, fix it
by using different char arrays for different path, as a side effect it
also improves the readability of the code.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agosrc/api.c: fix TOCTOU in cgroup_get_cgroup()
Kamalesh Babulal [Sat, 15 Jul 2023 06:30:02 +0000 (12:00 +0530)] 
src/api.c: fix TOCTOU in cgroup_get_cgroup()

Fix a TOCTOU issue, reported by Coverity tool:

CID 258268 (#1 of 1): Time of check time of use (TOCTOU)28.
fs_check_call: Calling function access to perform check on path.

Coverity gets confused when a char array is re-used for constructing
different paths and complains about TOCTOU for unrelated paths, fix it
by using different char arrays for different path, as a side effect it
also improves the readability of the code.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agotools/cgxget: fix TOCTOU in fill_empty_controller()
Kamalesh Babulal [Fri, 14 Jul 2023 06:13:38 +0000 (11:43 +0530)] 
tools/cgxget: fix TOCTOU in fill_empty_controller()

Fix a TOCTOU issue, reported by Coverity tool:

CID 258277 (#1 of 1): Time of check time of use (TOCTOU)13.
fs_check_call: Calling function access to perform check on path

Coverity gets confused when a char array is re-used for constructing
different paths and complains about TOCTOU for unrelated paths, fix it
by using different char arrays for different path, as a side effect it
also improves the readability of the code.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agotools/cgget: fix TOCTOU in fill_empty_controller()
Kamalesh Babulal [Fri, 14 Jul 2023 06:13:32 +0000 (11:43 +0530)] 
tools/cgget: fix TOCTOU in fill_empty_controller()

Fix a TOCTOU issue, reported by Coverity tool:

CID 258277 (#2 of 2): Time of check time of use (TOCTOU)13.
fs_check_call: Calling function access to perform check on path

Coverity gets confused when a char array is re-used for constructing
different paths and complains about TOCTOU for unrelated paths, fix it
by using different char arrays for different path, as a side effect it
also improves the readability of the code.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agotools: cgconfig/cgrulesengd - skip parsing non .conf files
Kamalesh Babulal [Thu, 13 Jul 2023 07:44:41 +0000 (07:44 +0000)] 
tools: cgconfig/cgrulesengd - skip parsing non .conf files

Currently, the list of files to be parsed is constructed by reading the
directories passed with '-L' command line option or by cgrulesend from
'/etc/cgconfig.d'.  The directories might also host non-configuration
files, parsing them will result in failure.

Consider the following example:

 # ls /etc/cgconfig.d
 cgconfig-oradb.conf  cgconfig-oradb.conf.rpmsave test .conf e

 # /usr/sbin/cgconfigparser -l /etc/cgconfig.conf -L /etc/cgconfig.d -s 1664
 /usr/sbin/cgconfigparser; error loading /etc/cgconfig.d/cgconfig-oradb.conf.rpmsave:
 Cgroup, the requested group parameter does not exist

fix it by skipping files with non .conf extensions, while building the
list of files to be parsed for cgroup configurations.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agoapi: cg_move_task_files() - rearrange code to avoid extra check
Kamalesh Babulal [Sat, 8 Jul 2023 14:49:55 +0000 (20:19 +0530)] 
api: cg_move_task_files() - rearrange code to avoid extra check

Fix unused variables, reported by the Coverity tool:

CID 320878 (#1 of 1): Unused value (UNUSED_VALUE)assigned_value:
Assigning value 0 to ret here, but that stored value is overwritten
before it can be used.

Currently, in cg_move_task_files(), the ret is checked for ESRCH and set
to zero, if true, and for other error values it executes the error path
but immediately the ret is over-written without reading the set zero,
re-arrange the code to such that only the error path is executed and ret
is not set to zero.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agopython: libcgroup.pyx - fix lines, spaces lint warnings
Kamalesh Babulal [Mon, 10 Jul 2023 04:44:57 +0000 (10:14 +0530)] 
python: libcgroup.pyx - fix lines, spaces lint warnings

Fix following spaces, lines warnings reported by Cython-lint:
- libcgroup.pyx:14:13: E222 multiple spaces after operator
- libcgroup.pyx:50:1: E302 expected 2 blank lines, found 1
- libcgroup.pyx:53:1: E302 expected 2 blank lines, found 1
- libcgroup.pyx:57:1: E302 expected 2 blank lines, found 1
- libcgroup.pyx:85:1: E305 expected 2 blank lines after class or function definition, found 1

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agopython: libcgroup.pyx - remove non-Python constructs
Kamalesh Babulal [Mon, 10 Jul 2023 04:44:52 +0000 (10:14 +0530)] 
python: libcgroup.pyx - remove non-Python constructs

Fix few cython-lints non-Python constructs, reported by cython-lint
tool:
- libcgroup.pyx:222:26: E711 comparison to None should be 'if cond is None:'
- libcgroup.pyx:380:82: E703 statement ends with a semicolon

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agopython: libcgroup.pyx - remove unused import
Kamalesh Babulal [Mon, 10 Jul 2023 04:44:47 +0000 (10:14 +0530)] 
python: libcgroup.pyx - remove unused import

Remove unused import 'os', reported by cython-lint.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agopython: remove unused var in Cgroup::add_controller()
Kamalesh Babulal [Mon, 10 Jul 2023 04:44:39 +0000 (10:14 +0530)] 
python: remove unused var in Cgroup::add_controller()

In Cgroup::add_controller(), remove unused variable 'cgp', reported
cython-lint tool.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agopython: add cython-lint configuration file
Kamalesh Babulal [Mon, 10 Jul 2023 04:43:47 +0000 (10:13 +0530)] 
python: add cython-lint configuration file

Add configuration for cython-lint, to ignore errors such as:
- Allowed length of line to be 100
- Ignore error code 'E128' continuation line under-indented for visual
  indent

Cython-lint is available https://github.com/MarcoGorelli/cython-lint,
expects the file name to be pyproject.toml

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agotools/cgxset: fix unused value in main
Kamalesh Babulal [Fri, 7 Jul 2023 05:15:15 +0000 (10:45 +0530)] 
tools/cgxset: fix unused value in main

Fix unused value, reported by the Coverity tool:

CID 320876 (#1 of 1): Unused value (UNUSED_VALUE)assigned_value:
Assigning value 0 to ret here, but that stored value is overwritten
before it can be used.

If the mapping from v1->v2 and vice versa fail, with -i
(ignore-unmappable) set, ret is set to zero and is immediately
over-written, re-arrange the check, and adjust the commentary to avoid
clobbering ret, by taking the error path when -i is unset or else
continuing when set, skipping to set ret to zero.

Suggested-by: Tom Hromatka <tom.hromatka@oracle.com>
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agotools/cgxget: fix unused value in main
Kamalesh Babulal [Fri, 7 Jul 2023 05:10:27 +0000 (10:40 +0530)] 
tools/cgxget: fix unused value in main

Fix unused value, reported by the Coverity tool:

CID 320879 (#1 of 1): Unused value (UNUSED_VALUE)assigned_value:
Assigning value 0 to ret here, but that stored value is overwritten
before it can be used.

If the mapping from v1->v2 and vice versa fail, with -i
(ignore-unmappable) set, ret is set to zero and is immediately
over-written, re-arrange the check, and adjust the commentary to avoid
clobbering ret, by taking the error path when -i is unset or else
continuing when set, skipping to set ret to zero.

Suggested-by: Tom Hromatka <tom.hromatka@oracle.com>
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agoapi: fix missing goto in cgroup_get_current_controller_path()
Kamalesh Babulal [Tue, 4 Jul 2023 06:34:51 +0000 (12:04 +0530)] 
api: fix missing goto in cgroup_get_current_controller_path()

Fix missing goto on error in cgroup_get_current_controller_path(), it
was reported by Coverity tool as unused value:

CID 320875 (#1 of 1): Unused value (UNUSED_VALUE)assigned_value:
Assigning value ECGOTHER to ret here, but that stored value is
overwritten before it can be used.

It turns out that, it is more than an over-written value, the strdup()
was missing goto error path statement on failure, add it.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agocgsnapshot: Fix possible non-null-terminated array
Tom Hromatka [Mon, 3 Jul 2023 19:07:41 +0000 (13:07 -0600)] 
cgsnapshot: Fix possible non-null-terminated array

Coverity flagged a code path where the controllers[][] structure in
parse_controllers() may not have a '\0' string as its last entry.
This would break the logic in is_ctlr_on_list().

The function may iterate past the end of the buffer looking for
a null terminator.

In parse_controllers: A character buffer that has not been null
terminated is passed to a function expecting a null terminated
string (CWE-170)

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agosamples: Fix coverity warning in systemd C example
Tom Hromatka [Mon, 3 Jul 2023 18:26:26 +0000 (12:26 -0600)] 
samples: Fix coverity warning in systemd C example

Fix the following coverity warning in the systemd C example:

CID 1516633 (#1 of 1): Uninitialized pointer read (UNINIT)5.
uninit_use: Using uninitialized value cg.

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agosamples: Fix coverity warning in systemd C example
Tom Hromatka [Mon, 3 Jul 2023 18:24:56 +0000 (12:24 -0600)] 
samples: Fix coverity warning in systemd C example

Fix the following coverity warning in the systemd C example:

CID 1516634 (#1 of 1): Uninitialized pointer read (UNINIT)5.
uninit_use: Using uninitialized value cg.

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agoftests: skip test 002 on legacy, containerized test runs
Tom Hromatka [Mon, 3 Jul 2023 15:58:13 +0000 (09:58 -0600)] 
ftests: skip test 002 on legacy, containerized test runs

Skip test 002-cgdelete-recursive_delete.py on legacy (cgroup v1),
containerized test runs.  It occasionally fails in Github Actions, and
I think the failure is simply because the machine is underpowered.  In
these cases, the failure is usually reported as:
002-cgdelete-recursive_delete.py - Failed to get the pid of the child process:

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agoftests: Retry run() command after websocket failure
Tom Hromatka [Mon, 3 Jul 2023 15:51:58 +0000 (09:51 -0600)] 
ftests: Retry run() command after websocket failure

LXC/LXD will sometimes throw an "Error: websocket: bad handshake" error
on underpowered machines.  Wait a bit (arbitrarily chosen 5 seconds) and
retry the command.

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agotools/cgclassify: fix controller overflow array range
Kamalesh Babulal [Mon, 3 Jul 2023 05:05:40 +0000 (10:35 +0530)] 
tools/cgclassify: fix controller overflow array range

Fix out-of-bounds write issue, reported by Coverity tool:

CID 321270 (#1 of 1): Out-of-bounds write (OVERRUN)47. overrun-local:
Overrunning array info of 16 4128-byte elements at element index 16
(byte offset 70175) using index i (which evaluates to 16).

MAX_MNT_ELEMENTS is an array that's allocated for array parsing and
populating the mount points, as per Linux Kernel, this can't be above
16 and it works fine while checking for index < MAX_MNT_ELEMENTS, but
in this case, we rely on the mount point name to be empty ('\0'), since
allowed maximum mount points are 16, increase the allocation index to
17 for the info structure, to accommodate 16 controllers, but that is
unlikely.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agopython: remove unused var in Cgroup::add_setting()
Kamalesh Babulal [Sun, 2 Jul 2023 14:38:51 +0000 (20:08 +0530)] 
python: remove unused var in Cgroup::add_setting()

In Cgroup::add_setting(), remove unused variable 'value'

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agosamples: Add automake files for the cmdline directory
Tom Hromatka [Sat, 20 May 2023 01:53:22 +0000 (19:53 -0600)] 
samples: Add automake files for the cmdline directory

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agosamples: Add a python example that creates a systemd scope
Tom Hromatka [Fri, 19 May 2023 22:16:46 +0000 (16:16 -0600)] 
samples: Add a python example that creates a systemd scope

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agoftests: Rework test 071 to use cgroup_write_systemd_default_cgroup()
Tom Hromatka [Wed, 24 May 2023 13:34:51 +0000 (07:34 -0600)] 
ftests: Rework test 071 to use cgroup_write_systemd_default_cgroup()

cgroup_write_systemd_default_cgroup() populates libcgroup's /var/run
file with the default slice/scope.  No verification is done at the time
of writing.

cgroup_set_default_systemd_cgroup() reads the /var/run file and verifies
that it points to a valid path.  If so, it populates libcgroup's global
variable, systemd_default_cgroup.  systemd_default_cgroup is then used
in any subsequent building of libcgroup paths.

Previously, test 071 tested cgroup_set_default_systemd_cgroup() but it
didn't exercise cgroup_write_systemd_default_cgroup().  Rework test 071
to exercise the most likely combinations of writing/setting the default
path that a user would encounter.

-----------------------------------------------------------------
Test Results:
Run Date:                          May 24 07:32:54
Passed:                                  1 test(s)
Skipped:                                 0 test(s)
Failed:                                  0 test(s)
-----------------------------------------------------------------
Timing Results:
Test                                       Time (sec)
-----------------------------------------------------
setup                                            0.00
071-sudo-set_default_systemd_cgroup.py           4.67
teardown                                         0.00
-----------------------------------------------------
Total Run Time                                   4.67

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agopython: Add support for NULL controllers[] in get_processes()
Tom Hromatka [Fri, 19 May 2023 22:09:54 +0000 (16:09 -0600)] 
python: Add support for NULL controllers[] in get_processes()

Add support for an empty controllers list in the Python bindings.
The python method, get_processes(), will then send in a NULL pointer
in the controllers field into the C function cgroup_get_procs().

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agopython: Add cgroup v1 support to move_process()
Tom Hromatka [Wed, 24 May 2023 20:12:45 +0000 (14:12 -0600)] 
python: Add cgroup v1 support to move_process()

Add support for providing a single controller to Cgroup.move_process().
move_process() invokes cgroup_change_cgroup_path() which utilizes an
array of controller strings.

This change only adds support for a single controller via the python
bindings, but a list of controllers could be supported in the future.

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agopython: Add method to clear the default slice/scope
Tom Hromatka [Thu, 25 May 2023 02:35:35 +0000 (20:35 -0600)] 
python: Add method to clear the default slice/scope

Add a convenience method to clear the default slice/scope.  This may be
useful in cases where the user is done with the slice/scope and wants to
resume operating at the root cgroup level.

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agopython: Add bindings for cgroup_write_systemd_default_cgroup()
Tom Hromatka [Fri, 19 May 2023 22:05:25 +0000 (16:05 -0600)] 
python: Add bindings for cgroup_write_systemd_default_cgroup()

Add python bindings for cgroup_write_systemd_default_cgroup().  As part
of this change, demote cgroup_set_default_systemd_cgroup() to an
internal function - __set_default_systemd_cgroup().  I would expect
users to invoke write_default_systemd_scope() and utilize that to set
the default slice/scope.

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agopython: Add bindings for cgroup_set_default_logger()
Tom Hromatka [Fri, 19 May 2023 21:59:36 +0000 (15:59 -0600)] 
python: Add bindings for cgroup_set_default_logger()

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agofix: malloc size off-by-one in cgroup_process_v2_mnt
Adriaan Schmidt [Wed, 28 Jun 2023 08:12:15 +0000 (10:12 +0200)] 
fix: malloc size off-by-one in cgroup_process_v2_mnt

need to allocate the length of both strings, plus the space added in
the sprintf, plus the terminating null byte.

Signed-off-by: Adriaan Schmidt <adriaan.schmidt@siemens.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agocgcreate: cgget: Fix help spacing
Tom Hromatka [Tue, 27 Jun 2023 19:54:56 +0000 (13:54 -0600)] 
cgcreate: cgget: Fix help spacing

Fix spacing in cgcreate and cgget help where spaces were used instead
of tabs.

Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
Reviewed-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
2 years agoapi: fix build warning
Kamalesh Babulal [Fri, 23 Jun 2023 09:40:00 +0000 (15:10 +0530)] 
api: fix build warning

Fix a build warning:
cgcreate.c: In function ‘create_systemd_scope’:
cgcreate.c:81:17: warning: ‘strncpy’ specified bound depends on the length of the source argument [-Wstringop-truncation]
   81 |                 strncpy(slice, cg->name, len);
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cgcreate.c:80:23: note: length computed here
   80 |                 len = strlen(cg->name) - strlen(scope);

fix it by using, length of destination in the strncpy().

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agoapi: add ret value check in cgroup_get_current_controller_path()
Kamalesh Babulal [Fri, 23 Jun 2023 06:19:04 +0000 (11:49 +0530)] 
api: add ret value check in cgroup_get_current_controller_path()

Fix unchecked return value, reported by the Coverity tool:

CID 320874 (#1 of 1): Unchecked return value from library
(CHECKED_RETURN)13. check_return: Calling fscanf(pid_cgroup_fd,
"%*[^\n]\n") without checking return value. This library function may
fail and return an error code.

add the missing return value check from fscanf() in
cgroup_get_current_controller_path()

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agocgcreate: fix null pointer dereference in create_systemd_scope()
Kamalesh Babulal [Wed, 21 Jun 2023 04:16:20 +0000 (09:46 +0530)] 
cgcreate: fix null pointer dereference in create_systemd_scope()

Fix a NULL pointer dereference, reported by the Coverity tool:

CID 321267 (#1 of 1): Dereference null return value (NULL_RETURNS)6.
dereference: Dereferencing a pointer that might be NULL scope when
calling strlen.

check for the return value from strstr(), before dereferencing it.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agotools/cgexec: fix uninitialized variable in find_scope_pid()
Kamalesh Babulal [Sun, 18 Jun 2023 07:35:38 +0000 (13:05 +0530)] 
tools/cgexec: fix uninitialized variable in find_scope_pid()

Fix uninitialized variable, reported by the Coverity tool:

CID 321266: Uninitialized scalar variable (UNINIT)

memset(), ctrl_name with every iteration, to avoid using the stale value
or uninitialized values.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agotools/cgexec: fix memory leak in find_scope_pid()
Kamalesh Babulal [Sun, 18 Jun 2023 07:10:33 +0000 (12:40 +0530)] 
tools/cgexec: fix memory leak in find_scope_pid()

Fix a memory leak, reported by the Coverity tool.

CID 321265 (#1-2 of 2): Resource leak (RESOURCE_LEAK)37. leaked_storage:
Variable pids going out of scope leaks the storage it points to.

find_scope_pid (), calls cgroup_get_procs() to get the pids of the
tasks under cgroup name, and it's up to the caller to free the allocated
pids. Fix it by calling free(pids) after every call to
cgroup_get_procs().

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agoman: cgclassify: document -r option
Kamalesh Babulal [Thu, 1 Jun 2023 11:18:52 +0000 (11:18 +0000)] 
man: cgclassify: document -r option

Document -r option. It replaces the systemd scope's idle process with
the first pid of the list of pids provided.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agoftests: add test to replace scope idle_thread using cgclassify
Kamalesh Babulal [Thu, 15 Jun 2023 11:22:06 +0000 (16:52 +0530)] 
ftests: add test to replace scope idle_thread using cgclassify

Add a test to replace systemd scope default idle_thread using
cgclassify '-r' flag.
-----------------------------------------------------------------
Test Results:
        Run Date:                          Jun 15 11:20:25
        Passed:                                  1 test(s)
        Skipped:                                 0 test(s)
        Failed:                                  0 test(s)
-----------------------------------------------------------------
Timing Results:
        Test                                     Time (sec)
        ---------------------------------------------------
        setup                                          0.00
        088-sudo-cgclassify_systemd_scope.py          17.63
        teardown                                       0.00
        ---------------------------------------------------
        Total Run Time                                17.63

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agoftests: add support to replace idle_thread of systemd scope
Kamalesh Babulal [Thu, 1 Jun 2023 11:11:42 +0000 (11:11 +0000)] 
ftests: add support to replace idle_thread of systemd scope

Allow replacing the default idle_thread during process classification
into a cgroup using cgclassify by introducing replace_id flag, that
when unset(default) has no effect on the process created into systemd
scope cgroup, when set replaces the default idle_thread with the
process being created.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agotools/cgclassify: add -r option for systemd scope
Kamalesh Babulal [Tue, 20 Jun 2023 11:44:25 +0000 (17:14 +0530)] 
tools/cgclassify: add -r option for systemd scope

Provide an option for users to replace the default idle_thread created
for systemd scope.  With '-r' option specified, the first pid passed as
the argument to cgclassify will replace the default idle_thread, if it
exists.  Also, if it's the only task, killing it will remove the .scope
cgroup it's running in.

$ sudo cgclassify -r -gcpu:libcgroup.slice/db.scope 1234 1235

For non scope cgroups, it launches the task program. The algorithm in
brief is as follows:
Once the first pid of argument list migrated to the expected cgroup(s):
1. The controller, cgroups details of the pid is captured before the
   migration, so incase an error occurs, it easy to roll back to the
   original cgroups the pid belonged to.
2. Once the migrated is done, parse /proc/<pid>/cgroup of the first
   pid and if the cgroup name ends with .scope and has a task with
   /proc/<pid>/cmdline as "libcgroup_systemd_idle_thread", kill
   the task. This gives the illusion of replacement.
3. If an error occurs, migrate the pid back to the original cgroups.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agoman: cgexec: document -r option
Kamalesh Babulal [Wed, 24 May 2023 11:39:25 +0000 (11:39 +0000)] 
man: cgexec: document -r option

Document -r option. It replaces the systemd scope's idle process with
command provided.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agoftests: add test to replace scope idle_thread using cgexec
Kamalesh Babulal [Thu, 1 Jun 2023 07:03:13 +0000 (07:03 +0000)] 
ftests: add test to replace scope idle_thread using cgexec

Add a test to replace systemd scope default idle_thread using cgexec
'-r' flag.

-----------------------------------------------------------------
Test Results:
        Run Date:                          Jun 01 07:02:45
        Passed:                                  1 test(s)
        Skipped:                                 0 test(s)
        Failed:                                  0 test(s)
-----------------------------------------------------------------
Timing Results:
        Test                                 Time (sec)
        -----------------------------------------------
        setup                                      0.00
        085-sudo-cgexec_systemd_scope.py           9.19
        teardown                                   0.00
        -----------------------------------------------
        Total Run Time                             9.19

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agoftests: add support to replace idle_thread of systemd scope
Kamalesh Babulal [Wed, 24 May 2023 11:39:15 +0000 (11:39 +0000)] 
ftests: add support to replace idle_thread of systemd scope

Allow replacing the default idle_thread during process creation into a
cgroup using cgexec by introducing replace_id flag, that when unset
(default) has no effect on the process created into systemd scope
cgroup, when set replaces the default idle_thread with the process
being created.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agotools/cgexec: add -r option for systemd scope
Kamalesh Babulal [Thu, 15 Jun 2023 10:36:54 +0000 (16:06 +0530)] 
tools/cgexec: add -r option for systemd scope

Provide an option for users to replace the default idle_thread created
for systemd scope.  With '-r' option specified, the program passed as
the argument to cgexec will replace the default idle_thread, if it
exists.  Also, if it's the only task, killing it will remove the .scope
cgroup it's running in.

$ sudo cgexec -r -gcpu:libcgroup.slice/db.scope ./new_default

For non scope cgroups, it launches the task program. The algorithm in
brief is as follows:
Once the current task, instance of cgexec is migrated to the
expected cgroup(s):
1. fork() and in the child path perform the exec to program passed in
   the command line.  This means, we have cgexec instance and program
   executing in the desired cgroup(s).
2. In the parent, parse /proc/<pid>/cgroup of the current process
   (cgexec) and if the cgroup name ends with .scope and has a task
   with /proc/<pid>/cmdline as "libcgroup_systemd_idle_thread", kill
   the task. This gives the illusion of replacement.

Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>
2 years agowrapper: fix missing unlock() in cgroup_add_all_controllers()
Kamalesh Babulal [Thu, 15 Jun 2023 09:54:06 +0000 (15:24 +0530)] 
wrapper: fix missing unlock() in cgroup_add_all_controllers()

Fix missing unlock(), reported by Coverity tool:

CID 313906 (#1 of 1): Missing unlock (LOCK)6. missing_unlock: Returning
without unlocking cg_mount_table_lock

add the missing pthread_rwlock_unlock() in the error path of the
cgroup_add_all_controllers()

Fixes: 4124f4d6853a ("wrapper: Add cgroup v2 support to cgroup_add_all_controllers()")
Signed-off-by: Kamalesh Babulal <kamalesh.babulal@oracle.com>
Signed-off-by: Tom Hromatka <tom.hromatka@oracle.com>