That was a good idea. But sadly, it doesn't appear to be the case, either. I just tried that; didn't need "rpc".
SERVERA -> SERVERB -> SERVERC
A procedure on SERVERC simpy returns @@SERVERNAME.
A similar procedure on SERVERB inserts its own @@SERVERNAME and the results from the proc on SERVERC (2 rows).
An identical procedure on SERVERA, calls the proc on B... so, 3 rows - one for each server.
The procedure on A and B:
create proc testproc as
create table #x (eek varchar(500))
insert into #x select 'this is testproc on server ' + @@SERVERNAME
insert into #x exec linkedserver.testdb.dbo.testproc;
select * from #x
go
grant execute on testproc to public
(the proc on C is simply: SELECT @@SERVERNAME)
Result: 3 rows, one from each server. "rpc" was not enabled, only "rpc out".