Na parte
printf("\n\nLendo dimensões\n\n");
aux=fscanf(arq, "%d %d %d ", &m, &n, &maxval);
você não deve usar o '&' antes de m, n e maxval, pois esses parâmetros já são ponteiros! Veja como m, n e maxval foram declarados, no cabeçalho da função read_pgm.
Forum