This is a statement expression. It is a gcc extension and according to the documentation 6.1 Statements and Declarations in Expressions:
The last thing in the compound statement should be an expression followed by a semicolon; the value of this subexpression serves as the value of the entire construct.
Which in the case, for the code:
({ n = pos->member.next; 1; })
the value would be 1
. According to the documentation:
This feature is especially useful in making macro definitions “safe” (so that they evaluate each operand exactly once).
It gives this example without using statement expressions:
#define max(a,b) ((a) > (b) ? (a) : (b))
versus this safe version, with the caveat that you know the type of the operands:
#define maxint(a,b) \
({int _a = (a), _b = (b); _a > _b ? _a : _b; })
This is one of the many gcc extensions used in the Linux kernel.