You've given me a tough question today! I would like for you to help your mare work through her problem, but at the same time I think keeping your son (and other children) safe is the most important thing.
There are some horses who really simply don't like children. In some cases, they've been teased or mishandled by children and never trust them again. Some horses don't like how loud young children can be and how fast and unpredictably they can move. So if you let your son around your mare, make sure he's quiet and moves slowly. Don't allow him to run around, yell, move jerkily, etc.
Normally when a horse doesn't like something, I work to desensitize them to the thing they don't like by exposing them to it and pairing it with something they do like (I may fly-spray a nervous horse and when she stands quietly I then give her a treat). However I think that kids' safety is very important. If your child is around your mare, I would have him wear a helmet and boots, even if he isn't riding. And I wouldn't leave them together unsupervised even for a few minutes.
Considering having your veterinarian check her vision. If she has limited vision, she may not be able to see your son and is startled when he suddenly pets her or talks to her. If poor vision is her trouble, you may be able to help improve her attitude by teaching her to lower her head where she can see your son approaching.
I hate to admit that there's a problem I'm not sure how to fix, but I'm not willing to put your son at risk of getting injured in an effort to desensitize your mare. It may be that you need to get your son a more child-friendly horse of his own.