Looking at drivers/net/wireless/intel/iwlwifi/iwl-debug.h, IWL_DEBUG_FW accepts a va_arg list, so why not replace the offending code with IWL_DEBUG_FW(trans, "WRT: parsing region: %.*s\n", IWL_FW_INI_MAX_NAME, reg->name); This will have the same effect, but without the terrible habit of modifying a buffer/string one doesn't own.