Go to file
Lukasz Wojciechowski 6290de2c3f crypto/dpaa_sec: improve memory freeing
This patch fixes management of memory for authentication
and encryption keys.
There were two issues with former state of implementation:

1) Invalid access to dpaa_sec_session union members
    The dpaa_sec_session structure includes an anonymous union:
    union {
        struct {...} aead_key;
        struct {
            struct {...} cipher_key;
            struct {...} auth_key;
        };
    };
    Depending on the used algorithm a rte_zmalloc() function
    allocated memory that was kept in aead_key, cipher_key
    or auth_key. However every time the memory was released,
    rte_free() was called only on cipher and auth keys, even
    if pointer to allocated memory was stored in aead_key.

    The C language specification defines such behavior as undefined.
    As the cipher_key and aead_key are similar, have same sizes and
    alignment, it has worked, but it's directly against C specification.

    This patch fixes this, providing a free_session_data() function
    to free the keys data. It verifies which algorithm was used
    (aead or auth+cipher) and frees proper part of the union.

2) Some keys might have been freed multiple times
    In functions like: dpaa_sec_cipher_init(), dpaa_sec_auth_init(),
    dpaa_sec_chain_init(), dpaa_sec_aead_init() keys data were freed
    before returning due to some error conditions. However the pointers
    were not zeroed causing another calls to ret_free from higher
    layers of code. This causes an error log about invalid memory address
    to be printed.

    This patch fixes it by making only one layer responsible for freeing
    memory

Signed-off-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
Acked-by: Akhil Goyal <akhil.goyal@nxp.com>
2020-05-11 13:17:43 +02:00
.ci ci: reduce examples in static builds 2020-04-17 23:34:08 +02:00
app app/crypto-perf: fix display of sample test vector 2020-05-11 13:17:43 +02:00
buildtools build: add internal tag check 2020-04-25 17:01:01 +02:00
config eal: add telemetry as dependency 2020-05-11 00:37:16 +02:00
devtools eal/x86: add more CPU flags 2020-05-07 14:51:06 +02:00
doc examples/ipsec-secgw: clean up test scripts 2020-05-11 13:17:43 +02:00
drivers crypto/dpaa_sec: improve memory freeing 2020-05-11 13:17:43 +02:00
examples examples/ipsec-secgw: clean up test scripts 2020-05-11 13:17:43 +02:00
kernel eal: move OS-specific sub-directories 2020-03-31 13:08:55 +02:00
lib ipsec: optimize SA outbound sequence update 2020-05-11 13:17:43 +02:00
license eal: move OS-specific sub-directories 2020-03-31 13:08:55 +02:00
mk eal: add telemetry as dependency 2020-05-11 00:37:16 +02:00
usertools raw/ioat: support ICX 2020-05-11 17:18:58 +02:00
.editorconfig devtools: add EditorConfig file 2020-02-22 21:05:22 +01:00
.gitattributes improve git diff 2016-11-13 15:25:12 +01:00
.gitignore doc: add feature matrix table for bbdev 2020-04-19 22:34:26 +02:00
.travis.yml ci: fix telemetry dependency in Travis 2020-04-10 10:03:22 +02:00
ABI_VERSION version: 20.05-rc0 2020-02-27 12:02:19 +01:00
GNUmakefile test: move to app directory 2019-02-26 15:29:27 +01:00
MAINTAINERS test/ipsec: add performance cases 2020-05-11 13:17:43 +02:00
Makefile remove blank lines at end of file 2019-11-26 00:12:08 +01:00
meson_options.txt trace: introduce new subsystem 2020-04-23 15:39:06 +02:00
meson.build build: add arch-specific header path to global includes 2020-05-10 23:45:02 +02:00
README license: introduce SPDX identifiers 2018-01-04 22:41:38 +01:00
VERSION version: 20.05-rc1 2020-04-27 00:04:01 +02:00

DPDK is a set of libraries and drivers for fast packet processing.
It supports many processor architectures and both FreeBSD and Linux.

The DPDK uses the Open Source BSD-3-Clause license for the core libraries
and drivers. The kernel components are GPL-2.0 licensed.

Please check the doc directory for release notes,
API documentation, and sample application information.

For questions and usage discussions, subscribe to: users@dpdk.org
Report bugs and issues to the development mailing list: dev@dpdk.org