This was strange question. Concentrated sulphuric acid was added to the chloride and the resulting solution was clear, but by inference that is a solution of the sulphate in concentrated sulphuric acid rather than water. We are told HCl was produced but it doesn't tell us it was the only gas, it's an assumption.
I have tidied my method for posterity.
Pure KCl would not give enough HCl gas so the adulterating salt must contain chloride. So the mixture is
(1-p)KCl +
pMCl where p is the mole fraction of adulterant and M is just inert mass.
The amount of HCl produced is 0.896/22.4 = 0.04 Moles which is the amount of chloride in the mixture. So,
2.44 / ((1-p)*(39.1+35.5)+p*(M+35.5)) = 0.04
...
p = 13.6 /(39.1 - M)
The residue after roasting is almost certainly either a carbonate or an oxide.
For a carbonate M
2CO
3 the amount of mass we would expect is the number of moles of MCl multiplied by the molecular mass of the carbonate, which is,
0.04*p*(M + 30) = 0.4
...
p = 10/(M+30)
We can now solve for M.
13.6 /(39.1 - M) = 10/(M+30)
13.6 (M+30) = 10(39.1 - M)
13.6M+408 = 391-10M
3.6M = -17
Negative masses for atoms are not valid so carbonates don't work and I struck off lithium chloride.
Same procedure for oxide, M
2O.
p = 10/(M+8)
and solve,
13.6 /(39.1 - M) = 10/(M+8)
...
23.6M = 282.2
When done to higher precision M=12.26..
M can be any number or fraction of an atom, so long as there is 1 chloride ion per M of other stuff. Close solutions with oxide products were magnesium chloride and titanium tetrachloride but unless it forms a double salt with potassium chloride the latter wouldn't have survived the roasting in air/chlorine part. Aluminium trichloride does do this I think incidentally but the mass's weigh off.
After picking magnesium, it's atomic mass per chloride then provides two slightly different values for p according to which measurement you use, the volume of HCl or the mass of oxide. Maybe an effect due to rounding atomic masses.