summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* libcgroup: Start cgred service after cgconfigDhaval Giani2009-02-261-1/+1
| | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> cgred should start after cgconfig service Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@351 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Fix copyright noticesDhaval Giani2009-02-264-4/+4
| | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> Some pages have wrong year in copyright notice. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@350 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup manpages: Correct project nameDhaval Giani2009-02-265-5/+5
| | | | | | | Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@349 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Install the man pagesDhaval Giani2009-02-261-0/+5
| | | | | | | | | | | | | | | From: Ivana Varekova <varekova@redhat.com> The man pages should be installed so the patch for Makefile (with the last - for now not incorporated man page) Signed-off-by: Ivana Varekova <varekova@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@348 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Move the man page into the correct locationDhaval Giani2009-02-261-0/+0
| | | | | | | Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@347 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: cgred.conf.5 man pageDhaval Giani2009-02-261-0/+49
| | | | | | | | | | | | | | From: Ivana Varekova <varekova@redhat.com> This is my proposal of cgred.conf man page. There are used some of some parts of present documentation of libcg - again. Signed-off-by: Ivana Varekova <varekova@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@346 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Rename dbg() to cgroup_dbg()Dhaval Giani2009-02-258-96/+107
| | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> Rename dbg() to cgroup_dbg() everywhere. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@345 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Remove PACKAGE_VERSION from Makefile.inDhaval Giani2009-02-251-2/+1
| | | | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> PACKAGE_VERSION is defined both in config.h and Makefile.in, which results in 'PACKAGE_VERSION redefined' warnings. It should be defined only once, let's say in config.h. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@344 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Include config.hDhaval Giani2009-02-253-0/+3
| | | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> config.h (and therefore definition of CGROUP_DEBUG) should be included where appropriate. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@343 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Move dbg() to libcgroup-internal.hDhaval Giani2009-02-254-9/+14
| | | | | | | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> I think dbg() should be in internal header file and not in the public one. The tools get their own definition of dbg() so they don't need to include library private header. dbg() is defined on three places now, it will make more sense when the sources are distributed to different directories. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@342 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* cgclassify: Update cgclassify man pageDhaval Giani2009-02-251-4/+20
| | | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> Update cgclassify man page to reflect new '-g' parameter. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@341 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* cgclassify: Add -g option to cgclassifyDhaval Giani2009-02-252-28/+98
| | | | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> cgclassify tools currently moves processes to groups only as specified in cgrules.conf. It would be nice to move processes to another group, specified on command line, like cgexec does. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@340 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Move parse_cgroup_data to separate .c fileDhaval Giani2009-02-254-72/+141
| | | | | | | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> Cgclassify could benefit from parsing of -g command line option, let's move it to separate file, where both cgexec and cgclassify can use it. The data structures and function names are also more descriptive now. I added also the copyright notice and license to the new files. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@339 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* From: Ivana Varekova <varekova@redhat.com>Balbir Singh2009-02-233-15/+11
| | | | | | | | | | | | | This patch fixes spec file handling of daemon parts of libcg (add chkconfig to post and including dependency, fix preun script). And fix the levels in which is this daemon start by default (should not be any). Signed-off-by: Ivana Varekova <varekova@redhat.com> Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@338 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* From: Ivana Varekova <varekova@redhat.com>Balbir Singh2009-02-235-47/+46
| | | | | | | | | | | | | | | | | | This patch changes cgconfig.conf - comment all rows and rename example values - to have example which should be installed to /etc/. Move cgred to /etc/sysconfig and patch spec to install all /etc/* configuration files (at least they shows examples and help to user to do their own configuration).). Signed-off-by: Ivana Varekova <varekova@redhat.com> Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com> NOTE: The spec file is still broken due to lack of packaging of pam_cgroup.so. git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@337 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* Impact: Fix the parsing issue when two or more values are specifiedBalbir Singh2009-02-212-3/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes an issue where when two or more values are specified for the controllers, only the last one is applied. This patch fixes that issue. The parser is modified to collate all the name value pairs, seperated by ":". The reason for implementing it this way is because we need to pass the controller name and splitting the rules would make it very hard to pass the controller name to each rule, irrespective of where the controller name was parsed. Tested with the following config file group default { perm { task { uid = root; gid = root; } admin { uid = root; gid = root; } } cpu { cpu.shares = 2048; } cpuset { cpuset.mems=0; cpuset.cpus=0-1; } } mount { cpu = /cgroup/cpu; cpuacct = /cgroup/cpu; cpuset = /cgroup/cpu; } Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@336 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgorup: Fix a chown security issueDhaval Giani2009-02-211-7/+9
| | | | | | | | | | | | | | | | | | | | From: Balbir Singh <balbir@linux.vnet.ibm.com> Impact: Bug fix causes incorrect chown This patch fixes a potential security issue, we free path and add reallocate it using asprintf, but that breaks chown, since that relies on fts_path[0] and path to point to the same address location. Please review, comment. [dhaval@linux.vnet.ibm.com: Fixed the return checks] Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@335 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Fix return valuesDhaval Giani2009-02-211-4/+11
| | | | | | | | | | | | | | | | | From: Balbir Singh <balbir@linux.vnet.ibm.com> Impact: Bug fix, fix incorrect return values This patch fixes incorrect return value of -1 being returned from some call sites. Please review, comment. printf's are ugly, so they've been converted to dbg. Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@334 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* This is my proposal of cgconfigparser man page. I've used some of some partsBalbir Singh2009-02-171-0/+31
| | | | | | | | | | of present documentation of libcg - again. Signed-off-by: Ivana Varekova <varekova@redhat.com> Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@333 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* This is my proposal of cgclassify man page. I've used some of some partsBalbir Singh2009-02-171-0/+31
| | | | | | | | | of present documentation of libcg - again. Signed-off-by: Ivana Varekova <varekova@redhat.com> Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@332 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* This is my proposal of cgexec man page. I've used some of some partsBalbir Singh2009-02-171-0/+72
| | | | | | | | | of present documentation of libcg - again. Signed-off-by: Ivana Varekova <varekova@redhat.com> Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@331 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* Feature: Add new man page for cgrules.confBalbir Singh2009-02-171-0/+120
| | | | | | | | | | | This is my proposal of cgrules.conf man page. There are all necessary parts (for some of them I use parts of present documentation of libcg). Signed-off-by: Ivana Varekova <varekova@redhat.com> Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@330 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* This patch store the last errno value to last_errno value and addBalbir Singh2009-02-166-14/+92
| | | | | | | | | | | | cgroup_add_last_errno procedure to show this number. Use this procedure to show the cause of the error when ECGOTHER is returned. [balbir@linux.vnet.ibm.com: fix last_errno in config.c] Signed-off-by: Ivana Varekova <varekova@redhat.com> Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@329 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Install the PAM moduleDhaval Giani2009-02-161-0/+2
| | | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> Install the PAM module to suitable directory. I didn't find any AC macro for location of the PAM module, I hope static path is OK. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@328 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Add man pages to MakefileDhaval Giani2009-02-161-0/+4
| | | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> The man page is in Makefile.in now, make install should install it to appropriate place. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@327 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Add configure option to enable debug outputDhaval Giani2009-02-163-0/+29
| | | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> There is new configure script option, which defines CGROUP_DEBUG. Usage: ./configure --enable-debug Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@326 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Rename DEBUG to CGROUP_DEBUGDhaval Giani2009-02-163-5/+5
| | | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> Using plain DEBUG can be dangerous, it might have side effects on different libraries, there should be something with CGROUP_ prefix. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@325 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Compile cgrulesengd without -DDEBUGDhaval Giani2009-02-161-2/+1
| | | | | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> Cgrulesengd writes some debugging info to stdout by default. IMHO this feature should be enabled only when user explicitly asks so during compilation, like the other tools. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@324 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Don't store Makefile in SVNDhaval Giani2009-02-121-90/+0
| | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> Makefile is generated by configure script, it should not be stored in SVN. I hope SVN understands such patches :). Signed-off-by: Jan Safranek <jsafrane@redhat.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@323 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Add new command line options to sample config fileDhaval Giani2009-02-122-6/+12
| | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> Add new command line options to sample config file Signed-off-by: Jan Safranek <jsafrane@redhat.com> Acked-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@322 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Add command line options to set log level and log destinations.Dhaval Giani2009-02-121-35/+129
| | | | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> I rewrote the parsing to getopt - it's IMHO less error-prone and new options can be added quite easily. Each new option has short and long variant, both shown in --help. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Acked-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@321 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Make the group change logs more readableDhaval Giani2009-02-121-12/+20
| | | | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> Function cgre_process_event() logs success/failure of group change two times, each with different log severity. It should be logged just once. [dhaval@linux.vnet.ibm.com: Minor changes to the changelog] Signed-off-by: Jan Safranek <jsafrane@redhat.com> Acked-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@320 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Send log message to a log file, to syslog or to both.Dhaval Giani2009-02-122-92/+160
| | | | | | | | | | | | | | | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> Rework whole cgrulesengd logging to be able to send log messages to syslog. Also introduce more log levels: LOG_NOTICE is the default log level, it logs startup/shutdown/configuration reload and errors. LOG_INFO shows in addition content of configuration file (only if logging to file is enabled) and changing cgroup of a PID. LOG_DEBUG show all details as it was before the patch. TODO: if something gets wrong with mounted hierarchies (e.g. root unmounts them), the log gets full of "Cgroup change for PID: ... FAILED". Some suppression should be implemented. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Acked-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@319 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Convert any printf to dbgDhaval Giani2009-02-101-6/+6
| | | | | | | | | | | | | From: Jan Safranek <jsafrane@redhat.com> There are some messages printed directly to stdout, let's convert them to dbg(). Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@318 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* I've noticed it's possible to set permissions and other parameters of rootBalbir Singh2009-02-061-4/+103
| | | | | | | | | | | | | | | | control group, i.e. the group which is implicitly created on mount and contains all processes. Admin can use '.' as the group name and he/she can set group's parameters as usual. I am not sure it's a bug or feature, I've just documented current behavior on appropriate man page. [Balbir, simple spell fixes] Signed-off-by: Jan Safranek <jsafrane@redhat.com> Signed-off-by: Balbir Singh <balbir@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@317 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* The previous patch is split so the second part of the patch:Balbir Singh2009-02-031-2/+2
| | | | | | | | This part change error messages - to dbg info messages - the data from error messages are now printed in main procedure Signed-off-by: Ivana Varekova <varekova@redhat.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@316 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* Here is my proposal for a man page describing content of /etc/cgconfig.conf.Balbir Singh2009-02-031-0/+463
| | | | | | | | | | | | | | | | I did not find any realistic example of configuration file, I just thought of something mounting groups to /mnt/cgroups. Is it suitable location of such mount points? Or is /container mentioned on libcg web the right place for such mounts? Feel free to rephrase and reformat anything, especially RECOMMENDATIONS section would appreciate some 'official' content - I wrote there just my experiences. I'm not native speaker, please look for grammar errors too. Signed-off-by: Jan Safranek <jsafrane@redhat.com> Reviewed-by: Ivana Varekova <varekova@redhat.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@315 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgrouptest: rename get_controller() to is_subsystem_enabled()Dhaval Giani2009-01-143-4/+4
| | | | | | | | | | | | | | | | | | | | | From: Sudhir Kumar <skumar@linux.vnet.ibm.com> This patch renames the function get_controllers() to a more meaningful name is_subsystem_enabled(). history: The code in the patch is part of a patch sent in an earlier patchset, which somehow got dropped (looks an older version of that patch was merged to the tree). Adding this patch makes everything upstream upto the discussion held on the list. Signed-off-by: Sudhir Kumar <skumar@linux.vnet.ibm.com> Acked-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@314 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgrouptest: open may fail wrt permissions, so use statDhaval Giani2009-01-091-8/+17
| | | | | | | | | | | | | | | | | | | | From: Sudhir Kumar <skumar@linux.vnet.ibm.com> The patch was adding a warning "test_functions.c:359: warning: unused variable ‘ret’" Hence resending correcting it. open may fail in case there is not proper permissions and hence giving a wrong result. This patch uses stat instead which is always better. Signed-off-by: Sudhir Kumar <skumar@linux.vnet.ibm.com> Acked-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@312 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgrouptest: let check_task() receive a pid as argumentDhaval Giani2009-01-092-5/+9
| | | | | | | | | | | | | | | | | | | | | From: Sudhir Kumar <skumar@linux.vnet.ibm.com> The patch would get a reject because of modifications in an earlier patch. Hence updating the patch by fixing the reject. This patch makes the function check_task() capable of checking if a pid other than the calling process is attached to a particlular group. Earlier it was checking for the calling process only. For optimization purpose 0 is used to indicate that the task to be attached is the current task and hence call cgroup_gettid() only once. Signed-off-by: Sudhir Kumar <skumar@linux.vnet.ibm.com> Acked-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@311 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgrouptest:attach exclusive pid support in test_cgroup_attach_task() functionDhaval Giani2009-01-093-15/+24
| | | | | | | | | | | | | | | From: Sudhir Kumar <skumar@linux.vnet.ibm.com> The function test_attach_task_pid() was attaching the process calling the function to a group and did not have support to take any pid for attaching it to a group. This patch does that. Signed-off-by: Sudhir Kumar <skumar@linux.vnet.ibm.com> Acked-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@310 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgrouptest: Move functions into a new file to reuseDhaval Giani2009-01-094-747/+917
| | | | | | | | | | | | | | | | | | | | From: Sudhir Kumar <skumar@linux.vnet.ibm.com> There were some coding style warnings that have been fixed in this patch. Basicaly the ones reported by checkpatch.pl This patch puts the test functions in a separate file so that they can be reused for further testing. Some of the functions were static and hence changed to be non static. It also edits the Makefile so that the patch compiles. Signed-off-by: Sudhir Kumar <skumar@linux.vnet.ibm.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@309 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgrouptest: Avoid external variables usageDhaval Giani2009-01-092-94/+139
| | | | | | | | | | | | | | | | | | | | | | From: Sudhir Kumar <skumar@linux.vnet.ibm.com> A lack of proper initial thought let me use some variables globaly, which is not a good idea at all. However fixing this issue at this stage is not very good from the point that it changes variables for a lot of functions. But still it has to be done for a better and reusable code. This patch does that while putting related variables in meaningful structs. Thanks to Balbir for a good suggestion. TODO: Fill these data structures from a configuration file after analyzing requirements from different test functions. Signed-off-by: Sudhir Kumar <skumar@linux.vnet.ibm.com> Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@307 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Fix low hanging cleanupsDhaval Giani2009-01-061-38/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some of the cleanups possible are obvious. 1. Change usage of strcat to strncat 2. Change usage of tge following type char *s = malloc(); strcpy(s, "somestring"); strcat(s, "someotherstring"); to something more easily understandble such as asprintf(&s, "%s%s", somestring, someotherstring); Changes for v2: 1. Fix some memory leaks discovered using valgrind 2. Fix Balbir's comments regarding codingstyle. 3. Move the controllers array memory leak fix into another patch Changes from v1: 1. Correct the error handling of asprintf as pointed out by Dan Smith TODO: 1. Figure out what is the correct value of n for cg_build_path_locked valgrind output, [root@gondor tests]# sh runlibcgrouptest.sh Running first set of testcases ============================== ==5067== Memcheck, a memory error detector. ==5067== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al. ==5067== Using LibVEX rev 1804, a library for dynamic binary translation. ==5067== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==5067== Using valgrind-3.3.0, a dynamic binary instrumentation framework. ==5067== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==5067== For more details, rerun with: -v ==5067== C:DBG: fs_mounted as recieved from script=0 TEST 1:PASS : cgroup_init() Ret Value = 50001 TEST 2:PASS : cgroup_attach_task() Ret Value = 50014 Parameter nullcgroup TEST 3:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 4:PASS : cgroup_create_cgroup() Ret Value = 50014 TEST 5:PASS : cgroup_delete_cgroup() Ret Value = 50014 TEST 6:PASS : cgroup_create_cgroup() Ret Value = 50014 TEST 7:PASS : cgroup_delete_cgroup() Ret Value = 50014 TEST 8:PASS : cgroup_add_controller() Ret Value = 0 TEST 9:PASS : cgroup_add_controller() Ret Value = 0 TEST10:PASS : cgroup_add_controller() Ret Value = 0 ==5067== ==5067== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 18 from 1) ==5067== malloc/free: in use at exit: 0 bytes in 0 blocks. ==5067== malloc/free: 18 allocs, 18 frees, 32,293 bytes allocated. ==5067== For counts of detected errors, rerun with: -v ==5067== All heap blocks were freed -- no leaks are possible. Running second set of testcases ============================== ==5083== Memcheck, a memory error detector. ==5083== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al. ==5083== Using LibVEX rev 1804, a library for dynamic binary translation. ==5083== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==5083== Using valgrind-3.3.0, a dynamic binary instrumentation framework. ==5083== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==5083== For more details, rerun with: -v ==5083== C:DBG: fs_mounted as recieved from script=1 C:DBG: mountpoint1 as recieved from script=/dev/cgroup_controllers-1 sanity check pass. cgroup TEST 1:PASS : cgroup_attach_task() Ret Value = 50014 Parameter nullcgroup TEST 2:PASS : cgroup_init() Ret Value = 0 TEST 3:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST 4:PASS : cgroup_attach_task_pid() Ret Value = 50016 TEST 5:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 6:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST 7:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s ==5083== Conditional jump or move depends on uninitialised value(s) ==5083== at 0x40070D8: strncat (mc_replace_strmem.c:214) ==5083== by 0x804BC92: main (libcgrouptest01.c:1271) ==5083== at 0x40070D8: strncat (mc_replace_strmem.c:214) ==5083== by 0x804BC92: main (libcgrouptest01.c:1271) ==5083== ==5083== Conditional jump or move depends on uninitialised value(s) ==5083== at 0x8049471: _ZL14group_modifiedPci (libcgrouptest01.c:1076) ==5083== by 0x804C583: main (libcgrouptest01.c:254) ==5083== ==5083== Conditional jump or move depends on uninitialised value(s) ==5083== at 0x8049479: _ZL14group_modifiedPci (libcgrouptest01.c:1076) ==5083== by 0x804C583: main (libcgrouptest01.c:254) ==5083== ==5083== Conditional jump or move depends on uninitialised value(s) ==5083== at 0x4007470: strncmp (mc_replace_strmem.c:314) ==5083== by 0x804949B: _ZL14group_modifiedPci (libcgrouptest01.c:1076) ==5083== by 0x804C583: main (libcgrouptest01.c:254) ==5083== ==5083== Conditional jump or move depends on uninitialised value(s) ==5083== at 0x4007475: strncmp (mc_replace_strmem.c:314) ==5083== by 0x804949B: _ZL14group_modifiedPci (libcgrouptest01.c:1076) ==5083== by 0x804C583: main (libcgrouptest01.c:254) ==5083== ==5083== Conditional jump or move depends on uninitialised value(s) ==5083== at 0x4007497: strncmp (mc_replace_strmem.c:314) ==5083== by 0x804949B: _ZL14group_modifiedPci (libcgrouptest01.c:1076) ==5083== by 0x804C583: main (libcgrouptest01.c:254) ==5083== ==5083== Conditional jump or move depends on uninitialised value(s) ==5083== at 0x40074A0: strncmp (mc_replace_strmem.c:314) ==5083== by 0x804949B: _ZL14group_modifiedPci (libcgrouptest01.c:1076) ==5083== by 0x804C583: main (libcgrouptest01.c:254) TEST 8:FAIL : cgroup_modify_cgroup() Ret Value = 0 Parameter same cgroup TEST 9:PASS : cgroup_new_cgroup() Ret Value = 0 TEST10:PASS : cgroup_modify_cgroup() Ret Value = 0 TEST11:PASS : cgroup_modify_cgroup() Ret Value = 50007 TEST12:PASS : cgroup_new_cgroup() Ret Value = 0 TEST13:PASS : cgroup_modify_cgroup() Ret Value = 0 TEST14:PASS : cgroup_get_cgroup() Ret Value = 50007 Parameter nullcgroup TEST15:PASS : cgroup_get_cgroup() Ret Value = 50002 Parameter not created group TEST16:PASS : cgroup_get_cgroup() Ret Value = 0 TEST 0:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 0:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST17:FAIL : cgroup_get_cgroup() Ret Value = 50017 TEST16:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from filesystem TEST17:PASS : cgroup_create_cgroup() Ret Value = 50007 TEST18:PASS : cgroup_delete_cgroup() Ret Value = 50007 TEST19:PASS : cgroup_compare_cgroup() Ret Value = 50011 Parameter nullcgroup TEST20:PASS : cgroup_compare_cgroup() Ret Value = 0 TEST21:PASS : cgroup_compare_cgroup() Ret Value = 50017 ==5083== ==5083== ERROR SUMMARY: 9 errors from 7 contexts (suppressed: 18 from 1) ==5083== malloc/free: in use at exit: 0 bytes in 0 blocks. ==5083== malloc/free: 279 allocs, 279 frees, 237,968 bytes allocated. ==5083== For counts of detected errors, rerun with: -v ==5083== All heap blocks were freed -- no leaks are possible. Cleanup done Running third set of testcases ============================== ==5134== Memcheck, a memory error detector. ==5134== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al. ==5134== Using LibVEX rev 1804, a library for dynamic binary translation. ==5134== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==5134== Using valgrind-3.3.0, a dynamic binary instrumentation framework. ==5134== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==5134== For more details, rerun with: -v ==5134== C:DBG: fs_mounted as recieved from script=2 C:DBG: mountpoint1 as recieved from script=/dev/cgroup_controllers-1 C:DBG: mountpoint2 as recieved from script=/dev/cgroup_controllers-2 sanity check pass. cgroup TEST 1:PASS : cgroup_init() Ret Value = 0 TEST 2:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST 3:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 4:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST 5:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 6:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST 5:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 6:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST 7:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST 8:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST 9:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST10:PASS : cgroup_new_cgroup() Ret Value = 0 TEST11:PASS : cgroup_attach_task() Ret Value = 50002 Parameter not created group TEST12:PASS : cgroup_new_cgroup() Ret Value = 0 TEST13:PASS : cgroup_modify_cgroup() Ret Value = 0 TEST14:PASS : cgroup_new_cgroup() Ret Value = 0 TEST15:PASS : cgroup_modify_cgroup() Ret Value = 0 TEST16:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from filesystem TEST17:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from filesystem TEST18:PASS : cgroup_new_cgroup() Ret Value = 0 TEST19:PASS : cgroup_create_cgroup() Ret Value = 0 group found under both controllers TEST20:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST21:PASS : cgroup_new_cgroup() Ret Value = 0 TEST22:PASS : cgroup_modify_cgroup() Ret Value = 0 group modified under both controllers TEST23:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from filesystem TEST 0:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 0:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST24:FAIL : cgroup_get_cgroup() Ret Value = 50018 ==5134== ==5134== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 18 from 1) ==5134== malloc/free: in use at exit: 66,044 bytes in 15 blocks. ==5134== malloc/free: 279 allocs, 264 frees, 232,094 bytes allocated. ==5134== For counts of detected errors, rerun with: -v ==5134== searching for pointers to 15 not-freed blocks. ==5134== checked 6,381,388 bytes. ==5134== ==5134== 66,044 (18,064 direct, 47,980 indirect) bytes in 4 blocks are definitely lost in loss record 1 of 3 ==5134== at 0x4004BA2: calloc (vg_replace_malloc.c:397) ==5134== by 0x4030DAA: cgroup_new_cgroup (wrapper.c:28) ==5134== by 0x8049656: new_cgroup(char*, char*, char*, int, int) (libcgrouptest01.c:1132) ==5134== by 0x8049917: create_new_cgroup_ds(int, char const*, int, int) (libcgrouptest01.c:744) ==5134== by 0x804C190: main (libcgrouptest01.c:485) ==5134== ==5134== ==5134== 20,980 bytes in 5 blocks are indirectly lost in loss record 2 of 3 ==5134== at 0x4004BA2: calloc (vg_replace_malloc.c:397) ==5134== by 0x4030C3C: cgroup_add_value_string (wrapper.c:122) ==5134== by 0x8048FDB: _ZL17add_control_valueP17cgroup_controllerPcS1_i (libcgrouptest01.c:1113) ==5134== by 0x80496C9: new_cgroup(char*, char*, char*, int, int) (libcgrouptest01.c:1147) ==5134== by 0x8049917: create_new_cgroup_ds(int, char const*, int, int) (libcgrouptest01.c:744) ==5134== by 0x804C190: main (libcgrouptest01.c:485) ==5134== ==5134== ==5134== 27,000 bytes in 6 blocks are indirectly lost in loss record 3 of 3 ==5134== at 0x4004BA2: calloc (vg_replace_malloc.c:397) ==5134== by 0x4030F5B: cgroup_add_controller (wrapper.c:62) ==5134== by 0x80496AE: new_cgroup(char*, char*, char*, int, int) (libcgrouptest01.c:1144) ==5134== by 0x8049917: create_new_cgroup_ds(int, char const*, int, int) (libcgrouptest01.c:744) ==5134== by 0x804C190: main (libcgrouptest01.c:485) ==5134== ==5134== LEAK SUMMARY: ==5134== definitely lost: 18,064 bytes in 4 blocks. ==5134== indirectly lost: 47,980 bytes in 11 blocks. ==5134== possibly lost: 0 bytes in 0 blocks. ==5134== still reachable: 0 bytes in 0 blocks. ==5134== suppressed: 0 bytes in 0 blocks. Cleanup done [root@gondor tests]# Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@302 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Fix compile warning in cgrulesengd.cDhaval Giani2009-01-061-1/+1
| | | | | | | | | | | | | | | | | | | | | We were getting a warning while compiling on 64 bit platforms, [root@llm72 trunk]# make cc -std=gnu99 -DDEBUG -g -O2 -I. -DPACKAGE_VERSION=0.32 -Wall -o cgrulesengd cgrulesengd.c \ -L . -lcgroup -lpthread cgrulesengd.c: In function ‘cgre_create_netlink_socket_process_msg’: cgrulesengd.c:327: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘long unsigned int’ According to Dan Smith, its just an overzealous format check and so we just cast the size to integer and print it. Cc: Dan Smith <danms@us.ibm.com> Cc: Steve Olivieri <steve86@wpi.edu> Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@301 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgrouptest: Cleanup valgrind output for libcgroup testsDhaval Giani2009-01-051-17/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes a few memory leaks, and leaked file handles. [root@gondor tests]# make g++ -g -O2 -Wall -DDEBUG -I .. -o libcgrouptest01 libcgrouptest01.c -L .. -lcgroup -lpthread libcgrouptest01.c: In function ‘int group_modified(char*, int)’: libcgrouptest01.c:1060: warning: format ‘%d’ expects type ‘int*’, but argument 3 has type ‘bool*’ s[root@gondor tests]# sh runlibcgrouptest.sh Running first set of testcases ============================== ==14758== Memcheck, a memory error detector. ==14758== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al. ==14758== Using LibVEX rev 1804, a library for dynamic binary translation. ==14758== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==14758== Using valgrind-3.3.0, a dynamic binary instrumentation framework. ==14758== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==14758== For more details, rerun with: -v ==14758== C:DBG: fs_mounted as recieved from script=0 TEST 1:PASS : cgroup_init() Ret Value = 50001 TEST 2:PASS : cgroup_attach_task() Ret Value = 50014 Parameter nullcgroup TEST 3:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 4:PASS : cgroup_create_cgroup() Ret Value = 50014 TEST 5:PASS : cgroup_delete_cgroup() Ret Value = 50014 TEST 6:PASS : cgroup_create_cgroup() Ret Value = 50014 TEST 7:PASS : cgroup_delete_cgroup() Ret Value = 50014 TEST 8:PASS : cgroup_add_controller() Ret Value = 0 TEST 9:PASS : cgroup_add_controller() Ret Value = 0 TEST10:PASS : cgroup_add_controller() Ret Value = 0 ==14758== ==14758== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 18 from 1) ==14758== malloc/free: in use at exit: 0 bytes in 0 blocks. ==14758== malloc/free: 18 allocs, 18 frees, 32,293 bytes allocated. ==14758== For counts of detected errors, rerun with: -v ==14758== All heap blocks were freed -- no leaks are possible. Running second set of testcases ============================== ==14774== Memcheck, a memory error detector. ==14774== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al. ==14774== Using LibVEX rev 1804, a library for dynamic binary translation. ==14774== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==14774== Using valgrind-3.3.0, a dynamic binary instrumentation framework. ==14774== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==14774== For more details, rerun with: -v ==14774== C:DBG: fs_mounted as recieved from script=1 C:DBG: mountpoint1 as recieved from script=/dev/cgroup_controllers-1 sanity check pass. cgroup TEST 1:PASS : cgroup_attach_task() Ret Value = 50014 Parameter nullcgroup TEST 2:PASS : cgroup_init() Ret Value = 0 TEST 3:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST 4:PASS : cgroup_attach_task_pid() Ret Value = 50016 TEST 5:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 6:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST 7:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s ==14774== Conditional jump or move depends on uninitialised value(s) ==14774== at 0x40070D8: strncat (mc_replace_strmem.c:214) ==14774== by 0x804BC92: main (libcgrouptest01.c:1271) ==14774== ==14774== Conditional jump or move depends on uninitialised value(s) ==14774== at 0x4007271: strcpy (mc_replace_strmem.c:268) ==14774== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14774== by 0x804BC9D: main (libcgrouptest01.c:252) ==14774== ==14774== Conditional jump or move depends on uninitialised value(s) ==14774== at 0x4007285: strcpy (mc_replace_strmem.c:268) ==14774== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14774== by 0x804BC9D: main (libcgrouptest01.c:252) ==14774== ==14774== Conditional jump or move depends on uninitialised value(s) ==14774== at 0x8049471: _ZL14group_modifiedPci (libcgrouptest01.c:1076) ==14774== by 0x804C583: main (libcgrouptest01.c:254) ==14774== ==14774== by 0x804C583: main (libcgrouptest01.c:254) ==14774== ==14774== Conditional jump or move depends on uninitialised value(s) ==14774== at 0x8049479: _ZL14group_modifiedPci (libcgrouptest01.c:1076) ==14774== by 0x804C583: main (libcgrouptest01.c:254) ==14774== ==14774== Conditional jump or move depends on uninitialised value(s) ==14774== at 0x4007470: strncmp (mc_replace_strmem.c:314) ==14774== by 0x804949B: _ZL14group_modifiedPci (libcgrouptest01.c:1076) ==14774== by 0x804C583: main (libcgrouptest01.c:254) TEST 8:PASS : cgroup_modify_cgroup() Ret Value = 0 Parameter same cgroup TEST 9:PASS : cgroup_new_cgroup() Ret Value = 0 ==14774== ==14774== Conditional jump or move depends on uninitialised value(s) ==14774== at 0x4007271: strcpy (mc_replace_strmem.c:268) ==14774== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14774== by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889) ==14774== by 0x804BD35: main (libcgrouptest01.c:286) ==14774== ==14774== Conditional jump or move depends on uninitialised value(s) ==14774== at 0x4007285: strcpy (mc_replace_strmem.c:268) ==14774== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14774== by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889) ==14774== by 0x804BD35: main (libcgrouptest01.c:286) TEST10:PASS : cgroup_modify_cgroup() Ret Value = 0 TEST11:PASS : cgroup_modify_cgroup() Ret Value = 50007 TEST12:PASS : cgroup_new_cgroup() Ret Value = 0 ==14774== ==14774== Conditional jump or move depends on uninitialised value(s) ==14774== at 0x4007271: strcpy (mc_replace_strmem.c:268) ==14774== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14774== by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889) ==14774== by 0x804BDF3: main (libcgrouptest01.c:314) ==14774== ==14774== Conditional jump or move depends on uninitialised value(s) ==14774== at 0x4007285: strcpy (mc_replace_strmem.c:268) ==14774== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14774== by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889) ==14774== by 0x804BDF3: main (libcgrouptest01.c:314) TEST13:PASS : cgroup_modify_cgroup() Ret Value = 0 TEST14:PASS : cgroup_get_cgroup() Ret Value = 50007 Parameter nullcgroup TEST15:PASS : cgroup_get_cgroup() Ret Value = 50002 Parameter not created group TEST16:PASS : cgroup_get_cgroup() Ret Value = 0 TEST 0:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 0:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST17:FAIL : cgroup_get_cgroup() Ret Value = 50017 TEST16:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from filesystem TEST17:PASS : cgroup_create_cgroup() Ret Value = 50007 TEST18:PASS : cgroup_delete_cgroup() Ret Value = 50007 TEST19:PASS : cgroup_compare_cgroup() Ret Value = 50011 Parameter nullcgroup TEST20:PASS : cgroup_compare_cgroup() Ret Value = 0 TEST21:PASS : cgroup_compare_cgroup() Ret Value = 50017 ==14774== ==14774== ERROR SUMMARY: 45 errors from 10 contexts (suppressed: 18 from 1) ==14774== malloc/free: in use at exit: 0 bytes in 0 blocks. ==14774== malloc/free: 187 allocs, 187 frees, 234,711 bytes allocated. ==14774== For counts of detected errors, rerun with: -v ==14774== All heap blocks were freed -- no leaks are possible. Cleanup done Running third set of testcases ============================== ==14827== Memcheck, a memory error detector. ==14827== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al. ==14827== Using LibVEX rev 1804, a library for dynamic binary translation. ==14827== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==14827== Using valgrind-3.3.0, a dynamic binary instrumentation framework. ==14827== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==14827== For more details, rerun with: -v ==14827== C:DBG: fs_mounted as recieved from script=2 C:DBG: mountpoint1 as recieved from script=/dev/cgroup_controllers-1 C:DBG: mountpoint2 as recieved from script=/dev/cgroup_controllers-2 sanity check pass. cgroup TEST 1:PASS : cgroup_init() Ret Value = 0 TEST 2:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST 1:PASS : cgroup_init() Ret Value = 0 TEST 2:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST 3:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 4:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST 5:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 6:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST 7:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST 8:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST 9:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST10:PASS : cgroup_new_cgroup() Ret Value = 0 TEST11:PASS : cgroup_attach_task() Ret Value = 50002 Parameter not created group TEST12:PASS : cgroup_new_cgroup() Ret Value = 0 ==14827== Conditional jump or move depends on uninitialised value(s) ==14827== at 0x4007271: strcpy (mc_replace_strmem.c:268) ==14827== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14827== by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889) ==14827== by 0x804C1D6: main (libcgrouptest01.c:498) TEST13:PASS : cgroup_modify_cgroup() Ret Value = 0 TEST14:PASS : cgroup_new_cgroup() Ret Value = 0 ==14827== ==14827== Conditional jump or move depends on uninitialised value(s) ==14827== at 0x4007271: strcpy (mc_replace_strmem.c:268) ==14827== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14827== by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889) ==14827== by 0x804C23C: main (libcgrouptest01.c:519) ==14827== ==14827== Conditional jump or move depends on uninitialised value(s) ==14827== at 0x4007285: strcpy (mc_replace_strmem.c:268) ==14827== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14827== by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889) ==14827== by 0x804C23C: main (libcgrouptest01.c:519) TEST15:PASS : cgroup_modify_cgroup() Ret Value = 0 TEST16:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from filesystem TEST17:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from filesystem TEST18:PASS : cgroup_new_cgroup() Ret Value = 0 TEST19:PASS : cgroup_create_cgroup() Ret Value = 0 group found under both controllers TEST20:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST21:PASS : cgroup_new_cgroup() Ret Value = 0 ==14827== ==14827== Conditional jump or move depends on uninitialised value(s) ==14827== at 0x4007271: strcpy (mc_replace_strmem.c:268) ==14827== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14827== by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889) ==14827== by 0x804C464: main (libcgrouptest01.c:622) ==14827== ==14827== Conditional jump or move depends on uninitialised value(s) ==14827== at 0x4007285: strcpy (mc_replace_strmem.c:268) ==14827== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14827== by 0x804A3E7: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:889) ==14827== by 0x804C464: main (libcgrouptest01.c:622) TEST22:PASS : cgroup_modify_cgroup() Ret Value = 0 group modified under both controllers TEST23:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from filesystem TEST 0:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 0:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST24:FAIL : cgroup_get_cgroup() Ret Value = 50018 ==14827== ==14827== ERROR SUMMARY: 79 errors from 5 contexts (suppressed: 18 from 1) ==14827== malloc/free: in use at exit: 66,044 bytes in 15 blocks. ==14827== malloc/free: 196 allocs, 181 frees, 228,734 bytes allocated. ==14827== For counts of detected errors, rerun with: -v ==14827== searching for pointers to 15 not-freed blocks. ==14827== checked 6,381,180 bytes. ==14827== ==14827== ==14827== 66,044 (18,064 direct, 47,980 indirect) bytes in 4 blocks are definitely lost in loss record 1 of 3 ==14827== at 0x4004BA2: calloc (vg_replace_malloc.c:397) ==14827== by 0x4030D9A: cgroup_new_cgroup (wrapper.c:28) ==14827== by 0x8049656: new_cgroup(char*, char*, char*, int, int) (libcgrouptest01.c:1132) ==14827== by 0x8049917: create_new_cgroup_ds(int, char const*, int, int) (libcgrouptest01.c:744) ==14827== by 0x804C190: main (libcgrouptest01.c:485) ==14827== ==14827== ==14827== 20,980 bytes in 5 blocks are indirectly lost in loss record 2 of 3 ==14827== at 0x4004BA2: calloc (vg_replace_malloc.c:397) ==14827== by 0x4030C2C: cgroup_add_value_string (wrapper.c:122) ==14827== by 0x8048FDB: _ZL17add_control_valueP17cgroup_controllerPcS1_i (libcgrouptest01.c:1113) ==14827== by 0x4030C2C: cgroup_add_value_string (wrapper.c:122) ==14827== by 0x8048FDB: _ZL17add_control_valueP17cgroup_controllerPcS1_i (libcgrouptest01.c:1113) ==14827== by 0x80496C9: new_cgroup(char*, char*, char*, int, int) (libcgrouptest01.c:1147) ==14827== by 0x8049917: create_new_cgroup_ds(int, char const*, int, int) (libcgrouptest01.c:744) ==14827== by 0x804C190: main (libcgrouptest01.c:485) ==14827== ==14827== ==14827== 27,000 bytes in 6 blocks are indirectly lost in loss record 3 of 3 ==14827== at 0x4004BA2: calloc (vg_replace_malloc.c:397) ==14827== by 0x4030F4B: cgroup_add_controller (wrapper.c:62) ==14827== by 0x80496AE: new_cgroup(char*, char*, char*, int, int) (libcgrouptest01.c:1144) ==14827== by 0x8049917: create_new_cgroup_ds(int, char const*, int, int) (libcgrouptest01.c:744) ==14827== by 0x804C190: main (libcgrouptest01.c:485) ==14827== ==14827== LEAK SUMMARY: ==14827== definitely lost: 18,064 bytes in 4 blocks. ==14827== indirectly lost: 47,980 bytes in 11 blocks. ==14827== possibly lost: 0 bytes in 0 blocks. ==14827== still reachable: 0 bytes in 0 blocks. ==14827== suppressed: 0 bytes in 0 blocks. Cleanup done [root@gondor tests]# Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@300 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Fix a few of the valgrind issuesDhaval Giani2009-01-051-3/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes the leaks reported by valgrind in the library. The valgrind output after this patch is applied is, [root@gondor tests]# sh runlibcgrouptest.sh Running first set of testcases ============================== ==14406== Memcheck, a memory error detector. ==14406== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al. ==14406== Using LibVEX rev 1804, a library for dynamic binary translation. ==14406== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==14406== Using valgrind-3.3.0, a dynamic binary instrumentation framework. ==14406== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==14406== For more details, rerun with: -v ==14406== C:DBG: fs_mounted as recieved from script=0 TEST 1:PASS : cgroup_init() Ret Value = 50001 TEST 2:PASS : cgroup_attach_task() Ret Value = 50014 Parameter nullcgroup TEST 3:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 4:PASS : cgroup_create_cgroup() Ret Value = 50014 TEST 5:PASS : cgroup_delete_cgroup() Ret Value = 50014 TEST 6:PASS : cgroup_create_cgroup() Ret Value = 50014 TEST 7:PASS : cgroup_delete_cgroup() Ret Value = 50014 TEST 8:PASS : cgroup_add_controller() Ret Value = 0 TEST 9:PASS : cgroup_add_controller() Ret Value = 0 TEST10:PASS : cgroup_add_controller() Ret Value = 0 ==14406== ==14406== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 18 from 1) ==14406== malloc/free: in use at exit: 704 bytes in 2 blocks. ==14406== malloc/free: 18 allocs, 16 frees, 32,293 bytes allocated. ==14406== For counts of detected errors, rerun with: -v ==14406== searching for pointers to 2 not-freed blocks. ==14406== checked 6,389,612 bytes. ==14406== ==14406== 704 bytes in 2 blocks are still reachable in loss record 1 of 1 ==14406== at 0x4006AEE: malloc (vg_replace_malloc.c:207) ==14406== by 0x4C2AC78E: __fopen_internal (in /lib/libc-2.9.so) ==14406== by 0x4C2AC85B: fopen@@GLIBC_2.1 (in /lib/libc-2.9.so) ==14406== by 0x8049155: get_controllers(char const*, int*) (libcgrouptest01.c:979) ==14406== by 0x804B589: main (libcgrouptest01.c:84) ==14406== ==14406== LEAK SUMMARY: ==14406== definitely lost: 0 bytes in 0 blocks. ==14406== possibly lost: 0 bytes in 0 blocks. ==14406== still reachable: 704 bytes in 2 blocks. ==14406== suppressed: 0 bytes in 0 blocks. Running second set of testcases ============================== ==14422== Memcheck, a memory error detector. ==14422== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al. ==14422== Using LibVEX rev 1804, a library for dynamic binary translation. ==14422== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==14422== Using valgrind-3.3.0, a dynamic binary instrumentation framework. ==14422== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==14422== For more details, rerun with: -v ==14422== C:DBG: fs_mounted as recieved from script=1 C:DBG: mountpoint1 as recieved from script=/dev/cgroup_controllers-1 sanity check pass. cgroup TEST 1:PASS : cgroup_attach_task() Ret Value = 50014 Parameter nullcgroup TEST 2:PASS : cgroup_init() Ret Value = 0 TEST 3:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST 4:PASS : cgroup_attach_task_pid() Ret Value = 50016 TEST 5:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 6:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST 7:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s ==14422== Conditional jump or move depends on uninitialised value(s) ==14422== at 0x40070D8: strncat (mc_replace_strmem.c:214) ==14422== by 0x804BAAA: main (libcgrouptest01.c:1255) ==14422== ==14422== Conditional jump or move depends on uninitialised value(s) ==14422== at 0x4007271: strcpy (mc_replace_strmem.c:268) ==14422== Conditional jump or move depends on uninitialised value(s) ==14422== at 0x4007271: strcpy (mc_replace_strmem.c:268) ==14422== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14422== by 0x804BAB5: main (libcgrouptest01.c:251) ==14422== ==14422== Conditional jump or move depends on uninitialised value(s) ==14422== at 0x4007285: strcpy (mc_replace_strmem.c:268) ==14422== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14422== by 0x804BAB5: main (libcgrouptest01.c:251) ==14422== ==14422== Conditional jump or move depends on uninitialised value(s) ==14422== at 0x8049381: _ZL14group_modifiedPci (libcgrouptest01.c:1072) ==14422== by 0x804C367: main (libcgrouptest01.c:253) ==14422== ==14422== Conditional jump or move depends on uninitialised value(s) ==14422== at 0x8049389: _ZL14group_modifiedPci (libcgrouptest01.c:1072) ==14422== by 0x804C367: main (libcgrouptest01.c:253) ==14422== ==14422== Conditional jump or move depends on uninitialised value(s) ==14422== at 0x4007470: strncmp (mc_replace_strmem.c:314) ==14422== by 0x80493A9: _ZL14group_modifiedPci (libcgrouptest01.c:1072) ==14422== by 0x804C367: main (libcgrouptest01.c:253) TEST 8:PASS : cgroup_modify_cgroup() Ret Value = 0 Parameter same cgroup TEST 9:PASS : cgroup_new_cgroup() Ret Value = 0 ==14422== ==14422== Conditional jump or move depends on uninitialised value(s) ==14422== at 0x4007271: strcpy (mc_replace_strmem.c:268) ==14422== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14422== by 0x804A317: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:888) ==14422== by 0x804BB41: main (libcgrouptest01.c:285) ==14422== ==14422== Conditional jump or move depends on uninitialised value(s) ==14422== at 0x4007285: strcpy (mc_replace_strmem.c:268) ==14422== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14422== by 0x804A317: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:888) ==14422== by 0x804BB41: main (libcgrouptest01.c:285) TEST10:PASS : cgroup_modify_cgroup() Ret Value = 0 TEST11:PASS : cgroup_modify_cgroup() Ret Value = 50007 TEST12:PASS : cgroup_new_cgroup() Ret Value = 0 ==14422== ==14422== Conditional jump or move depends on uninitialised value(s) ==14422== at 0x4007271: strcpy (mc_replace_strmem.c:268) ==14422== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14422== by 0x804A317: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:888) ==14422== by 0x804BBF3: main (libcgrouptest01.c:313) ==14422== ==14422== Conditional jump or move depends on uninitialised value(s) ==14422== at 0x4007285: strcpy (mc_replace_strmem.c:268) ==14422== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14422== by 0x804A317: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:888) ==14422== by 0x804BBF3: main (libcgrouptest01.c:313) TEST13:PASS : cgroup_modify_cgroup() Ret Value = 0 TEST14:PASS : cgroup_get_cgroup() Ret Value = 50007 Parameter nullcgroup TEST15:PASS : cgroup_get_cgroup() Ret Value = 50002 Parameter not created group TEST16:PASS : cgroup_get_cgroup() Ret Value = 0 TEST 0:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 0:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST17:FAIL : cgroup_get_cgroup() Ret Value = 50017 TEST16:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from filesystem TEST17:PASS : cgroup_create_cgroup() Ret Value = 50007 TEST18:PASS : cgroup_delete_cgroup() Ret Value = 50007 TEST19:PASS : cgroup_compare_cgroup() Ret Value = 50011 Parameter nullcgroup TEST20:PASS : cgroup_compare_cgroup() Ret Value = 0 TEST21:PASS : cgroup_compare_cgroup() Ret Value = 50017 ==14422== ==14422== ERROR SUMMARY: 45 errors from 10 contexts (suppressed: 18 from 1) ==14422== malloc/free: in use at exit: 7,356 bytes in 10 blocks. ==14422== malloc/free: 187 allocs, 177 frees, 234,711 bytes allocated. ==14422== For counts of detected errors, rerun with: -v ==14422== searching for pointers to 10 not-freed blocks. ==14422== checked 6,415,132 bytes. ==14422== ==14422== ==14422== 24 bytes in 1 blocks are definitely lost in loss record 1 of 3 ==14422== at 0x4006AEE: malloc (vg_replace_malloc.c:207) ==14422== by 0x8048FF7: check_fsmounted(int) (libcgrouptest01.c:1171) ==14422== at 0x4006AEE: malloc (vg_replace_malloc.c:207) ==14422== by 0x8048FF7: check_fsmounted(int) (libcgrouptest01.c:1171) ==14422== by 0x804B86B: main (libcgrouptest01.c:168) ==14422== ==14422== ==14422== 2,816 bytes in 8 blocks are still reachable in loss record 2 of 3 ==14422== at 0x4006AEE: malloc (vg_replace_malloc.c:207) ==14422== by 0x4C2AC78E: __fopen_internal (in /lib/libc-2.9.so) ==14422== by 0x4C2AC85B: fopen@@GLIBC_2.1 (in /lib/libc-2.9.so) ==14422== by 0x8049155: get_controllers(char const*, int*) (libcgrouptest01.c:979) ==14422== by 0x804B589: main (libcgrouptest01.c:84) ==14422== ==14422== ==14422== 4,516 bytes in 1 blocks are definitely lost in loss record 3 of 3 ==14422== at 0x4004BA2: calloc (vg_replace_malloc.c:397) ==14422== by 0x4030D9A: cgroup_new_cgroup (wrapper.c:28) ==14422== by 0x804B056: test_cgroup_get_cgroup(int, int, int) (libcgrouptest01.c:1342) ==14422== by 0x804BC07: main (libcgrouptest01.c:324) ==14422== ==14422== LEAK SUMMARY: ==14422== definitely lost: 4,540 bytes in 2 blocks. ==14422== possibly lost: 0 bytes in 0 blocks. ==14422== still reachable: 2,816 bytes in 8 blocks. ==14422== suppressed: 0 bytes in 0 blocks. Cleanup done Running third set of testcases ============================== ==14473== Memcheck, a memory error detector. ==14473== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et al. ==14473== Using LibVEX rev 1804, a library for dynamic binary translation. ==14473== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP. ==14473== Using valgrind-3.3.0, a dynamic binary instrumentation framework. ==14473== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et al. ==14473== For more details, rerun with: -v ==14473== C:DBG: fs_mounted as recieved from script=2 C:DBG: mountpoint1 as recieved from script=/dev/cgroup_controllers-1 C:DBG: mountpoint2 as recieved from script=/dev/cgroup_controllers-2 sanity check pass. cgroup TEST 1:PASS : cgroup_init() Ret Value = 0 TEST 2:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST 3:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 4:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST 5:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 6:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST 7:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST 8:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST 9:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST10:PASS : cgroup_new_cgroup() Ret Value = 0 TEST11:PASS : cgroup_attach_task() Ret Value = 50002 Parameter not created group TEST12:PASS : cgroup_new_cgroup() Ret Value = 0 ==14473== Conditional jump or move depends on uninitialised value(s) ==14473== at 0x4007271: strcpy (mc_replace_strmem.c:268) ==14473== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14473== by 0x804A317: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:888) ==14473== by 0x804BFB4: main (libcgrouptest01.c:497) TEST13:PASS : cgroup_modify_cgroup() Ret Value = 0 TEST14:PASS : cgroup_new_cgroup() Ret Value = 0 ==14473== ==14473== Conditional jump or move depends on uninitialised value(s) ==14473== at 0x4007271: strcpy (mc_replace_strmem.c:268) ==14473== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14473== by 0x804A317: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:888) ==14473== by 0x804C014: main (libcgrouptest01.c:518) ==14473== ==14473== Conditional jump or move depends on uninitialised value(s) ==14473== at 0x4007285: strcpy (mc_replace_strmem.c:268) ==14473== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14473== by 0x804A317: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:888) ==14473== by 0x804C014: main (libcgrouptest01.c:518) TEST15:PASS : cgroup_modify_cgroup() Ret Value = 0 TEST16:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from filesystem TEST17:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from filesystem TEST18:PASS : cgroup_new_cgroup() Ret Value = 0 TEST19:PASS : cgroup_create_cgroup() Ret Value = 0 group found under both controllers TEST18:PASS : cgroup_new_cgroup() Ret Value = 0 TEST19:PASS : cgroup_create_cgroup() Ret Value = 0 group found under both controllers TEST20:PASS : cgroup_attach_task() Ret Value = 0 Task found in group/s TEST21:PASS : cgroup_new_cgroup() Ret Value = 0 ==14473== ==14473== Conditional jump or move depends on uninitialised value(s) ==14473== at 0x4007271: strcpy (mc_replace_strmem.c:268) ==14473== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14473== by 0x804A317: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:888) ==14473== by 0x804C240: main (libcgrouptest01.c:621) ==14473== ==14473== Conditional jump or move depends on uninitialised value(s) ==14473== at 0x4007285: strcpy (mc_replace_strmem.c:268) ==14473== by 0x402F24B: cgroup_modify_cgroup (api.c:1012) ==14473== by 0x804A317: test_cgroup_modify_cgroup(int, cgroup*, char const*, int, int, int, int, int) (libcgrouptest01.c:888) ==14473== by 0x804C240: main (libcgrouptest01.c:621) TEST22:PASS : cgroup_modify_cgroup() Ret Value = 0 group modified under both controllers TEST23:PASS : cgroup_delete_cgroup() Ret Value = 0 Group deleted from filesystem TEST 0:PASS : cgroup_new_cgroup() Ret Value = 0 TEST 0:PASS : cgroup_create_cgroup() Ret Value = 0 group found in filesystem TEST24:FAIL : cgroup_get_cgroup() Ret Value = 50018 ==14473== ==14473== ERROR SUMMARY: 79 errors from 5 contexts (suppressed: 18 from 1) ==14473== malloc/free: in use at exit: 71,348 bytes in 31 blocks. ==14473== malloc/free: 196 allocs, 165 frees, 228,734 bytes allocated. ==14473== For counts of detected errors, rerun with: -v ==14473== searching for pointers to 31 not-freed blocks. ==14473== checked 6,444,900 bytes. ==14473== ==14473== ==14473== 24 bytes in 1 blocks are definitely lost in loss record 1 of 5 ==14473== at 0x4006AEE: malloc (vg_replace_malloc.c:207) ==14473== by 0x8048FF7: check_fsmounted(int) (libcgrouptest01.c:1171) ==14473== by 0x804BD43: main (libcgrouptest01.c:360) ==14473== ==14473== ==14473== 5,280 bytes in 15 blocks are still reachable in loss record 2 of 5 ==14473== at 0x4006AEE: malloc (vg_replace_malloc.c:207) ==14473== by 0x4C2AC78E: __fopen_internal (in /lib/libc-2.9.so) ==14473== by 0x4C2AC85B: fopen@@GLIBC_2.1 (in /lib/libc-2.9.so) ==14473== by 0x8049155: get_controllers(char const*, int*) (libcgrouptest01.c:979) ==14473== by 0x804B589: main (libcgrouptest01.c:84) ==14473== ==14473== ==14473== 66,044 (18,064 direct, 47,980 indirect) bytes in 4 blocks are definitely lost in loss record 3 of 5 ==14473== at 0x4004BA2: calloc (vg_replace_malloc.c:397) ==14473== by 0x4030D9A: cgroup_new_cgroup (wrapper.c:28) ==14473== by 0x8049586: new_cgroup(char*, char*, char*, int, int) (libcgrouptest01.c:1127) ==14473== by 0x8049847: create_new_cgroup_ds(int, char const*, int, int) (libcgrouptest01.c:743) ==14473== by 0x804BF74: main (libcgrouptest01.c:484) ==14473== ==14473== ==14473== 20,980 bytes in 5 blocks are indirectly lost in loss record 4 of 5 ==14473== at 0x4004BA2: calloc (vg_replace_malloc.c:397) ==14473== by 0x4030C2C: cgroup_add_value_string (wrapper.c:122) ==14473== by 0x8048F3B: _ZL17add_control_valueP17cgroup_controllerPcS1_i (libcgrouptest01.c:1108) ==14473== by 0x80495F9: new_cgroup(char*, char*, char*, int, int) (libcgrouptest01.c:1142) ==14473== by 0x8049847: create_new_cgroup_ds(int, char const*, int, int) (libcgrouptest01.c:743) ==14473== by 0x804BF74: main (libcgrouptest01.c:484) ==14473== ==14473== ==14473== 27,000 bytes in 6 blocks are indirectly lost in loss record 5 of 5 ==14473== at 0x4004BA2: calloc (vg_replace_malloc.c:397) ==14473== by 0x4030F4B: cgroup_add_controller (wrapper.c:62) ==14473== by 0x80495DE: new_cgroup(char*, char*, char*, int, int) (libcgrouptest01.c:1139) ==14473== by 0x8049847: create_new_cgroup_ds(int, char const*, int, int) (libcgrouptest01.c:743) ==14473== by 0x804BF74: main (libcgrouptest01.c:484) ==14473== ==14473== LEAK SUMMARY: ==14473== definitely lost: 18,088 bytes in 5 blocks. ==14473== indirectly lost: 47,980 bytes in 11 blocks. ==14473== possibly lost: 0 bytes in 0 blocks. ==14473== still reachable: 5,280 bytes in 15 blocks. ==14473== suppressed: 0 bytes in 0 blocks. Cleanup done The cgroup_modify_cgroup uninitialized error is fixed in the clean up patches. After this patch, there are no leaks in the library as per the test cases and valgrind. (The cgroup data structure has to be explictly freed by the caller, so it is not a leak in the library) Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com> --- api.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@299 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Intialize all pointers in api.cDhaval Giani2009-01-051-34/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | Recently, while debugging an issue with test cases, I realized the pitfalls of not initializing your pointers. On looking into api.c, I realized that a lot of pointers are not initialized. Hence, this patch. Tested against the libcgrouptest suite. No regressions could be were observed. Balbir says, > We should avoid double initialization specially if a > > *ptr = NULL is followed by > ptr = malloc(...) > > I don't see any concerns right now, but something to be aware of Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@298 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgrouptest: Initialize uninitialized pointers in test casesDhaval Giani2009-01-021-2/+2
| | | | | | | | | | | | | | | | Pointers should be initialized to NULL. In the multi mount test case path, we had an uninitialized cgroup_filled which caused a segmentation fault. Fix it for this test case. TODO: Fix for all test cases. Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> Cc: Sudhir Kumar <skumar@linux.vnet.ibm.com> Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@297 4f4bb910-9a46-0410-90c8-c897d4f1cd53
* libcgroup: Fix pam_cgroup.so Makefile dependencyDhaval Giani2008-12-302-2/+2
| | | | | | | | | | | pam_cgroup.so depends on libcgroup.so Signed-off-by: Dhaval Giani <dhaval@linux.vnet.ibm.com> Cc: Vivek Goyal <vgoyal@redhat.com> git-svn-id: https://libcg.svn.sourceforge.net/svnroot/libcg/trunk@296 4f4bb910-9a46-0410-90c8-c897d4f1cd53