Your algorithm may be O(log m + log n), but it also gives the wrong answer.
Suppose you search for "4" in the following matrix (where the upper-left is row=0, col=0):
0 1 4
1 2 5
2 3 6
Your algorithm starts by looking at the 2 in the center. Since 4 is greater than 2, you proceed to search the same row (not there), same column (not there), and the lower-right corner (not there). Whoops.
The constraint that each row and column is sorted is actually pretty weak. In particular, the elements along the diagonal could be in any order.
I think the correct approach is to do a binary search on the first and last column to narrow down a range of possible rows. Then do binary search on the first and last of those rows to narrow down the possible columns. And so forth.
Not sure how to analyze the performance of this one...