Да, это реентерабельная функция. Возвращаемые функции определяются как функции, которые можно вызывать во время их выполнения (либо из-за рекурсии, либо из-за параллелизма). В этом случае рекурсия спорна, и вы одновременно безопасны (при условии, что параметры разные).
Ваш аргумент в порядке - нет доступа к глобальному или общему состоянию ни к явному, ни к неявному доступу, поэтому вход гарантирован. Это сочетание вашего явного кода и семантики языка C. Другие языки и API могут не иметь этого свойства.
Редактировать: При двойной проверке стандарт ISO C, по-видимому, не повышает безопасность потока strlen. Таким образом, существует небольшая вероятность того, что вы могли бы использовать стандартную библиотеку C с не-потокобезопасным strlen и, таким образом, наследовать от него невозвратный вход.