This is, in general, extremely difficult to do.
An inode may have thousands of pathnames. All names are equally "valid". Even on filesystems that do not support multiple links, the file could be bind-mounted thousands of times to anywhere else in the system.
Both the AppArmor and TOMOYO mandatory access control systems rely upon pathnames -- but with a gigantic difference: access controls are performed on a specific file descriptor, which was opened with a specific name, and both tools use that specific name.
Look into the security/apparmor/path.c
function aa_get_name()
or security/tomoyo/file.c
function tomoyo_get_realpath()
for details on finding pathnames from an inode -- given additional supporting information. From just the plain inode object, I think you're probably out of luck.