The max server memory setting controls the buffer pool. That's all of the caches (buffer pool, plan cache, etc) plus the query workspace memory. SQL can and does take memory outside of the buffer pool, usually a small amount, for the thread stacks, backup buffers, CLR memory, linked servers and a couple other things. This memory is almost always vastly smaller than the buffer pool.
Again though, if SQL is using too much memory, reduce the value for max server memory slightly.
Gail Shaw
Microsoft Certified Master: SQL Server, MVP, M.Sc (Comp Sci)
SQL In The Wild: Discussions on DB performance with occasional diversions into recoverability