Ok, I'd use a double barrelled approach to this.
First up, you need Charlie to see you as the supreme being... the alpha. This does not mean being a big bully tyrant as that is very outdated. It does though mean that Charlie must see you as the leader & the fount of all food & comfort. If you aren't already doing obedience training I'd consider starting that now. Make Charlie earn all of his treats. Even at meal times, he should be made to sit & wait until you give the command for him to eat. Lots of things can be done in this area.
The other important phase is desensitisation. I actually start this process with my puppies from day 1. As Charlie is a bit older & already growling, you will need to be a bit careful as you don't want to get bitten. With our puppies, we pat them while they are eating, touch their faces, pick their dish up for a moment & then give it back, put our hands in their dinner dish while they are eating.
By doing this, the puppy gets to learn that you control all food, and that if you want it, as the alpha you are entitled to take it without challenge.
This does not mean to say we annoy the dogs all the time when they are eating. However maybe once a week or so I will interrupt them during their meal, take their dish, then say good dog, & give it straight back. I also make a point of occasionally patting and touching the face of the dogs while they are having their treats. Though none of mine have ever growled or challenged me when I do this, I still do it with care & am always reading the signals.
I do stress... be careful, because even a 6 month old Cavalier can inflict a painful injury.
It is very important that you get him out of this, as I am sure you are already aware. In the meantime, be especially careful of any children that come into your home. Make sure Charlie is not disturbed by them while he is eating.