vs2019 c语言 警告c6001

void conglianbiaozhongshancuyuansu(nodes* head,int x)
{
nodes* p = head;
nodes* y = head->next;
while (p->next!= NULL)
{
if (y->data == x)
{
p->next = y->next;
free(y);
}
p = p->next;//警告c6001
y = y->next;//警告c6001

    if (y == NULL)
    {
        printf("在该链表中未找到此元素\n");
        exit(-1);
    }
    
    
}

}
不明白为什么会警告,也不知道怎么改,哪位大佬可以帮我看看

p->next = y->next;就有问题了啊。y在循环中没有变化,一旦你free了y,下一次循环执行到y->data就会崩溃的