net: ipa: validate IPA table memory earlier
authorAlex Elder <elder@linaro.org>
Fri, 21 Oct 2022 19:13:36 +0000 (14:13 -0500)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 25 Oct 2022 09:15:18 +0000 (11:15 +0200)
commitcf13919654d5fe54974c7bba49c220833c26bce4
treef486c56ca706aa1ccaec995279d79b047a6e9707
parent2554322b31994d9a6c3ff6eaaaac7d78bac05d82
net: ipa: validate IPA table memory earlier

Add checks in ipa_table_init() to ensure the memory regions defined
for IPA filter and routing tables are valid.

For routing tables, the checks ensure:
  - The non-hashed IPv4 and IPv6 routing tables are defined
  - The non-hashed IPv4 and IPv6 routing tables are the same size
  - The number entries in the non-hashed IPv4 routing table is enough
    to hold the number entries available to the modem, plus at least
    one usable by the AP.

For filter tables, the checks ensure:
  - The non-hashed IPv4 and IPv6 filter tables are defined
  - The non-hashed IPv4 and IPv6 filter tables are the same size
  - The number entries in the non-hashed IPv4 filter table is enough
    to hold the endpoint bitmap, plus an entry for each defined
    endpoint that supports filtering.

In addition, for both routing and filter tables:
  - If hashing isn't supported (IPA v4.2), hashed tables are zero size
  - If hashing *is* supported, all hashed tables are the same size as
    their non-hashed counterparts.

When validating the size of routing tables, require the AP to have
at least one entry (in addition to those used by the modem).

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ipa/ipa_table.c