The following pull request was submitted through Github. It can be accessed and reviewed at: https://github.com/lxc/lxcfs/pull/350
This e-mail was sent by the LXC bot, direct replies will not reach the author unless they happen to be subscribed to this list. === Description (from pull-request) ===
From b7604bf9ac90e9f19095c346ea317dfcffa5b7d1 Mon Sep 17 00:00:00 2001 From: Christian Brauner <christian.brau...@ubuntu.com> Date: Thu, 5 Mar 2020 12:06:35 +0100 Subject: [PATCH 1/3] proc_loadavg: cleanup Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com> --- src/proc_loadavg.c | 109 ++++++++++++++++++++++++--------------------- 1 file changed, 58 insertions(+), 51 deletions(-) diff --git a/src/proc_loadavg.c b/src/proc_loadavg.c index 6ca5d06..83c4649 100644 --- a/src/proc_loadavg.c +++ b/src/proc_loadavg.c @@ -148,6 +148,7 @@ int calc_hash(const char *name) { unsigned int hash = 0; unsigned int x = 0; + /* ELFHash algorithm. */ while (*name) { hash = (hash << 4) + *name++; @@ -156,21 +157,22 @@ int calc_hash(const char *name) hash ^= (x >> 24); hash &= ~x; } + return (hash & 0x7fffffff); } int proc_loadavg_read(char *buf, size_t size, off_t offset, struct fuse_file_info *fi) { + __do_free char *cg = NULL; struct fuse_context *fc = fuse_get_context(); struct file_info *d = INTTYPE_TO_PTR(fi->fh); pid_t initpid; - char *cg; size_t total_len = 0; char *cache = d->buf; struct load_node *n; int hash; - int cfd, rv = 0; + int cfd; unsigned long a, b, c; if (offset) { @@ -212,9 +214,9 @@ int proc_loadavg_read(char *buf, size_t size, off_t offset, * because delete is not allowed before read has ended. */ pthread_rwlock_unlock(&load_hash[hash].rdlock); - rv = 0; - goto err; + return 0; } + do { n = malloc(sizeof(struct load_node)); } while (!n); @@ -222,6 +224,7 @@ int proc_loadavg_read(char *buf, size_t size, off_t offset, do { n->cg = malloc(strlen(cg)+1); } while (!n->cg); + strcpy(n->cg, cg); n->avenrun[0] = 0; n->avenrun[1] = 0; @@ -235,28 +238,34 @@ int proc_loadavg_read(char *buf, size_t size, off_t offset, a = n->avenrun[0] + (FIXED_1/200); b = n->avenrun[1] + (FIXED_1/200); c = n->avenrun[2] + (FIXED_1/200); - total_len = snprintf(d->buf, d->buflen, "%lu.%02lu %lu.%02lu %lu.%02lu %d/%d %d\n", - LOAD_INT(a), LOAD_FRAC(a), - LOAD_INT(b), LOAD_FRAC(b), - LOAD_INT(c), LOAD_FRAC(c), - n->run_pid, n->total_pid, n->last_pid); + total_len = snprintf(d->buf, d->buflen, + "%lu.%02lu " + "%lu.%02lu " + "%lu.%02lu " + "%d/" + "%d" + "%d\n", + LOAD_INT(a), + LOAD_FRAC(a), + LOAD_INT(b), + LOAD_FRAC(b), + LOAD_INT(c), + LOAD_FRAC(c), + n->run_pid, + n->total_pid, + n->last_pid); pthread_rwlock_unlock(&load_hash[hash].rdlock); - if (total_len < 0 || total_len >= d->buflen) { - lxcfs_error("%s\n", "Failed to write to cache"); - rv = 0; - goto err; - } + if (total_len < 0 || total_len >= d->buflen) + return log_error(0, "Failed to write to cache"); + d->size = (int)total_len; d->cached = 1; if (total_len > size) total_len = size; - memcpy(buf, d->buf, total_len); - rv = total_len; -err: - free(cg); - return rv; + memcpy(buf, d->buf, total_len); + return total_len; } /* @@ -398,28 +407,27 @@ static int refresh_load(struct load_node *p, char *path) idbuf[i][length] = '\0'; ret = snprintf(proc_path, 256, "/proc/%s/task", idbuf[i]); if (ret < 0 || ret > 255) { - lxcfs_error("%s\n", - "snprintf() failed in refresh_load."); i = sum; sum = -1; - goto err_out; + log_error(goto err_out, "snprintf() failed in refresh_load"); } dp = opendir(proc_path); - if (!dp) { - lxcfs_error("%s\n", - "Open proc_path failed in refresh_load."); - continue; - } + if (!dp) + log_error(continue, "Open proc_path failed in refresh_load"); + while ((file = readdir(dp)) != NULL) { __do_free void *fopen_cache = NULL; __do_fclose FILE *f = NULL; if (strncmp(file->d_name, ".", 1) == 0) continue; + if (strncmp(file->d_name, "..", 1) == 0) continue; + total_pid++; + /* We make the biggest pid become last_pid.*/ ret = atof(file->d_name); last_pid = (ret > last_pid) ? ret : last_pid; @@ -427,10 +435,9 @@ static int refresh_load(struct load_node *p, char *path) ret = snprintf(proc_path, 256, "/proc/%s/task/%s/status", idbuf[i], file->d_name); if (ret < 0 || ret > 255) { - lxcfs_error("%s\n", "snprintf() failed in refresh_load."); i = sum; sum = -1; - goto err_out; + log_error(goto err_out, "snprintf() failed in refresh_load"); } f = fopen_cached(proc_path, "re", &fopen_cache); @@ -456,7 +463,7 @@ static int refresh_load(struct load_node *p, char *path) err_out: for (; i > 0; i--) - free(idbuf[i-1]); + free(idbuf[i - 1]); out: free(idbuf); return sum; @@ -515,11 +522,9 @@ static void *load_begin(void *arg) goto out; ret = snprintf(path, length, "%s%s", dot_or_empty(f->cg), f->cg); - if (ret < 0 || ret > length - 1) { - /* snprintf failed, ignore the node.*/ - lxcfs_error("Refresh node %s failed for snprintf().\n", f->cg); - goto out; - } + /* Ignore the node if snprintf fails.*/ + if (ret < 0 || ret > length - 1) + log_error(goto out, "Refresh node %s failed for snprintf()", f->cg); sum = refresh_load(f, path); if (sum == 0) @@ -554,22 +559,26 @@ static int init_load(void) for (i = 0; i < LOAD_SIZE; i++) { load_hash[i].next = NULL; ret = pthread_mutex_init(&load_hash[i].lock, NULL); - if (ret != 0) { - lxcfs_error("%s\n", "Failed to initialize lock"); + if (ret) { + lxcfs_error("Failed to initialize lock"); goto out3; } + ret = pthread_rwlock_init(&load_hash[i].rdlock, NULL); - if (ret != 0) { - lxcfs_error("%s\n", "Failed to initialize rdlock"); + if (ret) { + lxcfs_error("Failed to initialize rdlock"); goto out2; } + ret = pthread_rwlock_init(&load_hash[i].rilock, NULL); - if (ret != 0) { - lxcfs_error("%s\n", "Failed to initialize rilock"); + if (ret) { + lxcfs_error("Failed to initialize rilock"); goto out1; } } + return 0; + out1: pthread_rwlock_destroy(&load_hash[i].rdlock); out2: @@ -581,6 +590,7 @@ static int init_load(void) pthread_rwlock_destroy(&load_hash[i].rdlock); pthread_rwlock_destroy(&load_hash[i].rilock); } + return -1; } @@ -625,16 +635,15 @@ pthread_t load_daemon(int load_use) pthread_t pid; ret = init_load(); - if (ret == -1) { - lxcfs_error("%s\n", "Initialize hash_table fails in load_daemon!"); - return 0; - } + if (ret == -1) + return log_error(0, "Initialize hash_table fails in load_daemon!"); + ret = pthread_create(&pid, NULL, load_begin, NULL); if (ret != 0) { - lxcfs_error("%s\n", "Create pthread fails in load_daemon!"); load_free(); - return 0; + return log_error(0, "Create pthread fails in load_daemon!"); } + /* use loadavg, here loadavg = 1*/ loadavg = load_use; return pid; @@ -649,10 +658,8 @@ int stop_load_daemon(pthread_t pid) loadavg_stop = 1; s = pthread_join(pid, NULL); /* Make sure sub thread has been canceled. */ - if (s != 0) { - lxcfs_error("%s\n", "stop_load_daemon error: failed to join"); - return -1; - } + if (s) + return log_error(-1, "stop_load_daemon error: failed to join"); load_free(); loadavg_stop = 0; From dea3cfab68b4145097c14378901add3435fe50cb Mon Sep 17 00:00:00 2001 From: Christian Brauner <christian.brau...@ubuntu.com> Date: Thu, 5 Mar 2020 11:45:12 +0100 Subject: [PATCH 2/3] autotools: mention that authors can be gathered from git log Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com> --- AUTHORS | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/AUTHORS b/AUTHORS index f7c0c6a..ea140b0 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,5 +1,2 @@ -Unless mentioned otherwise in a specific file's header, all code in this -project is released under the Apache 2.0 license. - -The list of authors and contributors can be retrieved from the git -commit history and in some cases, the file headers. +The list of authors and contributors can be retrieved from the git commit +history and in some cases, the file headers. From db0463bf22c57d8963238885c1a33095dc7733da Mon Sep 17 00:00:00 2001 From: Christian Brauner <christian.brau...@ubuntu.com> Date: Thu, 5 Mar 2020 11:57:04 +0100 Subject: [PATCH 3/3] tree-wide: align lxcfs and lxc licensing Signed-off-by: Christian Brauner <christian.brau...@ubuntu.com> --- CONTRIBUTING.md | 8 - COPYING | 203 +------------------ LICENSE.GPL2 | 339 -------------------------------- bootstrap.sh | 23 +-- lxcfs.spec.in | 2 +- src/bindings.c | 8 +- src/bindings.h | 2 +- src/cgroup_fuse.c | 2 +- src/cgroup_fuse.h | 2 +- src/cpuset_parse.c | 2 +- src/cpuset_parse.h | 2 +- src/lxcfs.c | 8 +- src/macro.h | 2 +- src/proc_cpuview.c | 2 +- src/proc_cpuview.h | 2 +- src/proc_fuse.c | 2 +- src/proc_fuse.h | 2 +- src/proc_loadavg.c | 2 +- src/proc_loadavg.h | 2 +- src/sysfs_fuse.c | 2 +- src/sysfs_fuse.h | 2 +- src/utils.c | 2 +- src/utils.h | 2 +- tests/cpusetrange.c | 2 +- tests/main.sh | 1 + tests/test-read.c | 2 +- tests/test_cgroup | 1 + tests/test_confinement.sh | 1 + tests/test_meminfo_hierarchy.sh | 1 + tests/test_proc | 1 + tests/test_read_proc.sh | 1 + tests/test_reload.sh | 1 + tests/test_syscalls.c | 2 +- 33 files changed, 32 insertions(+), 604 deletions(-) delete mode 100644 LICENSE.GPL2 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 05466b0..e93c971 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,14 +7,6 @@ Proposed changes will then go through code review there and once acked, be merged in the main branch. -# License and copyright: - -By default, any contribution to this project is made under the Apache -2.0 license. - -The author of a change remains the copyright holder of their code -(no copyright assignment). - # Developer Certificate of Origin: diff --git a/COPYING b/COPYING index d645695..2130100 100644 --- a/COPYING +++ b/COPYING @@ -1,202 +1,3 @@ +LXCFS is provided under: - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + SPDX-License-Identifier: LGPL-2.1+ diff --git a/LICENSE.GPL2 b/LICENSE.GPL2 deleted file mode 100644 index d511905..0000000 --- a/LICENSE.GPL2 +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/bootstrap.sh b/bootstrap.sh index c5701b0..97ceeda 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -1,25 +1,4 @@ -#!/bin/sh - -# lxc: linux Container library -# -# (C) Copyright IBM Corp. 2007, 2008 -# -# Authors: -# Daniel Lezcano <daniel.lezcano at free.fr> -# -# This library is free software; you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public -# License as published by the Free Software Foundation; either -# version 2.1 of the License, or (at your option) any later version. -# -# This library is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public -# License along with this library; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +# SPDX-License-Identifier: LGPL-2.1-or-later set -x set -e diff --git a/lxcfs.spec.in b/lxcfs.spec.in index a96f36a..8431e74 100644 --- a/lxcfs.spec.in +++ b/lxcfs.spec.in @@ -24,7 +24,7 @@ Version: @PACKAGE_VERSION@ Release: 1%{?dist} URL: https://linuxcontainers.org/lxcfs/downloads/ Source0: %{name}-%{version}.tar.gz -License: Apache 2.0 +License: LGPL 2.1+ Group: System Environment/Libraries BuildRoot: %{_tmppath}/%{name}-root diff --git a/src/bindings.c b/src/bindings.c index cc6032a..45555d5 100644 --- a/src/bindings.c +++ b/src/bindings.c @@ -1,10 +1,4 @@ -/* lxcfs - * - * Copyright © 2014-2016 Canonical, Inc - * Author: Serge Hallyn <serge.hal...@ubuntu.com> - * - * See COPYING file for details. - */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef _GNU_SOURCE #define _GNU_SOURCE diff --git a/src/bindings.h b/src/bindings.h index 64a9be5..b4bc0e5 100644 --- a/src/bindings.h +++ b/src/bindings.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef __LXCFS_BINDINGS_H #define __LXCFS_BINDINGS_H diff --git a/src/cgroup_fuse.c b/src/cgroup_fuse.c index a50c12e..46a7a2f 100644 --- a/src/cgroup_fuse.c +++ b/src/cgroup_fuse.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef _GNU_SOURCE #define _GNU_SOURCE diff --git a/src/cgroup_fuse.h b/src/cgroup_fuse.h index 900d2c9..4f3d21d 100644 --- a/src/cgroup_fuse.h +++ b/src/cgroup_fuse.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef __LXCFS_CGROUP_FUSE_H #define __LXCFS_CGROUP_FUSE_H diff --git a/src/cpuset_parse.c b/src/cpuset_parse.c index b1b3109..55534d6 100644 --- a/src/cpuset_parse.c +++ b/src/cpuset_parse.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef _GNU_SOURCE #define _GNU_SOURCE diff --git a/src/cpuset_parse.h b/src/cpuset_parse.h index f9be017..85a4348 100644 --- a/src/cpuset_parse.h +++ b/src/cpuset_parse.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef __LXCFS_CPUSET_PARSE_H #define __LXCFS_CPUSET_PARSE_H diff --git a/src/lxcfs.c b/src/lxcfs.c index cbe58c1..2032096 100644 --- a/src/lxcfs.c +++ b/src/lxcfs.c @@ -1,10 +1,4 @@ -/* lxcfs - * - * Copyright © 2014-2016 Canonical, Inc - * Author: Serge Hallyn <serge.hal...@ubuntu.com> - * - * See COPYING file for details. - */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef _GNU_SOURCE #define _GNU_SOURCE diff --git a/src/macro.h b/src/macro.h index 844320c..67be461 100644 --- a/src/macro.h +++ b/src/macro.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef __LXCFS_MACRO_H #define __LXCFS_MACRO_H diff --git a/src/proc_cpuview.c b/src/proc_cpuview.c index b9e1103..3c56d90 100644 --- a/src/proc_cpuview.c +++ b/src/proc_cpuview.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef _GNU_SOURCE #define _GNU_SOURCE diff --git a/src/proc_cpuview.h b/src/proc_cpuview.h index 1e4fda5..6935d95 100644 --- a/src/proc_cpuview.h +++ b/src/proc_cpuview.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef __LXCFS_PROC_CPUVIEW_FUSE_H #define __LXCFS_PROC_CPUVIEW_FUSE_H diff --git a/src/proc_fuse.c b/src/proc_fuse.c index 64092fe..d713693 100644 --- a/src/proc_fuse.c +++ b/src/proc_fuse.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef _GNU_SOURCE #define _GNU_SOURCE diff --git a/src/proc_fuse.h b/src/proc_fuse.h index dbb1ad9..f696085 100644 --- a/src/proc_fuse.h +++ b/src/proc_fuse.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef __LXCFS_PROC_FUSE_H #define __LXCFS_PROC_FUSE_H diff --git a/src/proc_loadavg.c b/src/proc_loadavg.c index 83c4649..c6b8ce1 100644 --- a/src/proc_loadavg.c +++ b/src/proc_loadavg.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef _GNU_SOURCE #define _GNU_SOURCE diff --git a/src/proc_loadavg.h b/src/proc_loadavg.h index 5319620..fb12b6c 100644 --- a/src/proc_loadavg.h +++ b/src/proc_loadavg.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef __LXCFS_PROC_LOADAVG_FUSE_H #define __LXCFS_PROC_LOADAVG_FUSE_H diff --git a/src/sysfs_fuse.c b/src/sysfs_fuse.c index 94f6565..83b2186 100644 --- a/src/sysfs_fuse.c +++ b/src/sysfs_fuse.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef _GNU_SOURCE #define _GNU_SOURCE diff --git a/src/sysfs_fuse.h b/src/sysfs_fuse.h index c11d91a..b9b965f 100644 --- a/src/sysfs_fuse.h +++ b/src/sysfs_fuse.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef __LXCFS_SYSFS_FUSE_H #define __LXCFS_SYSFS_FUSE_H diff --git a/src/utils.c b/src/utils.c index 3235eaa..e208cf5 100644 --- a/src/utils.c +++ b/src/utils.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef _GNU_SOURCE #define _GNU_SOURCE diff --git a/src/utils.h b/src/utils.h index 05b9a42..d1effc6 100644 --- a/src/utils.h +++ b/src/utils.h @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef __LXCFS_UTILS_H #define __LXCFS_UTILS_H diff --git a/tests/cpusetrange.c b/tests/cpusetrange.c index c9caf7c..60e1dd8 100644 --- a/tests/cpusetrange.c +++ b/tests/cpusetrange.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef _GNU_SOURCE #define _GNU_SOURCE diff --git a/tests/main.sh b/tests/main.sh index 01a900b..5787e43 100755 --- a/tests/main.sh +++ b/tests/main.sh @@ -1,4 +1,5 @@ #!/bin/bash +# SPDX-License-Identifier: LGPL-2.1+ set -ex diff --git a/tests/test-read.c b/tests/test-read.c index 6693f21..5be9e43 100644 --- a/tests/test-read.c +++ b/tests/test-read.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef _GNU_SOURCE #define _GNU_SOURCE diff --git a/tests/test_cgroup b/tests/test_cgroup index 27e0e7e..02f2dc2 100755 --- a/tests/test_cgroup +++ b/tests/test_cgroup @@ -1,4 +1,5 @@ #!/bin/sh -eux +# SPDX-License-Identifier: LGPL-2.1+ PASS=0 UUID=$(uuidgen) diff --git a/tests/test_confinement.sh b/tests/test_confinement.sh index 03b9708..f8ca34f 100755 --- a/tests/test_confinement.sh +++ b/tests/test_confinement.sh @@ -1,4 +1,5 @@ #!/bin/bash +# SPDX-License-Identifier: LGPL-2.1+ set -ex diff --git a/tests/test_meminfo_hierarchy.sh b/tests/test_meminfo_hierarchy.sh index f8e5b72..08d614e 100755 --- a/tests/test_meminfo_hierarchy.sh +++ b/tests/test_meminfo_hierarchy.sh @@ -1,4 +1,5 @@ #!/bin/bash +# SPDX-License-Identifier: LGPL-2.1+ set -eux diff --git a/tests/test_proc b/tests/test_proc index 8e5b77d..c30d06f 100755 --- a/tests/test_proc +++ b/tests/test_proc @@ -1,4 +1,5 @@ #!/bin/sh -eux +# SPDX-License-Identifier: LGPL-2.1+ PASS=0 diff --git a/tests/test_read_proc.sh b/tests/test_read_proc.sh index f24d218..e2791c5 100755 --- a/tests/test_read_proc.sh +++ b/tests/test_read_proc.sh @@ -1,5 +1,6 @@ #/bin/bash -eux #./lxcfs -s -f -d -o allow_other -o direct_io ${DIR} +# SPDX-License-Identifier: LGPL-2.1+ red_c() { echo -e $2 "\e[31;1m${1}\e[0m" diff --git a/tests/test_reload.sh b/tests/test_reload.sh index 5e37ace..b8b1538 100755 --- a/tests/test_reload.sh +++ b/tests/test_reload.sh @@ -1,4 +1,5 @@ #!/bin/bash +# SPDX-License-Identifier: LGPL-2.1+ set -ex diff --git a/tests/test_syscalls.c b/tests/test_syscalls.c index c2765e2..afbb52c 100644 --- a/tests/test_syscalls.c +++ b/tests/test_syscalls.c @@ -1,4 +1,4 @@ -/* SPDX-License-Identifier: LGPL-2.1-or-later */ +/* SPDX-License-Identifier: LGPL-2.1+ */ #ifndef _GNU_SOURCE #define _GNU_SOURCE
_______________________________________________ lxc-devel mailing list lxc-devel@lists.linuxcontainers.org http://lists.linuxcontainers.org/listinfo/lxc-devel