In all the pre-existing call sites both @iomem and @iobase_ptr are either both NULL or have a valid address.
Add an invariant for the expeced conditions and remove a dead basic block. The second block is dead given that if @iomem turns out not to be NULL, neither can't be @iobase_ptr. Signed-off-by: Jarkko Sakkinen <[email protected]> --- v2: - Updated the commit message in order to clarify things better. - Updated the invariant in order to address checkpatch.pl --strict errors. drivers/char/tpm/tpm_crb.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/char/tpm/tpm_crb.c b/drivers/char/tpm/tpm_crb.c index ceb4100ba400..833226966fa2 100644 --- a/drivers/char/tpm/tpm_crb.c +++ b/drivers/char/tpm/tpm_crb.c @@ -570,15 +570,12 @@ static void __iomem *crb_map_res(struct device *dev, struct resource *iores, if (start != new_res.start) return IOMEM_ERR_PTR(-EINVAL); + if (!iores != !iobase_ptr) + return IOMEM_ERR_PTR(-EINVAL); + if (!iores) return devm_ioremap_resource(dev, &new_res); - if (!*iobase_ptr) { - *iobase_ptr = devm_ioremap_resource(dev, iores); - if (IS_ERR(*iobase_ptr)) - return *iobase_ptr; - } - return *iobase_ptr + (new_res.start - iores->start); } -- 2.47.3

