]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - lib/rsa/rsa-sign.c
fdt: Update functions which write to an FDT to return -ENOSPC
[karo-tx-uboot.git] / lib / rsa / rsa-sign.c
index ca8c120d97cf96b0de668674a8d84194139cc9c6..48f3197209686156c325226d94866556886f3fee 100644 (file)
@@ -429,20 +429,30 @@ int rsa_add_verify_data(struct image_sign_info *info, void *keydest)
 
        ret = fdt_setprop_string(keydest, node, "key-name-hint",
                                 info->keyname);
-       ret |= fdt_setprop_u32(keydest, node, "rsa,num-bits", bits);
-       ret |= fdt_setprop_u32(keydest, node, "rsa,n0-inverse", n0_inv);
-       ret |= fdt_add_bignum(keydest, node, "rsa,modulus", modulus, bits);
-       ret |= fdt_add_bignum(keydest, node, "rsa,r-squared", r_squared, bits);
-       ret |= fdt_setprop_string(keydest, node, FIT_ALGO_PROP,
-                                 info->algo->name);
+       if (!ret)
+               ret = fdt_setprop_u32(keydest, node, "rsa,num-bits", bits);
+       if (!ret)
+               ret = fdt_setprop_u32(keydest, node, "rsa,n0-inverse", n0_inv);
+       if (!ret) {
+               ret = fdt_add_bignum(keydest, node, "rsa,modulus", modulus,
+                                    bits);
+       }
+       if (!ret) {
+               ret = fdt_add_bignum(keydest, node, "rsa,r-squared", r_squared,
+                                    bits);
+       }
+       if (!ret) {
+               ret = fdt_setprop_string(keydest, node, FIT_ALGO_PROP,
+                                        info->algo->name);
+       }
        if (info->require_keys) {
-               fdt_setprop_string(keydest, node, "required",
-                                  info->require_keys);
+               ret = fdt_setprop_string(keydest, node, "required",
+                                        info->require_keys);
        }
        BN_free(modulus);
        BN_free(r_squared);
        if (ret)
-               return -EIO;
+               return ret == FDT_ERR_NOSPACE ? -ENOSPC : -EIO;
 
        return 0;
 }