Some drivers set PF_NOFREEZE in their kthread functions which iscompletely unnecessary and racy - some part of freezer code doesn'tconsider cases where PF_NOFREEZE is set asynchronous to freezeroperations.

In general, there's no reason to allow setting PF_NOFREEZE explicitly.Remove them and change the documentation to note that settingPF_NOFREEZE directly isn't allowed.

Kernel threads are not freezable by default. However, a kernel thread may clear PF_NOFREEZE for itself by calling set_freezable() (the resetting of PF_NOFREEZE-directly is strongly discouraged). From this point it is regarded as freezable+directly is not allowed). From this point it is regarded as freezable and must call try_to_freeze() in a suitable place.