The SVM (strictly speaking the maximum margin hyperplane) is an approximate implementation of a bound on generalisation performance that is independent of the dimensionality of the feature space. This means that in principle, the SVM is able to perform well in high dimensional space (i.e. lots of features for a linear SVM). However, in practice, this is highly dependent on choosing a good value for the regularisation parameter (usually $C$) which controls the trade-off between minimising the error (as measured by the hinge loss) on the training data, and maximising the margin (which maximises bound on generalisation perfomance). So, the best approach is probably to use a linear classifier, and carefully tune $C$ to minimise the cross-validation error (or the span bound, or radius margin bound), and then have an independent test set for estimating generalisation performance (or as the dataset is small, use nested cross-validation).
The problem with using feature selection is that while the SVM is based on a generalisation bound that helps avoid over-fitting, no such bound applies to the feature selection step (and indeed the feature selection step invalidates the bound on which the SVM is based). This means feature selection is likely to make generalisation performance worse as you just over-fit the feature selection procedure.
If all that is important is generalisation performance, then don't do any feature selection, and carefully tune $C$ so the model is properly regularised. For most datasets, that seems to be a good approach, but there are some where feature selection is also beneficial in addition to careful regularisation.