The way you are using your interrupt is bad. Your approach requires far too much to happen in the ISR - and what happens won't finish quickly so there could be several interrupt calls to the same routine before the motor finishes its first move. Guaranteed confusion, if nothing worse.
The simplest way is for the ISR to set a global variable (eg. homeButton = true;) to denote the fact that the interrupt had been triggered. Code elsewhere would then cause the motor to move or not depending on the value of the variable, and would clear the variable when the move was complete.
HOWEVER ... it is extremely unlikely that you need to use interrupts just to detect switches that control motors. Your code should be designed so that loop() repeats many times per second and can check the switches on each iteration.
...R