Yes, that is also illegal, but no, your conclusion is incorrect.
I'm not sure why you would expect the specific names to be inaccessible.
You do, after all, have the module default accessibility at public,
which means that everything in it is accessible unless declared
otherwise. That includes interfaces. The fact that these happen to also
be specific procedures in a generic is a minor detail that doesn't
change this.
I personally think it was a mistake in the standard to combine the
functionality of defining specific interfaces with that of defining
generics. It causes several kinds of confusion, along with one notable
flaw in the f90/f95 standard, which was rectified in f2003. Looks to me
like you got caught up in one of the confusions. Your example defines
specific interfaces for mysub_real and mysub_inte, just like a simillar
example with no generic would have done. One would certainly expect
those specific interfaces to be accessible, that being the whole point
of one major way of using interface bodies. Your example *ALSO* defines
a generic, but note my emphasis on the "also". That's an additional
thing that it does, but that doesn't take away the fact that it defines
specific interfaces.
If you don't want the specific names to be public, then make them
private. And remember that the default is that everything in a module is
public. I normally override that default with a PRIVATE statement and
then explicitly declare as public only those particular things that I
want to be public.
Doing that with your example above by adding the lines
public
private :: mysub
at the top of the module makes g95 happy anyway. The version of gfortran
I have on this machine seems to compile even your original without
complaint, though I'd consider that a bug. (It is an older version of
gfortran, looks like 4.5.1).