From 2d35812d500e8a3ecfe7294842cd2b5920358a5a Mon Sep 17 00:00:00 2001 From: Thomas Schoebel-Theuer Date: Tue, 23 Jul 2019 09:41:42 +0200 Subject: [PATCH] main: allow disabling of digests --- kernel/lib_log.c | 2 +- kernel/mars_copy.c | 2 +- kernel/sy_old/mars_main.c | 12 ++++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/kernel/lib_log.c b/kernel/lib_log.c index 45568926..7c71addc 100644 --- a/kernel/lib_log.c +++ b/kernel/lib_log.c @@ -367,7 +367,7 @@ bool log_finalize(struct log_status *logst, int len, void (*endio)(void *private unsigned char checksum[MARS_DIGEST_SIZE]; check_flags |= - mars_digest(usable_digest_mask, + mars_digest(usable_digest_mask & ~disabled_log_digests, &used_log_digest, checksum, data + logst->payload_offset, len); diff --git a/kernel/mars_copy.c b/kernel/mars_copy.c index 4472543e..d55c9dd7 100644 --- a/kernel/mars_copy.c +++ b/kernel/mars_copy.c @@ -384,7 +384,7 @@ __u32 _make_flags(bool verify_mode, bool is_local) if (is_local) return available_digest_mask | MREF_NODATA; - return usable_digest_mask | MREF_NODATA; + return (usable_digest_mask & ~disabled_net_digests) | MREF_NODATA; } diff --git a/kernel/sy_old/mars_main.c b/kernel/sy_old/mars_main.c index b93362c7..9d8aeb75 100644 --- a/kernel/sy_old/mars_main.c +++ b/kernel/sy_old/mars_main.c @@ -81,6 +81,9 @@ int usable_features_version = 0; int usable_strategy_version = 0; +__u32 disabled_log_digests = 0; +__u32 disabled_net_digests = 0; + static int _tmp_features_version = OPTIONAL_FEATURES_VERSION; static int _tmp_strategy_version = OPTIONAL_STRATEGY_VERSION; @@ -5642,6 +5645,15 @@ int make_defaults(void *buf, struct mars_dent *dent) if (!strcmp(dent->d_name, "sync-limit")) { sscanf(dent->new_link, "%d", &global_sync_limit); + } else if (!strcmp(dent->d_name, "disabled-log-digests")) { + sscanf(dent->new_link, "0x%x", &disabled_log_digests); + } else if (!strcmp(dent->d_name, "disabled-net-digests")) { + __u32 tmp = 0; + + sscanf(dent->new_link, "0x%x", &tmp); + /* at least one digest must remain usable */ + tmp &= ~MREF_CHKSUM_MD5_OLD; + disabled_net_digests = tmp; } else { MARS_DBG("unimplemented default '%s'\n", dent->d_name); }