My version of gcc doesn't warn about this error (declaration in the
middle of a set of statements).
The fix is simple (this also corrects return code; for init functions it
should be zero or error).
        ahc_linux_transport_template = spi_attach_transport(&ahc_linux_transport_functions);
        if (!ahc_linux_transport_template)
                return -ENODEV;
-       int rc = ahc_linux_detect(&aic7xxx_driver_template);
-       if (rc)
-               return rc;
+       if (ahc_linux_detect(&aic7xxx_driver_template))
+               return 0;
        spi_release_transport(ahc_linux_transport_template);
        ahc_linux_exit();
        return -ENODEV;