The problem here, you're returning a pointer from func_ret() and then, trying to capture the return value in an int variable, then trying to print the value using %d. It mostly invokes undefined behaviour.
For reference, C11, chapter §6.3.2.3
Any pointer type may be converted to an integer type. Except as previously specified, the result is implementation-defined. If the result cannot be represented in the integer type, the behaviour is undefined. The result need not be in the range of values of any integer type.
Solution: You need to change the type of m from an int to int *. You have to use appropriate format specifiers also.
Also note, the recommended signature of main() is int main(void).