image_aes_encrypt(), image_aes_add_cipher_data() and image_aes_decrypt()
are defined directly in this header, with full bodies rather than just
prototypes, whenever the corresponding IMAGE_ENABLE_ENCRYPT/DECRYPT
feature macro is 0. On target that is always the encrypt side, since
ciphering is host-tool only.

Those definitions have external linkage, so a second translation unit
including this header under the same disabled configuration collides
with the first at link time. Only boot/image-cipher.c currently
includes the header on target, so this has not been reachable before,
but it stops any other file - such as a unit test - from including it
too.

Make the disabled-path stubs static inline, as is conventional for
header-defined no-op fallbacks, so the header can be included from more
than one translation unit.

Signed-off-by: Pranav Rajendran <[email protected]>
---
v2:
- New in v2. Needed by patch 5: the new fit_cipher test suite is a
  second translation unit including this header under the same
  disabled configuration, which failed to link before this change.

 include/u-boot/aes.h | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/include/u-boot/aes.h b/include/u-boot/aes.h
index acbc50b9e6f..d72322c1013 100644
--- a/include/u-boot/aes.h
+++ b/include/u-boot/aes.h
@@ -16,15 +16,16 @@ int image_aes_encrypt(struct image_cipher_info *info,
 int image_aes_add_cipher_data(struct image_cipher_info *info, void *keydest,
                              void *fit, int node_noffset);
 #else
-int image_aes_encrypt(struct image_cipher_info *info,
-                     const unsigned char *data, int size,
-                     unsigned char **cipher, int *cipher_len)
+static inline int image_aes_encrypt(struct image_cipher_info *info,
+                                   const unsigned char *data, int size,
+                                   unsigned char **cipher, int *cipher_len)
 {
        return -ENXIO;
 }
 
-int image_aes_add_cipher_data(struct image_cipher_info *info, void *keydest,
-                             void *fit, int node_noffset)
+static inline int image_aes_add_cipher_data(struct image_cipher_info *info,
+                                           void *keydest, void *fit,
+                                           int node_noffset)
 {
        return -ENXIO;
 }
@@ -35,9 +36,9 @@ int image_aes_decrypt(struct image_cipher_info *info,
                      const void *cipher, size_t cipher_len,
                      void **data, size_t *size);
 #else
-int image_aes_decrypt(struct image_cipher_info *info,
-                     const void *cipher, size_t cipher_len,
-                     void **data, size_t *size)
+static inline int image_aes_decrypt(struct image_cipher_info *info,
+                                   const void *cipher, size_t cipher_len,
+                                   void **data, size_t *size)
 {
        return -ENXIO;
 }
-- 
2.50.1 (Apple Git-155)

Reply via email to