diff --git a/changelogs/fragments/58158-sysctl-fix-referenced-before-assignment.yaml b/changelogs/fragments/58158-sysctl-fix-referenced-before-assignment.yaml new file mode 100644 index 00000000000..591e57d36f4 --- /dev/null +++ b/changelogs/fragments/58158-sysctl-fix-referenced-before-assignment.yaml @@ -0,0 +1,2 @@ +bugfixes: + - sysctl - fix err referenced before assignment (https://github.com/ansible/ansible/issues/58158) diff --git a/lib/ansible/modules/system/sysctl.py b/lib/ansible/modules/system/sysctl.py index 2a09aa6ff55..34b1d00ecee 100644 --- a/lib/ansible/modules/system/sysctl.py +++ b/lib/ansible/modules/system/sysctl.py @@ -271,7 +271,6 @@ class SysctlModule(object): # Run sysctl -p def reload_sysctl(self): - # do it if self.platform == 'freebsd': # freebsd doesn't support -p, so reload the sysctl service rc, out, err = self.module.run_command('/etc/rc.d/sysctl reload', environ_update=self.LANG_ENV) @@ -282,10 +281,16 @@ class SysctlModule(object): rc = 0 if k != self.args['name']: rc = self.set_token_value(k, v) + # FIXME this check is probably not needed as set_token_value would fail_json if rc != 0 if rc != 0: break if rc == 0 and self.args['state'] == "present": rc = self.set_token_value(self.args['name'], self.args['value']) + + # set_token_value would have called fail_json in case of failure + # so return here and do not continue to the error processing below + # https://github.com/ansible/ansible/issues/58158 + return else: # system supports reloading via the -p flag to sysctl, so we'll use that sysctl_args = [self.sysctl_cmd, '-p', self.sysctl_file]