I want the flashlight to look same while looking up and down as when looking straight.
Normal Position for Hand and flashlight: 
Looking up and down, position is completely off:

More images for character/camera prefab rotation:

Basically the position of the Hand held flashlight changes when I look up or down, as well as the arm stretches. How do I fix this?
Code for character rotation:
private void CharacterRotation()
{
float posX = Input.GetAxis(mouseX) * ((StructsInitializers.Sensitivity * 5) + StructsInitializers.Sensitivity*50) * Time.deltaTime;
float posY = Input.GetAxis(mouseY) * ((StructsInitializers.Sensitivity * 5) + StructsInitializers.Sensitivity*50) * Time.deltaTime;
yAxisClamp += posY;
if(yAxisClamp > 90.0f)
{
yAxisClamp = 90.0f;
posY = 0.0f;
ClampYAxisRotation(270.0f);
}
else if(yAxisClamp < -90)
{
yAxisClamp = -90.0f;
posY = 0.0f;
ClampYAxisRotation(90.0f);
}
transform.Rotate(Vector3.left * posY);
PlayerBody.Rotate(Vector3.up * posX);
}
private void ClampYAxisRotation(float value)
{
Vector3 eulerRotation = transform.eulerAngles;
eulerRotation.x = value;
transform.eulerAngles = eulerRotation;
}
PS: I am new to game developing. I have lack of experience.