From 8341228c4c2b9c0a1205b633a8dd2105da4b74f1 Mon Sep 17 00:00:00 2001 From: pudelkoM Date: Sat, 5 Oct 2019 20:10:36 +0200 Subject: [PATCH] Allocate dummy memory in lt entries to catch leaks --- src/bcmlt/main/bcmlt_ltable_entry.c | 119 +++++++++++++++------------- src/bcmtrm/include/bcmtrm/trm_api.h | 115 ++++++++++++++------------- 2 files changed, 122 insertions(+), 112 deletions(-) diff --git a/src/bcmlt/main/bcmlt_ltable_entry.c b/src/bcmlt/main/bcmlt_ltable_entry.c index 46740fda..e05681bc 100644 --- a/src/bcmlt/main/bcmlt_ltable_entry.c +++ b/src/bcmlt/main/bcmlt_ltable_entry.c @@ -5,89 +5,89 @@ * entry allocation and free, entry commit and get entry info. */ /* - * Copyright: (c) 2018 Broadcom. All Rights Reserved. "Broadcom" refers to + * Copyright: (c) 2018 Broadcom. All Rights Reserved. "Broadcom" refers to * Broadcom Limited and/or its subsidiaries. - * + * * Broadcom Switch Software License - * - * This license governs the use of the accompanying Broadcom software. Your - * use of the software indicates your acceptance of the terms and conditions - * of this license. If you do not agree to the terms and conditions of this + * + * This license governs the use of the accompanying Broadcom software. Your + * use of the software indicates your acceptance of the terms and conditions + * of this license. If you do not agree to the terms and conditions of this * license, do not use the software. * 1. Definitions * "Licensor" means any person or entity that distributes its Work. - * "Software" means the original work of authorship made available under + * "Software" means the original work of authorship made available under * this license. - * "Work" means the Software and any additions to or derivative works of + * "Work" means the Software and any additions to or derivative works of * the Software that are made available under this license. - * The terms "reproduce," "reproduction," "derivative works," and + * The terms "reproduce," "reproduction," "derivative works," and * "distribution" have the meaning as provided under U.S. copyright law. - * Works, including the Software, are "made available" under this license - * by including in or with the Work either (a) a copyright notice - * referencing the applicability of this license to the Work, or (b) a copy + * Works, including the Software, are "made available" under this license + * by including in or with the Work either (a) a copyright notice + * referencing the applicability of this license to the Work, or (b) a copy * of this license. * 2. Grant of Copyright License - * Subject to the terms and conditions of this license, each Licensor - * grants to you a perpetual, worldwide, non-exclusive, and royalty-free - * copyright license to reproduce, prepare derivative works of, publicly - * display, publicly perform, sublicense and distribute its Work and any + * Subject to the terms and conditions of this license, each Licensor + * grants to you a perpetual, worldwide, non-exclusive, and royalty-free + * copyright license to reproduce, prepare derivative works of, publicly + * display, publicly perform, sublicense and distribute its Work and any * resulting derivative works in any form. * 3. Grant of Patent License - * Subject to the terms and conditions of this license, each Licensor - * grants to you a perpetual, worldwide, non-exclusive, and royalty-free - * patent license to make, have made, use, offer to sell, sell, import, and - * otherwise transfer its Work, in whole or in part. This patent license - * applies only to the patent claims licensable by Licensor that would be - * infringed by Licensor's Work (or portion thereof) individually and + * Subject to the terms and conditions of this license, each Licensor + * grants to you a perpetual, worldwide, non-exclusive, and royalty-free + * patent license to make, have made, use, offer to sell, sell, import, and + * otherwise transfer its Work, in whole or in part. This patent license + * applies only to the patent claims licensable by Licensor that would be + * infringed by Licensor's Work (or portion thereof) individually and * excluding any combinations with any other materials or technology. - * If you institute patent litigation against any Licensor (including a - * cross-claim or counterclaim in a lawsuit) to enforce any patents that - * you allege are infringed by any Work, then your patent license from such - * Licensor to the Work shall terminate as of the date such litigation is + * If you institute patent litigation against any Licensor (including a + * cross-claim or counterclaim in a lawsuit) to enforce any patents that + * you allege are infringed by any Work, then your patent license from such + * Licensor to the Work shall terminate as of the date such litigation is * filed. * 4. Redistribution - * You may reproduce or distribute the Work only if (a) you do so under - * this License, (b) you include a complete copy of this License with your - * distribution, and (c) you retain without modification any copyright, + * You may reproduce or distribute the Work only if (a) you do so under + * this License, (b) you include a complete copy of this License with your + * distribution, and (c) you retain without modification any copyright, * patent, trademark, or attribution notices that are present in the Work. * 5. Derivative Works - * You may specify that additional or different terms apply to the use, - * reproduction, and distribution of your derivative works of the Work - * ("Your Terms") only if (a) Your Terms provide that the limitations of - * Section 7 apply to your derivative works, and (b) you identify the - * specific derivative works that are subject to Your Terms. - * Notwithstanding Your Terms, this license (including the redistribution + * You may specify that additional or different terms apply to the use, + * reproduction, and distribution of your derivative works of the Work + * ("Your Terms") only if (a) Your Terms provide that the limitations of + * Section 7 apply to your derivative works, and (b) you identify the + * specific derivative works that are subject to Your Terms. + * Notwithstanding Your Terms, this license (including the redistribution * requirements in Section 4) will continue to apply to the Work itself. * 6. Trademarks - * This license does not grant any rights to use any Licensor's or its - * affiliates' names, logos, or trademarks, except as necessary to + * This license does not grant any rights to use any Licensor's or its + * affiliates' names, logos, or trademarks, except as necessary to * reproduce the notices described in this license. * 7. Limitations - * Platform. The Work and any derivative works thereof may only be used, or + * Platform. The Work and any derivative works thereof may only be used, or * intended for use, with a Broadcom switch integrated circuit. - * No Reverse Engineering. You will not use the Work to disassemble, - * reverse engineer, decompile, or attempt to ascertain the underlying + * No Reverse Engineering. You will not use the Work to disassemble, + * reverse engineer, decompile, or attempt to ascertain the underlying * technology of a Broadcom switch integrated circuit. * 8. Termination - * If you violate any term of this license, then your rights under this - * license (including the license grants of Sections 2 and 3) will + * If you violate any term of this license, then your rights under this + * license (including the license grants of Sections 2 and 3) will * terminate immediately. * 9. Disclaimer of Warranty - * THE WORK IS PROVIDED "AS IS" WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WARRANTIES OR CONDITIONS OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR - * NON-INFRINGEMENT. YOU BEAR THE RISK OF UNDERTAKING ANY ACTIVITIES UNDER - * THIS LICENSE. SOME STATES' CONSUMER LAWS DO NOT ALLOW EXCLUSION OF AN + * THE WORK IS PROVIDED "AS IS" WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WARRANTIES OR CONDITIONS OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR + * NON-INFRINGEMENT. YOU BEAR THE RISK OF UNDERTAKING ANY ACTIVITIES UNDER + * THIS LICENSE. SOME STATES' CONSUMER LAWS DO NOT ALLOW EXCLUSION OF AN * IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO YOU. * 10. Limitation of Liability - * EXCEPT AS PROHIBITED BY APPLICABLE LAW, IN NO EVENT AND UNDER NO LEGAL - * THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE - * SHALL ANY LICENSOR BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, - * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF - * OR RELATED TO THIS LICENSE, THE USE OR INABILITY TO USE THE WORK - * (INCLUDING BUT NOT LIMITED TO LOSS OF GOODWILL, BUSINESS INTERRUPTION, - * LOST PROFITS OR DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY OTHER - * COMMERCIAL DAMAGES OR LOSSES), EVEN IF THE LICENSOR HAS BEEN ADVISED OF + * EXCEPT AS PROHIBITED BY APPLICABLE LAW, IN NO EVENT AND UNDER NO LEGAL + * THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE + * SHALL ANY LICENSOR BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, + * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF + * OR RELATED TO THIS LICENSE, THE USE OR INABILITY TO USE THE WORK + * (INCLUDING BUT NOT LIMITED TO LOSS OF GOODWILL, BUSINESS INTERRUPTION, + * LOST PROFITS OR DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY OTHER + * COMMERCIAL DAMAGES OR LOSSES), EVEN IF THE LICENSOR HAS BEEN ADVISED OF * THE POSSIBILITY OF SUCH DAMAGES. */ @@ -180,7 +180,7 @@ int bcmlt_entry_allocate(int unit, if (!table_name || !entry_hdl) { LOG_VERBOSE(BSL_LOG_MODULE, (BSL_META_U(unit, - "Table name and entry handle shouln't"\ + "Table name and entry handle shouldn't"\ " be NULL\n"))); SHR_RETURN_VAL_EXIT(SHR_E_PARAM); } @@ -199,6 +199,9 @@ int bcmlt_entry_allocate(int unit, table_attr->name); SHR_NULL_CHECK(entry, SHR_E_MEMORY); entry->db_hdl = hdl; +#if defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer) + entry->dummy = malloc(1); +#endif /* Clean the fields array */ if (fld_array_hdl) { sal_memset(entry->fld_arr, 0, sizeof(void *) * (table_attr->max_fid+1)); @@ -277,6 +280,10 @@ int bcmlt_entry_free(bcmlt_entry_handle_t entry_hdl) SHR_RETURN_VAL_EXIT(SHR_E_BUSY); } +#if defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer) + free(entry->dummy); +#endif + SHR_IF_ERR_EXIT(bcmlt_hdl_free(entry_hdl)); SHR_IF_ERR_EXIT(bcmtrm_entry_free(entry)); diff --git a/src/bcmtrm/include/bcmtrm/trm_api.h b/src/bcmtrm/include/bcmtrm/trm_api.h index 57efcdf6..99f06291 100644 --- a/src/bcmtrm/include/bcmtrm/trm_api.h +++ b/src/bcmtrm/include/bcmtrm/trm_api.h @@ -3,89 +3,89 @@ * This interface to the Logical Table Manager. */ /* - * Copyright: (c) 2018 Broadcom. All Rights Reserved. "Broadcom" refers to + * Copyright: (c) 2018 Broadcom. All Rights Reserved. "Broadcom" refers to * Broadcom Limited and/or its subsidiaries. - * + * * Broadcom Switch Software License - * - * This license governs the use of the accompanying Broadcom software. Your - * use of the software indicates your acceptance of the terms and conditions - * of this license. If you do not agree to the terms and conditions of this + * + * This license governs the use of the accompanying Broadcom software. Your + * use of the software indicates your acceptance of the terms and conditions + * of this license. If you do not agree to the terms and conditions of this * license, do not use the software. * 1. Definitions * "Licensor" means any person or entity that distributes its Work. - * "Software" means the original work of authorship made available under + * "Software" means the original work of authorship made available under * this license. - * "Work" means the Software and any additions to or derivative works of + * "Work" means the Software and any additions to or derivative works of * the Software that are made available under this license. - * The terms "reproduce," "reproduction," "derivative works," and + * The terms "reproduce," "reproduction," "derivative works," and * "distribution" have the meaning as provided under U.S. copyright law. - * Works, including the Software, are "made available" under this license - * by including in or with the Work either (a) a copyright notice - * referencing the applicability of this license to the Work, or (b) a copy + * Works, including the Software, are "made available" under this license + * by including in or with the Work either (a) a copyright notice + * referencing the applicability of this license to the Work, or (b) a copy * of this license. * 2. Grant of Copyright License - * Subject to the terms and conditions of this license, each Licensor - * grants to you a perpetual, worldwide, non-exclusive, and royalty-free - * copyright license to reproduce, prepare derivative works of, publicly - * display, publicly perform, sublicense and distribute its Work and any + * Subject to the terms and conditions of this license, each Licensor + * grants to you a perpetual, worldwide, non-exclusive, and royalty-free + * copyright license to reproduce, prepare derivative works of, publicly + * display, publicly perform, sublicense and distribute its Work and any * resulting derivative works in any form. * 3. Grant of Patent License - * Subject to the terms and conditions of this license, each Licensor - * grants to you a perpetual, worldwide, non-exclusive, and royalty-free - * patent license to make, have made, use, offer to sell, sell, import, and - * otherwise transfer its Work, in whole or in part. This patent license - * applies only to the patent claims licensable by Licensor that would be - * infringed by Licensor's Work (or portion thereof) individually and + * Subject to the terms and conditions of this license, each Licensor + * grants to you a perpetual, worldwide, non-exclusive, and royalty-free + * patent license to make, have made, use, offer to sell, sell, import, and + * otherwise transfer its Work, in whole or in part. This patent license + * applies only to the patent claims licensable by Licensor that would be + * infringed by Licensor's Work (or portion thereof) individually and * excluding any combinations with any other materials or technology. - * If you institute patent litigation against any Licensor (including a - * cross-claim or counterclaim in a lawsuit) to enforce any patents that - * you allege are infringed by any Work, then your patent license from such - * Licensor to the Work shall terminate as of the date such litigation is + * If you institute patent litigation against any Licensor (including a + * cross-claim or counterclaim in a lawsuit) to enforce any patents that + * you allege are infringed by any Work, then your patent license from such + * Licensor to the Work shall terminate as of the date such litigation is * filed. * 4. Redistribution - * You may reproduce or distribute the Work only if (a) you do so under - * this License, (b) you include a complete copy of this License with your - * distribution, and (c) you retain without modification any copyright, + * You may reproduce or distribute the Work only if (a) you do so under + * this License, (b) you include a complete copy of this License with your + * distribution, and (c) you retain without modification any copyright, * patent, trademark, or attribution notices that are present in the Work. * 5. Derivative Works - * You may specify that additional or different terms apply to the use, - * reproduction, and distribution of your derivative works of the Work - * ("Your Terms") only if (a) Your Terms provide that the limitations of - * Section 7 apply to your derivative works, and (b) you identify the - * specific derivative works that are subject to Your Terms. - * Notwithstanding Your Terms, this license (including the redistribution + * You may specify that additional or different terms apply to the use, + * reproduction, and distribution of your derivative works of the Work + * ("Your Terms") only if (a) Your Terms provide that the limitations of + * Section 7 apply to your derivative works, and (b) you identify the + * specific derivative works that are subject to Your Terms. + * Notwithstanding Your Terms, this license (including the redistribution * requirements in Section 4) will continue to apply to the Work itself. * 6. Trademarks - * This license does not grant any rights to use any Licensor's or its - * affiliates' names, logos, or trademarks, except as necessary to + * This license does not grant any rights to use any Licensor's or its + * affiliates' names, logos, or trademarks, except as necessary to * reproduce the notices described in this license. * 7. Limitations - * Platform. The Work and any derivative works thereof may only be used, or + * Platform. The Work and any derivative works thereof may only be used, or * intended for use, with a Broadcom switch integrated circuit. - * No Reverse Engineering. You will not use the Work to disassemble, - * reverse engineer, decompile, or attempt to ascertain the underlying + * No Reverse Engineering. You will not use the Work to disassemble, + * reverse engineer, decompile, or attempt to ascertain the underlying * technology of a Broadcom switch integrated circuit. * 8. Termination - * If you violate any term of this license, then your rights under this - * license (including the license grants of Sections 2 and 3) will + * If you violate any term of this license, then your rights under this + * license (including the license grants of Sections 2 and 3) will * terminate immediately. * 9. Disclaimer of Warranty - * THE WORK IS PROVIDED "AS IS" WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WARRANTIES OR CONDITIONS OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR - * NON-INFRINGEMENT. YOU BEAR THE RISK OF UNDERTAKING ANY ACTIVITIES UNDER - * THIS LICENSE. SOME STATES' CONSUMER LAWS DO NOT ALLOW EXCLUSION OF AN + * THE WORK IS PROVIDED "AS IS" WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WARRANTIES OR CONDITIONS OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR + * NON-INFRINGEMENT. YOU BEAR THE RISK OF UNDERTAKING ANY ACTIVITIES UNDER + * THIS LICENSE. SOME STATES' CONSUMER LAWS DO NOT ALLOW EXCLUSION OF AN * IMPLIED WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO YOU. * 10. Limitation of Liability - * EXCEPT AS PROHIBITED BY APPLICABLE LAW, IN NO EVENT AND UNDER NO LEGAL - * THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE - * SHALL ANY LICENSOR BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, - * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF - * OR RELATED TO THIS LICENSE, THE USE OR INABILITY TO USE THE WORK - * (INCLUDING BUT NOT LIMITED TO LOSS OF GOODWILL, BUSINESS INTERRUPTION, - * LOST PROFITS OR DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY OTHER - * COMMERCIAL DAMAGES OR LOSSES), EVEN IF THE LICENSOR HAS BEEN ADVISED OF + * EXCEPT AS PROHIBITED BY APPLICABLE LAW, IN NO EVENT AND UNDER NO LEGAL + * THEORY, WHETHER IN TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE + * SHALL ANY LICENSOR BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY DIRECT, + * INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT OF + * OR RELATED TO THIS LICENSE, THE USE OR INABILITY TO USE THE WORK + * (INCLUDING BUT NOT LIMITED TO LOSS OF GOODWILL, BUSINESS INTERRUPTION, + * LOST PROFITS OR DATA, COMPUTER FAILURE OR MALFUNCTION, OR ANY OTHER + * COMMERCIAL DAMAGES OR LOSSES), EVEN IF THE LICENSOR HAS BEEN ADVISED OF * THE POSSIBILITY OF SUCH DAMAGES. */ @@ -122,7 +122,7 @@ typedef union { * \brief Entry data structure. */ -typedef struct bcmtrm_entry_s{ +typedef struct bcmtrm_entry_s { bcmlt_entry_info_t info; /*!< Entry info provided by the user */ enum {E_IDLE, /*!< Idle state - entry is free */ E_ACTIVE, /*!< Entry had been allocated */ @@ -150,6 +150,9 @@ typedef struct bcmtrm_entry_s{ struct bcmtrm_entry_s *next; /*!< Next element on the free list */ struct bcmtrm_entry_s *debug_next; /*!< Next element on the active list*/ struct bcmtrm_entry_s *debug_prev; /*!< Double link - previous element*/ +#if defined(__SANITIZE_ADDRESS__) || __has_feature(address_sanitizer) + void *dummy; /*!< Pointer to sentinel memory to trigger ASAN leak detection */ +#endif } bcmtrm_entry_t; /*!